在Verilog中访问wire/reg维度

在Verilog中访问wire/reg维度,verilog,hdl,Verilog,Hdl,在VHDL中,有许多预定义属性可以帮助使代码更通用,例如: signal sig : std_logic_vector(7 downto 0); -- ... for i in sig'range loop ... 是否有类似的方法访问Verilog导线的尺寸或reg 当然,可以将每条导线或reg的边界定义为参数,如中所示: parameter w_upper = 7; parameter w_lower = 0; wire [w_upper:w_lower] w; 但这似

在VHDL中,有许多预定义属性可以帮助使代码更通用,例如:

signal sig : std_logic_vector(7 downto 0);  
-- ...  
for i in sig'range loop ...
是否有类似的方法访问Verilog
导线的尺寸
reg

当然,可以将每条
导线
reg
的边界定义为参数,如中所示:

parameter w_upper = 7;  
parameter w_lower = 0;  
wire [w_upper:w_lower] w; 
但这似乎需要大量的开销,远不如VHDL优雅


我已经看到SystemVerilog有像
$bits
$size
$high
$low
这样的东西,但是Verilog-2005或更早的版本呢?

Verilog-2005没有VHDL属性的等价物(
'size
'left
'right
'right
'high
等等)

正如您在问题中提到的,该功能是在SystemVerilog中引入的,您在SystemVerilog中具有以下属性:
$dimensions
$unpacketed\u dimensions
$left
$right
$low
$high
$increment
$size
,感谢您的澄清。但是工程师以前是如何实现通用/参数化代码的?我在问题中给出的例子是否是一种按惯例进行的常见方法?我来自VHDL的世界,没有对通用代码的任何内置支持的编码感觉很奇怪;-)@通常,Verilog使用单个参数定义所有相关信号和任何生成代码的宽度(
parameter width=8;reg[width-1:0]a;…生成(i=0;i
)。但是,最好有像
$bits
$size
$clog2
这样的函数,因此他们添加了这些函数以使SV更简单、更通用:)