如何使用TCL在模型模拟10.5c的DO文件中编写线程应用程序?



我有一个FPGA逻辑,其中包含Logic-A和Logic-B功能。 我需要在 DO 文件 (TCL( 中创建两个线程,用于将数据驱动到 FPGA 输入。

线程 1:FPGA 输入。

'#sim:/tb_uut/uut/DATA_IN 1F 00'

线程 2:在逻辑 B 中提供输入以B_IN,当A_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中创建线程?

线程是否在 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;

运行 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

最新更新