ModelSim (6.5 PE)에서 TCL 스크립트 (TCL 버전 8.4)를 사용하여 VHDL 코드의 단위 테스트를 자동화하려고합니다.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
).
어설 션 오류 및 기타 오류 조건에 대한 정보를 얻는 유일한 방법은 성적 증명서입니다. 스크립트 언어 (내부 Tcl interp가 아님)를 통해 서브 프로세스에서 vsim을 실행하는 경우 각 명령 호출에 대해 stdout을 구문 분석하여 문제가있는 경우 전체 스크립트를 읽지 않아도됩니다. –
@KevinThibedeau 불행히도 내가 바라는 것이 아니지만 확인해 주셔서 감사합니다. 당신이 당신의 코멘트를 공식화하는 방식은 당신이 이것에 대해 확실히 확신하고 있음을 의미합니다. 시트 타블 소스가 있습니까? – mbschenkel
매뉴얼. Modelsim은 시뮬레이션을 통해 "정교한"작업을 수행하는 것에 대한 훌륭한 지원을 해본 적이 없습니다. –