You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

模块端口多维数组拼接:VCS与DC Next编译兼容性问题咨询

解决VCS与DC Next的Unpacked数组端口连接兼容性问题

问题背景

需要将3个64位packed输出端口拼接成temp_v1模块的unpacked数组输出端口,但两款工具对语法的支持存在冲突:

  • 直接使用{top_fab_diu_tmu_time_o_0,top_fab_diu_tmu_time_o_1,top_fab_diu_tmu_time_o_2}连接时,VCS报错要求添加'转为赋值模式;但添加'后,DC Next又不支持端口连接中的赋值模式语法。

兼容解决方案

核心思路是通过中间信号过渡,绕开工具对端口连接语法的支持差异:

  1. 在temp模块内部定义与temp_v1端口类型完全一致的unpacked数组中间信号
  2. 用标准的数组索引赋值语法,给中间数组的每个元素分别赋值(该语法两款工具均完全支持)
  3. 将中间信号直接连接到temp_v1的对应端口

修改后的完整代码如下:

module temp (
 output logic         [64-1:0]   top_fab_diu_tmu_time_o_0,
 output logic         [64-1:0]   top_fab_diu_tmu_time_o_1,
 output logic         [64-1:0]   top_fab_diu_tmu_time_o_2,
);

// 定义与temp_v1端口匹配的中间unpacked数组信号
logic [63:0] temp_tmu_time [3];

// 标准数组索引赋值,两款工具均支持
assign temp_tmu_time[0] = top_fab_diu_tmu_time_o_0;
assign temp_tmu_time[1] = top_fab_diu_tmu_time_o_1;
assign temp_tmu_time[2] = top_fab_diu_tmu_time_o_2;

// 直接连接中间信号到端口
temp_v1 u_temp_v1 (
   .top_fab_diu_tmu_time (temp_tmu_time)
);

endmodule
module temp_v1 (
   output logic [63:0] top_fab_diu_tmu_time [3],
);
// 模块内部逻辑实现
endmodule

方案原理

完全避开工具支持不一致的端口连接语法,改用两款工具都兼容的标准SystemVerilog语法,彻底消除兼容性冲突,同时保持代码的可读性和可维护性。

内容的提问来源于stack exchange,提问作者Idan Rahamim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 20:25:22