描述
当将未打包数组传递给实例数组时,存在一个问题。
ViVADO综合报告以下代码错误:
输出[7:0] q;
线[7:0] TMP1[3:0];
线[7:0] TMP2[3:0];
测试序列[3:0]
γ-t~(-1)
γ、γ、γ、TMP2
;
分配Q= TMP2〔0〕TMP2〔1〕TMP2〔2〕TMP2〔3〕;
在上面的示例代码中,解压缩数组TMP2从8位宽的子模块测试映射到输出端口“B”。
当工具试图通过实例数组连接解压缩数组TMP2时发生以下错误消息:
错误:输出端口连接中的[Syth-869]型错配:位[7:0] A[3:0]与比特[31:0] B[[/./xxxx.v:15 ] ]
错误:[综合器8255]综合模块“顶部”失败[//xxxx.v:1 ]
解决方案
为了解决这个问题,有两种选择:
选项1:
将解压缩数组TMP2更改为压缩数组TMP2,然后将其传递给实例数组。
上述代码将更改如下:
输出[7:0] q;
线[7:0] TMP1[3:0];
线[31:0] TMP2;
测试序列[3:0]
γ-t~(-1)
γ、γ、γ、TMP2
;
赋值q=tMP2[7:0]·tMP2 [15:8]·tMP2 [23∶16]·tMP2 [31:24];
选项2:
保留未打包的数组,不使用实例的数组,而是实例化表示数组位切片的子模块。
例如:在上述情况下,实例化子模块测试4次,表示每个阵列位片(0, 1, 2,3),并将APT阵列位片传递给TMP1和TMP2(0, 1, 2,3)。
没有回复内容