在systemverilog中有时候需要进行位操作,比如data[15:12](data[16-1:16-1-3]), 另外一种表示方法为:
program automatic demo;
bit [16:0] data;
initial begin
data = 16'h1234;
$display("data = %0h", data);
$display("data = %0h", data[16-1-:4]);
end
endprogram
simulation结果:
data = 1234
data = 1
$finish at simulation time 0
V C S S i m u l a t i o n R e p o r t
Time: 0
CPU Time: 0.290 seconds; Data structure size: 0.0Mb
Tue Nov 15 21:59:38 2016
这样可以使用macro定义
[MSB-:STEP] = [MSB:MSB-STEP]