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

RTL仿真中门级网表拆分端口的Verilog映射解决方案

解决门级网表拆分端口的实例化问题

方案1:显式逐位映射端口

直接匹配网表中拆分后的单个端口,逐个完成信号映射,同时可直接在连接时添加线网延迟。

wire [15:0] sig_a;
wire [7:0] sig_b;

abc u_abc (
    .\a[15] ( #(2) sig_a[15] ),  // 转义符\匹配网表端口名,#(2)添加线网延迟
    .\a[14] ( #(2) sig_a[14] ),
    .\a[13] ( #(2) sig_a[13] ),
    // ... 依次写完a[12]至a[0]
    .\b[7]  ( #(1) sig_b[7] ),
    .\b[6]  ( #(1) sig_b[6] ),
    // ... 依次写完b[5]至b[0]
    // 其余端口按同样方式映射
);

方案2:SystemVerilog数组端口隐式连接

若使用支持SystemVerilog的仿真器(如VCS、QuestaSim),可利用数组通配符简化映射,自动按位匹配拆分端口:

wire [15:0] sig_a;
wire [7:0] sig_b;

abc u_abc (
    .\a[*]  (sig_a),  // *匹配所有\a[N]端口,按高位到低位对应sig_a
    .\b[*]  (sig_b),
    // 其余端口正常映射
);

注:需确保网表中端口的位序(如\a[15]到\a[0])与总线sig_a的位序一致,避免信号错位。

方案3:添加中间封装模块

保留原eee模块的总线式实例化逻辑,新增一个封装模块将拆分端口的网表重新包装为总线接口:

封装模块代码

module abc_wrap (
    input  [15:0] a,
    output [7:0]  b
    // 其余端口按原模块定义声明
);

abc u_abc (
    .\a[15] (a[15]),
    .\a[14] (a[14]),
    // ... 完成所有a端口的逐位映射
    .\b[7]  (b[7]),
    .\b[6]  (b[6]),
    // ... 完成所有b端口的逐位映射
    // 其余端口映射
);

// 可在此统一添加延迟,例如:
// assign #(2) b = {u_abc.\b[7], u_abc.\b[6], ..., u_abc.\b[0]};

endmodule

eee模块中实例化封装模块

wire [15:0] sig_a;
wire [7:0] sig_b;

abc_wrap u_abc_wrap (
    .a(sig_a),
    .b(sig_b),
    // 其余端口按原写法连接
);

内容的提问来源于stack exchange,提问作者Chan Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:45:02