www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > > ZYNQ

interface

Verilog語(yǔ)言使用端口名字連接各個(gè)模塊;


systemVerilog中使用“.*”可以自動(dòng)匹配具有相同名字的線網(wǎng)和端口,自動(dòng)連接的名字必須具有相同的端口位寬,連接的端口類(lèi)型必須兼容;也可以使用“.name”進(jìn)行連接,.name必須滿足端口名字和位寬一直;


Verilog傳統(tǒng)連接的缺點(diǎn):通信協(xié)議接口在多個(gè)模塊中使用,在多個(gè)模塊中都要聲明相應(yīng)的端口,同時(shí)不匹配的聲明會(huì)導(dǎo)致編譯錯(cuò)誤,設(shè)計(jì)文檔修改端口名后需要修改所有的模塊;


interface中集合了多個(gè)Verilog類(lèi)型的信號(hào),是一個(gè)獨(dú)立的端口類(lèi)型,可以簡(jiǎn)化端口連接。interface包含了連接,同步,甚至多個(gè)塊之間的通信,只要在interface里面聲明過(guò)的信號(hào)與端口,在其它模塊中都可以使用。


interface的優(yōu)勢(shì):


接口便于設(shè)計(jì)重用,當(dāng)兩個(gè)塊之間有兩個(gè)以上的信號(hào)連接,并且使用特定的協(xié)議通信的時(shí)候,應(yīng)當(dāng)考慮接口;如果接口組一次又一次的重復(fù)出現(xiàn),應(yīng)該考慮虛擬接口;

接口可以用來(lái)替換原來(lái)在模塊或者程序中反復(fù)聲明并且位于代碼內(nèi)部的一系列信號(hào),減少了連接錯(cuò)誤的可能性;

要增加一個(gè)信號(hào)時(shí),只需要在借口中聲明一次,不需要在更高層聲明,這減少了連接錯(cuò)誤的可能性;

modport允許一個(gè)模塊很方便的將接口中一系列信號(hào)捆綁在一起,也可以為信號(hào)指明方以便工具自動(dòng)檢查。

interface的劣勢(shì):


必須同時(shí)使用接口名和信號(hào)名,可能會(huì)使模塊變得更加冗長(zhǎng);

如果連接的兩個(gè)模塊使用的是一個(gè)不會(huì)被重用的專用協(xié)議,使用接口需要做更多的工作;

連接兩個(gè)接口很困難;

對(duì)于點(diǎn)對(duì)點(diǎn)的連接,使用modport的接口描述跟使用信號(hào)列表的端口一樣的冗長(zhǎng)。

modport為接口內(nèi)部的信號(hào)提供了不同的視圖,在interface中可以提供任意數(shù)量的modport。


clocking可以保證測(cè)試平臺(tái)在正確的時(shí)間點(diǎn)和信號(hào)交互(驅(qū)動(dòng)過(guò)早或者過(guò)晚都會(huì)引起競(jìng)爭(zhēng)),將信號(hào)同步到一個(gè)特定的時(shí)鐘上。interface可以包含多個(gè)clocking。


program block的好處


將驗(yàn)證平臺(tái)與待測(cè)設(shè)計(jì)分隔開(kāi);

在不同的時(shí)間域運(yùn)行,減少了競(jìng)爭(zhēng)現(xiàn)象;

數(shù)據(jù)類(lèi)型

在Verilog中,初學(xué)者經(jīng)常分不清reg和wire兩者的區(qū)別,在sv中對(duì)此進(jìn)行了改進(jìn),這種新的數(shù)據(jù)類(lèi)型為logic,但要求logic不能有多個(gè)結(jié)構(gòu)性的驅(qū)動(dòng)。logic有四種狀態(tài):0,1,x,z。


二值變量(只有兩種狀態(tài),不用做rtl設(shè)計(jì),提供仿真性能,減少內(nèi)存使用量):bit,byte,shortint,int,longint


邏輯仿真特性:


四值狀態(tài)變量的默認(rèn)初始值為x,二值狀態(tài)變量的默認(rèn)初始值為0;

二值初始變量不能表示未初始化狀態(tài);

四值狀態(tài)變量可以賦值給二值狀態(tài)變量,x和z會(huì)轉(zhuǎn)換成0;

$isunknown()可以檢測(cè)表達(dá)式中是否存在x或者z。

固定數(shù)組

支持多維數(shù)組;

超過(guò)邊界的寫(xiě)操作會(huì)被忽略;

超過(guò)邊界的讀操作返回值為x;

byte,shortint,int存放在32位的存儲(chǔ)空間中;

longint存放在64位的存儲(chǔ)空間中

填充數(shù)組

混合數(shù)組

動(dòng)態(tài)數(shù)組

隊(duì)列

隊(duì)列具有排序和搜索的功能;

迅速分配額外的空間和額外的元素;

支持push和pop的操作;

支持add和remove元素操作;

可支付之固定數(shù)組和動(dòng)態(tài)數(shù)組的值給隊(duì)列;

不需要new函數(shù)

當(dāng)滿足以下條件時(shí),動(dòng)態(tài)數(shù)組和固定數(shù)組可以互相復(fù)制:相同的數(shù)據(jù)類(lèi)型和相同數(shù)目的元素。


結(jié)構(gòu)體

具有一組變量或者常數(shù)組成的集合,可以作為一個(gè)整體進(jìn)行操作,也可以操作其中的一部分;

將邏輯上相關(guān)的信號(hào)放在一起,比如一些總線協(xié)議;

可以利用結(jié)構(gòu)體的名字操作整個(gè)變量。

枚舉

抽象變量代表一個(gè)數(shù)值序列;

用戶可以定義每一個(gè)值;

增加了可閱讀性;

支持first,last,next,prev操作;

枚舉類(lèi)型默認(rèn)為int,所有數(shù)值需要唯一

function

函數(shù)執(zhí)行過(guò)程中不消耗仿真時(shí)間,所以函數(shù)中不能有控制時(shí)間的語(yǔ)句。

task

含有input,output或者inout語(yǔ)句;

消耗仿真時(shí)間



封裝:類(lèi)可以把自己的數(shù)據(jù)和方法只讓可信的類(lèi)或者對(duì)象操作,對(duì)不可信的進(jìn)行信息隱藏。通過(guò)這種方式,對(duì)象對(duì)內(nèi)部數(shù)據(jù)提供了不同級(jí)別的保護(hù),以防止程序中無(wú)關(guān)的部分意外的改變或錯(cuò)誤的使用了對(duì)象的私有部分;

繼承:是指可以讓某個(gè)類(lèi)型的對(duì)象獲得另一個(gè)類(lèi)型的對(duì)象的屬性的方法。繼承是指這樣一種能力:它可以使用現(xiàn)有類(lèi)的所有功能,并在無(wú)需重新編寫(xiě)原來(lái)的類(lèi)的情況下對(duì)這些功能進(jìn)行擴(kuò)展。通過(guò)繼承創(chuàng)建的新類(lèi)稱為“子類(lèi)”或“派生類(lèi)”,被繼承的類(lèi)稱為“基類(lèi)”、“父類(lèi)”或“超類(lèi)”。繼承的過(guò)程,就是從一般到特殊的過(guò)程。

多態(tài):就是指一個(gè)類(lèi)實(shí)例的相同方法在不同情形有不同表現(xiàn)形式,比如build_phase中的create。體現(xiàn)不同的效果;

虛函數(shù)

參數(shù)化類(lèi)



隨機(jī)化

rand關(guān)鍵字聲明隨機(jī)變量(指定范圍內(nèi)均勻分布)。

周期性關(guān)鍵字randc(數(shù)據(jù)類(lèi)型只能是bit或者enum)。

constraint語(yǔ)句約束塊。

randomize將對(duì)象中的隨機(jī)變量賦值。

seed隨機(jī)種子。

dist數(shù)值分布操作符(randc的隨機(jī)變量不能設(shè)置權(quán)重)。

:=指定的數(shù)值具有相同的分布權(quán)重;:/指定的數(shù)值均分權(quán)重。

雙向約束

solve before

random_mode()

constraint_mode()



并發(fā)線程

并發(fā)線程沒(méi)有固定的先后執(zhí)行順序;

join

join any

join none

當(dāng)一個(gè)線程執(zhí)行時(shí),只有遇到wait語(yǔ)句才會(huì)停止;

當(dāng)正在執(zhí)行的線程遇到等待語(yǔ)句時(shí),在隊(duì)列中的ready 狀態(tài)的線程可以執(zhí)行;

當(dāng)所有的線程進(jìn)入wait狀態(tài)時(shí),仿真時(shí)間更新,進(jìn)入到下一個(gè)仿真周期;

wait fork:等待所有的并發(fā)進(jìn)程執(zhí)行完成;

disable fork:停止所有并發(fā)子線程的執(zhí)行;

線程內(nèi)部通信

Verilog event:觸發(fā)事件的操作符:->;等待事件的操作符:@


事件 event

不需要聲明為全局變量,就可以將event作為共享資源使用;

觸發(fā)事件的操作符:->(阻塞觸發(fā):觸發(fā)一個(gè)事件不會(huì)阻塞當(dāng)前等待事件的所有進(jìn)程,邊沿敏感信號(hào))和->>(非阻塞觸發(fā):在事件發(fā)生的時(shí)間點(diǎn)創(chuàng)建一個(gè)非阻塞賦值);

等待一個(gè)事件被觸發(fā)的操作符:@和wait;

triggered函數(shù)用來(lái)檢查一個(gè)事件是否被觸發(fā)過(guò),返回值是一個(gè)狀態(tài);

wait_order;

事件變量:Event是一個(gè)獨(dú)立的數(shù)據(jù)類(lèi)型,可以進(jìn)行賦值,當(dāng)把一個(gè)事件復(fù)制給另外一事件時(shí),原事件與目的事件共享原事件,兩個(gè)事件合并為一個(gè)事件;當(dāng)事件合并時(shí),賦值操作僅僅會(huì)影響目的事件的執(zhí)行或等待操作;

取消事件:當(dāng)一個(gè)事件賦值為null,與該事件變量同步的進(jìn)程無(wú)效;

比較事件:不同的事件可以進(jìn)行比較;



旗語(yǔ) semaphore



semaphore通常用于對(duì)共享資源的分配和同步;

共享資源在不同的進(jìn)程中是互斥使用的;

new();get();put();try_put();

在驗(yàn)證平臺(tái),常用semaphore對(duì)共享資源進(jìn)行分配,比如系統(tǒng)總線,在同一個(gè)時(shí)間點(diǎn),只能有一個(gè)驅(qū)動(dòng)使用總線;

郵箱 mailbox

mailbox是sv中不斷進(jìn)程間的通信方式;

將一個(gè)進(jìn)程中的數(shù)據(jù)通過(guò)mailbox傳遞給另外一個(gè)進(jìn)程,當(dāng)mailbox沒(méi)有數(shù)據(jù)時(shí),線程將等待;

mailbox類(lèi)似一個(gè)FIFO,可以設(shè)置一定的深度queue size;當(dāng)郵箱中的信息數(shù)量達(dá)到郵箱的深度時(shí),郵箱為滿;如果郵箱為滿,進(jìn)程就不能再往郵箱中存放消息,直到郵箱中的信息被取走;

new();put();get();try_put();try_get();peek();try_peek();num();

如何在兩個(gè)線程之間傳遞消息:生成器生成事務(wù)數(shù)據(jù)包,然后傳遞給驅(qū)動(dòng)器;生成器和驅(qū)動(dòng)器必須是異步操作;如果生成器和驅(qū)動(dòng)器之間需要同步,則需要額外的握手信息;


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉