微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以从modelsim中的tcl脚本调用do文件?

如何解决是否可以从modelsim中的tcl脚本调用do文件?

我尝试为modelsim编写一个自动脚本,在那里我将电路中的每个可能的故障都一个一个,然后对其进行分析。对于一个故障,我做了所有的事情,并且它有效,但是当我尝试制作一个循环,我对每个人都做同样的事情时,我同时遇到了几个问题。

  1. 可以从 tcl 脚本调用 do 文件吗?由于针对某个故障的操作是使用 do 文件执行的,因此对它们进行迭代的循环已经是一个 Tcl 脚本。

  2. 当试图运行整个程序时,modelsim 给出的执行结果为 0,仅此而已,尽管它并没有发誓语法错误

这是一个错误 (fault.do) 的 do 文件

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 举报,一经查实,本站将立刻删除。