Vhdl 如果两个模拟器都需要使用自己的软件包,那么有没有办法为不同的模拟器使用一个测试台?

Vhdl 如果两个模拟器都需要使用自己的软件包,那么有没有办法为不同的模拟器使用一个测试台?,vhdl,modelsim,cadence,Vhdl,Modelsim,Cadence,我的测试台使用modelsim包(init_signal_spy)中定义的函数。因此,我不能将此测试台与ModelSims vsim(例如Candence的ncsim)不同的模拟器一起使用。但cadence软件包中有一个与ncsim(nc_mirror)等效的功能。解决方案是我需要有两个不同的测试台 但我只想用一个。 一种解决方案是,仅当设置了某个常量时才定义包。但我不知道这是否可行。让不同供应商的专有函数在测试台上显示相同的一般方法是使用包装包,将函数转换为您定义的函数接口 要同时支持Mode

我的测试台使用modelsim包(init_signal_spy)中定义的函数。因此,我不能将此测试台与ModelSims vsim(例如Candence的ncsim)不同的模拟器一起使用。但cadence软件包中有一个与ncsim(nc_mirror)等效的功能。解决方案是我需要有两个不同的测试台

但我只想用一个。
一种解决方案是,仅当设置了某个常量时才定义包。但我不知道这是否可行。

让不同供应商的专有函数在测试台上显示相同的一般方法是使用包装包,将函数转换为您定义的函数接口

要同时支持ModelSim和NCSim,请创建三个文件:

  • wrap.vhd
  • wrap_modelsim.vhd
  • wrapncsim.vhd
package wrap
接口在“wrap.vhd”中定义,因此具有独立于模拟器的通用函数接口。然后在“wrap_modelsim.vhd”和“wrap_ncsim.vhd”中定义包体wrap,具体实现取决于模拟器

编译时,仅使用适当的包体文件,具体取决于模拟器


然后,测试台使用work.wrappackage,并可以通过
wrap.{function}

访问转换后的函数。使来自不同供应商的专有函数在测试台中看起来相同的一般方法是使用包装包,将函数转换为您定义的函数接口

要同时支持ModelSim和NCSim,请创建三个文件:

  • wrap.vhd
  • wrap_modelsim.vhd
  • wrapncsim.vhd
package wrap
接口在“wrap.vhd”中定义,因此具有独立于模拟器的通用函数接口。然后在“wrap_modelsim.vhd”和“wrap_ncsim.vhd”中定义包体wrap,具体实现取决于模拟器

编译时,仅使用适当的包体文件,具体取决于模拟器


然后,测试台
使用work.wrap
包,可以通过
wrap.{function}

访问转换后的函数。几年前,我们为此开发了一个小型包。我刚刚上传了一份同样的@

谢谢Jim让我们了解这条线索的最新情况


Srini,Ajeetha

几年前,我们为此开发了一个小软件包。我刚刚上传了一份同样的@

谢谢Jim让我们了解这条线索的最新情况


Srini,Ajeetha

还有一个解决方案,它使用通用的、独立于工具的Systemverilog绑定来描述。这将帮助您避免使用专有的init\u signal\u spy!!请参阅Dave Rich介绍如何在UVM中使用绑定的好文章

如果您没有使用UVM,那么您必须记住,UVM只是systemverilog中的一个库,因此您也可以使用绑定概念,而不必使用示例中的驱动程序类

基本上,本文展示了连接DUT或DUT子模块与测试台的不同方法

它提供了3个很好的选择 1) 虚拟接口 2) 抽象类 3) 使用虚拟接口或抽象类绑定


当然此解决方案只能用于避免专有的“信号间谍”功能。如果您希望与其他工具功能(如可视化流、文件读取)保持通用兼容性,则需要包装这些功能,以便根据所使用的工具(使用定义)选择适当的工具调用,。这将帮助您避免使用专有的init\u signal\u spy!!请参阅Dave Rich介绍如何在UVM中使用绑定的好文章

如果您没有使用UVM,那么您必须记住,UVM只是systemverilog中的一个库,因此您也可以使用绑定概念,而不必使用示例中的驱动程序类

基本上,本文展示了连接DUT或DUT子模块与测试台的不同方法

它提供了3个很好的选择 1) 虚拟接口 2) 抽象类 3) 使用虚拟接口或抽象类绑定


当然此解决方案只能用于避免专有的“信号间谍”功能。如果您希望与其他工具功能(如可视化流、文件读取)保持通用兼容性,则需要包装这些功能,以便根据所使用的工具(使用定义)选择适当的工具调用。

当然,您可以始终使用VHDL-2008外部名称,正如我在前面的问题中所建议的那样:。如果Cadence不支持外部名称,您应该提交错误报告。我承认这将是解决该问题的最佳解决方案。我将对此进行检查,并在另一个线程中写一条评论。但在这个问题中,init_spy_信号和nc_镜像只是示例。当然,您可以始终使用VHDL-2008外部名称,正如我在上一个问题中建议的那样:。如果Cadence不支持外部名称,您应该提交错误报告。我承认这将是解决该问题的最佳解决方案。我将对此进行检查,并在另一个线程中写一条评论。但在这个问题上,init_spy_信号和nc_镜像只是例子。Thanx,非常好的主意。有一件事我仍然不明白:nc_simutils_pkg.vhd只能在ncvhdl下编译,而mti_simutils_pkg.vhd只能在vcom下编译。因此,每次更改模拟环境时,我都需要对编译脚本进行更改,对吗?您是否有到包/文件的直接链接?你提供的链接是