Оператор подстановки в system verilog и его синтезируемость

#verilog #system-verilog

#verilog #system-verilog

Вопрос:

что такое операторы подстановки в system verilog? Я искал в сети, но есть некоторая двусмысленность.

Также они синтезируемы?

Ответы на нижеприведенные вопросы?

 4'b1010 ==? 4'b10x0 
4'b10x0 ==? 4'b1010
  

Комментарии:

1. Ответ на первую часть вопроса можно найти в любом руководстве или документации verilog. Вторая часть о синтезируемости интересна, и я голосую за повторное открытие вопроса.

Ответ №1:

Похоже, вы не искали в IEEE 1800-2017 SystemVerilog LRM. Раздел 11.4.6 Операторы равенства подстановочных знаков определяет этот оператор. Поиск дал бы много других примеров, подобных приведенному здесь .

Операторы равенства подстановочных знаков предназначены для синтеза, если X отображается в RHS как литеральное или постоянное выражение. X в RHS рассматриваются как совпадения безразличия. Символы X в LHS ничему не соответствуют и используются только при моделировании. inside Оператор и case inside условный оператор используют это асимметричное сопоставление подстановочных знаков для synthesizable don’t carets.

Ответ №2:

Из раздела 5.5 «Стандарта IEEE для синтеза уровня передачи регистров Verilog» стандарта IEEE Std 1364.1-2002 (1364 — это базовая спецификация, расширенная IEEE-1800, а 1361.1 определяет синтезируемое подмножество 1364):

 The value x may be used in case item expressions (may be mixed 
with other expressions, such as 4'b01x0) in a casex statement to 
imply a don't care value for synthesis.
  

Поскольку оператор подстановки является очевидным расширением выражения casex, можно было бы разумно ожидать, что он предназначен для синтеза. Я не знаю о стандарте IEEE для 1800, который определяет синтезируемое подмножество; или если эта информация содержится в самом стандарте IEEE-1800.

Покойный Стюарт Сазерленд в своей статье предложил список синтезируемых конструкций для IEEE-1800, который включал равенство подстановочных знаков: https://sutherland-hdl.com/papers/2006-DVCon_SystemVerilog_synthesis_subset_paper.pdf

С практической точки зрения, окончательный способ проверить такой вопрос — это создать небольшой пример, используя эту конструкцию, и передать его в инструмент синтеза, который вы на самом деле планируете использовать, и посмотреть, получите ли вы предупреждения, ошибки или рабочий код!