В чем разница между -> и => в утверждениях системы verilog?

Я хотел знать, когда использовать -> а также => в SVA? Есть ли различия между

sequence A;
 req |-> ##1 gnt;
endsequence

а также

sequence B;
 req |=> ##1 gnt;
endsequence

Пожалуйста, дайте мне знать.. Спасибо.

3 ответа

|=> эквивалентно |-> ##1
Следовательно, req |=> ##1 gnt; эквивалентно req |-> ##2 gnt;

См. IEEE Std 1800-2012 § 16.12.6. Значение

Разница заключается в том, что, когда антецедент (выражение слева) преуспевает, запускается ли последующее (выражение справа) в одном и том же тактовом цикле |-> (перекрытие) или следующий тактовый цикл |=> (Неперекрывающийся).

Удобный способ запомнить это, есть только один бар в -так, что перекрывается. И есть два бара в =, так что это не перекрытие.

  • Этот и тот или иной тип использования импликации использует методологию, приведенную ниже.
  • Я думаю, у вас есть базовое представление о том, где использовать |->(перекрытие) и |=>(не перекрытие)

property name(); Enabling sequence (|-> or |=>) Consequent sequence endproperty

Результат:

  • когда разрешающая последовательность 'true (1'b1)', тогда она проверяет последовательную последовательность.. если последовательный seq 'true, чем утверждение проходит, и если последовательный seq равен' false, то утверждение не выполняется..

  • При включении seq `false, чем оно проходит, но отображает как"viscus success", и вы не сможете увидеть зеленую стрелку в форме волны

в то время как...

property name(); sequence1 (## delay) sequence2 endproperty

  • В этом случае, если seq1 имеет значение "истина", то после некоторой задержки он проверяет seq2, если "seq2" имеет значение "истина, чем проход подтверждения" и если seq2 имеет значение "ложь", то утверждение не выполняется..
  • Если seq1 имеет значение `false, то утверждение не выполняется напрямую..

В этом главное отличие.. Я думаю, что это может помочь

Другие вопросы по тегам