在構(gòu)建測(cè)試平臺(tái)時(shí),經(jīng)常會(huì)用到interface用來(lái)簡(jiǎn)化模塊和測(cè)試平臺(tái)或者模塊之間的連接,可以將一堆相關(guān)的信號(hào)封裝在其中,為硬件模塊的端口提供了一種標(biāo)準(zhǔn)化的封裝方式,其中的modport(module port)結(jié)構(gòu)對(duì)interface中的相關(guān)信號(hào)進(jìn)行分組并指定方向,這樣會(huì)使接口的定義條理更加清晰,明確了站在不一樣的角度相關(guān)信號(hào)的輸入輸出方向。
例如在monitor中,信號(hào)大部分都是輸入的,所以此時(shí)modport分組時(shí)將相關(guān)信號(hào)的方向都指定為輸入,并且可以在具體模塊定義的時(shí)候通過(guò)interface名直接使用modport名,那么此時(shí)就會(huì)有個(gè)問(wèn)題:既然模塊定義的時(shí)候直接了使用modport名,那么模塊在例化的時(shí)候與interface的實(shí)例如何進(jìn)行連接呢?本文將通過(guò)示例對(duì)此進(jìn)行說(shuō)明。
為了方便說(shuō)明,文中相關(guān)模塊的實(shí)現(xiàn)為“empty”,但是不影響其端口對(duì)于信號(hào)的可見(jiàn)性。
【示例】
【仿真結(jié)果】
示例中,接口定義時(shí)指定了modport,其中只包含了sig0這一個(gè)變量,sig1并沒(méi)有包含在內(nèi)。test0定義端口列表采用“接口名.modport名”方式聲明了接口變量,而test1定義端口列表采用“接口名”方式聲明了接口變量。在模塊例化時(shí),dut0與“接口實(shí)例名”直接連接;dut1與“接口實(shí)例名.modport名”直接連接;dut2與“接口實(shí)例名”直接連接;dut3與“接口實(shí)例名.modport名”直接連接;
通過(guò)仿真結(jié)果可以看到,test0的兩個(gè)實(shí)例,不管實(shí)例與接口采用何種方式進(jìn)行連接,此時(shí)在實(shí)例中僅能觀測(cè)到接口中modport分組中的變量sig0,其實(shí)主要原因在于test0在定義時(shí)其端口列表就已經(jīng)限定了僅訪問(wèn)接口分組DUT中的變量。所有的實(shí)例中只有dut2中可以觀測(cè)到接口中所有變量,這是因?yàn)槭紫萾est1在定義時(shí)其端口列表采用了“接口名”方式,其次例化連接接口時(shí)也是直接與接口例化名直接相連,而dut3因?yàn)樵谂c接口連接時(shí),限制了僅與接口中的modport分組TB進(jìn)行連接,所以在dut3中觀測(cè)不到sig1的變化。
為此,可以將上例進(jìn)行簡(jiǎn)化匯總之間關(guān)系如下圖所示,即如果模塊定義時(shí)指定的端口采用了“接口名.modport名 接口變量”的方式,那么不管這個(gè)模塊在實(shí)例化時(shí)與接口實(shí)例如何連接,模塊實(shí)例對(duì)于接口僅可觀測(cè)到對(duì)應(yīng)modport分組中的變量。而如果模塊定義時(shí)指定的端口采用了“接口名 接口變量”方式,那么模塊實(shí)例具體能夠觀測(cè)到接口哪些變量,則取決于實(shí)例化連接時(shí)與接口實(shí)例的連接方式。
審核編輯:劉清
-
DUT
+關(guān)注
關(guān)注
0文章
189瀏覽量
12406
原文標(biāo)題:接口中的modport連接模塊都能看見(jiàn)什么
文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論