ViVADO综合-使用System Verilog解压缩数组时的实例数组问题

描述

当将未打包数组传递给实例数组时,存在一个问题。

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)。

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-30 17:41:21 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它