for-loop - 在 systemverilog 中实现 for 循环

标签 for-loop testing system-verilog test-bench

我想为我的 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

或其他一些具有时间延迟的类似代码。

关于for-loop - 在 systemverilog 中实现 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57730248/

相关文章:

javascript - 在 JavaScript 中实现数字模式,如 1、2、3、1、2、3

ruby-on-rails - 运行功能测试时找不到 'id' 的 Rails 4 STI 模型

android - 警告 :Conflict with dependency 'com.android.support:support-annotations'

unit-testing - 我应该对数据访问层进行单元测试吗?这是一个好的做法吗?如何去做?

verilog - 算术移位充当逻辑移位,无论有符号变量如何

C++素数没有给出正确答案

javascript - 迭代二维 json 的正确方法

java - for 循环是否在每次迭代中重新评估其主体中的函数?

system-verilog - 在 System Verilog 中检测时间刻度

verilog - 总是阻止@posege时钟