Дополнительная итерация цикла while в System Verilog - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь создать линейный вывод, используя цикл while в системном verilog и столкнувшись с дополнительной итерацией цикла.

Может кто-нибудь помочь мне понять причину этого?

real a,b,step;
b = #delay final_value;
while (a<b)
  begin
     #delay_per_step a = a + step;
  end

( final_value является целым кратным шага)

Окончательный результат для a в концеэтого цикла while равно final_value + step

Может ли это происходить из-за того, что переменные являются действительными, а точные десятичные разряды неизвестны?

1 Ответ

0 голосов
/ 05 февраля 2019

Скорее всего, это связано с ошибками округления.Вы можете убедиться в этом, отобразив значения a и b в цикле.

Вы можете вычесть значение допуска, чтобы оно работало на вас

while ( a < b - tolerance )
...