[英]How to write Thread application in DO file of Model-sim 10.5c using TCL?
我有一个 FPGA 逻辑,其中包含 Logic-A 和 Logic-B 功能。 我需要在 DO 文件 (TCL) 中创建两个线程来将数据驱动到 FPGA 输入。
线程 1:FPGA 输入。
'#sim:/tb_uut/uut/DATA_IN 1F 00'
线程 2:当 A_IN 为高电平时,向逻辑 B 中的 B_IN 提供输入,否则忽略 B_IN。
'#If { [examine sim:/tb_uut/Logic_B/A_IN]==1} { #sim:/tb_uut/Logic_B/B_IN 1 0 #}'
这里我需要监控 A_IN 的值直到变高。 我可以通过访问 B_IN 在后期合成模拟期间驱动 B_in。 我无法创建两个不同的线程来持续监控 A_IN 并将 DATA_IN 驱动到 FPGA。
如何在 TCL 中创建线程?
modelsim 10.5c 是否支持线程?
如何使用 DO 和 VHDL 文件独立提供输入?
您不能在 ModelSim 中使用 TCL 线程,它不受支持。 对于 VHDL 仿真,这也不是并行执行的方法。
相反,注册一个 TCL 回调,该回调在您监控的信号发生变化时执行。 您可以在监视第一个信号的同时继续驱动另一个信号。 请参阅ModelSim 命令参考手册中的“when”命令。
我已经构建了这个示例,它演示了如何在 ModelSim TCL 脚本中使用“when”命令。
在 TCL 脚本中:
when -label MyLabel {A_IN == '1'} {
echo "Hello from TCL at $now ns"
}
run -all
VHDL流程:
process
begin
wait for 10 ns;
A_IN <= '1';
wait for 10 ns;
A_IN <= '0';
wait for 10 ns;
A_IN <= '1';
wait for 10 ns;
A_IN <= '0';
report "VHDL simulation finished";
finish;
end process;
output 到我们运行 TCL 脚本后的 ModelSim 控制台:
VSIM 1> do run.do
# Hello from TCL at 10 ns
# Hello from TCL at 30 ns
# ** Note: VHDL simulation finished
# Time: 40 ns Iteration: 0 Instance: /ent
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.