Modelsim command line 传参数到 .do 文件
2017-03-15 19:10
573 查看
gui跑mdelsim总觉得很麻烦,使用命令来启动方便了很多,类似linux一样,其实目前windows也可以做到,只是业界不怎么用windows罢了。
基于modelsim搭了一个UVM环境, 用bat批处理命令跑modelsim command,其实很简单,里面就一句vsim -do sim.do。
sim.do是自己写的modelsim要用到的几条命令,包括vlib, vlog, vsim等。关于如何在windows环境下,搭建uvm环境,网上有教程。
现在遇到了一个问题,就是在跑uvm时,我现在有两种sequence要跑,分别是my_case0, my_case1, 具体内容在《uvm 实战》这本书里有。一般来说,我想很方便的选择控制当前是跑case0,还是case1,能不修改任何代码就不修改,包括各种脚本文件。这时,我想实现在cmd命令窗口中输入某一个case的名字,来启动对应的case。
因此,现在的问题变成了,如何将bat得到的名字(变量)通过cmmand送到do文件中。此时,再次证明了google面前,必应和百度都是垃圾……
好了,现在有两个文件,一个我叫run.bat,里面就是一句话vsim -do sim.do来启动modelsim;一个我叫sim.do,里面主要内容是
vlib work
vlog -L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF top_tb.sv
vsim -l vsim.log -c -sv_lib $UVM_DPI_DIR/uvm_dpi work.top_tb +UVM_TESTNAME=$NAME
run -all
用来执行具体操作。目的就是要让bat将得到的名字传给+UVM_TESTNAME=$NAME中的变量$NAME中。
第一步,修改bat,使得能从cmd中传入参数,我的两个参数分别是my_case0和my_case1,根据输入进行对应的选择。bat修改如下:
set /p case_name=case(my_case0 or my_case1):
vsim -gNAME=%case_name% -do sim.do
其中的关键是用了-g命令,格式为-g<param_name>=<param_value>,NAME其实就是变量名。
第二步,修改sim.do文件,主要为:
set x [lsearch $argv -gNAME=my_case0];
if "$x != -1" {
set NAME my_case0;
}
if "$x == -1" {
set NAME my_case1;
}
这几句就可以将do文件里的变量NAME对应的设置为cmd中输入的字符。其实-g命令不是设计为这么用的,这里只是借用了其功能来实现目的。
最终,实现了在cmd命令中,控制uvm环境对应的实现不同的sequence case。
基于modelsim搭了一个UVM环境, 用bat批处理命令跑modelsim command,其实很简单,里面就一句vsim -do sim.do。
sim.do是自己写的modelsim要用到的几条命令,包括vlib, vlog, vsim等。关于如何在windows环境下,搭建uvm环境,网上有教程。
现在遇到了一个问题,就是在跑uvm时,我现在有两种sequence要跑,分别是my_case0, my_case1, 具体内容在《uvm 实战》这本书里有。一般来说,我想很方便的选择控制当前是跑case0,还是case1,能不修改任何代码就不修改,包括各种脚本文件。这时,我想实现在cmd命令窗口中输入某一个case的名字,来启动对应的case。
因此,现在的问题变成了,如何将bat得到的名字(变量)通过cmmand送到do文件中。此时,再次证明了google面前,必应和百度都是垃圾……
好了,现在有两个文件,一个我叫run.bat,里面就是一句话vsim -do sim.do来启动modelsim;一个我叫sim.do,里面主要内容是
vlib work
vlog -L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF top_tb.sv
vsim -l vsim.log -c -sv_lib $UVM_DPI_DIR/uvm_dpi work.top_tb +UVM_TESTNAME=$NAME
run -all
用来执行具体操作。目的就是要让bat将得到的名字传给+UVM_TESTNAME=$NAME中的变量$NAME中。
第一步,修改bat,使得能从cmd中传入参数,我的两个参数分别是my_case0和my_case1,根据输入进行对应的选择。bat修改如下:
set /p case_name=case(my_case0 or my_case1):
vsim -gNAME=%case_name% -do sim.do
其中的关键是用了-g命令,格式为-g<param_name>=<param_value>,NAME其实就是变量名。
第二步,修改sim.do文件,主要为:
set x [lsearch $argv -gNAME=my_case0];
if "$x != -1" {
set NAME my_case0;
}
if "$x == -1" {
set NAME my_case1;
}
这几句就可以将do文件里的变量NAME对应的设置为cmd中输入的字符。其实-g命令不是设计为这么用的,这里只是借用了其功能来实现目的。
最终,实现了在cmd命令中,控制uvm环境对应的实现不同的sequence case。
相关文章推荐
- PowerBuilder学习(一)(应用程序open事件的commandline参数的使用)
- NTSD(Command Line)调试DMP格式文件
- VIVI下设置linux_command_line参数
- modelsim仿真中 do文件的写法技巧
- 转载 C#文件中GetCommandLineArgs()
- CreateProcess 函数的 lpCommandLine 参数上限为 32K。
- grub 内核启动参数(kernel command-line parameters)
- Batch command传入带空格的参数(文件路径等)
- 用CommandLine可以传入程序启动的参数
- How do I get a MAC address via command line?
- Linux Kernel command line 内核输入参数/proc/cmdline
- <ZT>ParseCommandLine 有关命令行启动参数的一些技巧
- kernel command line 参数详解
- modelsim中的批处理与do文件
- 使用Command Line下载文件
- 运行期修改可执行文件的路径和Command Line
- C# 使用 Environment.GetCommandLineArgs 方法 制作*.exe和参数 供其他程序调用
- XenApp Command Line参数的传递
- Linux kernel command line 参数详解
- MySQL Command Line客户端打开sql文件