Приветствую
Цитата(flammmable @ Jul 11 2018, 15:24)

Хорошо, это не C/C++. Поэтому, например, исходя из каких-то соображений элементы struct могут иметь или блокирующее или не блокирующее присвоение. Хотя такое ограничение несколько странно, но допустим дело в том, что компилятор расположит отдельные биты этих элементов рядом и... (и что дальше?) и не знаю, но допустим это как-то связано со структурой ПЛИСов. Ладно, то - такое.
Это можно обсуждать видя контекст применения этой struct
Цитата(flammmable @ Jul 11 2018, 15:24)

Но! Как вы верно отметили "IDLE" - сугубо синтаксическая абстракция. Для нее. Надо. Просто. Сделать. Ограничение. Видимости. Потому как в противном случае ситуация следующая:
Видимость enum ограниченна compilation unit - почему это так - надо спраштвать в комитете по SV.
Давайте немного поваляем коня для придания ему сферичности...
Цитата(flammmable @ Jul 11 2018, 15:24)

1. Есть конечный автомат как некая сущность. // не спорю
2. У этого автомата есть некоторые атрибуты. // усы хвост регистр и список состояния?
3. Эти атрибуты можно сгруппировать в struct. // зачем, какой профит? в SV есть другие способы структуирования
4. В этот же struct можно внести и список состояний автомата. // но в SV пока это особо смысла не иемеет
5. Причем значения этих состояний можно получать через "имя_структуры.имя_состояния". // как Карл???
С точки зрения синтаксиса в структуре
НЕТ поля с именем IDLE! Как к нему обратится? Ну и по Вашему ведь можно так написать:
Код
struct {
enum {IDLE=1, SOME_STAGE_1} FSM1;
enum {IDLE=2, SOME_STAGE_2} FSM2;
...
logic some_register;
} first_machine;
И какое значение IDLE по Вашему мне выдаст some_var=first_machine.IDLE?
Цитата(flammmable @ Jul 11 2018, 15:24)

6.1. Но! IDLE, который есть у большинства автоматов надо вынести отдельно и обращаться к нему напрямую! // это кому как нравится
6.2. Или придумать для каждой машины свое название IDLE. // у меня так и есть typedef enum {ST_A_IDLE, ..} e_ST_A_t;
Имена регистров повторяются - на здоровье. Имена состояний - ни за что! // ???
6.3. Или атрибуты сгруппировать в struct, а состояния целиком вынести в блок параметров, хотя синтаксис позволяет enum-у находится внутри struct. //???
6.4. Или вообще не пользоваться struct. // ???
Или не пытать слепо тянуть шаблоны проектирования.
Цитата(flammmable @ Jul 11 2018, 15:24)

Мне сложно поверить, что дело в синтаксисе SystemVerilog. Он не мог быть сделан так тупо. Я уверен - дело в каких-то настройках ModelSim и/или Quartus.
Вопросы веры и религии мы тут не обсуждаем

Удачи! Rob.