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: |

A Russian Telegram channel with over 700,000 followers is spreading disinformation about Russia's invasion of Ukraine under the guise of providing "objective information" and fact-checking fake news. Its influence extends beyond the platform, with major Russian publications, government officials, and journalists citing the page's posts. "We as Ukrainians believe that the truth is on our side, whether it's truth that you're proclaiming about the war and everything else, why would you want to hide it?," he said. At the start of 2018, the company attempted to launch an Initial Coin Offering (ICO) which would enable it to enable payments (and earn the cash that comes from doing so). The initial signals were promising, especially given Telegram’s user base is already fairly crypto-savvy. It raised an initial tranche of cash – worth more than a billion dollars – to help develop the coin before opening sales to the public. Unfortunately, third-party sales of coins bought in those initial fundraising rounds raised the ire of the SEC, which brought the hammer down on the whole operation. In 2020, officials ordered Telegram to pay a fine of $18.5 million and hand back much of the cash that it had raised. In view of this, the regulator has cautioned investors not to rely on such investment tips / advice received through social media platforms. It has also said investors should exercise utmost caution while taking investment decisions while dealing in the securities market. "The result is on this photo: fiery 'greetings' to the invaders," the Security Service of Ukraine wrote alongside a photo showing several military vehicles among plumes of black smoke.
from ye


Telegram Arnold Enginegger
FROM American