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

如何使用TCL在sim 10.5c型号的DO文件中编写线程应用程序?,tcl,fpga,modelsim,intel-fpga,Tcl,Fpga,Modelsim,Intel Fpga,我有一个FPGA逻辑,它包含logic-a和logic-B功能。 我需要在DO文件(TCL)中创建两个线程,用于将数据驱动到FPGA输入 '#sim:/tb_uut/uut/DATA_IN 1F 00' 线程1:FPGA输入 '#sim:/tb_uut/uut/DATA_IN 1F 00' 线程2:当A_IN高时,向逻辑B中的B_提供输入,否则忽略B_IN '#If { [examine sim:/tb_uut/Logic_B/A_IN]==1} { #sim:/tb_uut/Log

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

'#sim:/tb_uut/uut/DATA_IN 1F 00'
线程1:FPGA输入

'#sim:/tb_uut/uut/DATA_IN 1F 00'
线程2:当A_IN高时,向逻辑B中的B_提供输入,否则忽略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。 我无法创建两个不同的线程,用于连续监视输入并将数据输入FPGA

如何在TCL中创建线程

modelsim 10.5c中是否支持线程


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

您不能在ModelSim中使用TCL线程,它不受支持。对于VHDL模拟来说,这也不是并行工作的方式

相反,注册一个TCL回调,它在您监视的信号发生变化时执行。您可以在监视第一个信号的同时继续驱动另一个信号。请参阅中的“何时”命令

我构建了这个示例,演示了如何在ModelSim TCL脚本中使用“when”命令

在TCL脚本中:

when-label MyLabel{A_IN=='1'}{
echo“TCL以$now ns向您问好”
}
全跑
VHDL过程:

过程
开始
等待10纳秒;

中的A_不能在ModelSim中使用TCL线程,它不受支持。对于VHDL模拟来说,这也不是并行工作的方式

相反,注册一个TCL回调,它在您监视的信号发生变化时执行。您可以在监视第一个信号的同时继续驱动另一个信号。请参阅中的“何时”命令

我构建了这个示例,演示了如何在ModelSim TCL脚本中使用“when”命令

在TCL脚本中:

when-label MyLabel{A_IN=='1'}{
echo“TCL以$now ns向您问好”
}
全跑
VHDL过程:

过程
开始
等待10纳秒;

有没有人在理解上述问题时遇到任何挑战。有没有人在理解上述问题时遇到任何挑战。我正在为图中提到的示例设计执行网关级模拟。我有FPGA输入数据_IN1、数据_IN2和数据_IN3并输出。A_IN和B_IN是我的FPGA逻辑中逻辑A和逻辑B之间的网关级网络表。当A_-IN和B_-IN为高时,我需要监控输出C_-OUT,如果相等,我需要将其中任何一个更改为不同的值,如下所述,我在上面更改的地方将错误设置为“找不到匹配“$”的对象。如何在50ns的运行时间内监控C_-OUT的值,无论是高还是低?
设置A_-IN-u测试[检查sim:/FGPA_设计/LOGIC_B/A_IN]设置B_IN_测试[检查sim:/FGPA_设计/LOGIC_B/B_IN]何时-标记Mylabel{$A_IN_测试==1&&$B_IN_测试==1}{强制-冻结sim:/FGPA_设计/LOGIC_B/B_IN 1 0-如果{[检查sim:/FGPA_设计/LOGIC_B/C_OUT]=1}取消50ns运行-50ns{#需要在50ns的运行时间内检查C#u。`puts“B#u IN changed to low”}运行-所有
我正在为图中提到的示例设计执行网关级模拟。我有FPGA输入数据_IN1、数据_IN2和数据_IN3以及输出。A_in和B_in是我的FPGA逻辑中逻辑_A和逻辑_B之间的网关级网络表。当A_in和B_in较高时,我需要监控输出C_OUT,如果相等,我需要将其中任何一个设置为不同的值,如下所述,我在上面更改的地方将错误设置为“找不到与“$”匹配的对象。“如何在50ns的运行时间内监控C_OUT的值,高或低?
设置A_IN_测试[检查sim:/FGPA_设计/逻辑_B/A_IN]设置B_IN_测试[检查sim:/FGPA_设计/逻辑_IN]当-label Mylabel{$A_IN_test==1&$B_IN_test==1}{force-freeze sim:/FGPA_DESIGN/LOGIC_B/B_IN 1 0-取消50ns运行-50ns,如果{[execast sim:/FGPA_DESIGN/LOGIC_B/C_OUT]==1}{需要在50ns的运行时间内检查C_。`将“B_IN改为low”}运行-all