我正在通过命令行运行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"
这是对的吗?
答案 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)但是它们的代码通常是有点长。