为什么 'd0 不扩展信号的整个宽度就像 '0 那样? 使用'0使用 'd0Riviera-Pro 2020.04太bug了,我们放弃了,和Aldec有纠纷

问题描述

使用 SystemVerilog 和 Modelsim SE 2020.1,我很惊讶地看到一个行为:

bus_address 是 64b 信号 input logic [63:0] bus_address

使用'0

.bus_address ('0),

enter image description here

使用 'd0

.bus_address ('d0),

enter image description here

Riviera-Pro 2020.04(太bug了,我们放弃了,和Aldec有纠纷)

  • 'd0

rivierapro

  • '0

rivierapro_wrong

调查/回答:

  • 11.3.3 在表达式中使用整数字面量:一个无大小的基于整数(例如 'd12,'sd12 )

  • 5.7.1 整型常量

组成一个无大小数字的位数(这是一个简单的 十进制数或带有基数说明符但没有大小的数字 规范)应至少为 32。未定大小的无符号文字 高位未知的常量( X 或 x )或 三态( Z 或 z )应扩展到表达式的大小 包含文字常量。

这很棘手,我认为它会像 0 一样设置 '0 所有其他位。

我希望规范的作者在定义这种无意义的行为时会考虑更多。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)