如何解决是否可以从modelsim中的tcl脚本调用do文件?
我尝试为modelsim编写一个自动脚本,在那里我将电路中的每个可能的故障都一个一个,然后对其进行分析。对于一个故障,我做了所有的事情,并且它有效,但是当我尝试制作一个循环,我对每个人都做同样的事情时,我同时遇到了几个问题。
-
可以从 tcl 脚本调用
do
文件吗?由于针对某个故障的操作是使用do
文件执行的,因此对它们进行迭代的循环已经是一个 Tcl 脚本。 -
当试图运行整个程序时,modelsim 给出的执行结果为 0,仅此而已,尽管它并没有发誓语法错误。
vmap work work
vcom -reportprogress 300 -work work {sheme.vhd}
vcom -reportprogress 300 -work work {testbench.vhd}
vsim -wav simwave.wlf work.device_tb
env sim:/device_tb/uut
view signals
.signals.tree write signalfile.txt
add wave sim:/device_tb/uut/*
add list sim:/device_tb/uut/*
run 5000 ns
quit -sim
quietly WaveActivateNextPane {} 0
dataset open ./simwave.wlf simwave
add wave simwave:/device_tb/uut/*
add list simwave:/device_tb/uut/*
vsim work.device_tb
env sim:/device_tb/uut
view signals
quietly WaveActivateNextPane
add wave sim:/device_tb/uut/*
add list sim:/device_tb/uut/*
source forc.tcl
tosignal 1
quietly WaveActivateNextPane
compare start simwave sim
compare options -track
compare add -wave -recursive -tolL {0 ns} -tolT {0 ns} simwave:/device_tb/uut sim:/device_tb/uut
compare add -list -recursive -tolL {0 ns} -tolT {0 ns} simwave:/device_tb/uut sim:/device_tb/uut
compare run
view wave
view list
compare info -write C:/Modeltech_5.7f/examples/dip/compare.txt
source analys.tcl
comp 2
set fp [open "signalfile.txt" r]
set cnts 0
set cntoth 0
while { [gets $fp data] >= 0 } {
if {[string match $data s?] == 1} {
incr cnts } else {
incr cntoth }
}
for {set i 0} {$i < $cnts} {incr i} {
set var $env($i)
source fault.do
exec $var }
set fn [open "errors.txt" r]
set er 0
while { [gets $fn data] >= 0 } {
incr er }
set per [expr $er/[expr $cntoth + $cnts]]
puts $per
谁能建议如何最好地实现这一点?我会很感激)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。