SystemVerilog語(yǔ)言知識(shí)介紹_第1頁(yè)
SystemVerilog語(yǔ)言知識(shí)介紹_第2頁(yè)
SystemVerilog語(yǔ)言知識(shí)介紹_第3頁(yè)
SystemVerilog語(yǔ)言知識(shí)介紹_第4頁(yè)
SystemVerilog語(yǔ)言知識(shí)介紹_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、SystemVerilog語(yǔ)言簡(jiǎn)介SysteemVeerillog是是一種硬硬件描述述和驗(yàn)證證語(yǔ)言(HDVL),它基于IEEE 1364-2001 Verilog硬件描述語(yǔ)言(HDL),并對(duì)其進(jìn)行了擴(kuò)展,包括擴(kuò)充了C語(yǔ)言數(shù)據(jù)類型、結(jié)構(gòu)、壓縮和非壓縮數(shù)組、 接口、斷言等等,這些都使得SystemVerilog在一個(gè)更高的抽象層次上提高了設(shè)計(jì)建模的能力。SystemVerilog由Accellera開發(fā),它主要定位在芯片的實(shí)現(xiàn)和驗(yàn)證流程上,并為系統(tǒng)級(jí)的設(shè)計(jì)流程提供了強(qiáng)大的連接能力。下面我們從幾個(gè)方面對(duì)SystemVerilog所作的增強(qiáng)進(jìn)行簡(jiǎn)要的介紹,期望能夠通過(guò)這個(gè)介紹使大家對(duì)SystemVer

2、ilog有一個(gè)概括性的了解。1. 接口口(Innterrfacce)Verillog模模塊之間間的連接接是通過(guò)過(guò)模塊端端口進(jìn)行行的。為為了給組組成設(shè)計(jì)計(jì)的各個(gè)個(gè)模塊定定義端口口,我們們必須對(duì)對(duì)期望的的硬件設(shè)設(shè)計(jì)有一一個(gè)詳細(xì)細(xì)的認(rèn)識(shí)識(shí)。不幸幸的是,在在設(shè)計(jì)的的早期,我我們很難難把握設(shè)設(shè)計(jì)的細(xì)細(xì)節(jié)。而而且,一一旦模塊塊的端口口定義完完成后,我我們也很很難改變變端口的的配置。另另外,一一個(gè)設(shè)計(jì)計(jì)中的許許多模塊塊往往具具有相同同的端口口定義,在在Verriloog中,我我們必須須在每個(gè)個(gè)模塊中中進(jìn)行相相同的定定義,這這為我們們?cè)黾恿肆藷o(wú)謂的的工作量量。SysteemVeerillog提提供了一一個(gè)新的

3、的、高層層抽象的的模塊連連接,這這個(gè)連接接被稱為為接口(IInteerfaace)。接口口在關(guān)鍵鍵字innterrfacce和enddintterffacee之間定定義,它它獨(dú)立于于模塊。接接口在模模塊中就就像一個(gè)個(gè)單一的的端口一一樣使用用。在最最簡(jiǎn)單的的形式下下,一個(gè)個(gè)接口可可以認(rèn)為為是一組組線網(wǎng)。例例如,可可以將PPCI總總線的所所有信號(hào)號(hào)綁定在在一起組組成一個(gè)個(gè)接口。通通過(guò)使用用接口,我我們?cè)谶M(jìn)進(jìn)行一個(gè)個(gè)設(shè)計(jì)的的時(shí)候可可以不需需要首先先建立各各個(gè)模塊塊間的互互連。隨隨著設(shè)計(jì)計(jì)的深入入,各個(gè)個(gè)設(shè)計(jì)細(xì)細(xì)節(jié)也會(huì)會(huì)變得越越來(lái)越清清晰,而而接口內(nèi)內(nèi)的信號(hào)號(hào)也會(huì)很很容易地地表示出出來(lái)。當(dāng)當(dāng)接口發(fā)發(fā)生

4、變化化時(shí),這這些變化化也會(huì)在在使用該該接口的的所有模模塊中反反映出來(lái)來(lái),而無(wú)無(wú)需更改改每一個(gè)個(gè)模塊。下下面是一一個(gè)接口口的使用用實(shí)例:interrfacce cchipp_buus; / 定義接接口wire reaad_rrequuestt, rreadd_grrantt;wire 7:0 adddresss, datta;endinnterrfacce: chiip_bbusmodulle RRAM (chhip_buss ioo, / 使使用接口口inputt cllk);/ 可以以使用iio.rreadd_reequeest引引用接口口中的一一個(gè)信號(hào)號(hào)endmoodullemodulle

5、 CCPU(chiip_bbus io, innputt cllk);.endmoodullemodulle ttop;reg cclk = 00;chip_buss a; / 實(shí)例例接口/ 將接接口連接接到模塊塊實(shí)例RAM mmem(a, clkk);CPU ccpu(a, clkk);endmoodulle實(shí)際上,SSysttemVVeriilogg的接口口不僅僅僅可以表表示信號(hào)號(hào)的綁定定和互連連。由于于SysstemmVerriloog的接接口中可可以包含含參數(shù)、常常量、變變量、結(jié)結(jié)構(gòu)、函函數(shù)、任任務(wù)、iinittiall塊、allwayys塊以以及連續(xù)續(xù)賦值語(yǔ)語(yǔ)句,所所以Syystee

6、mVeerillog的的接口還還可以包包含內(nèi)建建的協(xié)議議檢查以以及被使使用該接接口的模模塊所共共用的功功能。2. 全局局聲明和和語(yǔ)句在Veriilogg中,除除了一個(gè)個(gè)模塊可可以作為為模塊實(shí)實(shí)例引用用其他模模塊外,并并不存在在一個(gè)全全局空間間。另外外,Veerillog允允許任意意數(shù)目的的頂層模模塊,因因此會(huì)產(chǎn)產(chǎn)生毫無(wú)無(wú)關(guān)聯(lián)的的層次樹樹。SysteemVeerioog增加加了一個(gè)個(gè)被稱為為$rooot的的隱含的的頂級(jí)層層次。任任何在模模塊邊界界之外的的聲明和和語(yǔ)句都都存在于于$rooot空空間中。所所有的模模塊,無(wú)無(wú)論它處處于哪一一個(gè)設(shè)計(jì)計(jì)層次,都都可以引引用$rroott中聲明明的名字字。這

7、樣樣,如果果某些變變量、函函數(shù)或其其它信息息被設(shè)計(jì)計(jì)中的所所有模塊塊共享,那那么我們們就可以以將它們們作為全全局聲明明和語(yǔ)句句。全局局聲明和和語(yǔ)句的的一個(gè)使使用實(shí)例例如下:reg eerroor _flaag; / 全局變變量functtionn coompaare (.); / 全局局函數(shù)alwayys (errrorr_fllag) / 全局局語(yǔ)句.modulle ttestt;chip11 u11 (.)endmoodullemodulle cchipp1 (.);FSM uu2 (.);alwayys (daata)errorr_fllag = ccompparee(daata, ex

8、xpecctedd);endmoodullemodulle FFSM (.);.alwayys (sttatee)errorr_fllag = ccompparee(sttatee, eexpeecteed);endmoodulle3. 時(shí)間間單位和和精度在Veriilogg中,表表示時(shí)間間的值使使用一個(gè)個(gè)數(shù)來(lái)表表示,而而不帶有有任何時(shí)時(shí)間單位位。例如如:forevver #5 cloock = cloock; 從這一句中中我們無(wú)無(wú)法判斷斷5代表的的是5nns? 5pss? 還還是其他他。Veerillog的的時(shí)間單單位和精精度是作作為每一一個(gè)模塊塊的屬性性,并使使用編譯譯器指令令tiimes

9、scalle來(lái)設(shè)設(shè)置。使使用這種種方法具具有固有有的缺陷陷,因?yàn)闉榫幾g器器指令的的執(zhí)行依依賴于源源代碼的的編譯順順序,編編譯器總總是將它它遇到的的最后一一個(gè)ttimeescaale設(shè)設(shè)置的時(shí)時(shí)間單位位和精度度作為之之后的標(biāo)標(biāo)準(zhǔn)。那那么,假假如有些些模塊之之前沒有有使用timmesccalee設(shè)置時(shí)時(shí)間單位位和精度度,這就就有可能能出現(xiàn)同同一個(gè)源源代碼的的不同仿仿真會(huì)出出現(xiàn)不同同結(jié)果的的情況。SysteemVeerillog為為了控制制時(shí)間單單位加入入了兩個(gè)個(gè)重要的的增強(qiáng)。首首先,時(shí)時(shí)間值可可以顯式式地指定定一個(gè)單單位。時(shí)時(shí)間單位位可以是是s、ms、ns、ps或fs。時(shí)時(shí)間單位位作為時(shí)時(shí)間值的的

10、后綴出出現(xiàn)。例例如:forevver #5nns cloock = cloock; 其次,SyysteemVeerillog允允許使用用新的關(guān)關(guān)鍵字(timeunits和timeprecision)來(lái)指定時(shí)間單位和精度。這些聲明可以在任何模塊中指定,同時(shí)也可以在$root空間中全局指定。時(shí)間單位和精度必須是10的冪,范圍可以從s到fs。例如:timeuunitts 11ns; timeppreccisiion 10pps;4. 抽象象數(shù)據(jù)類類型Verillog提提供了面面向底層層硬件的的線網(wǎng)、寄寄存器和和變量數(shù)數(shù)據(jù)類型型。這些些類型代代表了44態(tài)邏輯輯值,通通常用來(lái)來(lái)在底層層上對(duì)硬硬件進(jìn)行行建

11、模和和驗(yàn)證。線線網(wǎng)數(shù)據(jù)據(jù)類型還還具有多多個(gè)強(qiáng)度度級(jí)別,并并且能夠夠?yàn)槎囹?qū)驅(qū)動(dòng)源的的線網(wǎng)提提供解析析功能。SysteemVeerillog包包括了CC語(yǔ)言的的chaar和intt數(shù)據(jù)類類型,它它允許在在Verriloog模型型和驗(yàn)證證程序中中直接使使用C和C+代碼。VVeriilogg PLLI不再再需要集集成總線線功能模模型、算算法模型型和C函數(shù)。SSysttemVVeriilogg還為Veerillog加加入了幾幾個(gè)新的的數(shù)據(jù)類類型,以以便能夠夠在更抽抽象的層層次上建建模硬件件。 chhar:一個(gè)兩兩態(tài)的有有符號(hào)變變量,它它與C語(yǔ)言中中的chhar數(shù)數(shù)據(jù)類型型相同,可可以是一一個(gè)8位整數(shù)數(shù)(

12、ASSCIII)或shhortt innt(Uniicodde); int:一一個(gè)兩態(tài)態(tài)的有符符號(hào)變量量,它與與C語(yǔ)言中中的innt數(shù)據(jù)據(jù)類型相相似,但但被精確確地定義義成322位; shhorttintt:一個(gè)個(gè)兩態(tài)的的有符號(hào)號(hào)變量,被被精確地地定義成成16位; loongiint:一個(gè)兩兩態(tài)的有有符號(hào)變變量,它它與C語(yǔ)言中中的loong數(shù)數(shù)據(jù)類型型相似,但但被精確確地定義義成644位; byyte:一個(gè)兩兩態(tài)的有有符號(hào)變變量,被被精確地地定義成成8位; biit:一一個(gè)兩態(tài)態(tài)的可以以具有任任意向量量寬度的的無(wú)符號(hào)號(hào)數(shù)據(jù)類類型,可可以用來(lái)來(lái)替代VVeriilogg的regg數(shù)據(jù)類類型; lo

13、ogicc:一個(gè)個(gè)四態(tài)的的可以具具有任意意向量寬寬度的無(wú)無(wú)符號(hào)數(shù)數(shù)據(jù)類型型,可以以用來(lái)替替代Veerillog的的線網(wǎng)或或regg數(shù)據(jù)類類型,但但具有某某些限制制; shhorttreaal:一一個(gè)兩態(tài)態(tài)的單精精度浮點(diǎn)點(diǎn)變量,與與C語(yǔ)言的的flooat類類型相同同; vooid:表示沒沒有值,可可以定義義成一個(gè)個(gè)函數(shù)的的返回值值,與CC語(yǔ)言中中的含義義相同。SysteemVeerillog的的bitt和其他他數(shù)據(jù)類類型允許許用戶使使用兩態(tài)態(tài)邏輯對(duì)對(duì)設(shè)計(jì)建建模,這這種方法法對(duì)仿真真性能更更有效率率。由于于Verriloog語(yǔ)言言沒有兩兩態(tài)數(shù)據(jù)據(jù)類型,因因此許多多仿真器器都通過(guò)過(guò)將這種種功能作作為

14、仿真真器的一一個(gè)選項(xiàng)項(xiàng)提供。這這些選項(xiàng)項(xiàng)不能夠夠在所有有的仿真真器之間間移植,而而且在需需要時(shí)用用三態(tài)或或四態(tài)邏邏輯的設(shè)設(shè)計(jì)中強(qiáng)強(qiáng)制使用用兩態(tài)邏邏輯還具具有副作作用。SSysttemVVeriilogg的bitt數(shù)據(jù)類類型能夠夠極大改改進(jìn)仿真真器的性性能,同同時(shí)在需需要的時(shí)時(shí)候仍然然可以使使用三態(tài)態(tài)或四態(tài)態(tài)邏輯。通通過(guò)使用用具有確確定行為為的數(shù)據(jù)據(jù)類型來(lái)來(lái)代替專專有的仿仿真器選選項(xiàng),兩兩態(tài)模型型能夠在在所有的的SysstemmVerriloog仿真真器間移移植。SysteemVeerillog的的loggic數(shù)數(shù)據(jù)類型型比Veerillog的的線網(wǎng)和和寄存器器數(shù)據(jù)類類型更加加靈活,它它使得在在

15、任何抽抽象層次次上建模模硬件都都更加容容易。llogiic類型型能夠以以下面的的任何一一種方法法賦值: 通過(guò)過(guò)任意數(shù)數(shù)目的過(guò)過(guò)程賦值值語(yǔ)句賦賦值,能能夠替代代Verriloog的regg類型; 通過(guò)過(guò)單一的的連續(xù)賦賦值語(yǔ)句句賦值,能能夠有限限制地替替代Veerillog的的wirre類型型; 連接接到一個(gè)個(gè)單一原原語(yǔ)的輸輸出,能能夠有限限制地替替代Veerillog的的wirre類型型;由于loggic數(shù)數(shù)據(jù)類型型能夠被被用來(lái)替替代Veerillog的的regg或wirre(具具有限制制),這這就使得得能夠在在一個(gè)更更高的抽抽象層次次上建模模,并且且隨著設(shè)設(shè)計(jì)的不不斷深入入能夠加加入一些些設(shè)計(jì)

16、細(xì)細(xì)節(jié)而不不必改變變數(shù)據(jù)類類型的聲聲明。llogiic數(shù)據(jù)據(jù)類型不不會(huì)表示示信號(hào)的的強(qiáng)度也也不具有有線邏輯輯的解析析功能,因因此loogicc數(shù)據(jù)類類型比VVeriilogg的wirre類型型更能有有效地仿仿真和綜綜合。5. 有符符號(hào)和無(wú)無(wú)符號(hào)限限定符缺省情況下下,Veerillog nett和regg數(shù)據(jù)類類型是無(wú)無(wú)符號(hào)類類型,iinteegerr類型是是一個(gè)有有符號(hào)類類型。VVeriilogg-20001標(biāo)標(biāo)準(zhǔn)允許許使用ssignned關(guān)關(guān)鍵字將將無(wú)符號(hào)號(hào)類型顯顯式地聲聲明成有有符號(hào)類類型。SSysttemVVeriilogg加入了了相似的的能力,它它可以通通過(guò)unnsiggnedd關(guān)鍵字

17、字將有符符號(hào)數(shù)據(jù)據(jù)類型顯顯式地聲聲明成有有無(wú)符號(hào)號(hào)數(shù)據(jù)類類型。例例如:int uunsiigneed jj; 值得注意的的是unnsiggnedd在Verriloog中是是一個(gè)保保留字,但但并沒有有被Veerillog標(biāo)標(biāo)準(zhǔn)使用用。6. 用戶戶定義的的類型Verillog不不允許用用戶定義義新的數(shù)數(shù)據(jù)類型型。SyysteemVeerillog通通過(guò)使用用typpedeef提供供了一種種方法來(lái)來(lái)定義新新的數(shù)據(jù)據(jù)類型,這這一點(diǎn)與與C語(yǔ)言類類似。用用戶定義義的類型型可以與與其它數(shù)數(shù)據(jù)類型型一樣地地使用在在聲明當(dāng)當(dāng)中。例例如:typeddef unssignned intt uiint;uint a,

18、 b;一個(gè)用戶定定義的數(shù)數(shù)據(jù)類型型可以在在它的定定義之前前使用,只只要它首首先在空空的tyypeddef中中說(shuō)明,例例如:typeddef intt48; / 空的的typeedeff,在其其他地方方進(jìn)行完完整定義義int488 c;7. 枚舉舉類型在Veriilogg語(yǔ)言中中不存在在枚舉類類型。標(biāo)標(biāo)識(shí)符必必須被顯顯式地聲聲明成一一個(gè)線網(wǎng)網(wǎng)、變量量或參數(shù)數(shù)并被賦賦值。SSysttemVVeriilogg允許使使用類似似于C的語(yǔ)法法產(chǎn)生枚枚舉類型型。一個(gè)個(gè)枚舉類類型具有有一組被被命名的的值。缺缺省情況況下,值值從初始始值0開始遞遞增,但但是我們們可以顯顯式地指指定初始始值。枚枚舉類型型的例子子如

19、下:enum reed, yellloww, ggreeen RGBB;enum WAAIT=2b001, LOAAD, DONNE staatess;我們還可以以使用ttypeedeff為枚舉舉類型指指定一個(gè)個(gè)名字,從從而允許許這個(gè)枚枚舉類型型可以在在許多地地方使用用。例如如:typeddef enuum FALLSE=1b00, TTRUEE bboolleann;booleean reaady;booleean tesst_ccompplette;8. 結(jié)構(gòu)構(gòu)體和聯(lián)聯(lián)合體在Veriilogg語(yǔ)言中中不存在在結(jié)構(gòu)體體或聯(lián)合合體,而而結(jié)構(gòu)體體或聯(lián)合合體在將將幾個(gè)聲聲明組合合在一起起的時(shí)候候非

20、常有有用。SSysttemVVeriilogg增加了了結(jié)構(gòu)體體和聯(lián)合合體,它它們的聲聲明語(yǔ)法法類似于于C。strucct regg 155:0 oopcoode; regg 233:0 aaddrr; IR;unionn intt I; shoortrreall f; N;結(jié)構(gòu)體或聯(lián)聯(lián)合體中中的域可可以通過(guò)過(guò)在變量量名和域域名字之之間插入入句點(diǎn)(.)來(lái)引用:IR.oppcodde = 1; / 設(shè)置置IR變量量中的oopcoode域域N.f = 0.0; / 將N設(shè)置成成浮點(diǎn)數(shù)數(shù)的值我們可以使使用tyypeddef為為結(jié)構(gòu)體體或聯(lián)合合體的定定義指定定一個(gè)名名字。typeddef strruct

21、t regg 7:0 oopcoode; regg 233:0 aaddrr; insstruuctiion; / 命名名的結(jié)構(gòu)構(gòu)體instrructtionn IRR; / 結(jié)結(jié)構(gòu)體實(shí)實(shí)例一個(gè)結(jié)構(gòu)體體可以使使用值的的級(jí)聯(lián)來(lái)來(lái)完整地地賦值,例例如:instrructtionn = 5, 2000; 結(jié)構(gòu)體可以以作為一一個(gè)整體體傳遞到到函數(shù)或或任務(wù),也也可以從從函數(shù)或或任務(wù)傳傳遞過(guò)來(lái)來(lái),也可可以作為為模塊端端口進(jìn)行行傳遞。9. 數(shù)組組在Veriilogg中可以以聲明一一個(gè)數(shù)組組類型,reg和線網(wǎng)類型還可以具有一個(gè)向量寬度。在一個(gè)對(duì)象名前面聲明的尺寸表示向量的寬度,在一個(gè)對(duì)象名后面聲明的尺寸表示數(shù)

22、組的深度。例如:reg 7:0 rr1 1:2566; / 2566個(gè)8位的變變量在SysttemVVeriilogg中我們們使用不不同的術(shù)術(shù)語(yǔ)表示示數(shù)組:使用“壓縮數(shù)數(shù)組(ppackked arrray)”這一術(shù)術(shù)語(yǔ)表示示在對(duì)象象名前聲聲明尺寸寸的數(shù)組組;使用用“非壓縮縮數(shù)組(unpacked array)”這一術(shù)語(yǔ)表示在對(duì)象名后面聲明尺寸的數(shù)組。壓縮數(shù)組可以由下面的數(shù)據(jù)類型組成:bit、logic、reg、wire以及其它的線網(wǎng)類型。無(wú)論是壓縮數(shù)組還是非壓縮數(shù)組都可以聲明成多維的尺寸。bit 7:0 aa; / 一一個(gè)一維維的壓縮縮數(shù)組bit bb 77:0; /一個(gè)個(gè)一維的的非壓縮縮數(shù)組

23、bit 0:11 7:0 cc; /一個(gè)個(gè)二維的的壓縮數(shù)數(shù)組bit 3:0 7:0 dd 11:10; / 一個(gè)個(gè)包含110個(gè)具具有4個(gè)8位字節(jié)節(jié)的壓縮縮數(shù)組的的非壓縮縮數(shù)組非壓縮尺寸寸在壓縮縮尺寸之之前引用用,這就就允許將將整個(gè)壓壓縮數(shù)組組作為一一個(gè)單一一的元素素進(jìn)行引引用。在在上面的的例子中中,d1引引用非壓壓縮數(shù)組組的一個(gè)個(gè)單一元元素,這這個(gè)元素素是一個(gè)個(gè)包含44個(gè)字節(jié)節(jié)的數(shù)組組。10. 在在為命名名的塊中中聲明Verillog允允許變量量在一個(gè)個(gè)命名的的beggin-endd或forrk-jjoinn語(yǔ)句組組中聲明明。相對(duì)對(duì)于語(yǔ)句句組來(lái)說(shuō)說(shuō),這些些變量是是本地的的,但它它們可以以被層次

24、次化地引引用。在在SysstemmVerriloog中,既既可以在在命名的的塊中也也可以在在未命名名的塊中中聲明。在在未命名名的塊中中,不能能夠使用用層次名名來(lái)訪問(wèn)問(wèn)變量。所所有的變變量類型型,包括括用戶定定義的類類型、枚枚舉類型型、結(jié)構(gòu)構(gòu)體和聯(lián)聯(lián)合體都都可以在在beggin-endd或forrk-jjoinn語(yǔ)句組組中聲明明。11. 常常量在Veriilogg中有三三種特性性類型的的常量:parrameeterr、speecpaaramm和loccalpparaam。而而在SyysteemVeerillog中中,允許許使用cconsst關(guān)鍵鍵字聲明明常量。例例如:constt chhar c

25、ollon = “:”; 12. 可可重定義義的數(shù)據(jù)據(jù)類型SysteemVeerillog擴(kuò)擴(kuò)展了VVeriilogg的parrameeterr,使其其可以包包含類型型。這個(gè)個(gè)強(qiáng)大的的功能使使得一個(gè)個(gè)模塊中中的數(shù)據(jù)據(jù)類型在在模塊的的每一個(gè)個(gè)實(shí)例中中重新定定義。例例如:modulle ffoo; # (parrameeterr tyype VARR_TYYPE = sshorrtinnt;) (innputt loogicc 7:0 ii, ooutpput loggic 7:0 oo); VARR_TYYPE j = 0; / 如果果不重新新定義,j的數(shù)據(jù)類型為shortint endmood

26、ullemodulle bbar; loggic 3:0 ii, oo; fooo #(.VAAR_TTYPEE(innt) u11 (ii, oo); / 重新將將VARR_TYYPE定定義成iint類類型endmoodulle13. 模模塊端口口連接在Veriilogg中,可可以連接接到模塊塊端口的的數(shù)據(jù)類類型被限限制為線線網(wǎng)類型型以及變變量類型型中的rreg、inttegeer和timme。而而在SyysteemVeerillog中中則去除除了這種種限制,任任何數(shù)據(jù)據(jù)類型都都可以通通過(guò)端口口傳遞,包包括實(shí)數(shù)數(shù)、數(shù)組組和結(jié)構(gòu)構(gòu)體。14. 字字母值在Veriilogg中,當(dāng)當(dāng)指定或或賦值字字

27、母值的的時(shí)候存存在一些些限制。而而SysstemmVerriloog則為為字母值值如何指指定作了了下面的的增強(qiáng): 一個(gè)個(gè)字母值值的所有有位均可可以使用用0、1、z或x作相相同的填填充。這這就允許許填充一一個(gè)任意意寬度的的向量,而而無(wú)需顯顯式地指指定向量量的寬度度,例如如:bit 63:0 ddataa; data = 1; /將datta的所所有位設(shè)設(shè)置成11 一個(gè)個(gè)字符串串可以賦賦值成一一個(gè)字符符數(shù)組,象象C語(yǔ)言一一樣加入入一個(gè)空空結(jié)束符符。如果果尺寸不不同,它它象C中一樣樣進(jìn)行左左調(diào)整,例例如:char fooo 0:12 = “hhelllo wworlldn”; 加入入了幾個(gè)個(gè)特殊的的

28、串字符符:v:垂直TTABf:換頁(yè)a:響鈴x02:用用十六進(jìn)進(jìn)制數(shù)來(lái)來(lái)表示一一個(gè)ASSCIII字符 數(shù)組組可以使使用類似似于C初始化化的語(yǔ)法法賦值成成字符值值,但它它還允許許復(fù)制操操作符。括括號(hào)的嵌嵌套必須須精確地地匹配數(shù)數(shù)組的維維數(shù)(這這一點(diǎn)與與C不同),例例如:int nn 1: 2 1:3 = 0, 1, 2, 34; 15. 強(qiáng)強(qiáng)制類型型轉(zhuǎn)換Verillog不不能將一一個(gè)值強(qiáng)強(qiáng)制轉(zhuǎn)換換成不同同的數(shù)據(jù)據(jù)類型。SystemVerilog通過(guò)使用操作符提供了數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換功能。這種強(qiáng)制轉(zhuǎn)換可以轉(zhuǎn)換成任意類型,包括用戶定義的類型。例如:int (2.0 * 3.0) / 將結(jié)果果轉(zhuǎn)換為為i

29、ntt類型mytyppe (fooo) / 將fooo轉(zhuǎn)換為為myttypee類型一個(gè)值還可可以通過(guò)過(guò)在強(qiáng)制制轉(zhuǎn)換操操作符前前指定一一個(gè)100進(jìn)制數(shù)數(shù)來(lái)轉(zhuǎn)換換成不同同的向量量寬度,例例如:17 (x - 2) / 將結(jié)結(jié)果轉(zhuǎn)換換為177位寬度度也可以將結(jié)結(jié)果轉(zhuǎn)換換成有符符號(hào)值,例例如:signeed (x) / 將x轉(zhuǎn)換為為有符號(hào)號(hào)值16. 操操作符Verillog沒沒有C語(yǔ)言的的遞增(+)和遞減(-)操作符。而SystemVerilog加入了幾個(gè)新的操作符: +和-:遞遞增和遞遞減操作作符; +=、-=、*=、/=、%=、&=、=、|=、=、=賦值值操作符符;17. 唯唯一性和和優(yōu)先級(jí)級(jí)決定

30、語(yǔ)語(yǔ)句在Veriilogg中,如如果沒有有遵循嚴(yán)嚴(yán)格的編編碼風(fēng)格格,它的的if-elsse和casse語(yǔ)句句會(huì)在RRTL仿仿真和RRTL綜綜合間具具有不一一致的結(jié)結(jié)果。如如果沒有有正確使使用fuull_casse和parralllel_casse綜合合指令還還會(huì)引起起一些其其它的錯(cuò)錯(cuò)誤。SysteemVeerillog能能夠顯式式地指明明什么時(shí)時(shí)候一條條決定語(yǔ)語(yǔ)句的分分支是唯唯一的,或或者什么么時(shí)候需需要計(jì)算算優(yōu)先級(jí)級(jí)。我們們可以在在if或casse關(guān)鍵鍵字之前前使用uuniqque或或reqquirres關(guān)關(guān)鍵字。這這些關(guān)鍵鍵字可以以向仿真真器、綜綜合編譯譯器、以以及其它它工具指指示我們們期

31、望的的硬件類類型。工工具使用用這些信信息來(lái)檢檢查iff或casse語(yǔ)句句是否正正確建模模了期望望的邏輯輯。例如如,如果果使用uuniqque限限定了一一個(gè)決定定語(yǔ)句,那那么在不不希望的的casse值出出現(xiàn)的時(shí)時(shí)候仿真真器就能能夠發(fā)布布一個(gè)警警告信息息。bit 2:0 a;uniquue iif (a=0) | (a=1) y = inn1;else if (a=2) y = in22;else if (a=4) y = in33; / 值值3、5、6、7會(huì)引起起一個(gè)警警告priorrityy iff (aa2:1=0) yy = inn1; / a是0或1else if (a2=0) yy =

32、 inn2; / a是2或3else y = inn3; / 如果a為其他他的值uniquue casse (a) 0, 1: yy = inn1; 2: y = inn2; 4: y = inn3;endcaase / 值3、5、6、7會(huì)引起起一個(gè)警警告priorrityy caasezz (aa) 2bb00? : y = inn1; / a是0或1 2bb0? : y = inn2; / a是2或3 deffaullt : y = inn3; /如如果a為其他他的值endcaase 18. 底底部檢測(cè)測(cè)的循環(huán)環(huán)Verillog包包含foor、whiile和和reppeatt循環(huán),這這幾個(gè)

33、循循環(huán)都是是在循環(huán)環(huán)的起始始處檢測(cè)測(cè)循環(huán)條條件。SSysttemVVeriilogg加入了了一個(gè)ddo-wwhille循環(huán)環(huán),這種種循環(huán)在在執(zhí)行語(yǔ)語(yǔ)句的結(jié)結(jié)尾處檢檢測(cè)循環(huán)環(huán)條件。19. 跳跳轉(zhuǎn)語(yǔ)句句在語(yǔ)句的執(zhí)執(zhí)行過(guò)程程中,CC語(yǔ)言提提供了幾幾種方式式來(lái)跳轉(zhuǎn)轉(zhuǎn)到新的的語(yǔ)句,包包括:rretuurn、breeak、conntinnue和和gotto。在在Verriloog中除除了通過(guò)過(guò)使用ddisaablee語(yǔ)句跳跳轉(zhuǎn)到語(yǔ)語(yǔ)句組的的尾部外外,沒有有提供任任何其它它跳轉(zhuǎn)語(yǔ)語(yǔ)句。使使用diisabble語(yǔ)語(yǔ)句執(zhí)行行中止和和繼續(xù)功功能要求求加入塊塊的名字字,并且且會(huì)產(chǎn)生生不直觀觀的代碼碼。Syystee

34、mVeerillog加加入了CC語(yǔ)言的的breeak和和conntinnue關(guān)關(guān)鍵字,這這兩個(gè)關(guān)關(guān)鍵字不不要求使使用塊名名字。另另外,SSysttemVVeriilogg還加入入了一個(gè)個(gè)retturnn關(guān)鍵字字,它可可以用來(lái)來(lái)在任何何執(zhí)行點(diǎn)點(diǎn)上退出出一個(gè)任任務(wù)或函函數(shù)。 brreakk:退出出一個(gè)循循環(huán),與與C語(yǔ)言相相同; coontiinuee:跳轉(zhuǎn)轉(zhuǎn)到一個(gè)個(gè)循環(huán)的的尾部,與與C語(yǔ)言相相同; reeturrn 表達(dá)式式:退出出一個(gè)函函數(shù); reeturrn:退退出一個(gè)個(gè)任務(wù)或或voiid類型型的函數(shù)數(shù)。SysteemVeerillog沒沒有包含含C語(yǔ)言中中的gooto語(yǔ)語(yǔ)句。20. 塊塊名字

35、和和語(yǔ)句標(biāo)標(biāo)簽在Veriilogg中,我我們可以以通過(guò)在在beggin或或forrk關(guān)鍵鍵字之后后指定名名字來(lái)為為beggin-endd或forrk-jjionn語(yǔ)句指指定名字字。這個(gè)個(gè)指定的的名字代代表整個(gè)個(gè)語(yǔ)句塊塊。SyysteemVeerillog還還允許在在endd或jioon關(guān)鍵鍵字之后后指定一一個(gè)匹配配的塊名名字。這這種機(jī)制制很容易易將ennd或jioon與對(duì)對(duì)應(yīng)的bbegiin或forrk聯(lián)系系起來(lái),尤尤其是在在一個(gè)長(zhǎng)長(zhǎng)的塊或或嵌套的的塊中。塊塊結(jié)尾處處的名字字是可選選的,但但如果使使用的話話,它必必須與塊塊起始處處的名字字相同。例例如:beginn: ffoo / 在beggi

36、n之之后的塊塊名字 forrk: barr / 具有有名字的的嵌套的的塊 jioon: barr / 必須須具有相相同的名名字 end: fooo / 必須須具有相相同的名名字SysteemVeerillog還還允許像像C語(yǔ)言一一樣為單單個(gè)語(yǔ)句句設(shè)置標(biāo)標(biāo)簽。語(yǔ)語(yǔ)句標(biāo)簽簽放置在在語(yǔ)句的的前面,用用來(lái)標(biāo)識(shí)識(shí)這條語(yǔ)語(yǔ)句。例例如:initiial beggin tesst1: reead_enaablee = 0; tesst2: foor (i=00; ii=2255; i+)end21. 對(duì)對(duì)事件控控制的增增強(qiáng)Verillog使使用標(biāo)記來(lái)來(lái)控制基基于特定定事件的的執(zhí)行流流,SyysteemVeer

37、illog增增強(qiáng)了事件控控制。 有條條件的事事件控制制標(biāo)記的一一個(gè)基本本應(yīng)用就就是推斷斷一個(gè)具具有使能能輸入的的鎖存器器。下面面的例子子演示了了一個(gè)鎖鎖存器建建模的基基本風(fēng)格格。alwayys (daata or en) if (enn) y = datta;這種編碼風(fēng)風(fēng)格對(duì)仿仿真來(lái)說(shuō)說(shuō)是效率率低下的的,因?yàn)闉榧词乖谠谑鼓茌斴斎霟o(wú)效效的時(shí)候候,數(shù)據(jù)據(jù)輸入的的每次改改變都會(huì)會(huì)觸發(fā)事事件控制制。SysteemVeerillog在在事件控控制中加加入了一一個(gè)ifff條件件。只有有ifff條件為為真的條條件下,事事件控制制才會(huì)被被觸發(fā)。通通過(guò)將使使能判斷斷移入到到事件控控制里面面,使得得只有在在鎖存器

38、器輸出能能夠改變變的時(shí)候候事件控控制才會(huì)會(huì)被觸發(fā)發(fā)。例如如:alwayys (a orr enn ifff een=1) y = a; 事件件控制中中的表達(dá)達(dá)式Verillog允允許在事件控控制列表表中使用用表達(dá)式式,例如如:alwayys (aa * b)alwayys (meemorryaaddrresss)在第一個(gè)例例子中,是是當(dāng)操作作數(shù)發(fā)生生改變的的時(shí)候還還是只有有當(dāng)運(yùn)算算結(jié)果發(fā)發(fā)生改變變的時(shí)候候才會(huì)觸觸發(fā)事件件控制?在第二二個(gè)例子子中,是是當(dāng)meemorry的地地址發(fā)生生變化的的時(shí)候還還是只有有當(dāng)meemorry的值值發(fā)生變變化的時(shí)時(shí)候才會(huì)會(huì)觸發(fā)事事件控制制?當(dāng)事件控控制中包包含表達(dá)

39、達(dá)式的時(shí)時(shí)候,IIEEEE Veerillog標(biāo)標(biāo)準(zhǔn)允許許仿真器器進(jìn)行不不同的優(yōu)優(yōu)化。這這就可能能導(dǎo)致在在不同的的仿真器器間有不不同的仿仿真結(jié)果果,可能能還會(huì)導(dǎo)導(dǎo)致仿真真與綜合合之間的的結(jié)果不不一致。SystemVerilog加入了一個(gè)changed關(guān)鍵字,在事件控制列表中它被用作一個(gè)修飾符。(changed (表達(dá)式)能夠顯式地定義只有當(dāng)表達(dá)式的結(jié)果發(fā)生改變的時(shí)候才會(huì)觸發(fā)事件控制。例如:alwayys (chaangeed (a * b)alwayys (chaangeed mmemooryadddresss) 事件件控制中中的賦值值Verillog不不允許在在事件控控制中使使用賦值值。Sy

40、ysteemVeerillog允允許在事事件控制制中使用用賦值表表達(dá)式。事事件控制制僅僅敏敏感于賦賦值表達(dá)達(dá)式右側(cè)側(cè)的變化化。例如如:alwayys (y = aa * b)22. 新新的過(guò)程程Verillog使使用allwayys過(guò)程程來(lái)表示示時(shí)序邏邏輯、組組合邏輯輯和鎖存存邏輯的的RTLL模型。綜綜合工具具和其它它軟件工工具必須須根據(jù)過(guò)過(guò)程起始始處的事事件控制制列表以以及過(guò)程程內(nèi)的語(yǔ)語(yǔ)句來(lái)推推斷allwayys過(guò)程程的意圖圖。這種種推斷會(huì)會(huì)導(dǎo)致仿仿真結(jié)果果和綜合合結(jié)果之之間的不不一致。SystemVerilog增加了三個(gè)新的過(guò)程來(lái)顯式地指示邏輯的意圖。 allwayys_fff:表表示時(shí)序

41、序邏輯的的過(guò)程; allwayys_ccombb:表示示組合邏邏輯的過(guò)過(guò)程; allwayys_llatcch:表表示鎖存存邏輯的的過(guò)程。例如:alwayys_ccombb (a oor bb orr seel) beggin if (seel) y = a; elsse yy = b;end軟件工具能能夠檢查查事件控控制敏感感列表和和過(guò)程的的內(nèi)容來(lái)來(lái)保證邏邏輯的功功能匹配配過(guò)程的的類型。例例如,工工具能夠夠檢查一一個(gè)allwayys_ccombb過(guò)程能能夠敏感感過(guò)程內(nèi)內(nèi)讀取的的所有外外部值,對(duì)對(duì)邏輯的的每一個(gè)個(gè)分支的的相同變變量進(jìn)行行賦值,并并且檢查查分支是是否覆蓋蓋了所有有可能的的條件。如

42、如果任何何一個(gè)條條件沒有有滿足,軟軟件工具具均會(huì)報(bào)報(bào)告該過(guò)過(guò)程沒有有正確建建模組合合邏輯。23. 動(dòng)動(dòng)態(tài)過(guò)程程Verillog通通過(guò)使用用forrk-jjionn提供了了一種靜靜態(tài)的并并發(fā)過(guò)程程。每一一個(gè)分支支都是一一個(gè)分離離的、并并行的過(guò)過(guò)程。fforkk-jiion中中任何語(yǔ)語(yǔ)句的執(zhí)執(zhí)行必須須在組內(nèi)內(nèi)的每一一個(gè)過(guò)程程完成后后才會(huì)執(zhí)執(zhí)行。例例如:initiial beggin forrksend_pacckett_taask (1, 2555, 0);send_pacckett_taask (7, 1228, 5);watchh_reesullt_ttaskk (11, 2255, 0);w

43、atchh_reesullt_ttaskk (77, 1128, 5); jioon / 所所有的任任務(wù)必須須完成后后才會(huì)到到達(dá)這里里endSysteemVeerillog通通過(guò)prroceess關(guān)關(guān)鍵字加加入了一一個(gè)新的的、動(dòng)態(tài)態(tài)的過(guò)程程。它為為一個(gè)過(guò)過(guò)程產(chǎn)生生分支,然然后繼續(xù)續(xù)執(zhí)行而而無(wú)需等等待其他他過(guò)程完完成。過(guò)過(guò)程不會(huì)會(huì)阻塞過(guò)過(guò)程或任任務(wù)內(nèi)的的語(yǔ)句執(zhí)執(zhí)行。這這種方式式能夠建建模多線線程的過(guò)過(guò)程。例例如:initiial beggin proocesss ssendd_paackeet_ttaskk (11, 2255, 0);proceess sennd_ppackket_tassk

44、(7, 1288, 55);proceess wattch_ressultt_taask (1, 2555, 0);proceess wattch_ressultt_taask (7, 1228, 5);end / 所所有的過(guò)過(guò)程并行行運(yùn)行24. 任任務(wù)和函函數(shù)增強(qiáng)強(qiáng)SysteemVeerillog為為Verriloog的任任務(wù)和函函數(shù)作了了幾個(gè)增增強(qiáng)。 靜態(tài)態(tài)和自動(dòng)動(dòng)的存儲(chǔ)儲(chǔ)缺省情況下下,在VVeriilogg任務(wù)或或函數(shù)內(nèi)內(nèi)的所有有存儲(chǔ)都都是靜態(tài)態(tài)的。VVeriilogg-20001允允許將任任務(wù)和函函數(shù)聲明明成自動(dòng)動(dòng)的。在在SysstemmVerriloog中:(1). 在在一個(gè)靜靜態(tài)任

45、務(wù)務(wù)和函數(shù)數(shù)內(nèi)的特特定數(shù)據(jù)據(jù)可以顯顯式地聲聲明成自自動(dòng)的。聲聲明成自自動(dòng)的數(shù)數(shù)據(jù)在塊塊中具有有完整的的生命周周期,并并且在任任務(wù)和函函數(shù)調(diào)用用的入口口處初始始化;(2). 在一一個(gè)自動(dòng)動(dòng)的任務(wù)務(wù)或函數(shù)數(shù)中的特特定數(shù)據(jù)據(jù)可以顯顯式地聲聲明成靜靜態(tài)的。自自動(dòng)的任任務(wù)或函函數(shù)中聲聲明成靜靜態(tài)的數(shù)數(shù)據(jù)在一一個(gè)塊的的本地范范圍內(nèi)具具有靜態(tài)態(tài)的生命命周期。 從任任何點(diǎn)返返回Verillog在在一個(gè)任任務(wù)或函函數(shù)中執(zhí)執(zhí)行到eendttaskk或enddfunnctiion關(guān)關(guān)鍵字的的時(shí)候返返回。函函數(shù)的返返回值是是給函數(shù)數(shù)名賦的的最后一一個(gè)值。SystemVerilog加入了一個(gè)return關(guān)鍵字,使用這個(gè)關(guān)鍵字,一個(gè)任務(wù)或函數(shù)可以在任何點(diǎn)上返回。 多語(yǔ)語(yǔ)句Verillog要要求一個(gè)個(gè)任務(wù)或或函數(shù)只只具有一一個(gè)語(yǔ)句句或語(yǔ)句句塊。多多條語(yǔ)句句必須組組合到一一個(gè)單一一的beeginn-ennd或forrk-jjio

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論