从 Modelsim 获取状态

Getting status from 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"
    

    这是正确的吗?

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

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 和子进程库缓冲)。上面的代码是 同步的; 我们也有异步版本(允许你的代码做一些事情而不是同时等待子进程,比如 运行 一个 GUI)但是他们的代码通常有点长。