版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、systemverilog語言簡介(下)不能將一個(gè)值強(qiáng)制轉(zhuǎn)換成不同的數(shù)據(jù)類型。systemverilog通過用法操作符提供了數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換功能。這種強(qiáng)制轉(zhuǎn)換可以轉(zhuǎn)換成隨意類型,包括用戶定義的類型。例如:int (2.0 * 3.0) / 將結(jié)果轉(zhuǎn)換為int類型mytype (foo) / 將foo轉(zhuǎn)換為mytype類型一個(gè)值還可以通過在強(qiáng)制轉(zhuǎn)換操作符前指定一個(gè)10進(jìn)制數(shù)來轉(zhuǎn)換成不同的向量寬度,例如:17 (x - 2) / 將結(jié)果轉(zhuǎn)換為17位寬度也可以將結(jié)果轉(zhuǎn)換成有符號值,例如:signed (x) / 將x轉(zhuǎn)換為有符號值16. 操作符verilog沒有的遞增(+)和遞減(-)操作符。而s
2、ystemverilog加入了幾個(gè)新的操作符:+和-:遞增和遞減操作符;+=、-=、*=、/=、%=、&=、=、|=、>=、>>=賦值操作符;17. 唯一性和優(yōu)先級打算語句在verilog中,假如沒有遵循嚴(yán)格的編碼風(fēng)格,它的if-else和case語句會(huì)在rtl和rtl綜合間具有不全都的結(jié)果。假如沒有正確用法full_case和parallel_case綜合命令還會(huì)引起一些其它的錯(cuò)誤。systemverilog能夠顯式地指明什么時(shí)候一條打算語句的分支是唯一的,或者什么時(shí)候需要計(jì)算優(yōu)先級。我們可以在if或case關(guān)鍵字之前用法 unique或requires關(guān)鍵字。這些
3、關(guān)鍵字可以向仿真器、綜合編譯器、以及其它工具指示我們期望的硬件類型。工具用法這些信息來檢查if或 case語句是否正確建模了期望的規(guī)律。例如,假如用法unique限定了一個(gè)打算語句,那么在不希翼的case值浮現(xiàn)的時(shí)候仿真器就能夠發(fā)布一個(gè)警告信息。bit 2:0 a;unique if (a=0) | (a=1) y = in1;else if (a=2) y = in2;else if (a=4) y = in3; / 值3、5、6、7會(huì)引起一個(gè)警告priority if (a2:1=0) y = in1; / a是0或1else if (a=0) y = in2; / a是2或3else y
4、 = in3; / 假如a為其他的值unique case (a)0, 1: y = in1;2: y = in2;4: y = in3;endcase / 值3、5、6、7會(huì)引起一個(gè)警告priority casez (a)2b00? : y = in1; / a是0或12b0? : y = in2; / a是2或3default : y = in3; /假如a為其他的值endcase18. 底部檢測的循環(huán)verilog包含for、while和repeat循環(huán),這幾個(gè)循環(huán)都是在循環(huán)的起始處檢測循環(huán)條件。systemverilog加入了一個(gè)do-while循環(huán),這種循環(huán)在執(zhí)行語句的結(jié)尾處檢測循環(huán)
5、條件。19. 跳轉(zhuǎn)語句在語句的執(zhí)行過程中,c語言提供了幾種方式來跳轉(zhuǎn)到新的語句,包括:return、break、continue和goto。在verilog中除了通過用法disable語句跳轉(zhuǎn)到語句組的尾部外,沒有提供任何其它跳轉(zhuǎn)語句。用法disable語句執(zhí)行中止和繼續(xù)功能要求加入塊的名字,并且會(huì)產(chǎn)生不直觀的代碼。systemverilog加入了c語言的break和continue關(guān)鍵字,這兩個(gè)關(guān)鍵字不要求用法塊名字。另外,systemverilog還加入了一個(gè)return關(guān)鍵字,它可以用來在任何執(zhí)行點(diǎn)上退出一個(gè)任務(wù)或函數(shù)。break:退出一個(gè)循環(huán),與c語言相同;continue:跳轉(zhuǎn)到一個(gè)
6、循環(huán)的尾部,與c語言相同;return 表達(dá)式:退出一個(gè)函數(shù);return:退出一個(gè)任務(wù)或void類型的函數(shù)。systemverilog沒有包含c語言中的goto語句。20. 塊名字和語句標(biāo)簽在verilog中,我們可以通過在begin或fork關(guān)鍵字之后指定名字來為begin-end或fork-jion語句指定名字。這個(gè)指定的名字代表囫圇語句塊。systemverilog還允許在end或jion關(guān)鍵字之后指定一個(gè)匹配的塊名字。這種機(jī)制很簡單將end或jion與對應(yīng)的 begin或fork聯(lián)系起來,尤其是在一個(gè)長的塊或嵌套的塊中。塊結(jié)尾處的名字是可選的,但假如用法的話,它必需與塊起始處的名字相
7、同。例如:begin: foo/ 在begin之后的塊名字fork: bar / 具出名字的嵌套的塊jion: bar / 必需具有相同的名字end: foo / 必需具有相同的名字systemverilog還允許像c語言一樣為單個(gè)語句設(shè)置標(biāo)簽。語句標(biāo)簽放置在語句的前面,用來標(biāo)識這條語句。例如:initial begintest1: read_enable = 0;test2: for (i=0; i21. 對大事控制的增加verilog用法標(biāo)志來控制基于特定大事的執(zhí)行流,systemverilog增加了大事控制。*有條件的大事控制標(biāo)志的一個(gè)基本應(yīng)用就是判斷一個(gè)具有使能輸入的鎖存器。下面的例子
8、演示了一個(gè)鎖存器建模的基本風(fēng)格。always (data or en)if (en) y 22. 新的過程verilog用法always過程來表示時(shí)序規(guī)律、組合規(guī)律和鎖存規(guī)律的rtl模型。綜合工具和其它軟件工具必需按照過程起始處的大事控制列表以及過程內(nèi)的語句來判斷always過程的意圖。這種判斷會(huì)導(dǎo)致仿真結(jié)果和綜合結(jié)果之間的不全都。systemverilog增強(qiáng)了三個(gè)新的過程來顯式地指示規(guī)律的意圖。always_ff:表示時(shí)序規(guī)律的過程;always_comb:表示組合規(guī)律的過程;always_latch:表示鎖存規(guī)律的過程。例如:always_comb (a or b or sel) beg
9、inif (sel) y = a;else y = b;end軟件工具能夠檢查大事控制敏感列表和過程的內(nèi)容來保證規(guī)律的功能匹配過程的類型。例如,工具能夠檢查一個(gè)always_comb過程能夠敏感過程內(nèi)讀取的全部外部值,對規(guī)律的每一個(gè)分支的相同變量舉行賦值,并且檢查分支是否籠罩了全部可能的條件。假如任何一個(gè)條件沒有滿足,軟件工具均會(huì)報(bào)告該過程沒有正確建模組合規(guī)律。23. 動(dòng)態(tài)過程verilog通過用法fork-jion提供了一種靜態(tài)的并發(fā)過程。每一個(gè)分支都是一個(gè)分別的、并行的過程。fork-jion中任何語句的執(zhí)行必需在組內(nèi)的每一個(gè)過程完成后才會(huì)執(zhí)行。例如:initial beginforkse
10、nd_packet_task (1, 255, 0);send_packet_task (7, 128, 5);watch_result_task (1, 255, 0);watch_result_task (7, 128, 5);jion / 全部的任務(wù)必需完成后才會(huì)到達(dá)這里endsystemverilog通過process關(guān)鍵字加入了一個(gè)新的、動(dòng)態(tài)的過程。它為一個(gè)過程產(chǎn)生分支,然后繼續(xù)執(zhí)行而無需等待其他過程完成。過程不會(huì)堵塞過程或任務(wù)內(nèi)的語句執(zhí)行。這種方式能夠建模多線程的過程。例如:initial beginprocess send_packet_task (1, 255, 0);proc
11、ess send_packet_task (7, 128, 5);process watch_result_task (1, 255, 0);process watch_result_task (7, 128, 5);end / 全部的過程并行運(yùn)行24. 任務(wù)和函數(shù)增加systemverilog為verilog的任務(wù)和函數(shù)作了幾個(gè)增加。* 靜態(tài)和自動(dòng)的存儲缺省狀況下,在verilog任務(wù)或函數(shù)內(nèi)的全部存儲都是靜態(tài)的。verilog-2001允許將任務(wù)和函數(shù)聲明成自動(dòng)的。在systemverilog 中:(1). 在一個(gè)靜態(tài)任務(wù)和函數(shù)內(nèi)的特定數(shù)據(jù)可以顯式地聲明成自動(dòng)的。聲明成自動(dòng)的數(shù)據(jù)在塊中具有
12、完整的生命周期,并且在任務(wù)和函數(shù)調(diào)用的入口處初始化;(2). 在一個(gè)自動(dòng)的任務(wù)或函數(shù)中的特定數(shù)據(jù)可以顯式地聲明成靜態(tài)的。自動(dòng)的任務(wù)或函數(shù)中聲明成靜態(tài)的數(shù)據(jù)在一個(gè)塊的本地范圍內(nèi)具有靜態(tài)的生命周期。* 從任何點(diǎn)返回verilog在一個(gè)任務(wù)或函數(shù)中執(zhí)行到endtask或endfunction關(guān)鍵字的時(shí)候返回。函數(shù)的返回值是給函數(shù)名賦的最后一個(gè)值。systemverilog加入了一個(gè)return關(guān)鍵字,用法這個(gè)關(guān)鍵字,一個(gè)任務(wù)或函數(shù)可以在任何點(diǎn)上返回。*多語句verilog要求一個(gè)任務(wù)或函數(shù)只具有一個(gè)語句或語句塊。多條語句必需組合到一個(gè)單一的begin-end或fork-jion塊中。 systemv
13、erilog去除了這種限制。因此,多條語句可以在一個(gè)任務(wù)或函數(shù)中列出而無需用法的begin-end或fork-jion。每有分組的語句就像在begin-end中一樣挨次執(zhí)行。我們還可以產(chǎn)生一個(gè)沒有語句的任務(wù)或函數(shù)定義。*void函數(shù)verilog要求一個(gè)函數(shù)具有一個(gè)返回值,函數(shù)的調(diào)用接收這個(gè)返回值。systemverilog加入了一個(gè)void數(shù)據(jù)類型,這個(gè)數(shù)據(jù)類型可以作為一個(gè)函數(shù)的返回值類型。void函數(shù)可以像verilog任務(wù)一樣舉行調(diào)用,而無需接收一個(gè)返回值。void函數(shù)和任務(wù)的差別在于函數(shù)存在幾個(gè)限制,例如沒有時(shí)光控制等。*函數(shù)的輸入和輸出verilog標(biāo)準(zhǔn)要求一個(gè)函數(shù)起碼具有一個(gè)輸入并
14、且函數(shù)只能具有輸入。systemverilog去除了這些限制。函數(shù)可以具有隨意數(shù)目的輸入、輸出以及輸入輸出,也可以什么也沒有。25. 延續(xù)賦值的增加在verilog中,延續(xù)賦值語句的左側(cè)只能是線網(wǎng)類型,例如wire。延續(xù)賦值語句被認(rèn)為是線網(wǎng)的驅(qū)動(dòng)源,而線網(wǎng)可以擁有隨意數(shù)據(jù)的驅(qū)動(dòng)源。 systemverilog允許除reg類型以外的任何數(shù)據(jù)類型用于延續(xù)賦值語句的左側(cè)。與線網(wǎng)不同,全部其它數(shù)據(jù)類型被限制為只能有一個(gè)延續(xù)賦值語句驅(qū)動(dòng)。為相同的變量混合用法延續(xù)賦值語句和過程賦值語句是不被允許的。26. $bit系統(tǒng)函數(shù)在verilog中沒有類似于c語言中sizeof的函數(shù)。systemverilog加
15、入一個(gè)新的$bit內(nèi)建函數(shù)。這個(gè)函數(shù)返回保存一個(gè)值所需的硬件位的數(shù)目(一個(gè)四態(tài)值要求一個(gè)硬件位),這個(gè)函數(shù)還可以用來確定一個(gè)結(jié)構(gòu)體所代表的硬件位的數(shù)目。27. define的增加systemverilog增加了define編譯器命令的能力以便支持將字符串作為宏的參數(shù)。宏的文本字符串中可以包含一個(gè)隔離的引號,它的前面必需具有一個(gè)反勾號(”),這就允許字符串中包含宏參數(shù)。宏文本可以在行的尾部包含一個(gè)反斜杠()來表示在下一行繼續(xù)。假如宏文本字符串中包含反斜杠,則反斜杠應(yīng)當(dāng)被放在兩個(gè)反勾號之間,這樣它就不會(huì)被認(rèn)為是verilog轉(zhuǎn)義標(biāo)識符的開頭。宏文本字符串還可以包含雙反勾號(),它允許標(biāo)識符能夠從參數(shù)中構(gòu)建。這些增加使得define命令越發(fā)靈便。例如:include命令后可以緊跟一個(gè)宏名字來替代一個(gè)字符串。define f
溫馨提示
- 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)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度文化旅游項(xiàng)目廠房土地租賃及運(yùn)營合作協(xié)議4篇
- 二零二五版房產(chǎn)收購項(xiàng)目合作廣告推廣協(xié)議樣本3篇
- 二零二五版孵化器投資入股合作協(xié)議范本(醫(yī)療健康)3篇
- 二零二五年度電影劇本改編與發(fā)行授權(quán)勞動(dòng)合同3篇
- 2025年度新能源電池研發(fā)與應(yīng)用合作協(xié)議8篇
- 專利咨詢與策略支持協(xié)議文件版B版
- 二零二四外債債務(wù)承擔(dān)離婚協(xié)議范本3篇
- 二零二五年度股權(quán)代持合同:包含公司估值調(diào)整條款3篇
- 2025年電子商務(wù)合同網(wǎng)絡(luò)營銷推廣合作合同3篇
- 2025年度旅游客運(yùn)車輛駕駛?cè)藛T培訓(xùn)合同范本4篇
- 羊水少治療護(hù)理查房
- 中華人民共和國保守國家秘密法實(shí)施條例培訓(xùn)課件
- 管道坡口技術(shù)培訓(xùn)
- OQC培訓(xùn)資料教學(xué)課件
- 2024年8月CCAA國家注冊審核員OHSMS職業(yè)健康安全管理體系基礎(chǔ)知識考試題目含解析
- 體育賽事組織與實(shí)施操作手冊
- 2024年浙江省公務(wù)員考試結(jié)構(gòu)化面試真題試題試卷答案解析
- 2023年航空公司招聘:機(jī)場安檢員基礎(chǔ)知識試題(附答案)
- 皮膚儲存新技術(shù)及臨床應(yīng)用
- 《現(xiàn)在完成時(shí)》語法復(fù)習(xí)課件(共44張-)
- 二年級下冊語文《第3單元 口語交際:長大以后做什么》課件
評論
0/150
提交評論