MaratZuev 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба Всем добра! Разбираюсь с чужим проектом на чужом мне языке. При моделировании ModelSim произносит несколько ругательств, суть которых, как (если) я правильно понимаю сводится к тому, что некоторые сигналы в проекте не заданы в testbench-е. Начинаю смотреть по проекту и вижу, что один сигнал интересующего меня модуля отсутствует как класс: нет, он есть в файле (библиотечном, который сам ModelSim сгенерировал из Quartus-овских исходников или как там это правильно называть?), но, вот, в списке сигналов ModelSim-а этот сигнал отсутствует! Почему и куда он делся?! Речь про enable. Картинка, на которой всё: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба Из приведённой Вами картинке ничего не понятно. Лучше покажите часть кода. Может там конфигурация задаётся через параметр или он оптимизируется ибо внутри не подключён. По поводу варнингов в МоделСиме: если Вы интерпретировали те, что на скрине - тогда это обычное отсутствие инициализации, что привело к конвертации сигнала в неопределённое состояние "Х" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба Это Three-Step Flow. Добавьте +acc при компиляции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба 30 minutes ago, Nick_K said: Лучше покажите часть кода Покажу весь (в скрепке) 33 minutes ago, Nick_K said: или он оптимизируется Да, дело было в оптимизации: https://forums.xilinx.com/t5/Simulation-and-Verification/Why-does-Modelsim-not-display-some-signals/td-p/297781 35 minutes ago, Nick_K said: обычное отсутствие инициализации А вот этого по проекту я найти не могу: уже все глаза проглядел.. MPM027_16.02.ZIP 35 minutes ago, andrew_b said: Это Three-Step Flow. Добавьте +acc при компиляции. Спасибо. Добавить именно при компиляции, а не при оптимизации? У меня же, вроде, two-step flow? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба 13 минут назад, MaratZuev сказал: Добавить именно при компиляции, а не при оптимизации? Да. 13 минут назад, MaratZuev сказал: У меня же, вроде, two-step flow? Вам виднее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба Приветствую! Это ругательство доносится из модулей писанных на VHDL, в которых есть арифметические операции, и переменные в которых не имеют начальных значений. Лечится это: либо полным игнором со стороны разработчика либо установкой опций StdArithNoWarnings, NumericStdNoWarnings в GUI опций симуляции либо установкой опций set StdArithNoWarnings 1; set NumericStdNoWarnings 1в tcl скрипте запуска либо изменением опций в modelsim.ini ... ; Turn off warnings from accelerated versions of the std_logic_arith, ; std_logic_unsigned, and std_logic_signed packages. ; StdArithNoWarnings = 1 ; Turn off warnings from accelerated versions of the IEEE numeric_std ; and numeric_bit packages. ; NumericStdNoWarnings = 1 ... Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба В файле mpm027.vhd: SIGNAL SYNTHESIZED_WIRE_10 : STD_LOGIC; При объявлении все сигналы желательно инициализировать: SIGNAL SYNTHESIZED_WIRE_10 : STD_LOGIC := '0'; (или := (others => '0') для векторов и в единицу, для инверсных сигналов) Тогда не будет кучи таких синих варнингов. А по поводу оптимизиции почитайте тут: https://forums.xilinx.com/t5/Synthesis/How-to-avoid-signal-optimizing-in-synthesis/td-p/76056 Хоть и форум Ксайлинкса, но констрейны те же и позволят предотвратить оптимизацию, как следствие будет видно на модели (советую сделать это только для моделирования) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба 10 minutes ago, Nick_K said: При объявлении все сигналы желательно инициализировать: SIGNAL SYNTHESIZED_WIRE_10 : STD_LOGIC := '0'; (или := (others => '0') для векторов и в единицу, для инверсных сигналов) Тогда не будет кучи таких синих варнингов. Инициализировал. Ворнинги остались. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба На всех уровнях во всех файлах? Кстати, если есть такие необъявленные сигналы в мегафункциях - то их исправит только могила решение от RobFPGA: придётся ставить их в игнор. По-другому внутрь проприетарных конструкций не влезть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба 58 minutes ago, RobFPGA said: либо установкой опций set StdArithNoWarnings 1; set NumericStdNoWarnings 1в tcl скрипте запуска Скрипте запуска чего? Если ставлю в свой скрипт: variable StdArithNoWarnings 1 variable NumericStdNoWarnings 1 # create library if [file exists work] { vdel -all } vlib work set FilesCompiled 0 # compile all source files set vhdl_files [glob -nocomplain ../../*.vhd] if {[llength $vhdl_files]} { vcom -2008 -explicit -work work ../../*.vhd set FilesCompiled 1 puts "VHDL file(s) are compiled!" } if {$FilesCompiled} { vsim -L altera -L lpm -L sgate -L altera_mf -L altera_lnsim -L maxii -L maxv\ -L cycloneii -L work work.mpm027_tb source wave_window_signals.tcl } else { puts "No file(s) to compile found!" } ничего не меняется, warning-и остаются 29 minutes ago, Nick_K said: На всех уровнях во всех файлах? Зачем же во всех? Ругается только на /mpm027_tb/UUT/b2v_inst8/lpm_decode_component - на сигналы на его входах и надо ставить значения по умолчанию, нет? Это указанный вами SYNTHESIZED_WIRE_10 и пара FBAd20 и FBAd21. SYNTHESIZED_WIRE_10 я определил, как вы указали, а FBAd20 и FBAd21 были определены в testbench-e: signal FBAd21 : STD_LOGIC:='0'; signal FBAd20 : STD_LOGIC:='0'; Но warning-и остаются. Any other idea? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба Приветствую! 9 minutes ago, MaratZuev said: Скрипте запуска чего? В скрипте выполняющемся после запуска vsim, до момента выполнения команды run ... Например как аргумент -do опции vsim. vsim ... -do "set NumericStdNoWarnings 1; do wave_config.do" ... Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба 1 hour ago, RobFPGA said: либо изменением опций в modelsim.ini Вот это сработало, спасибо. 20 minutes ago, RobFPGA said: В скрипте выполняющемся после запуска vsim, до момента выполнения команды run if {$FilesCompiled} { vsim -L altera -L lpm -L sgate -L altera_mf -L altera_lnsim -L maxii -L maxv\ -L cycloneii -L work work.mpm027_tb variable StdArithNoWarnings 1 variable NumericStdNoWarnings 1 source wave_window_signals.tcl } else { puts "No file(s) to compile found!" } Спасибо, работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба 7 минут назад, MaratZuev сказал: variable StdArithNoWarnings 1 variable NumericStdNoWarnings 1 Почему variable? set. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба 1 hour ago, MaratZuev said: Ругается только на /mpm027_tb/UUT/b2v_inst8/lpm_decode_component - на сигналы на его входах и надо ставить значения по умолчанию, нет? Увы, но нет. Вся "прелесть" VHDL" что он смотрит на все елементы входящие в конечный пункт. То есть учитывает все промежуточные порты, все присвания и даже списки чувствительности процессов, в которые входят причастные сигналы. Одним словом, чтобы не было таких варнингов каждая строка объявления signal и out должна замыкаться := '0' или := (others => '0'). А вообще это просто моделирование, морочить себе голову из-за набора варнингов инициализации - не особо важное занятие. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MaratZuev 0 10 октября, 2019 Опубликовано 10 октября, 2019 · Жалоба 1 hour ago, andrew_b said: Почему variable? set. set выводит в transcript результат присвоения, что ИМО засоряет вывод, в то время как variable - нет 35 minutes ago, Nick_K said: все елементы входящие в конечный пункт Берём lpm_decode_component из lpm_decode0.vhd: у него два входных порта PORT MAP ( enable => enable, data => data ); идём наверх lpm_decode0 в том же файле имеет порты PORT ( data : IN STD_LOGIC_VECTOR (1 DOWNTO 0); enable : IN STD_LOGIC ); далее b2v_inst8 : lpm_decode0 из файла mpm027.vhd PORT MAP(enable => SYNTHESIZED_WIRE_10, data => Add ); в этом файле по вашему совету я добавил инициализацию SIGNAL SYNTHESIZED_WIRE_10 : STD_LOGIC:= '0'; сигналы же Add здесь же описаны как Add(0) <= FBAd20; Add(1) <= FBAd21; а выше, в testbench-e mpm027_tb.vhd, signal FBAd21 : STD_LOGIC:='0'; signal FBAd20 : STD_LOGIC:='0'; т.е. всё, вроде, инициализировано. Или не всё? 47 minutes ago, Nick_K said: морочить себе голову из-за набора варнингов У меня (возможно, неправильная) привычка морочить себе голову по поводу любых ворнингов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться