我想创建一个脚本,可以从shell执行,如: ./myscript -test1或tclsh myscript.tcl -test1
我希望它打开ModelSim,编译单元,加载所需的测试平台,运行模拟。测试的名称将是一个参数。我已经制作了包含modelsim命令的宏文件(.do)来编译&模拟所需的单位(+向波形添加信号)。我问,因为脚本编写不是我的专业领域。
所以这是我的问题:
如何告诉''Modelsim(启动时)在指定文件中执行命令?
TCL是我正在寻找的语言//是否可以在TCL中使用?如果是这样,我应该熟悉哪些命令?
或者shell脚本就足够了,我应该在参考手册中查找具体的Modelsim命令?
谢谢你的时间!
编辑:发布我为每个人使用的小例子。用法:./ foo.tcl testname
#!/usr/bin/tclsh
# params
set testname [lindex $argv 0]
set testlist {test1 test2 test3}
# run vsim test $testname
if { [ lsearch $testlist $testname ] >= 0 } {
puts "Test found. Executing..."
open "|vsim -do $testname "
} else { puts "Test not found on the list!" }
答案 0 :(得分:3)
您可以使用vsim
命令行选项使用任意命令启动-do <arg>
。参数可以是包含任意Tcl代码的.do文件的文件名,也可以是一串Tcl命令(“run -all; quit”对于带有-c
的非交互式命令行模式非常有用。)
Tcl是一种全功能的脚本语言。它可以处理您需要完成的任何自动化任务。最终你无法逃脱Tcl与Modelsim,因为几乎所有东西都在内部贯穿它。我建议您在.do文件中拼凑所需内容并使用-do
选项运行它。
答案 1 :(得分:0)
如果您创建.tcl脚本(.do文件可以运行QuestaSim / ModelSim命令和tcl命令),您可以执行您想要执行的所有操作,包括运行其他.do / .tcl文件。例如:
ModelSim / QuestaSim命令行:
就像你习惯的那样......
$: do MyDoFile.do
...而是使用一个Tcl文件,它可以调出你的.do文件:
$: source ./MyDirectory/MyTCLScript.tcl
在MyTCLScript.tcl中你可以字面上以下内容:
在
MyTCLScript.tcl
内:... #Use tabs for aliases source ./MyDirectory/OtherDirectory/OtherTCLScript.tcl MyAlias1 MyAlias2 do ./MyDoFile.do ...
最后,为了让您使用命令来运行单个测试平台和排序,我建议查看别名的Tcl文档。这是一个例子:
在
OtherTCLScript.tcl
内:... alias MyAlias1 { eval <command><command flags> } alias MyAlias2 { eval <command><command flags> } ...
来源: 1.经验 2. Questa SIM用户手册