我正在尝试使用系统Verilog中的while循环创建斜坡输出,并且遇到了循环的额外迭代。
有人可以帮助我了解原因吗?
real a,b,step;
b = #delay final_value;
while (a<b)
begin
#delay_per_step a = a + step;
end
( final_value 是步长的整数倍)
此while循环结束时 a 的最终输出为 final_value + step
由于变量是实数且精确的小数位数未知而发生这种情况吗?
答案 0 :(得分:2)
这很可能是由于舍入错误。您可以通过在循环中显示a
和b
的值来验证。
您可以减去公差值以使其适合您
while ( a < b - tolerance )