2014-10-08 148 views
3

与测试平台运行的ModelSim作为参数,我想打一个脚本,它可以从像shell执行: ./myscript -test1或tclsh的myscript.tcl -test1(?TCL)脚本从外壳

我希望它打开ModelSim,编译单元,加载所需的测试台,运行仿真。测试的名称将是一个参数。我已经制作了包含modelsim命令的宏文件(.do),以编译&来模拟所需的单位(+将信号添加到波形)。我在问,因为脚本编写不是我的专业领域。

因此,这里是我的问题:

  1. 如何,,告诉“的ModelSim(启动)做在指定的文件中的命令?

  2. TCL是我正在寻找的语言//在TCL中可行吗?如果是这样,我应该熟悉哪些命令?

  3. 或者可能shell脚本已经足够,我应该在参考手册中查找特定的Modelsim命令?

感谢您的时间!

编辑:发布我为大家使用的小例子。用法:./foo.tcl测试名

#!/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!" } 
+1

您预计将努力解决您的在你向他们寻求帮助之前,你有自己的问题。另外,你一般只会在这里一次询问*一个问题。因此,选择这个问题的一个领域,并开始研究该领域需要做什么。当/如果遇到问题,请回过头来,在这里或在更合适的堆栈交换站点上提问。 – 2014-10-08 18:07:41

回答

3

您可以使用-do <arg>命令行选项任意命令启动vsim。参数可以是包含任意Tcl代码或Tcl命令字符串的.do文件的文件名(“run -all; quit”对于非交互式命令行模式(-c)非常有用)。

Tcl是一种全功能的脚本语言。它可以处理您需要完成的任何自动化任务。最终,你不能使用Modelsim逃脱Tcl,因为几乎所有东西都在内部运行。我会建议你在.do文件中拼凑你需要的东西,然后使用-do选项运行。

0

如果你创建一个.tcl脚本(.do文件可以运行QuestaSim/ModelSim命令和tcl命令),你可以做你想做的一切,包括运行其他的.do/.tcl文件。例如:

的ModelSim/QuestaSim命令行:

就像你所习惯的......

$: do MyDoFile.do 

...而不是使用一个Tcl文件,它可以调用你的。做文件:

$: 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.奎斯塔SIM用户手册