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

下載本文檔

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

文檔簡介

1、SystemVerilog語言簡介SystemVerilog是一種硬件描述和驗(yàn)證語言(HDVL),它基于IEEE 1364-2001 Verilog硬件描述語言(HDL),并對其進(jìn)行了擴(kuò)展,包括擴(kuò)充了C語言數(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è)方面對SystemVerilog所作的增強(qiáng)進(jìn)行簡要的介紹,期望能夠通過這個(gè)介紹使大家對SystemVerilog有一個(gè)概

2、括性的了解。1. 接接口(IInteerfaace)Veriilogg模塊之之間的連連接是通通過模塊塊端口進(jìn)進(jìn)行的。為了給給組成設(shè)設(shè)計(jì)的各各個(gè)模塊塊定義端端口,我我們必須須對期望望的硬件件設(shè)計(jì)有有一個(gè)詳詳細(xì)的認(rèn)認(rèn)識(shí)。不不幸的是是,在設(shè)設(shè)計(jì)的早早期,我我們很難難把握設(shè)設(shè)計(jì)的細(xì)細(xì)節(jié)。而而且,一一旦模塊塊的端口口定義完完成后,我們也也很難改改變端口口的配置置。另外外,一個(gè)個(gè)設(shè)計(jì)中中的許多多模塊往往往具有有相同的的端口定定義,在在Verriloog中,我們必必須在每每個(gè)模塊塊中進(jìn)行行相同的的定義,這為我我們增加加了無謂謂的工作作量。SysttemVVeriilogg提供了了一個(gè)新新的、高高層抽象象的模

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

4、使用用該接口口的所有有模塊中中反映出出來,而而無需更更改每一一個(gè)模塊塊。下面面是一個(gè)個(gè)接口的的使用實(shí)實(shí)例:inteerfaace chiip_bbus; / 定義義接口wiree reead_reqquesst, reaad_ggrannt;wiree 77:0 adddreess, daata;endiinteerfaace: chhip_bussmoduule RAMM (cchipp_buus iio, / 使用接接口inpuut cclk);/ 可可以使用用io.reaad_rrequuestt引用接接口中的的一個(gè)信信號(hào)endmmoduulemoduule CPUU(chhip_bus

5、s ioo, iinpuut cclk);.endmmoduulemoduule topp;reg clkk = 0;chipp_buus aa; / 實(shí)實(shí)例接口口/ 將將接口連連接到模模塊實(shí)例例RAM memm(a, cllk);CPU cpuu(a, cllk);endmmoduule實(shí)際上,SysstemmVerriloog的接接口不僅僅僅可以以表示信信號(hào)的綁綁定和互互連。由由于SyysteemVeerillog的的接口中中可以包包含參數(shù)數(shù)、常量量、變量量、結(jié)構(gòu)構(gòu)、函數(shù)數(shù)、任務(wù)務(wù)、innitiial塊塊、allwayys塊以以及連續(xù)續(xù)賦值語語句,所所以SyysteemVeerillog的

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

7、函數(shù)或其其它信息息被設(shè)計(jì)計(jì)中的所所有模塊塊共享,那么我我們就可可以將它它們作為為全局聲聲明和語語句。全全局聲明明和語句句的一個(gè)個(gè)使用實(shí)實(shí)例如下下:reg errror _fllag; / 全局局變量funcctioon ccompparee (.); / 全全局函數(shù)數(shù)alwaays (eerroor_fflagg) / 全全局語句句.moduule tesst;chipp1 uu1 (.)endmmoduulemoduule chiip1 (.);FSM u2 (.);alwaays (ddataa)erroor_fflagg = commparre(ddataa, eexpeecteed);

8、endmmoduulemoduule FSMM (.);.alwaays (sstatte)erroor_fflagg = commparre(sstatte, exppectted);endmmoduule3. 時(shí)時(shí)間單位位和精度度在Verriloog中,表示時(shí)時(shí)間的值值使用一一個(gè)數(shù)來來表示,而不帶帶有任何何時(shí)間單單位。例例如:foreeverr #55cloock = cloock; 從這一句句中我們們無法判判斷5代表的的是5nns? 5pss? 還還是其他他。Veerillog的的時(shí)間單單位和精精度是作作為每一一個(gè)模塊塊的屬性性,并使使用編譯譯器指令令tiimesscalle來設(shè)設(shè)置。使

9、使用這種種方法具具有固有有的缺陷陷,因?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é)果的的情況。SysttemVVeriilogg為了控控制時(shí)間間單位加加入了兩兩個(gè)重要要的增強(qiáng)強(qiáng)。首先先,時(shí)間間值可以以顯式地地指定一一個(gè)單位位。時(shí)間間單位可可以是ss、ms、ns、ps或fs。時(shí)時(shí)間單位位作為時(shí)時(shí)間值的的后綴出出現(xiàn)。例例如:f

10、oreeverr #55nscclocck = cclocck;其次,SSysttemVVeriilogg允許使使用新的的關(guān)鍵字字(tiimeuunitts和timmeprreciisioon)來來指定時(shí)時(shí)間單位位和精度度。這些些聲明可可以在任任何模塊塊中指定定,同時(shí)時(shí)也可以以在$rroott空間中中全局指指定。時(shí)時(shí)間單位位和精度度必須是是10的冪冪,范圍圍可以從從s到fs。例例如:timeeuniits 1nss; timeepreecissionn10pps;4. 抽抽象數(shù)據(jù)據(jù)類型Veriilogg提供了了面向底底層硬件件的線網(wǎng)網(wǎng)、寄存存器和變變量數(shù)據(jù)據(jù)類型。這些類類型代表表了4態(tài)邏輯輯值

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

12、類型型相同,可以是是一個(gè)88位整數(shù)數(shù)(ASSCIII)或shhortt innt(Uniicodde); iint:一一個(gè)兩態(tài)態(tài)的有符符號(hào)變量量,它與與C語言中中的innt數(shù)據(jù)據(jù)類型相相似,但但被精確確地定義義成322位; sshorrtinnt:一一個(gè)兩態(tài)態(tài)的有符符號(hào)變量量,被精精確地定定義成116位; llonggintt:一個(gè)個(gè)兩態(tài)的的有符號(hào)號(hào)變量,它與CC語言中中的loong數(shù)數(shù)據(jù)類型型相似,但被精精確地定定義成664位; bbytee:一個(gè)個(gè)兩態(tài)的的有符號(hào)號(hào)變量,被精確確地定義義成8位; bbit:一個(gè)兩兩態(tài)的可可以具有有任意向向量寬度度的無符符號(hào)數(shù)據(jù)據(jù)類型,可以用用來替代代Verr

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

14、仿真真器都通通過將這這種功能能作為仿仿真器的的一個(gè)選選項(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)邏輯。通過使使用具有有確定行行為的數(shù)數(shù)據(jù)類型型來代替替專有的的仿真器器選項(xiàng),兩態(tài)模模型能夠夠在所有有的SyysteemVeerillog仿仿真器間間移植。SysttemVVeriilogg的loggic數(shù)數(shù)據(jù)類型型比Veerillog的的線網(wǎng)和和寄存器器數(shù)

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

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

17、uunsiigneed關(guān)鍵鍵字將有有符號(hào)數(shù)數(shù)據(jù)類型型顯式地地聲明成成有無符符號(hào)數(shù)據(jù)據(jù)類型。例如:int unssignned j; 值得注意意的是uunsiigneed在Verriloog中是是一個(gè)保保留字,但并沒沒有被VVeriilogg標(biāo)準(zhǔn)使使用。6. 用用戶定義義的類型型Veriilogg不允許許用戶定定義新的的數(shù)據(jù)類類型。SSysttemVVeriilogg通過使使用tyypeddef提提供了一一種方法法來定義義新的數(shù)數(shù)據(jù)類型型,這一一點(diǎn)與CC語言類類似。用用戶定義義的類型型可以與與其它數(shù)數(shù)據(jù)類型型一樣地地使用在在聲明當(dāng)當(dāng)中。例例如:typeedeff unnsiggnedd innt

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

19、指指定初始始值。枚枚舉類型型的例子子如下:enumm rred, yeelloow, greeen RGGB;enumm WWAITT=2b011, LLOADD, DDONEE sstattes;我們還可可以使用用typpedeef為枚枚舉類型型指定一一個(gè)名字字,從而而允許這這個(gè)枚舉舉類型可可以在許許多地方方使用。例如:typeedeff ennum FAALSEE=1b0, TRRUE boooleean;boolleann reeadyy;boolleann teest_commpleete;8. 結(jié)結(jié)構(gòu)體和和聯(lián)合體體在Verriloog語言言中不存存在結(jié)構(gòu)構(gòu)體或聯(lián)聯(lián)合體,而結(jié)構(gòu)構(gòu)體或聯(lián)

20、聯(lián)合體在在將幾個(gè)個(gè)聲明組組合在一一起的時(shí)時(shí)候非常常有用。SysstemmVerriloog增加加了結(jié)構(gòu)構(gòu)體和聯(lián)聯(lián)合體,它們的的聲明語語法類似似于C。struuct reg 155:0 oopcoode;reg 233:0 aaddrr; IRR;unioon int I;shorrtreeal f; N;結(jié)構(gòu)體或或聯(lián)合體體中的域域可以通通過在變變量名和和域名字字之間插插入句點(diǎn)點(diǎn)(.)來引引用:IR.oopcoode = 11; / 設(shè)設(shè)置IRR變量中中的oppcodde域N.f = 00.0; / 將N設(shè)置成成浮點(diǎn)數(shù)數(shù)的值我們可以以使用ttypeedeff為結(jié)構(gòu)構(gòu)體或聯(lián)聯(lián)合體的的定義指指定一個(gè)

21、個(gè)名字。typeedeff sttrucct reg 7:0 oopcoode;reg 233:0 aaddrr; innstrructtionn; / 命命名的結(jié)結(jié)構(gòu)體insttrucctioon IIR; / 結(jié)構(gòu)體體實(shí)例一個(gè)結(jié)構(gòu)構(gòu)體可以以使用值值的級(jí)聯(lián)聯(lián)來完整整地賦值值,例如如:insttrucctioon = 55, 2200; 結(jié)構(gòu)體可可以作為為一個(gè)整整體傳遞遞到函數(shù)數(shù)或任務(wù)務(wù),也可可以從函函數(shù)或任任務(wù)傳遞遞過來,也可以以作為模模塊端口口進(jìn)行傳傳遞。9. 數(shù)數(shù)組在Verriloog中可可以聲明明一個(gè)數(shù)數(shù)組類型型,reeg和線線網(wǎng)類型型還可以以具有一一個(gè)向量量寬度。在一個(gè)個(gè)對象名名前面

22、聲聲明的尺尺寸表示示向量的的寬度,在一個(gè)個(gè)對象名名后面聲聲明的尺尺寸表示示數(shù)組的的深度。例如:reg 7:0 rr1 1:2566; / 2566個(gè)8位的變變量在SysstemmVerriloog中我我們使用用不同的的術(shù)語表表示數(shù)組組:使用用“壓縮數(shù)數(shù)組(ppackked arrray)”這一術(shù)術(shù)語表示示在對象象名前聲聲明尺寸寸的數(shù)組組;使用用“非壓縮縮數(shù)組(unppackked arrray)”這一術(shù)術(shù)語表示示在對象象名后面面聲明尺尺寸的數(shù)數(shù)組。壓壓縮數(shù)組組可以由由下面的的數(shù)據(jù)類類型組成成:biit、loggic、regg、wirre以及及其它的的線網(wǎng)類類型。無無論是壓壓縮數(shù)組組還是非非壓縮

23、數(shù)數(shù)組都可可以聲明明成多維維的尺寸寸。bit 7:0 aa; / 一一個(gè)一維維的壓縮縮數(shù)組bit b 7:0; /一個(gè)個(gè)一維的的非壓縮縮數(shù)組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è)個(gè)壓縮數(shù)數(shù)組作為為一個(gè)單單一的元元素進(jìn)行行引用。在上面面的例子子中,dd1引用非非壓縮數(shù)數(shù)組的一一個(gè)單一一元素,這個(gè)元元素是一一個(gè)包含含4個(gè)字節(jié)節(jié)的數(shù)組組。10. 在為命命名的塊塊中聲明明Veriilogg允許變變量在一一個(gè)命名名

24、的beeginn-ennd或forrk-jjoinn語句組組中聲明明。相對對于語句句組來說說,這些些變量是是本地的的,但它它們可以以被層次次化地引引用。在在SysstemmVerriloog中,既可以以在命名名的塊中中也可以以在未命命名的塊塊中聲明明。在未未命名的的塊中,不能夠夠使用層層次名來來訪問變變量。所所有的變變量類型型,包括括用戶定定義的類類型、枚枚舉類型型、結(jié)構(gòu)構(gòu)體和聯(lián)聯(lián)合體都都可以在在beggin-endd或forrk-jjoinn語句組組中聲明明。11. 常量在Verriloog中有有三種特特性類型型的常量量:paarammeteer、speecpaaramm和loccalppa

25、raam。而而在SyysteemVeerillog中中,允許許使用cconsst關(guān)鍵鍵字聲明明常量。例如:consst ccharr coolonn = “:”; 12. 可重定定義的數(shù)數(shù)據(jù)類型型SysttemVVeriilogg擴(kuò)展了了Verriloog的parrameeterr,使其其可以包包含類型型。這個(gè)個(gè)強(qiáng)大的的功能使使得一個(gè)個(gè)模塊中中的數(shù)據(jù)據(jù)類型在在模塊的的每一個(gè)個(gè)實(shí)例中中重新定定義。例例如:moduule fooo; # (paarammeteer ttypee VAAR_TTYPEE = shoortiint;) (iinpuut llogiic 7:0 ii, ooutpput

26、 loggic 7:0 oo); VAAR_TTYPEE j = 00; / 如如果不重重新定義義,j的數(shù)據(jù)據(jù)類型為為shoortiint endmmoduulemoduule barr;logiic 3:0 ii, oo; fooo #(.VAAR_TTYPEE(innt) u11 (ii, oo); / 重新將將VARR_TYYPE定定義成iint類類型endmmoduule13. 模塊端端口連接接在Verriloog中,可以連連接到模模塊端口口的數(shù)據(jù)據(jù)類型被被限制為為線網(wǎng)類類型以及及變量類類型中的的regg、inttegeer和timme。而而在SyysteemVeerillog中中則去

27、除除了這種種限制,任何數(shù)數(shù)據(jù)類型型都可以以通過端端口傳遞遞,包括括實(shí)數(shù)、數(shù)組和和結(jié)構(gòu)體體。14. 字母值值在Verriloog中,當(dāng)指定定或賦值值字母值值的時(shí)候候存在一一些限制制。而SSysttemVVeriilogg則為字字母值如如何指定定作了下下面的增增強(qiáng): 一一個(gè)字母母值的所所有位均均可以使使用00、1、z或x作相相同的填填充。這這就允許許填充一一個(gè)任意意寬度的的向量,而無需需顯式地地指定向向量的寬寬度,例例如:bit 63:0 ddataa; dataa = 1; /將datta的所所有位設(shè)設(shè)置成11 一一個(gè)字符符串可以以賦值成成一個(gè)字字符數(shù)組組,象CC語言一一樣加入入一個(gè)空空結(jié)束符符

28、。如果果尺寸不不同,它它象C中一樣樣進(jìn)行左左調(diào)整,例如:charr fooo0:12 = “helllo worrldnn”; 加加入了幾幾個(gè)特殊殊的串字字符:v:垂直直TABBf:換頁頁a:響鈴鈴x02:用十六六進(jìn)制數(shù)數(shù)來表示示一個(gè)AASCIII字符符 數(shù)數(shù)組可以以使用類類似于CC初始化化的語法法賦值成成字符值值,但它它還允許許復(fù)制操操作符。括號(hào)的的嵌套必必須精確確地匹配配數(shù)組的的維數(shù)(這一點(diǎn)點(diǎn)與C不同),例如如:int n1: 2 1:3 = 0, 1, 2, 34; 15. 強(qiáng)制類類型轉(zhuǎn)換換Veriilogg不能將將一個(gè)值值強(qiáng)制轉(zhuǎn)轉(zhuǎn)換成不不同的數(shù)數(shù)據(jù)類型型。SyysteemVeerill

29、og通通過使用用操作作符提供供了數(shù)據(jù)據(jù)類型的的強(qiáng)制轉(zhuǎn)轉(zhuǎn)換功能能。這種種強(qiáng)制轉(zhuǎn)轉(zhuǎn)換可以以轉(zhuǎn)換成成任意類類型,包包括用戶戶定義的的類型。例如:int (22.0 * 33.0) / 將結(jié)結(jié)果轉(zhuǎn)換換為innt類型型mytyype (ffoo) / 將fooo轉(zhuǎn)換為為myttypee類型一個(gè)值還還可以通通過在強(qiáng)強(qiáng)制轉(zhuǎn)換換操作符符前指定定一個(gè)110進(jìn)制制數(shù)來轉(zhuǎn)轉(zhuǎn)換成不不同的向向量寬度度,例如如:17(x - 2) / 將結(jié)結(jié)果轉(zhuǎn)換換為177位寬度度也可以將將結(jié)果轉(zhuǎn)轉(zhuǎn)換成有有符號(hào)值值,例如如:signned(x) / 將x轉(zhuǎn)換為為有符號(hào)號(hào)值16. 操作符符Veriilogg沒有C語言的的遞增(+)和和遞減

30、(-)操操作符。而SyysteemVeerillog加加入了幾幾個(gè)新的的操作符符: +和-:遞遞增和遞遞減操作作符; +=、-=、*=、/=、%=、&=、=、|=、=、=賦值值操作符符;17. 唯一性性和優(yōu)先先級(jí)決定定語句在Verriloog中,如果沒沒有遵循循嚴(yán)格的的編碼風(fēng)風(fēng)格,它它的iff-ellse和和casse語句句會(huì)在RRTL仿仿真和RRTL綜綜合間具具有不一一致的結(jié)結(jié)果。如如果沒有有正確使使用fuull_casse和parralllel_casse綜合合指令還還會(huì)引起起一些其其它的錯(cuò)錯(cuò)誤。SysttemVVeriilogg能夠顯顯式地指指明什么么時(shí)候一一條決定定語句的的分支是是唯一

31、的的,或者者什么時(shí)時(shí)候需要要計(jì)算優(yōu)優(yōu)先級(jí)。我們可可以在iif或casse關(guān)鍵鍵字之前前使用uuniqque或或reqquirres關(guān)關(guān)鍵字。這些關(guān)關(guān)鍵字可可以向仿仿真器、綜合編編譯器、以及其其它工具具指示我我們期望望的硬件件類型。工具使使用這些些信息來來檢查iif或casse語句句是否正正確建模模了期望望的邏輯輯。例如如,如果果使用uuniqque限限定了一一個(gè)決定定語句,那么在在不希望望的caase值值出現(xiàn)的的時(shí)候仿仿真器就就能夠發(fā)發(fā)布一個(gè)個(gè)警告信信息。bit 2:0a;uniqque if (aa=0) | (a=1) y= inn1;elsee iff (aa=2) y=in22;els

32、ee iff (aa=4) y=in33; / 值值3、5、6、7會(huì)引起起一個(gè)警警告priooritty iif (a22:1=0) yy = inn1; / a是0或1elsee iff (aa2=0) yy = inn2; / a是2或3elsee y = inn3; / 如果a為其他他的值uniqqueccasee (aa)0, 11: yy = inn1;2: yy = inn2;4: yy = inn3;endccasee / 值3、5、6、7會(huì)引起起一個(gè)警警告priooritty ccaseez (a)2b000? : yy = inn1; / a是0或12b00? : yy =

33、inn2; / a是2或3defaaultt : y = inn3; /如如果a為其他他的值endccasee18. 底部檢檢測的循循環(huán)Veriilogg包含foor、whiile和和reppeatt循環(huán),這幾個(gè)個(gè)循環(huán)都都是在循循環(huán)的起起始處檢檢測循環(huán)環(huán)條件。SysstemmVerriloog加入入了一個(gè)個(gè)do-whiile循循環(huán),這這種循環(huán)環(huán)在執(zhí)行行語句的的結(jié)尾處處檢測循循環(huán)條件件。19. 跳轉(zhuǎn)語語句在語句的的執(zhí)行過過程中,C語言提提供了幾幾種方式式來跳轉(zhuǎn)轉(zhuǎn)到新的的語句,包括:retturnn、breeak、conntinnue和和gotto。在在Verriloog中除除了通過過使用ddis

34、aablee語句跳跳轉(zhuǎn)到語語句組的的尾部外外,沒有有提供任任何其它它跳轉(zhuǎn)語語句。使使用diisabble語語句執(zhí)行行中止和和繼續(xù)功功能要求求加入塊塊的名字字,并且且會(huì)產(chǎn)生生不直觀觀的代碼碼。SyysteemVeerillog加加入了CC語言的的breeak和和conntinnue關(guān)關(guān)鍵字,這兩個(gè)個(gè)關(guān)鍵字字不要求求使用塊塊名字。另外,SysstemmVerriloog還加加入了一一個(gè)reeturrn關(guān)鍵鍵字,它它可以用用來在任任何執(zhí)行行點(diǎn)上退退出一個(gè)個(gè)任務(wù)或或函數(shù)。 bbreaak:退退出一個(gè)個(gè)循環(huán),與C語言相相同; cconttinuue:跳跳轉(zhuǎn)到一一個(gè)循環(huán)環(huán)的尾部部,與CC語言相相同; rr

35、etuurn表表達(dá)式:退出一一個(gè)函數(shù)數(shù); rretuurn:退出一一個(gè)任務(wù)務(wù)或vooid類類型的函函數(shù)。SysttemVVeriilogg沒有包包含C語言中中的gooto語語句。20. 塊名字字和語句句標(biāo)簽在Verriloog中,我們可可以通過過在beeginn或forrk關(guān)鍵鍵字之后后指定名名字來為為beggin-endd或forrk-jjionn語句指指定名字字。這個(gè)個(gè)指定的的名字代代表整個(gè)個(gè)語句塊塊。SyysteemVeerillog還還允許在在endd或jioon關(guān)鍵鍵字之后后指定一一個(gè)匹配配的塊名名字。這這種機(jī)制制很容易易將ennd或jioon與對對應(yīng)的bbegiin或forrk聯(lián)系

36、系起來,尤其是是在一個(gè)個(gè)長的塊塊或嵌套套的塊中中。塊結(jié)結(jié)尾處的的名字是是可選的的,但如如果使用用的話,它必須須與塊起起始處的的名字相相同。例例如:begiin: fooo / 在在beggin之之后的塊塊名字 forkk: bbar / 具有名名字的嵌嵌套的塊塊jionn: bbar / 必須具具有相同同的名字字 end: fooo / 必必須具有有相同的的名字SysttemVVeriilogg還允許許像C語言一一樣為單單個(gè)語句句設(shè)置標(biāo)標(biāo)簽。語語句標(biāo)簽簽放置在在語句的的前面,用來標(biāo)標(biāo)識(shí)這條條語句。例如:inittiall beeginntestt1: reaad_eenabble = 00;

37、teest22: ffor (i=0; i=2555; ii+)end21. 對事件件控制的的增強(qiáng)Veriilogg使用標(biāo)記來來控制基基于特定定事件的的執(zhí)行流流,SyysteemVeerillog增增強(qiáng)了事件控控制。 有有條件的的事件控控制標(biāo)記的的一個(gè)基基本應(yīng)用用就是推推斷一個(gè)個(gè)具有使使能輸入入的鎖存存器。下下面的例例子演示示了一個(gè)個(gè)鎖存器器建模的的基本風(fēng)風(fēng)格。alwaays (ddataa orr enn) iff (een)yy=daata;這種編碼碼風(fēng)格對對仿真來來說是效效率低下下的,因因?yàn)榧词故乖谑鼓苣茌斎霟o無效的時(shí)時(shí)候,數(shù)數(shù)據(jù)輸入入的每次次改變都都會(huì)觸發(fā)發(fā)事件控控制。SysttemV

38、Veriilogg在事件件控制中中加入了了一個(gè)iiff條條件。只只有ifff條件件為真的的條件下下,事件件控制才才會(huì)被觸觸發(fā)。通通過將使使能判斷斷移入到到事件控控制里面面,使得得只有在在鎖存器器輸出能能夠改變變的時(shí)候候事件控控制才會(huì)會(huì)被觸發(fā)發(fā)。例如如:alwaays (aa orr enn ifff een=1)y=aa; 事事件控制制中的表表達(dá)式Veriilogg允許在在事件控控制列表表中使用用表達(dá)式式,例如如:alwaays (a * b)alwaays (mmemooryadddresss)在第一個(gè)個(gè)例子中中,是當(dāng)當(dāng)操作數(shù)數(shù)發(fā)生改改變的時(shí)時(shí)候還是是只有當(dāng)當(dāng)運(yùn)算結(jié)結(jié)果發(fā)生生改變的的時(shí)候才才

39、會(huì)觸發(fā)發(fā)事件控控制?在在第二個(gè)個(gè)例子中中,是當(dāng)當(dāng)memmoryy的地址址發(fā)生變變化的時(shí)時(shí)候還是是只有當(dāng)當(dāng)memmoryy的值發(fā)發(fā)生變化化的時(shí)候候才會(huì)觸觸發(fā)事件件控制?當(dāng)事件控控制中包包含表達(dá)達(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é)果不不一致。SysstemmVerriloog加入入了一個(gè)個(gè)chaangeed關(guān)鍵鍵字,在在事件控控制列表表中它被被用作一一個(gè)修飾飾符。(chhangged (表達(dá)達(dá)式)能夠顯顯式地定定義只有有當(dāng)表達(dá)達(dá)式的結(jié)結(jié)果發(fā)生生改變

40、的的時(shí)候才才會(huì)觸發(fā)發(fā)事件控控制。例例如:alwaays (chaangeed (a * b)alwaays (chaangeed mmemooryadddresss) 事事件控制制中的賦賦值Veriilogg不允許許在事件件控制中中使用賦賦值。SSysttemVVeriilogg允許在在事件控控制中使使用賦值值表達(dá)式式。事件件控制僅僅僅敏感感于賦值值表達(dá)式式右側(cè)的的變化。例如:alwaays (yy = a * b)22. 新的過過程Veriilogg使用allwayys過程程來表示示時(shí)序邏邏輯、組組合邏輯輯和鎖存存邏輯的的RTLL模型。綜合工工具和其其它軟件件工具必必須根據(jù)據(jù)過程起起始處的的

41、事件控控制列表表以及過過程內(nèi)的的語句來來推斷aalwaays過過程的意意圖。這這種推斷斷會(huì)導(dǎo)致致仿真結(jié)結(jié)果和綜綜合結(jié)果果之間的的不一致致。SyysteemVeerillog增增加了三三個(gè)新的的過程來來顯式地地指示邏邏輯的意意圖。 aalwaays_ff:表示時(shí)時(shí)序邏輯輯的過程程; aalwaays_commb:表表示組合合邏輯的的過程; aalwaays_lattch:表示鎖鎖存邏輯輯的過程程。例如:alwaays_commb (a or bb orr seel) begginif (sell) yy = a;elsee y = b;end軟件工具具能夠檢檢查事件件控制敏敏感列表表和過程程的內(nèi)

42、容容來保證證邏輯的的功能匹匹配過程程的類型型。例如如,工具具能夠檢檢查一個(gè)個(gè)alwwayss_coomb過過程能夠夠敏感過過程內(nèi)讀讀取的所所有外部部值,對對邏輯的的每一個(gè)個(gè)分支的的相同變變量進(jìn)行行賦值,并且檢檢查分支支是否覆覆蓋了所所有可能能的條件件。如果果任何一一個(gè)條件件沒有滿滿足,軟軟件工具具均會(huì)報(bào)報(bào)告該過過程沒有有正確建建模組合合邏輯。23. 動(dòng)態(tài)過過程Veriilogg通過使使用foork-jioon提供供了一種種靜態(tài)的的并發(fā)過過程。每每一個(gè)分分支都是是一個(gè)分分離的、并行的的過程。forrk-jjionn中任何何語句的的執(zhí)行必必須在組組內(nèi)的每每一個(gè)過過程完成成后才會(huì)會(huì)執(zhí)行。例如:ini

43、ttiall beeginn foorksendd_paackeet_ttaskk (11, 2255, 0);sendd_paackeet_ttaskk (77, 1128, 5);watcch_rresuult_tassk (1, 2555, 00);watcch_rresuult_tassk (7, 1288, 55); jiion / 所有的的任務(wù)必必須完成成后才會(huì)會(huì)到達(dá)這這里endSysttemVVeriilogg通過prroceess關(guān)關(guān)鍵字加加入了一一個(gè)新的的、動(dòng)態(tài)態(tài)的過程程。它為為一個(gè)過過程產(chǎn)生生分支,然后繼繼續(xù)執(zhí)行行而無需需等待其其他過程程完成。過程不不會(huì)阻塞塞過程或或任務(wù)內(nèi)

44、內(nèi)的語句句執(zhí)行。這種方方式能夠夠建模多多線程的的過程。例如:inittiall beeginn prroceess sennd_ppackket_tassk (1, 2555, 00);proccesss seend_pacckett_taask (7, 1228, 5);proccesss waatchh_reesullt_ttaskk (11, 2255, 0);proccesss waatchh_reesullt_ttaskk (77, 1128, 5);end / 所有的的過程并并行運(yùn)行行24. 任務(wù)和和函數(shù)增增強(qiáng)SysttemVVeriilogg為Verriloog的任任務(wù)和函函數(shù)作

45、了了幾個(gè)增增強(qiáng)。 靜靜態(tài)和自自動(dòng)的存存儲(chǔ)缺省情況況下,在在Verriloog任務(wù)務(wù)或函數(shù)數(shù)內(nèi)的所所有存儲(chǔ)儲(chǔ)都是靜靜態(tài)的。Verriloog-220011允許將將任務(wù)和和函數(shù)聲聲明成自自動(dòng)的。在SyysteemVeerillog中中:(11). 在一個(gè)個(gè)靜態(tài)任任務(wù)和函函數(shù)內(nèi)的的特定數(shù)數(shù)據(jù)可以以顯式地地聲明成成自動(dòng)的的。聲明明成自動(dòng)動(dòng)的數(shù)據(jù)據(jù)在塊中中具有完完整的生生命周期期,并且且在任務(wù)務(wù)和函數(shù)數(shù)調(diào)用的的入口處處初始化化;(22). 在一個(gè)個(gè)自動(dòng)的的任務(wù)或或函數(shù)中中的特定定數(shù)據(jù)可可以顯式式地聲明明成靜態(tài)態(tài)的。自自動(dòng)的任任務(wù)或函函數(shù)中聲聲明成靜靜態(tài)的數(shù)數(shù)據(jù)在一一個(gè)塊的的本地范范圍內(nèi)具具有靜態(tài)態(tài)的生命命周期。 從從任何點(diǎn)點(diǎn)返回Veriilogg在一個(gè)個(gè)任務(wù)或或函數(shù)中中執(zhí)行到到enddtassk或enddfunnctiion關(guān)關(guān)鍵字的的時(shí)候返返回。函函數(shù)的返返回值是是給函數(shù)數(shù)名賦的的最后一一個(gè)值。SysstemmVerriloog加入入了一個(gè)個(gè)retturnn關(guān)鍵字字,使用用這個(gè)關(guān)關(guān)鍵字,一個(gè)任任務(wù)或函函數(shù)可以以在任何何點(diǎn)上返返回。 多多語句Veriilogg要求一一個(gè)任務(wù)務(wù)或函數(shù)數(shù)只具有有一個(gè)語語句或語語句塊。多條語語句必須須組合到到一個(gè)單單一的bbegiin-eend或或forrk-jjionn塊中。SysstemmVerriloog去除除了這

溫馨提示

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

評論

0/150

提交評論