vivado가 reg를 할당할 때 메모리에 할당할 수 없거나 압축되지 않은 유형에 압축된 유형을 할당할 수 없는 문제 해결

비용 절감: 솔루션

할당된 값이 reg어떻게 선언되는지 , 잘못된 위치에 배치 되는지 확인 하고, 벡터로 선언해야 하는지 [m:n], 배열로 선언해야 하는지 , [m:n]변수명 앞에 배치해야 하는지, 뒤에 배치해야 하는지 잘 생각해 보세요.

비용은 절약되지만 아래로 스크롤하여 :) 내 여행을 확인하는 것이 좋습니다. 유익하셨다면 좋아요와 모아두세요~

배경

때때로 특정 등록에 값을 할당할 때 다음 프롬프트가 나타납니다.
vivado报错는 메모리에 할당할 수 없으며, 압축된 유형을 압축 해제된 유형에 할당할 수 없습니다.

Error: cannot assign to memory
Error: cannot assign a packed type to an unpacked type

문제 해결 프로세스

자세히 살펴본 결과, reg등록 유형을 선언할 때 선언 数组向量. 지금 바로:

/* 出现错误的代码 */
reg reg_tagv_wen[1:0];//声明成了数组,这里即2个1位的reg

/* 修正后的代码 */
//修正完成后,上方赋值语句不再报错。
reg [1:0] reg_tagv_wen;//声明成了向量,这里即1个两位的reg

배열 의 경우 할당할 배열 요소를 명시적으로 지정 해야 합니다 . 벡터 의 경우 동시에 여러 비트에 값을 할당 할 수 있습니다 .

이 오류는 원래 의도가 2비트 벡터 로 선언하는 것이었으나 이를 변수 이름 뒤의 잘못된 위치에 배치 하고 배열 (2개의 1비트 regs) 로 선언했기 때문에 발생했습니다 . 오류.[1:0]

해결책은 [1:0]이를 앞으로 이동시켜 벡터로 선언하는 것입니다.

범용 솔루션

일반적인 해결책은 할당된 reg가 어떻게 선언되는지, [m:n]잘못된 위치에 배치되는지 확인하고, 벡터로 선언해야 하는지 배열로 선언해야 하는지, [m:n]변수 이름 앞이나 뒤에 배치해야 하는지 신중하게 고려하는 것입니다.

추천

출처blog.csdn.net/weixin_52027058/article/details/128188462