for-loop - 在 systemverilog 中实现 for 循环
问题描述
我想为我的 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
或其他一些具有时间延迟的类似代码。
推荐阅读
- javascript - 在 Rails 6 中安装 bootstrap-table-rails
- java - keycloak:检查旧密码是否匹配,如果匹配,则更改为另一个
- ios - 如何快速防止 UIViewController 的多次推送?
- firebase - 为什么我仍然能够在我的 Google Analytics(分析)仪表板中看到分析数据?
- php - 为什么 PHP 将我的数组识别为标量值?
- python - Numpy索引分配保留连续性?
- charts - 带顶点图的半圆环图
- clojure - Clojure Loop 只能从尾部位置重复
- python - 在熊猫的loc方法中动态更改行索引
- css - 为什么这个 css 在演示中工作,但不在我的项目中?