Mty 0 March 9 Posted March 9 · Report post Вызываю questa из меню Quartus Tools -> Run Simulation Tools -> RTL Simulation Подскажите - как перезапустить симуляцию после редактирования тестбенча или исходников verilog не перезапуская каждый раз Questa? И еще вопрос - как померить расстояние между фронтами сигналов на осциллограмме в questa? Спасибо. Буду признателен, если порекомендуете какой-то толковый курс по Questa, а то методом тыка много не освоишь в такой проге. Спасибо! Quote Share this post Link to post Share on other sites More sharing options...
dxp 98 March 9 Posted March 9 · Report post В коносли квесты restart (-force по желанию) и потом run -all. Можно это же самое сделать через панель инструментов. Или через меню. Но самый удобный способ: proc r { restart -force run -all } И в консоли просто r <Enter>. 1 Quote Share this post Link to post Share on other sites More sharing options...
Zversky 20 March 9 Posted March 9 · Report post 42 минуты назад, Mty сказал: И еще вопрос - как померить расстояние между фронтами сигналов на осциллограмме в questa? Вам курсорами измерять или автоматически? Quote Share this post Link to post Share on other sites More sharing options...
Mty 0 March 9 Posted March 9 · Report post Спасибо, мне курсорами было бы здорово. Quote Share this post Link to post Share on other sites More sharing options...
Mty 0 March 9 Posted March 9 · Report post 53 minutes ago, dxp said: В коносли квесты restart (-force по желанию) и потом run -all. Можно это же самое сделать через панель инструментов. Или через меню. Но самый удобный способ: proc r { restart -force run -all } И в консоли просто r <Enter>. Благодарю, возможно делаю что то не так, в консоли выдается ошибка. И еще - как в процедуру добавить перекомпиляцию рабочих verilog файлов? Спасибо. Quote Share this post Link to post Share on other sites More sharing options...
dxp 98 March 9 Posted March 9 · Report post 14 минут назад, Mty сказал: в консоли выдается ошибка. Не, в консоли эти команды работают сами по себе (попробуйте). Если всё работает, то этот код вынесете во внешний файл -- например, restart.do, после запуска один раз делаете загрузку файла do restart.do (файл положите в директорию, откуда квеста стартует (ну, или придётся после do писать путь до этого скриптика), и после этого в консоли будет доступна команда r, которая будет выполнять действия пакетно. Это метод для автоматизации действий. Очень мощная штука: у квесты богатый API (см. референс по командам), там можно делать всё, что угодно. А загрузку своих скриптов можно делать сразу при запуске квесты, чтобы они были всегда доступны. 1 Quote Share this post Link to post Share on other sites More sharing options...
Jackov 2 March 10 Posted March 10 · Report post В 09.03.2025 в 16:24, Mty сказал: Буду признателен, если порекомендуете какой-то толковый курс по Questa, а то методом тыка много не освоишь в такой проге. Спасибо! https://www.youtube.com/playlist?list=PL4UMfOeGYsvblwrP3VYKHq11xgkxVqoUj Начиная с §10 1 Quote Share this post Link to post Share on other sites More sharing options...
Mty 0 March 10 Posted March 10 · Report post On 3/9/2025 at 5:41 PM, dxp said: Не, в консоли эти команды работают сами по себе (попробуйте). Если всё работает, то этот код вынесете во внешний файл -- например, restart.do, после запуска один раз делаете загрузку файла do restart.do (файл положите в директорию, откуда квеста стартует (ну, или придётся после do писать путь до этого скриптика), и после этого в консоли будет доступна команда r, которая будет выполнять действия пакетно. Это метод для автоматизации действий. Очень мощная штука: у квесты богатый API (см. референс по командам), там можно делать всё, что угодно. А загрузку своих скриптов можно делать сразу при запуске квесты, чтобы они были всегда доступны. Спасибо большое, понял. А как перекомпилить измененные файлы, я имею в в иду какую команду добавить в скрипт? 6 hours ago, Jackov said: https://www.youtube.com/playlist?list=PL4UMfOeGYsvblwrP3VYKHq11xgkxVqoUj Начиная с §10 Благодарю, ценно! Quote Share this post Link to post Share on other sites More sharing options...
dxp 98 March 11 Posted March 11 · Report post 4 часа назад, Mty сказал: А как перекомпилить измененные файлы, я имею в в иду какую команду добавить в скрипт? Перекомпилить можно снаружи. Но можно и внутри квесты, так же командами в консоли -- vlog/vcom (Verilot/VHDL) и vopt. Но тут придётся сообщить этим командам ключи и и список файлов. Чтобы этим можно было удобно пользоваться, нужно написать скрипт чуть сложнее, чем просто команды. Я для этого использую отдельный файл (handoff.do), в котором всё это определяется. Сам файл, конечно, руками не пишу, он генерируется из параметров проекта. И передаётся квесте так же при запуске. Выглядит он примерно так: set CFG_DIR {/opt/slon/build-system-examples/src/cfg/7a35t} set TB_NAME {top_tb} set WLIB_NAME {wlib} set SRC [list {/opt/slon/build-system-examples/src/syn/top.sv} {/opt/slon/build-system-examples/src/sim/top_tb.sv} {/opt/cad/xilinx/Vivado/2023.1/data/verilog/src/glbl.v}] set INC_PATH {/opt/slon/build-system-examples/build/7a35t/src /opt/slon/build-system-examples/lib /opt/slon/build-system-examples/src/syn} set VLOG_FLAGS { -incr -sv -mfcu -O5 -timescale=1ns/1ps -ccflags -I/opt/cad/xilinx/Vitis_HLS/2023.1/include -ccflags "-std=c++14" -ccflags "-Wall" -ccflags "-Wpedantic" +incdir} set VOPT_FLAGS { glbl -O5 +acc=npr -L wlib -L unifast_ver -L unisims_ver -L unimacro_ver -L secureip -L xpm -L xil_defaultlib -L xpm} set VSIM_FLAGS { } Далее, командный скрипт (тоже загружается при старте квесты): Спойлер #----------------------------------------------------------- # # VLOG # set vlog_flags {} if {[info exists WorkLib]} { quietly append vlog_flags " -work $WorkLib"; } quietly append vlog_flags " +incdir+" "$IncDirs"; quietly append vlog_flags " " ${VLOG_FLAGS} #----------------------------------------------------------- # # VOPT # quietly set OptimizedDesignName "opt_$DesignName" quietly set vopt_flags {} if {[info exists WorkLib]} { quietly append vopt_flags " -work $WorkLib"; } quietly append vopt_flags " " ${VOPT_FLAGS} quietly append vopt_flags " " $DesignName quietly append vopt_flags " -o " $OptimizedDesignName; ... #------------------------------------------------------------------------------- # # Commands # proc launch_cmd { Cmd Args } { set io [open "| $Cmd $Args" r] puts [read $io]; if {[catch {close $io} err]} { puts "[file tail $Cmd] report error: $err" return 0; } return 1; } #------------------------------------------------------------------------------- proc compile {} { global vlog_cmd vlog_flags; global vcom_cmd vcom_flags; global vopt_cmd vopt_flags; global SRC if {[launch_cmd ${vlog_cmd} [concat ${vlog_flags} ${SRC}]] == 0} { exit -code -1; } if {[launch_cmd ${vopt_cmd} ${vopt_flags}] == 0} { exit -code -1; } } #------------------------------------------------------------------------------- proc c { } { compile; } #------------------------------------------------------------------------------- proc s { { res empty} { wave_ena 1 } } { global CFG_DIR set res_name ${CFG_DIR}/sim/${res} sim_begin; if {[file exists ${res_name}]} { do ${res_name} } run -all if { $wave_ena != 0 } { view wave } view transcript } #------------------------------------------------------------------------------- proc r { { wave_ena 1 } } { restart -force run -all if { $wave_ena != 0 } { view wave } view transcript } #------------------------------------------------------------------------------- Тут он не весь, просто для иллюстрации, полную версию можно посмотреть тут: https://github.com/fpga-lib/site_scons/blob/710cf49cf17587785ee576fe623211acbffd7220/site_tools/questa.tcl После этого для перекомпиляции проекта достаточно набрать в консоли: c <Enter>, для запуска симуляции: s <Enter>, для перезапуска: r <Enter>. Перечень доступных команд там приведён в заголовке: echo "Available commands:\n" echo " * 'c' : compile work library." echo " * 's' : launch simulation run." echo " * 'r' : restart simulation run." echo " * 'rr' : restart simulation run with reset transcript file." echo " * 'sr ' : show results of existing simulation run (see below)." echo " * 'swc' : save waveform configuration to file (see below)." 1 Quote Share this post Link to post Share on other sites More sharing options...
Mty 0 March 11 Posted March 11 · Report post Спасибо, постараюсь разобраться. Quote Share this post Link to post Share on other sites More sharing options...