如何使用TCL在Model-sim 10.5c的DO文件中编写Thread应用程序?
How to write Thread application in DO file of Model-sim 10.5c using TCL?
我有一个 FPGA 逻辑,其中包含逻辑 A 和逻辑 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,我能够在 post 综合模拟期间驱动 B_in。
我无法创建两个不同的线程来持续监控 A_IN 并将 DATA_IN 驱动到 FPGA。
如何在TCL中创建线程?
modelsim 10.5c 是否支持线程?
如何使用 DO 和 VHDL 文件独立提供输入?
您不能在 ModelSim 中使用 TCL 线程,它不受支持。这也不是并行执行 VHDL 仿真的方法。
相反,注册一个 TCL 回调,它在您监视的信号发生变化时执行。您可以在监视第一个信号的同时继续驱动另一个信号。参考ModelSim Command Reference Manual中的"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;
我们 运行 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
我有一个 FPGA 逻辑,其中包含逻辑 A 和逻辑 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,我能够在 post 综合模拟期间驱动 B_in。 我无法创建两个不同的线程来持续监控 A_IN 并将 DATA_IN 驱动到 FPGA。
如何在TCL中创建线程?
modelsim 10.5c 是否支持线程?
如何使用 DO 和 VHDL 文件独立提供输入?
您不能在 ModelSim 中使用 TCL 线程,它不受支持。这也不是并行执行 VHDL 仿真的方法。
相反,注册一个 TCL 回调,它在您监视的信号发生变化时执行。您可以在监视第一个信号的同时继续驱动另一个信号。参考ModelSim Command Reference Manual中的"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;
我们 运行 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