【问题标题】:array bit parameter range in verilog - underflow or -1verilog 中的数组位参数范围 - 下溢或 -1
【发布时间】:2018-09-12 14:42:06
【问题描述】:

在这种情况下,参数init 的索引范围应该是多少:

parameter zero = 0;

parameter bit[31:0] size = 32'b01;

parameter bit[((zero * size) - 1):0] init = 2'b11;

应该是[-1:0][4294967295:0],为什么?这种行为是标准化的还是取决于工具?

【问题讨论】:

    标签: verilog fpga system-verilog hdl modelsim


    【解决方案1】:

    根据 LRM,数组声明中的范围是有符号整数表达式。它应该将 32 位无符号表达式转换为有符号整数。所以结果是-1。你可以通过显示$left(init)的结果来测试这个

    是否所有工具开发人员都阅读过 LRM 是另一个问题。

    【讨论】:

    • 感谢您的回答,非常有帮助。您能否引用规范的一部分或指出有关它的章节?
    • 第 6.9.1 节说:“msb 常量表达式和 lsb 常量表达式都应该是常量 integer 表达式”。此文本与 Verilog LRM 相比没有变化,并且 Integer 类型已签名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多