从 Modelsim 获取状态
Getting status from Modelsim
我是 运行 Modelsim 的命令行:
catch { exec vsim -c -do run.do } rcode
有些模拟需要相当长的时间。如何获取状态信息,即每 10 分钟一次?
我见过很多这样的例子:
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)但是他们的代码通常有点长。
我是 运行 Modelsim 的命令行:
catch { exec vsim -c -do run.do } rcode
有些模拟需要相当长的时间。如何获取状态信息,即每 10 分钟一次?
我见过很多这样的例子:
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)但是他们的代码通常有点长。