Verilog测试台调用任务时使用parameter参数出现报错求助
Verilog参数化位宽字面量传参报错解决方案
报错原因
你写的传参代码存在两处语法错误:
- 位宽指定符号使用了中文全角撇号
’,Verilog要求必须使用英文半角撇号' - 标准Verilog的数字字面量位宽标注语法要求位宽必须是常量字面量,不能直接用parameter参数放在撇号前
修复方案
- 如果你使用的仿真器支持SystemVerilog语法(当前主流仿真工具如VCS、QuestaSim、Xcelium均默认支持),直接修改传参写法为位宽转换语法即可:
把Read_mode(ADDRESS_WIDTH’134)修改为Read_mode(ADDRESS_WIDTH'(134))
该语法会自动将数值134转换为和ADDRESS_WIDTH位宽匹配的数值传入任务。 - 如果你只能使用Verilog-2001/2005标准语法,可以提前定义对应地址参数再传参:
新增参数定义:
传参修改为parameter TEST_ADDR = 134;Read_mode(TEST_ADDR)即可,编译器会自动适配任务端口的位宽要求。
额外注意
如果你自定义的Read_mode任务的地址输入端口已经定义为和ADDRESS_WIDTH位宽一致,你可以直接传入数值134,不需要手动指定位宽,编译器会自动完成位宽匹配。
内容的提问来源于stack exchange,提问作者Verilog- enthusiastic
相关产品推荐
相关产品推荐

