(Tcl?)用于运行modelsim的脚本,其中testbench作为shell的参数

时间:2014-10-08 16:54:49

标签: shell tcl modelsim

我想创建一个脚本,可以从shell执行,如: ./myscript -test1或tclsh myscript.tcl -test1

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

所以这是我的问题:

  1. 如何告诉''Modelsim(启动时)在指定文件中执行命令?

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

  3. 或者shell脚本就足够了,我应该在参考手册中查找具体的Modelsim命令?

  4. 谢谢你的时间!

    编辑:发布我为每个人使用的小例子。用法:./ 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!" }
    

2 个答案:

答案 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用户手册