如何使用TCL在Model-sim 10.5c的DO文件中编写线程应用程序?

问题描述 投票:0回答:1

我有一个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中创建线程?

在modelim 10.5c中是否支持线程?

如何使用DO和VHDL文件独立提供输入?

tcl fpga modelsim intel-fpga
1个回答
2
投票

您不能在ModelSim中使用TCL线程,不支持。这也不是VHDL模拟并行处理的方式。

而是注册一个TCL回调,该回调将在您监视的信号更改时执行。您可以在监视第一个信号的同时继续驱动另一个信号。请参阅ModelSim Command Reference Manual中的“何时”命令。

我构建了这个示例,演示了如何在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
© www.soinside.com 2019 - 2024. All rights reserved.