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

SystemVerilog模块端口宽度不匹配:单bit输入受前置向量影响?

问题根源与解决方法

为什么works被识别为3位?

你在模块端口声明里写了:

input logic [2:0] In, works,

SystemVerilog的语法规则是:同一个方向+数据类型+位宽修饰符下的所有端口,会共享这个位宽。所以这里的[2:0]不仅作用于In,也会自动应用到后面的works,导致works被声明为3位的logic [2:0] works,而你的测试平台里works是1位的logic works;,自然出现端口宽度不匹配。

为什么Out也出现宽度不匹配?

错误信息显示测试平台的8位Out连接到了模块的1位Out,这是因为你模块里的端口声明写法有语法歧义:第一行末尾的逗号,导致模拟器错误解析了Out的位宽。正确的端口声明应该将不同方向、不同位宽的端口分开写,避免解析混淆。

修正后的模块代码

module random (
    input  logic [2:0] In,
    input  logic       works,  // 明确指定works为1位
    output logic [7:0] Out     // 独立声明输出端口的位宽
);
// 模块内部逻辑
endmodule

如果你的实际需求是works为3位,那只需要把测试平台里的works改成logic [2:0] works;即可,不需要修改模块声明。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:15:31