2016-01-02 3 views
2

У меня есть следующий код:Почему неограниченный вектор констант в GHDL не считается статическим?

entity test is 
end entity; 

architecture rtl of test is 
    type T_TUPLE is record 
    A : NATURAL; 
    B : NATURAL; 
    end record; 
    type T_VECTOR is array (NATURAL range <>) of T_TUPLE; 

    constant LIST : T_VECTOR := ((8, 32), (8, 20), (8, 36)); 
begin 
    genTests : for i in LIST'range generate 
    constant LOCAL_A : NATURAL := LIST(i).A; 
    constant LOCAL_B : NATURAL := LIST(i).B; 
    begin 
    -- my tests 
    end generate; 
end architecture; 

Я получаю следующее сообщение об ошибке для моего генерировать заявление:

... диапазон должен быть статический дискретный диапазон

Когда я изменить мою постоянную на ограниченный вариант, она работает ...

constant LIST : T_VECTOR(0 to 2) := ((8, 32), (8, 20), (8, 36)); 

Почему пример более статичен?

Edit:
Ссылка на GHDL Issue discussion на GitHub.

+1

Стоит спросить Тристана, я думаю. –

ответ

1

Заинтересовавшись, она все еще выдаст ошибку, если вы выполните следующие действия:

constant initial_LIST : T_VECTOR := ((8, 32), (8, 20), (8, 36)); 
constant LIST : T_VECTOR(initial_LIST'range) := initial_LIST ; 

Я играл подобную игру, чтобы инициализировать сигналы в соответствии с размером константы.

+0

Да, ошибка одна и та же: в выражении generate, но не проблема во второй константе :). – Paebbels

+0

Это не строго ответ, несмотря на возвышение. Также обратите внимание, что, добавив пустое объявление сущности и используя (llvm) версию ghdl-0.33, пример анализирует, разрабатывает и имитирует (делая ничего интересного) без ошибок (MCVe полезен). Это говорит о том, что это ошибка реализации, отметив, что Paebbels построил свою собственную версию Windows mcode, используя дерево разработки post release 0.33. Вероятно, это может быть сообщено как ошибка. Будет ли это иметь место в выпуске Windows ghdl-0.33. – user1155120

+0

@ user1155120 Это то, что должно быть, работа вокруг потенциальной ошибки инструмента. OTOH, если LIST был сигналом, это языковая работа. –

 Смежные вопросы

  • Нет связанных вопросов^_^