从Modelsim获取状态

时间:2016-08-31 06:59:06

标签: command-line tcl modelsim

我正在通过命令行运行Modelsim:

catch { exec vsim -c -do run.do } rcode
  1. 有些模拟需要很长时间。我怎样才能获得状态信息,即每10分钟一次?

  2. 我见过许多例子:

    vsim -c test_bench -do "run -all"
    

    我想在此命令之前需要编译所有必需的文件,比如

    vcom -quiet -93 -work work name.vhd
    vcom -quiet -93 -work work name2.vhd
    ...
    vsim -c test_bench -do "run -all"
    

    这是对的吗?

1 个答案:

答案 0 :(得分:0)

要从子进程中获取信息,通常会让子进程不时写入其标准输出通道。然后你可以从中读取(通过管道)。

set pipe [open |[list exec vsim -c -do run.do]]
while {[gets $pipe line] >= 0} {
    puts "I've just read '$line' from vsim"
}
catch { close $pipe } rcode

只要程序实际上不时地写出行,你就会在它们到达时收到它们(模OS和子进程库缓冲)。上面的代码是 synchronous; 我们也有异步版本(允许你的代码执行除了同时等待子进程之外的事情,比如运行GUI)但是它们的代码通常是有点长。