Перейти к содержанию
    

Verilog - wait, repeat. Подскажите, что не так

Приветствую.

Пилю тестбенч.

На одном симуляторе работает нормально, на другом нет.

Подскажите, что я делаю не так и как правильно?

repeat (8) begin
    wait (fas && val);
    
    @(posedge clk)
     error_insertion <= 1;
  end
                         
  wait (fas && val);
    
  @(posedge clk)
    error_insertion <= 0;

В чем идея. Есть поток фреймов, которые начинаются, когда fas && val == 1 .

Нужно включить error_insertion на заданное количество фреймов (в тексте выше - 8).

На практике, в одном из симуляторов работает как надо, в другом считает фреймы в 2 раза быстрее, т.е. выходит из цикла уже после 4 фреймов.

 

Предполагаю, что проблема в том, что wait работает по уровню, а нужно чтобы данная пауза работала по фронту @(posedge clk).

Как написать wait (или не wait) так, чтобы работало как мне надо?

 

Всем спасибо за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если sv то

 @(posedge clk iff (fas & val))

Если обычный верилог. То проще так 

do begin

  @(posedge clk) 

end

while (! (fas & val)) 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо!

Сделал вот так:

forever begin
    @(posedge clk) begin
      if (fas && val)
        break;
    end
  end

Тоже работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 часов назад, des00 сказал:

Если обычный верилог. То проще так 

Разве Verilog-2001 поддерживает do ... while (...)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 hours ago, makc said:

Разве Verilog-2001 поддерживает do ... while (...)?

Если честно я не помню, а когда писал не проверил. Но смысл тот же)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...