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

 
 
> 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
Ответов
flammmable
сообщение Jul 12 2018, 11:28
Сообщение #2


Участник
*

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



Спасибо за комментарии. Кое-что удалось выяснить.

1. Зачем вся эта тема нужна?
Вот пара примеров группировки атрибутов (при помощи модуля и при помощи структуры):

Модуль:
Код
module test013_LITERAL (
    output some_output
);
    logic reg_C;

    logic reg_A_for_submodul;//первое упоминание reg_A
    logic reg_B_for_submodul;
    logic reg_C_for_submodul;//придумать уникальное название во избежание пересечения имен
    
    submodul(.reg_A(reg_A_for_submodul),//второе и третье упоминание reg_A
             .reg_B(reg_B_for_submodul),
             .reg_C(reg_C_for_submodul));
    
    assign some_output = reg_C_for_submodul;    
endmodule


module submodul(
    input reg_A,//четвертое упоминание reg_A
    input reg_B,
    output reg_C
);
endmodule

Структура:
Код
module test013_LITERAL (
    output some_output
);
    logic reg_C;

    struct{logic reg_A;    //только одно упоминание reg_A
            logic reg_B;
            logic reg_C;//можно не опасаться пересечения имен
            } struct_example;

    assign some_output = struct_example.reg_C;    
endmodule


Вам как было бы удобней производить группировку?

2. Вопрос веры sm.gif
Некоторые полагают, что элементы enum не вызвать через точку. Другие полагают, что можно, но синтаксис SystemVerilog таков, что вынесет элементы enum во внешнюю область видимости.

Рабочий пример:
Код
module test013_LITERAL (
    output [3:0]first_literal,
    output [3:0]second_literal
);

struct{enum{SOME_LITERAL_0_FIRST,
            SOME_LITERAL_1_FIRST,
            IDLE,
            SOME_LITERAL_3_FIRST,
            SOME_LITERAL_4_FIRST} enum_reg;
        } first_struct;

struct{enum{SOME_LITERAL_0_SECOND,
            SOME_LITERAL_1_SECOND,
            SOME_LITERAL_2_SECOND,
            IDLE,
            SOME_LITERAL_4_SECOND} enum_reg;
        } second_struct;

assign first_literal     = first_struct.IDLE;
assign second_literal    = second_struct.IDLE;

endmodule

Результаты компиляции на Quartus Prime 17.1.0 для MAX-10 10M02SCE144C8G:
Info (293000): Quartus Prime Full Compilation was successful. 0 errors, 32 warnings
Результат работы прошивки на лампочках демоплаты (линейка из восьми светодиодов): 0010 0011

3. Кто что говорит.
Altera-forum - молчит.
Verification Academy от Mentor - молчит.
StackOverflow - говорит, что на одном из трех симуляторов мой код заработал. Так же там ссылаются на раздел 23.9 стандарта IEEE 1800-2017 и утверждают, что struct не создает scope (пффф, а зачем он тогда вообще нужен?), но проверить это утверждение пока не представляется возможным ввиду отсутствия у меня IEEE 1800-2017.
Мы продолжаем следить за событиями.
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
|- - 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
- - dxp   Цитатаstruct не создает scope struct создаёт scope...   Jul 12 2018, 12:53
- - flammmable   Цитата(dxp @ Jul 12 2018, 15:53) struct с...   Jul 12 2018, 13:12


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

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 10:26
Рейтинг@Mail.ru


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