2014-11-22 70 views
0

我有一个顶级文件,我有一个接口的实例。这是我在顶层文件中的代码接口端口必须通过一个实际的接口:系统verilog

LC3_io top_io; // LC3_io is the interface which is defined seperately in my interfaces file. 

LC3_test test(top_io); // Passing the interface to my testbench 

测试是我LC3_test(测试平台)的实例。

现在,将这个接口传递给我的测试平台。我有一个单独的测试台文件,其中我的第一行代码是:

program automatic LC3_test(LC3_io.TB top_io); 

我在测试平台上写了一些其他的代码。

当我试图模拟测试平台的问题是:

**Fatal: (vsim-3695) DUT_Testing.sv(0) : The interface port 'top_io' must be passed an actual interface. 
FATAL ERROR while loading design. 

我不明白的地方的问题可能在于。我正在使用vlog编译所有必需的文件,并尝试使用vsim运行/模拟我的测试平台。我尝试删除程序,并使用模块,而不是测试台,但问题仍然存在。有什么我在这里失踪?谢谢

+0

即使它们存在于标准中,也不会使用“程序”块。 – 2014-11-22 11:21:28

+0

LC3_io.TB是modport吗? – 2014-11-22 11:21:52

回答

1

在我看来,类型不匹配。您期望为您的程序块提供类型为LC3_io.TB的参数,但是您传入的类型为LC3_io。尝试将代码更改为:

// pass the TB modport from 'top_io' 
LC3_test test(top_io.TB); 
+0

谢谢,我已经解决了这个问题 - 我在测试平台中生成时钟而不是顶部文件,然后将时钟传递给测试台和DUT。对不起,真的很晚回复。似乎在参数中使用modport并没有任何效果。 – 2015-07-22 15:48:55

+0

@ MojoJojo58有点像工具bug。无论如何,Modports和东西感觉就像未知的领域。他们在纸上听起来不错,但很多时候他们并没有真正实施。 – 2015-07-22 20:34:26