реклама на сайте
подробности

 
 
> ModelSim-Altera ругается на одинаковые имена в разных struct, А именно на названия констант в перечислимых типах.
flammmable
сообщение Jul 11 2018, 10:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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

Что я делаю не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dxp
сообщение Jul 12 2018, 12:53
Сообщение #2


Adept
******

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



Цитата
struct не создает scope

struct создаёт scope - вы можете создавать объекты с одинаковыми именами в структурах, всё будет ок, struct не позволяет внутри своей scope определять тип. Когда вы объявляете объект внутри структуры, всё нормально, он живёт внутри этой области видимости, но определить тип внутри вы не можете - попробуйте написать там typedef - получите ошибку (а если нет, значит это баг тула). Когда вы определяете перечисление, вы неявно определяете его тип, и поскольку внутри структуры этот тип не может быть определён, он автоматом переносится в объемлющую область видимости со всеми вытекающими.



--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
flammmable
сообщение Jul 12 2018, 13:12
Сообщение #3


Участник
*

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



Цитата(dxp @ Jul 12 2018, 15:53) *
struct создаёт scope - вы можете создавать объекты с одинаковыми именами в структурах, всё будет ок, struct не позволяет внутри своей scope определять тип. Когда вы объявляете объект внутри структуры, всё нормально, он живёт внутри этой области видимости, но определить тип внутри вы не можете - попробуйте написать там typedef - получите ошибку (а если нет, значит это баг тула). Когда вы определяете перечисление, вы неявно определяете его тип, и поскольку внутри структуры этот тип не может быть определён, он автоматом переносится в объемлющую область видимости со всеми вытекающими.

Звучит логично. Жаль. Не хотелось бы имена регистров копировать четыре раза вместо одного, используя module для группировки. Посмотрю что скажет Мегратек (и вообще) и покорюсь судьбе sm.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 18:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.0141 секунд с 7
ELECTRONIX ©2004-2016