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

"Russians are really disconnected from the reality of what happening to their country," Andrey said. "So Telegram has become essential for understanding what's going on to the Russian-speaking world." But Kliuchnikov, the Ukranian now in France, said he will use Signal or WhatsApp for sensitive conversations, but questions around privacy on Telegram do not give him pause when it comes to sharing information about the war. Recently, Durav wrote on his Telegram channel that users' right to privacy, in light of the war in Ukraine, is "sacred, now more than ever." Soloviev also promoted the channel in a post he shared on his own Telegram, which has 580,000 followers. The post recommended his viewers subscribe to "War on Fakes" in a time of fake news. If you initiate a Secret Chat, however, then these communications are end-to-end encrypted and are tied to the device you are using. That means it’s less convenient to access them across multiple platforms, but you are at far less risk of snooping. Back in the day, Secret Chats received some praise from the EFF, but the fact that its standard system isn’t as secure earned it some criticism. If you’re looking for something that is considered more reliable by privacy advocates, then Signal is the EFF’s preferred platform, although that too is not without some caveats.
from ms


Telegram Arnold Enginegger
FROM American