中國建設(shè)銀行官方網(wǎng)站登錄入口seo推廣招聘
一、概述
? ? ? ? 驗(yàn)證一個(gè)設(shè)計(jì)需要經(jīng)過幾個(gè)步驟:
- 生成輸入激勵(lì)
- 捕獲輸出響應(yīng)
- 決定對錯(cuò)和衡量進(jìn)度
? ? ? ? 但是,我們首先需要一個(gè)合適的測試平臺,并將它連接到設(shè)計(jì)上。
? ? ? ? 測試平臺包裹著設(shè)計(jì),發(fā)送激勵(lì)并且捕獲設(shè)計(jì)的輸出。測試平臺組成了設(shè)計(jì)周圍的“真實(shí)世界”,模仿設(shè)計(jì)的整個(gè)運(yùn)行環(huán)境。例如,一個(gè)處理器模型需要連接到不同的總線和器件,這些總線和器件在測試平臺中就被建模成總線功能模型。一個(gè)網(wǎng)絡(luò)設(shè)備連接到多個(gè)輸人和輸出數(shù)據(jù)流,這些數(shù)據(jù)流根據(jù)標(biāo)準(zhǔn)的協(xié)議建模。一個(gè)視頻芯片連接到送入指令的總線,然后根據(jù)寫入內(nèi)存模型的數(shù)據(jù)重建圖像。這里的核心概念是除了待測設(shè)計(jì)(DUT,Design Under Test)的行為之外,測試平臺仿真了其他的所有行為。
????????由于Verilog的端口描述繁瑣,代碼常會長達(dá)數(shù)頁,并且容易產(chǎn)生連接錯(cuò)誤,所以測試平臺需要一種更高層次的方法來跟設(shè)計(jì)建立通信。你需要一種可靠的描述時(shí)序的方法,這樣就可以在正確的時(shí)間點(diǎn)驅(qū)動和采樣同步信號,避免Verilog模型中常見的競爭狀態(tài)。
? ? ? ? 在進(jìn)行驗(yàn)證的時(shí)候,我們盡量希望能夠把設(shè)計(jì)部分和驗(yàn)證的部分分成,這里就會涉及到兩個(gè)部分的連接問題,使用verilog的大家應(yīng)該都知道,在verilog中對于端口的連接來說是一件非??菰锖头爆嵉氖虑?#xff0c;對于一個(gè)大的設(shè)計(jì)來說,端口的連接是非常耗時(shí)和易錯(cuò)的。SystemVerilog在這方面引入了接口來簡化這一步驟。
二、接口interface
? ? ? ? 在介紹接口之前,首先說明一個(gè)細(xì)節(jié),我們知道在verilog中數(shù)據(jù)類型可以分成wire和reg兩種,但是在SystemVerilog中,我們通過logic來取代了reg,唯一不能使用logic的地方是具有多個(gè)驅(qū)動的連線,只有在這種情況下,我們需要使用wire類型,其他時(shí)候,我們在SystemVerilog中都可以使用logic來實(shí)現(xiàn)。
1、接口的優(yōu)勢
·? ? ? ? 對于接口來說,信號只需要在接口中定義一次,在之后的模塊調(diào)用的過程中,就可以直接通過接口的方式進(jìn)行連接了。
2、接口的內(nèi)容
- 接口不單單包含變量和線網(wǎng),它還可以封裝模塊之間通信的協(xié)議
- ?此外接口中還可以嵌入與協(xié)議有關(guān)的斷言檢查、功能覆蓋率收集等模塊
- ?接口不同于模塊(module)的地方在于,接口不允許包含設(shè)計(jì)層次,即接口無法例化module,但是接口可以例化接口
- ?接口中可以進(jìn)一步聲明modport來約束不同模塊連接時(shí)的信號方向
3、接口的聲明
? ? ? ? 接口的定義和模塊的定義是相似的,接口有時(shí)候也會有端口,經(jīng)常是外部輸入的時(shí)候或者復(fù)位信號等,接口內(nèi)部也可以定義所有的變量或者線網(wǎng)類型。
4、接口的例化
? ? ? ? ?接口的例化方式和模塊的例化是一致的, 需要注意的是:模塊的端口如果聲明為input、output或者inout,那么在例化時(shí)可以不連接。?模塊的端口如果聲明為interface,那么在例化時(shí)則必須連接到一個(gè)接口實(shí)例,或者另外一個(gè)接口端口。
5、modport
?????????接口中的變量或者線網(wǎng)信號,對于連接到該接口的不同模塊則可能具備不同的連接方向。?接口引入了modport來作為module port的縮寫,表示不同的模塊看到同一組信號時(shí)的視角(連接方向)。在接口中聲明modport,需要指明modport中各個(gè)信號的方向。
?????????當(dāng)一個(gè)模塊在例化時(shí),可以選擇連接到interface端口中具體的某一個(gè)modport。??這種方式可以降低方向連接錯(cuò)誤的可能,進(jìn)而避免信號多驅(qū)動的情況。
三、 總結(jié)
????????在接口中不能例化模塊,但是可以例化其他接口。帶有modport的接口跟傳統(tǒng)的連接到信號的端口相比各有千秋。
1.、接口的優(yōu)勢
? ? ? ? 使用接口的優(yōu)勢如下:
????????(1)接口便于設(shè)計(jì)重用。當(dāng)兩個(gè)塊之間有兩個(gè)以上的信號連接,并且使用特定的協(xié)議通信的時(shí)候,應(yīng)當(dāng)考慮使用接口。
????????(2)接口可以用來替代原來需要在模塊或者程序中反復(fù)聲明并且位于代碼內(nèi)部的一系列信號,減少了連接錯(cuò)誤的可能性。
? ? ? ? (3)要增加一個(gè)新的信號時(shí),在接口中只需要聲明一次,不需要在更高層的模塊層聲明。這進(jìn)一步減少了錯(cuò)誤。
? ? ? ? (4)modport 允許一個(gè)模塊很方便地將接口中的一系列信號捆綁到一起,也可以為信號指定方向以方便工具自動檢查。
2、接口的劣勢
????????使用接口的劣勢如下:
????????(1)對于點(diǎn)對點(diǎn)的連接,使用modport的接口描述跟使用信號列表的端口一樣的冗長。接口帶來的好處是所有的聲明集中在一個(gè)地方,減少了出錯(cuò)的幾率。
????????(2)必須同時(shí)使用信號名和接口名,可能會使模塊變得更加冗長。
????????(3〉如果要連接的兩個(gè)模塊使用的是一個(gè)不會被重用的專用協(xié)議﹐使用接口需要做比端口連線更多的工作。
????????(4〉連接兩個(gè)不同的接口很困難。一個(gè)新的接口(bus_if)可能包含了現(xiàn)有接口(arb.if)的所有信號并新增了信號(地址.數(shù)據(jù)等等)。你需要拆分出獨(dú)立的信號并正確地驅(qū)動它們。
?