Я пытаюсь выполнить регрессионный тест в Modelsim. Я вызываю сценарий TCL, который компилирует мои исходные файлы и запускает vsim. Я запускаю файл .do, и он запускает серию тестовых стендов, которые все выводят файлы результатов. Я добавляю автоматическую программу проверки, которая проверяет соответствие файлов результатов заведомо удачным запускам. Проблема в том, что после запуска modelsim скрипт TCL не дожидается завершения симуляции перед запуском чекера «results_pass.py».
set nice_pid [open "|$modelsim_dir/vsim.exe -do do_files/vsim.do -novopt -gui"]
cd ../../Scripts
set script_name "results_pass.py"
set tb_name "rcp"
call_python $script_name $tb_name
vwait forever
Для тех, кто задается вопросом, почему я вызываю скрипт Python. В основном потому, что я очень мало знаю TCL, но у меня нет времени переходить и менять устаревший скрипт TCL на Python.
В любом случае, я уверен, что есть что-то, что я могу вставить между строками 1 и 2, что будет ждать некоторого указания от modelsim, что он завершил выполнение моего файла .do. Любой совет приветствуется.
vsim
из Python. Я управляю Model- / QuestaSIM с помощью моего скрипта testbench.py, который выбирает тестовый стенд, например. PoC.arith.prng и симулятор (vSim / xSim / ...). Он вызываетvlib
,vcom
иvsim
черезsubprocess
. Подпрограммы для QuestaSIM находятся в файле QuestaSimulator.py < / а>. Результат теста записан Simulation.vhdl в STDOUT и проверяется скриптом. - person Paebbels   schedule 08.06.2015vsim
вызывается с помощью общего сценария TCL который ждет остановки всех процессов. Не стесняйтесь применять эти сценарии для нескольких запусков одновременно или параллельно. - person Paebbels   schedule 08.06.2015open
всегда возвращает канал (в случае успеха). Вы можете получить PID из одного из конвейеров подпроцесса Tcl, используя командуpid
:set subprocesses [pid $pipechannel]
- person Donal Fellows   schedule 09.06.2015