




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、=阻塞串行3); /0,2,4,5得到的是腳標(biāo)Tq=d.find with (item3); /9,8,4,4數(shù)組求和Int count,total;Count=d.sum with(item7); /2:9,8 返回結(jié)果為元素與7比較表達(dá)式返回1為真或者零這里面返回 ,1,0,1,0,0,0求和得2Total=d.sum with (item7)*item) ; /1,0,1,0,0,0和對(duì)應(yīng)元素相乘求和得17=9加8數(shù)組排序d.reverse(); /逆序d.sort(); /從小到大d.rsotr(); /從大到小d.shuffle(); 時(shí)鐘塊指定同步信號(hào)相對(duì)于時(shí)鐘的時(shí)序Interfa
2、ce arb_if(input bit clk); Logic 1:0 a,b; Logic rst;Clocking cb (posedge clk); Output a; Input b;Modport test(output rst,Clocking cb);EndinterfaceModule arb(arb_if.test arbif);Initial beginArbif.cb.a 2:4 $rose(b); endproperty a2b_a: assert property(a2b_p); a2b_c: cover property(a2b_p);并發(fā)斷言并發(fā)斷言的計(jì)算基于時(shí)鐘
3、周期,在時(shí)鐘邊沿根據(jù)變量的采樣值計(jì)算表達(dá)式。它可以放在過(guò)程塊(proceduralblock)、模塊(module)、接口(interface)或一個(gè)程序塊(program)的定義中。并發(fā)斷言可以在靜態(tài)(形式化)驗(yàn)證工具和動(dòng)態(tài)(仿真)驗(yàn)證工具中使用。上面的例子就是并發(fā)斷言SVA提供了3個(gè)內(nèi)嵌函數(shù),用于檢查信號(hào)的邊沿變化。 $rose(布爾表達(dá)式或信號(hào)名) 當(dāng)信號(hào)/表達(dá)式的最低位由0或x變?yōu)?時(shí)返回真值。 $fell(布爾表達(dá)式或信號(hào)名) 當(dāng)信號(hào)/表達(dá)式的最低位由1變?yōu)?或x時(shí)返回真值。 $stable(布爾表達(dá)式或信號(hào)名) 當(dāng)信號(hào)/表達(dá)式的最低位不發(fā)生變化時(shí)返回真值。斷言的建立過(guò)程“編寫(xiě)布爾表
4、達(dá)式 編寫(xiě)序列(sequence) 編寫(xiě)屬性(property) 編寫(xiě)斷言(assert property)和覆蓋語(yǔ)句(cover property)”唯一性和優(yōu)先級(jí)決定語(yǔ)句 在Verilog中,如果沒(méi)有遵循嚴(yán)格的編碼風(fēng)格,它的if-else和case語(yǔ)句會(huì)在RTL仿真和RTL綜合間具有不一致的結(jié)果。如果沒(méi)有正確使用full_case和parallel_case綜合指令還會(huì)引起一些其它的錯(cuò)誤。 SystemVerilog能夠顯式地指明什么時(shí)候一條決定語(yǔ)句的分支是唯一的,或者什么時(shí)候需要計(jì)算優(yōu)先級(jí)。我們可以在if或case關(guān)鍵字之前使用unique或requires關(guān)鍵字。這些關(guān)鍵字可以向仿真器
5、、綜合編譯器、以及其它工具指示我們期望的硬件類型。工具使用這些信息來(lái)檢查if或case語(yǔ)句是否正確建模了期望的邏輯。例如,如果使用unique限定了一個(gè)決定語(yǔ)句,那么在不希望的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或1 else if (a2=0) y = in2; / a是2或3 else y = i
6、n3; / 如果a為其他的值unique case (a) 0, 1: y = in1; 2: y = in2; 4: y = in3; endcase / 值3、5、6、7會(huì)引起一個(gè)警告類Class trans;Endclasstrans a;聲明一個(gè)句柄(指針)a=new();/為一個(gè)trans對(duì)象分配空間用戶定義的new()函數(shù)Class trans;Logic 31:0 addr,crc,data8;Function new;Addr=3;Foreach (datai) Datai=5;EndfunctionEndclass隨機(jī)化Class packetRand bit 31:0 a,
7、b,c8;Randc bit7:0 k;Constraint da10;a15;endclasspacket p;initial beginp=new();assert (p.randomize();transmit(p);end指示通過(guò)引用傳遞的參數(shù),參數(shù)聲明需要以ref關(guān)鍵字開(kāi)始線程always_comb過(guò)程來(lái)建模組合邏輯行為 在0時(shí)刻結(jié)束時(shí)自動(dòng)觸發(fā)一次always_latch過(guò)程來(lái)建模鎖存邏輯行為 always_ff過(guò)程可以用來(lái)建模可綜合的時(shí)序邏輯行為它僅能包含一個(gè)事件控制過(guò)程并且沒(méi)有阻塞定時(shí)控制always_comb過(guò)程提供了不同于正常always過(guò)程的功能: 具有一個(gè)推斷的敏感列表
8、賦值語(yǔ)句左側(cè)的變量不應(yīng)該被任何其它進(jìn)程寫(xiě)入。 在所有的initial和always塊被啟動(dòng)以后,過(guò)程在時(shí)間0處被自動(dòng)地觸發(fā)一次,因此過(guò)程的輸出與輸入一致。 SystemVerilog的always_comb過(guò)程在下述幾個(gè)方面上不同于Verilog-2001的always *: always_comb在時(shí)間0處自動(dòng)執(zhí)行,而always *直到推斷的敏感列表中的一個(gè)信號(hào)發(fā)生變化的時(shí)候才會(huì)執(zhí)行。 always_comb敏感于一個(gè)函數(shù)內(nèi)容內(nèi)部的改變,而always *僅敏感于一個(gè)函數(shù)自變量的改變。 在always_comb內(nèi)部賦值左側(cè)的變量(包括來(lái)自被調(diào)用函數(shù)內(nèi)容中的變量)不應(yīng)該被其它進(jìn)程寫(xiě)入,而al
9、ways *則允許多個(gè)進(jìn)程寫(xiě)入相同的變量。 always_comb中的語(yǔ)句不應(yīng)該包含阻塞語(yǔ)句、具有阻塞定時(shí)或事件控制的語(yǔ)句,或者fork.join語(yǔ)句。 如果always_comb過(guò)程內(nèi)的行為沒(méi)有代表組合邏輯,例如推斷出了鎖存器,軟件工具執(zhí)行額外的檢查來(lái)發(fā)布警告信息。Forkjoin所有并行語(yǔ)句執(zhí)行完畢才執(zhí)行后續(xù)Fork.join_none 執(zhí)行塊兒內(nèi)語(yǔ)句的同時(shí)父線程后面的程序繼續(xù)進(jìn)行Fork.join_any當(dāng)塊內(nèi)第一個(gè)語(yǔ)句完成后,父線程才繼續(xù)執(zhí)行。停止單個(gè)線程Parameter timeout=1000;Task check(trans tr); Fork beginFork: check
10、_stop Begin Wait(tbus.cb.addr=tr.addr); $display(“.”); End#timeout $display(“.”);Join_anyDisable check_stop;EndJoin_noneEndtask事件信箱擴(kuò)展的類Class badtr extands transaction;Rand bit bad_crc;Virtual function void calc_crc; Super.calc_crc();/super調(diào)用基類里面的函數(shù) .EndfunctionEndclass:badtr回調(diào)測(cè)試程序在不修改原始累得情況下注入新代碼可以用
11、來(lái)注入錯(cuò)誤放棄事務(wù)延遲事務(wù)將事務(wù)放入記分板收集功能覆蓋率等等記分板保存期望事務(wù),找出測(cè)試平臺(tái)接收到的實(shí)際事務(wù)相匹配的期望事務(wù)。Class scorebroad; Transaction scb$;Function void save_expect(transaction tr); Scb.push_back(tr);EndfunctionFunction void compare_actual(transation tr); Int b$;B=scb.find_index(x) with (x.src=tr.src);Case(b.size()0:$display(“no match find
12、”);1:scb.delete(q0);Default: $display(“error,multiple matches found”);EndcaseEndfunction: compare_actualEndclass功能覆蓋率Program automatic test(busifc.TB.ifc);Class transaction;Rand bit31:0data;Rand bit2:0port;EndclassCovergroup covport; Coverpoint tr.port;EndgroupInitial beginTransaction tr;Covport ck;
13、 Tr=new(); Ck=new();Repeat(32)begin Assert(tr.randomize); Ifc.cb.port3,4); /翻轉(zhuǎn)覆蓋率,表示自重翻轉(zhuǎn)過(guò)程 Ignore_bins h2=6,7; /被忽略的倉(cāng) Illegal_bins h3=6,7; /非法的倉(cāng),出現(xiàn)會(huì)報(bào)錯(cuò)Port:coverpoint tr.port;Cross kind,port; /交叉覆蓋率Endgroup測(cè)試發(fā)生器代理驅(qū)動(dòng)器計(jì)分板檢測(cè)器斷言監(jiān)視器待測(cè)設(shè)計(jì)功能覆蓋率 發(fā)生器Class generationUNI_cell blueprint;/定義的需要測(cè)試的對(duì)象的藍(lán)圖,可以通過(guò)修改起約束或者
14、擴(kuò)展替換他mailbox gen2drv; /信箱event drv2gen; /drive 完成時(shí)的事件int ncells;Function new(Input mailbox gen2drv, Input event drv2gen, .) This.gen2drv=gen2drv; This.drv2gen=drv2gen;This.ncell=ncell;.Blueprint=new();Endfunction:newTask run(); UNI_cell cell;Repeat(ncells)beginAssert(blueprint.randomize();$cast(cell
15、,blueprint.copy(); /基類句柄指向拓展對(duì)象Gen2drv.put(cell); /事務(wù)放進(jìn)信箱發(fā)送給驅(qū)動(dòng)器drv2gen;end Endtask:runEndclass:generation驅(qū)動(dòng)類Typedef class Drive_cbs;Class driveMailbox gen2drv;Event drv2gen;vUtopiaRx Rx; /發(fā)送的數(shù)據(jù)的接口Drive_cbs cbs$; /回調(diào)隊(duì)列Int portid;Extern function new(Input Mailbox gen2drv,InputEvent drv2gen, Input vUtop
16、iaRx Rx, Input Int portid;)Extern task run();Extern task send();Endclass:driveTask drive:run() UNI_cell cell; Bit drop=0; Rx.cbr.datadrv2gen;Endtask:runTask drive:send(input UNI_cell cell) . Rx.cbr.data=cell.data /數(shù)據(jù)發(fā)送給接口時(shí)鐘塊 rx.cbr.EndtaskFactory機(jī)制uvm_componet_utils(my_driver);Run_test(“my_driver”);
17、Factory集中在一個(gè)宏uvm_componet_utils中這個(gè)宏將類my_driver登記在uvm內(nèi)部一張表中,在定義一個(gè)新的類時(shí)使用這個(gè)宏,就相當(dāng)于把這個(gè)類注冊(cè)到了這張表中。Run_test語(yǔ)句會(huì)創(chuàng)建一個(gè)my_driver實(shí)例,然后自動(dòng)調(diào)用其中的main_phase.uvm_object_utils(my_transaction);My_transaction有生命周期,用uvm_object_utils實(shí)現(xiàn)factory機(jī)制。而整個(gè)仿真中一直存在的用uvm_componet_utils注冊(cè)只有用uvm_componet才能成為uvm樹(shù)的結(jié)點(diǎn),而uvm_object不能。為了使用fac
18、tory機(jī)制的重載功能驗(yàn)證平臺(tái)的組件在實(shí)例化是都應(yīng)該使用type_name:type_id:createMy_driver div;Virtual function void build_phase(uvm_phase phase); Super. build_phase(phase); Drv=my_driver:type_id:create(“drv”,this) Endfuntion實(shí)例化傳遞兩個(gè)參數(shù),一個(gè)名字,一個(gè)是是parent最為父結(jié)點(diǎn),通過(guò)parent 的形式建立了uvm的樹(shù)形結(jié)構(gòu)env建立一個(gè)容器類,在這個(gè)容器類中實(shí)例化driver,monitor,reference model和scoreboard.驗(yàn)證平臺(tái)實(shí)時(shí)監(jiān)測(cè)dut行為的組件monitor,收集端口數(shù)據(jù)轉(zhuǎn)刷成transaction交給后續(xù)組件處理。Objection在每個(gè)phase中,u
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZZB 3730-2024 3D打印指甲貼片
- 2025年度租賃期滿后房屋產(chǎn)權(quán)無(wú)償轉(zhuǎn)讓協(xié)議
- 二零二五年度美容院合伙經(jīng)營(yíng)店鋪轉(zhuǎn)讓協(xié)議
- 二零二五年度輔導(dǎo)班學(xué)生安全協(xié)議及教師教學(xué)責(zé)任書(shū)
- 2025年度洗浴中心員工薪酬福利及雇傭合同
- 二零二五年度股權(quán)激勵(lì)與員工股權(quán)激勵(lì)計(jì)劃執(zhí)行合同模板
- 二零二五年度貸款合同爭(zhēng)議解決協(xié)議書(shū)
- 網(wǎng)絡(luò)游戲合作開(kāi)發(fā)與運(yùn)營(yíng)協(xié)議
- 關(guān)于辦公時(shí)間調(diào)整的通知
- 房屋及土地使用權(quán)轉(zhuǎn)讓合同書(shū)
- 定崗定編定員實(shí)施方案(5篇)
- 零星維修工程項(xiàng)目施工方案1
- 湖北省荊州市2024年七年級(jí)上學(xué)期期中數(shù)學(xué)試題【附答案】
- 《ISO 41001-2018 設(shè)施管理- 管理體系 要求及使用指南》專業(yè)讀與應(yīng)用指導(dǎo)材料之2:“4 組織環(huán)境-4.2 理解相關(guān)方的需要和期望”
- 某港口碼頭工程施工組織設(shè)計(jì)
- 資產(chǎn)運(yùn)營(yíng)總經(jīng)理崗位職責(zé)
- 2024-2025學(xué)年新教材高中英語(yǔ) Unit 6 Earth first理解 課文精研讀教案 外研版必修第二冊(cè)
- 110kV變電站專項(xiàng)電氣試驗(yàn)及調(diào)試方案
- 2024時(shí)事政治必考試題庫(kù)(預(yù)熱題)
- DZ∕T 0215-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 煤(正式版)
- 威圖電柜空調(diào)SK3304500使用說(shuō)書(shū)
評(píng)論
0/150
提交評(píng)論