Цитата(RobFPGA @ Jul 11 2018, 14:49)

Надо немного по другому
- Как?
- Иначе!©Badcomedian
Хорошо, это не C/C++. Поэтому, например, исходя из каких-то соображений элементы struct могут иметь или блокирующее или не блокирующее присвоение. Хотя такое ограничение несколько странно, но допустим дело в том, что компилятор расположит отдельные биты этих элементов рядом и... (и что дальше?) и не знаю, но допустим это как-то связано со структурой ПЛИСов. Ладно, то - такое.
Но! Как вы верно отметили
"IDLE" -
сугубо синтаксическая абстракция. Для нее. Надо. Просто. Сделать. Ограничение. Видимости. Потому как в противном случае ситуация следующая:
1. Есть конечный автомат как некая сущность.
2. У этого автомата есть некоторые атрибуты.
3. Эти атрибуты можно сгруппировать в struct.
4. В этот же struct можно внести и список состояний автомата.
5. Причем значения этих состояний можно получать через
"имя_структуры.имя_состояния".
6.1. Но! IDLE, который есть у большинства автоматов надо вынести отдельно и обращаться к нему напрямую!
6.2. Или придумать для каждой машины свое название IDLE. Имена регистров повторяются - на здоровье. Имена состояний - ни за что!
6.3. Или атрибуты сгруппировать в struct, а состояния целиком вынести в блок параметров, хотя синтаксис позволяет enum-у находится внутри struct.
6.4. Или вообще не пользоваться struct.
Мне сложно поверить, что дело в синтаксисе SystemVerilog. Он не мог быть сделан так тупо. Я уверен - дело в каких-то настройках ModelSim и/или Quartus.
Сообщение отредактировал flammmable - Jul 11 2018, 13:28