在 systemverilog 中实现 for 循环
Implementing a for loop in systemverilog
我想为我的 DUT 生成自动输入激励。此输入将同时进入不同的模块并处理此数据。我希望我的输入以越来越多的方式生成。比如 0000,0001,0010,0011...1111
我尝试使用 for
循环,但它仅使用循环中的最后数据并对其进行处理。
always_comb begin
for (i=0, i<16; i=i+1)
begin
data <= i;
end
end
当我像这样单独提供输入时,
data = 8'd1;
#2;
data = 8'd2;
#2;
它在所有指定的输入值下都能顺利运行。
always_comb
不能有延迟。至少符合 IEEE1800 标准。
你可以这样做:
bit [3:0] data; // bit so the initial value is 0, not x
bit clk;
always #1 clk++; // or some other clock model
always_ff @(posedge clk) begin
data <= data+1;
end
或类似这样的内容:
logic [3:0] data;
initial begin
for (i=0, i<16; i=i+1) begin
data = i;
#2;
end
end
或其他一些带有时间延迟的类似代码。
我想为我的 DUT 生成自动输入激励。此输入将同时进入不同的模块并处理此数据。我希望我的输入以越来越多的方式生成。比如 0000,0001,0010,0011...1111
我尝试使用 for
循环,但它仅使用循环中的最后数据并对其进行处理。
always_comb begin
for (i=0, i<16; i=i+1)
begin
data <= i;
end
end
当我像这样单独提供输入时,
data = 8'd1;
#2;
data = 8'd2;
#2;
它在所有指定的输入值下都能顺利运行。
always_comb
不能有延迟。至少符合 IEEE1800 标准。
你可以这样做:
bit [3:0] data; // bit so the initial value is 0, not x
bit clk;
always #1 clk++; // or some other clock model
always_ff @(posedge clk) begin
data <= data+1;
end
或类似这样的内容:
logic [3:0] data;
initial begin
for (i=0, i<16; i=i+1) begin
data = i;
#2;
end
end
或其他一些带有时间延迟的类似代码。