Nick_K 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба 15 minutes ago, MaratZuev said: SIGNAL SYNTHESIZED_WIRE_10 : STD_LOGIC:= '0'; Этот сигнал асинхронно присваивается к NOT(FBCS5) посиму нужно смотреть где начинается FBCS5. И в любом месте инициализировать его тоже. Остановится можно только на синхронных процессах. (я проверил у Вас сингналы инициализированы и начинаются в тестбенче - с этой стороны всё ок) А вот второй момент интереснее: варнинги выскакивают на компонент lpm_decode_component : lpm_decode который является мегафункцией Квартуса (насколько я понял), соответственно нужно инициализировать именно её внутри, что невозможно ;) Посиму заигнорьте данные типы варнингов и живите спокойно. Анализировать их (варнинги) полезно только на самых поздних этапах разработки и то не варнинги МоделСима, а синтезатора/имплементатора. До этого можно обойтись критическими ошибками и эррорами. P.S. Кстати внутри модуля lpm_decode0 инициализировать все сигналы тоже было бы неплохо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба 11 minutes ago, Nick_K said: где начинается FBCS5 Он тоже начинается в тестбенче и там же инициализирован signal FBCS5 : STD_LOGIC:='1'; 18 minutes ago, Nick_K said: lpm_decode который является мегафункцией Квартуса Вообще, ModelSim даёт заглянуть внутрь этой мегафункции, и показывает, что там: -- ENTITY DECLARATION entity LPM_DECODE is generic ( -- Width of the data[] port, or the input value to be decoded. (Required) lpm_width : natural; -- Number of explicit decoder outputs. (Required) lpm_decodes : natural; -- Number of Clock cycles of latency lpm_pipeline : natural := 0; lpm_type : string := "LPM_DECODE"; lpm_hint : string := "UNUSED" ); port ( -- Data input. Treated as an unsigned binary encoded number. (Required) data : in std_logic_vector(lpm_width-1 downto 0); -- Enable. All outputs low when not active. enable : in std_logic := '1'; -- Clock for pipelined usage. clock : in std_logic := '0'; -- Asynchronous clear for pipelined usage. aclr : in std_logic := '0'; -- Clock enable for pipelined usage. clken : in std_logic := '1'; -- Decoded output. (Required) eq : out std_logic_vector(lpm_decodes-1 downto 0) ); end LPM_DECODE; -- END OF ENTITY тоже всё инициализировано. 24 minutes ago, Nick_K said: Кстати внутри модуля lpm_decode0 инициализировать все сигналы тоже было бы неплохо. ARCHITECTURE SYN OF lpm_decode0 IS SIGNAL sub_wire0 : STD_LOGIC_VECTOR (3 DOWNTO 0):=(others=>'0'); SIGNAL sub_wire1 : STD_LOGIC := '0'; SIGNAL sub_wire2 : STD_LOGIC := '0'; SIGNAL sub_wire3 : STD_LOGIC := '0'; SIGNAL sub_wire4 : STD_LOGIC := '0'; не помогло Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба 29 minutes ago, MaratZuev said: eq : out std_logic_vector(lpm_decodes-1 downto 0) Вход не важно. его инициализация не влияет ни ан что, главное выходы должны быть инициализированы и вот в этт должен иметь вид: eq : out std_logic_vector(lpm_decodes-1 downto 0) := (others => '0'); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба 28 minutes ago, Nick_K said: главное выходы должны быть инициализированы Век живи: всю жизнь считал, что именно входы надо инициализировать! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба 15 minutes ago, MaratZuev said: Век живи: всю жизнь считал, что именно входы надо инициализировать! Может в Верилоге так и есть, но вот в VHDL как раз нужно (а иногда и только их можно) инициализировать выходы. Ибо входы всегда должны быть подключены (нельзя оставить висящий вход), а вот выходы можно не подключать. Соответственно один раз неподключённый выход ничего не сделает, а когда подключить через пол года, и вылазит варнинг Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Джеймс 3 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба 11 hours ago, MaratZuev said: Начинаю смотреть по проекту и вижу, что один сигнал интересующего меня модуля отсутствует как класс: нет, он есть в файле (библиотечном, который сам ModelSim сгенерировал из Quartus-овских исходников или как там это правильно называть?), но, вот, в списке сигналов ModelSim-а этот сигнал отсутствует! Почему и куда он делся?! vsim -novopt VSIM#> log -r /* Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 11 октября, 2019 Опубликовано 11 октября, 2019 · Жалоба 15 hours ago, Nick_K said: входы всегда должны быть подключены (нельзя оставить висящий вход) разве в этом случае на вход не будет подано значение по умолчанию? 15 hours ago, Nick_K said: неподключённый выход ничего не сделает разве выход однозначно не определятся входами? 10 hours ago, Джеймс said: vsim -novopt Да, спасибо, до этого уже добрался Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 11 октября, 2019 Опубликовано 11 октября, 2019 · Жалоба 13 minutes ago, MaratZuev said: разве выход однозначно не определятся входами? Только если это чистая комбинаторика (что очень редко выносится в отдельный модуль). А если есть флопы, ДСП , память и т.д., тогда состоянием этих компонентов, которые до клока в симуляторе находятся в неопределённом состоянии Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 11 октября, 2019 Опубликовано 11 октября, 2019 · Жалоба 3 minutes ago, Nick_K said: Только если это чистая комбинаторика (что очень редко выносится в отдельный модуль). А если есть флопы, ДСП , память и т.д., тогда состоянием этих компонентов, которые до клока в симуляторе находятся в неопределённом состоянии Понял, спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться