具有定义宽度的 SystemVerilog 参数

SystemVerilog Parameters with defined width

我有以下定义特定宽度常量的 VHDL 代码。

constant WIDTH : natural := 16
constant X : std_logic_vector(WIDTH - 1 downto 0) := std_logic_vector(to_unsigned(16#0#, WIDTH));

如何在 SystemVerilog 中定义这样的东西?

我假设这样的东西对应于

parameter WIDTH = 16
parameter X = WIDTH'd1231413412

但这似乎不适用于我的 Verilog 编译器

应该是这样的:

parameter WIDTH = 16;
parameter [WIDTH-1:0] X = 0;

它将与 SystemVerilog (IEEE1800) 和自 2001 年以来的 Verilog (IEEE1364-2001) 一起工作。如果您受困于仅支持 Verilog 1995 (IEEE1364-1995) 的陈旧模拟器,它将无法工作。

它是 Verilog,很少需要指定无符号常量的宽度。但如果你确实需要,那就是:

parameter WIDTH = 16
parameter bit [WIDTH-1:0] X = 'd1231413412

请注意,一旦您定义了具有数据类型的参数,您只能覆盖其值,而不能覆盖其类型。