Telegram Group & Telegram Channel
По поводу соблюдения стандартов. Не первый раз замечаю, что iverilog строже следует стандартам, чем другие симуляторы. Вот ещё один пример - присвоение значения enum'у.

Вот такой код не проходит компиляцию в iverilog, тогда как verilator и modelsim/questa не выдают ни ошибок ни предупреждений:

    typedef enum {
ST_ONE,
ST_ZERO
} state_t;

state_t state;
logic a;

always_comb
state = a ? ST_ONE : ST_ZERO;


Ошибка состоит в том, что переменной state потенциально может быть присвоено значение X, потому что тернарный оператор "пропускает" иксы из условия на выход (такое поведение называется X-pessimism). Но иксы не являются допустимым значением для типа state_t. Согласно стандарту (раздел 6.19.3) такая ситуация является ошибкой.

Есть два очевидных пути исправления:

1. Использовать if/else, т.к. это X-оптимистичный оператор
2. Явно привести тип тернарного выражения к state_t

Менее очевидное решение - использовать тип bit для сигнала a. Этот тип не может принимать неопределенного значения, по этому и нарушений при присвоении перечислению не будет.

А вот с верилятором "не всё так однозначно" - у него же в принципе нет иксов, по этому стандарт он как бы и не нарушает вовсе :)



group-telegram.com/enginegger/63
Create:
Last Update:

По поводу соблюдения стандартов. Не первый раз замечаю, что iverilog строже следует стандартам, чем другие симуляторы. Вот ещё один пример - присвоение значения enum'у.

Вот такой код не проходит компиляцию в iverilog, тогда как verilator и modelsim/questa не выдают ни ошибок ни предупреждений:

    typedef enum {
ST_ONE,
ST_ZERO
} state_t;

state_t state;
logic a;

always_comb
state = a ? ST_ONE : ST_ZERO;


Ошибка состоит в том, что переменной state потенциально может быть присвоено значение X, потому что тернарный оператор "пропускает" иксы из условия на выход (такое поведение называется X-pessimism). Но иксы не являются допустимым значением для типа state_t. Согласно стандарту (раздел 6.19.3) такая ситуация является ошибкой.

Есть два очевидных пути исправления:

1. Использовать if/else, т.к. это X-оптимистичный оператор
2. Явно привести тип тернарного выражения к state_t

Менее очевидное решение - использовать тип bit для сигнала a. Этот тип не может принимать неопределенного значения, по этому и нарушений при присвоении перечислению не будет.

А вот с верилятором "не всё так однозначно" - у него же в принципе нет иксов, по этому стандарт он как бы и не нарушает вовсе :)

BY Arnold Enginegger


Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260

Share with your friend now:
group-telegram.com/enginegger/63

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

Oleksandra Matviichuk, a Kyiv-based lawyer and head of the Center for Civil Liberties, called Durov’s position "very weak," and urged concrete improvements. And indeed, volatility has been a hallmark of the market environment so far in 2022, with the S&P 500 still down more than 10% for the year-to-date after first sliding into a correction last month. The CBOE Volatility Index, or VIX, has held at a lofty level of more than 30. He adds: "Telegram has become my primary news source." Right now the digital security needs of Russians and Ukrainians are very different, and they lead to very different caveats about how to mitigate the risks associated with using Telegram. For Ukrainians in Ukraine, whose physical safety is at risk because they are in a war zone, digital security is probably not their highest priority. They may value access to news and communication with their loved ones over making sure that all of their communications are encrypted in such a manner that they are indecipherable to Telegram, its employees, or governments with court orders. Following this, Sebi, in an order passed in January 2022, established that the administrators of a Telegram channel having a large subscriber base enticed the subscribers to act upon recommendations that were circulated by those administrators on the channel, leading to significant price and volume impact in various scrips.
from it


Telegram Arnold Enginegger
FROM American