|
ModelSim-Altera ругается на одинаковые имена в разных struct, А именно на названия констант в перечислимых типах. |
|
|
|
Jul 11 2018, 10:42
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 4-06-18
Пользователь №: 104 848

|
Сделал в одном модуле несколько структур (struct) с разными именами. Внутри каждой структуры есть перечислимый тип (состояния конечного автомата). Ну и у каждой структуры есть состояние автомата IDLE. Сам Quartus собирает проект без ошибок. Но ModelSim-Altera говорит Enum literal name 'IDLE' already exists.. "Очищенный" пример: Code.svКод `timescale 1 ns/ 1 ns module test013_LITERAL ( input A, input B, output C ); struct{enum{IDLE, SOME_STAGE_1} FSM; logic some_register; } first_machine; struct{enum{IDLE, SOME_STAGE_2} FSM; logic some_register; } second_machine; assign C = A ^ B; endmodule testbench.vtКод `timescale 1 ns/ 1 ns module testbench(); reg test_A; reg test_B; wire test_C; test013_LITERAL DUT (.A(test_A), .B(test_B), .C(test_C)); initial begin #100 test_A = 0; test_B = 0; #100 test_A = 1; test_B = 0; #100 test_A = 0; test_B = 1; #100 test_A = 1; test_B = 1; end endmodule Что я делаю не так?
|
|
|
|
|
 |
Ответов
|
Jul 12 2018, 12:53
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата struct не создает scope struct создаёт scope - вы можете создавать объекты с одинаковыми именами в структурах, всё будет ок, struct не позволяет внутри своей scope определять тип. Когда вы объявляете объект внутри структуры, всё нормально, он живёт внутри этой области видимости, но определить тип внутри вы не можете - попробуйте написать там typedef - получите ошибку (а если нет, значит это баг тула). Когда вы определяете перечисление, вы неявно определяете его тип, и поскольку внутри структуры этот тип не может быть определён, он автоматом переносится в объемлющую область видимости со всеми вытекающими.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Jul 12 2018, 13:12
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 4-06-18
Пользователь №: 104 848

|
Цитата(dxp @ Jul 12 2018, 15:53)  struct создаёт scope - вы можете создавать объекты с одинаковыми именами в структурах, всё будет ок, struct не позволяет внутри своей scope определять тип. Когда вы объявляете объект внутри структуры, всё нормально, он живёт внутри этой области видимости, но определить тип внутри вы не можете - попробуйте написать там typedef - получите ошибку (а если нет, значит это баг тула). Когда вы определяете перечисление, вы неявно определяете его тип, и поскольку внутри структуры этот тип не может быть определён, он автоматом переносится в объемлющую область видимости со всеми вытекающими. Звучит логично. Жаль. Не хотелось бы имена регистров копировать четыре раза вместо одного, используя module для группировки. Посмотрю что скажет Мегратек (и вообще) и покорюсь судьбе
|
|
|
|
Сообщений в этой теме
flammmable ModelSim-Altera ругается на одинаковые имена в разных struct Jul 11 2018, 10:42 RobFPGA Приветствую!
Цитата(flammmable @ Jul 11 2... Jul 11 2018, 11:16 flammmable Цитата(RobFPGA @ Jul 11 2018, 14:16) Прив... Jul 11 2018, 11:32  RobFPGA Приветствую!
Цитата(flammmable @ Jul 11 ... Jul 11 2018, 11:49   flammmable Цитата(RobFPGA @ Jul 11 2018, 14:49) Надо... Jul 11 2018, 12:24    Sergey_Bekrenyov 1. Несколько конечных автоматов в одном модуле дер... Jul 11 2018, 12:48     andrew_b Цитата(Sergey_Bekrenyov @ Jul 11 2018, 15... Jul 11 2018, 13:07      Sergey_Bekrenyov Цитата(andrew_b @ Jul 11 2018, 17:07) Еру... Jul 11 2018, 13:17       andrew_b Цитата(Sergey_Bekrenyov @ Jul 11 2018, 16... Jul 11 2018, 13:23        Sergey_Bekrenyov Цитата(andrew_b @ Jul 11 2018, 17:23) Ну ... Jul 11 2018, 20:17       flammmable Цитата(Sergey_Bekrenyov @ Jul 11 2018, 16... Jul 11 2018, 13:38        Sergey_Bekrenyov Цитата(flammmable @ Jul 11 2018, 17:38) Х... Jul 11 2018, 16:55    RobFPGA Приветствую
Цитата(flammmable @ Jul 11 2018, ... Jul 11 2018, 14:22 dxp Цитата(RobFPGA @ Jul 11 2018, 18:16) Enum... Jul 12 2018, 04:09 flammmable Спасибо за комментарии. Кое-что удалось выяснить.
... Jul 12 2018, 11:28 RobFPGA Приветствую!
Цитата(flammmable @ Jul 12 2... Jul 12 2018, 13:48  flammmable Цитата(RobFPGA @ Jul 12 2018, 16:27) Прос... Jul 12 2018, 14:02   RobFPGA Приветствую!
Цитата(flammmable @ Jul 12 2... Jul 12 2018, 14:34    flammmable Цитата(RobFPGA @ Jul 12 2018, 17:34) Тогд... Jul 12 2018, 15:40     RobFPGA Приветствую!
Цитата(flammmable @ Jul 12 2... Jul 12 2018, 15:55
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|