Я пытаюсь автоматизировать модульное тестирование кода VHDL с использованием TCL-скрипта (TCL версии 8.4) в ModelSim (6.5 PE).Получить контекст инициированного утверждения в ModelSim onbreak
Основываясь на relevant TCL-reference manual, я в настоящее время могу обрабатывать утверждения с помощью команды onbreak {}
следующим образом, что позволяет мне продолжать или прекращать моделирование контролируемым образом.
Тем не менее, я также хотел бы иметь возможность использовать в этом обработчике некоторый контекст, в частности имя файла, номер строки и метку утверждения, вызвавшего перерыв. Затем я перешлю эту информацию в инструмент непрерывной интеграции.
proc break_handler {} {
upvar #0 now now
# this is where I would need some more information about the current break point:
set break_point_information "???"
puts "Break: after $now with $break_point_information!"
# prevent infinite simulation:
if {$some_condition} {
stop
} else {
run -continue
}
}
# Skipped: scripted compilation of project
# Stop on Note (1) ... Failure (4)
set BreakOnAssertion 1
onbreak { break_handler }
# Skipped: scripted simulation start and report generation
Информация, которую я хочу, по существу, уже напечатанный в консоль
# ** Warning: End of Testbench
# Time: 1234 ns Iteration: 0 Process: /something/testing File: C:/something.vhd
# Break in Process testing at C:/comething.vhd line 1234
Следовательно, я мог бы записывать и анализировать transcript file
. Тем не менее, это то, чего я хотел избежать в первую очередь ... Ближайший я пришел, используя [runStatus -full]
, но это дает гораздо меньше информации (например, только break simulation_stop
).
транскрипт единственный способ получить информацию о неудачах утверждений и других условий ошибки. Если вы запускаете vsim в подпроцессе с помощью языка сценариев (а не внутреннего Tcl interp), вы также можете анализировать stdout для каждого вызова команды, чтобы избежать необходимости читать всю расшифровку, если это проблема. –
@KevinThibedeau К сожалению, не то, на что я надеялся, но спасибо за подтверждение. То, как вы формулируете свой комментарий, подразумевает, что вы совершенно уверены в этом. У вас есть какой-нибудь источник? – mbschenkel
Руководство. Modelsim никогда не имел хорошей поддержки для создания «сложных» вещей с симуляцией. –