1-uvm1 1應用指南及源代碼分析_第1頁
1-uvm1 1應用指南及源代碼分析_第2頁
1-uvm1 1應用指南及源代碼分析_第3頁
1-uvm1 1應用指南及源代碼分析_第4頁
1-uvm1 1應用指南及源代碼分析_第5頁
已閱讀5頁,還剩630頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、UVM1.1應用指南及源代碼分析UVM1.1ApplicationGuideandSourceCode Analysis張強 著在這里,讀懂 UVM序?qū)戇@本書的難度超出了我的預料。從 8 月初開始寫,一直到現(xiàn)在,4 個多月的時間,從剛開始的滿含,到現(xiàn)在的精疲力盡?,F(xiàn)在寫出來的東西,距離我心目中的作品差距十萬八千里,有太多的地方?jīng)]有講述清楚,有太多的地方需要仔細斟酌,有太多的語句需要換一種表述方式。 做為一個完美主義者,我應該努力的把所有的不完美的地方消除??墒?,世間存在完美的東西么? 作為一個工程師,必須要在理想和現(xiàn)實之間做出一些妥協(xié)。理想總是很美好, 但是現(xiàn)實中的資源總是有限,一個優(yōu)秀的工程

2、師不是不惜代價的實現(xiàn)完美,而是在現(xiàn)有的資源情況下做到最好。 8 月份開始寫的時候,自己時間頗多,但是現(xiàn)在則是時間已經(jīng)處于不夠用的狀態(tài),已經(jīng)無力再支撐自己去仔細的修改寫出來的東西。 正因為如此,我停止對這本書的修改,把其對外公布。做出這個決定,我要對小學、初中、高中和大學的語文老師說一聲:對不起,我給你們丟臉了;我要對那些從小到大培養(yǎng)我思維嚴謹性的數(shù)學老師、物理老師、化學老師、電路老師、編程老師等說一句:對不起,雖然我已經(jīng)盡量追求嚴謹,但是書中依然有太多不嚴謹?shù)牡胤?;我要對廣大的讀者說:對不起,要閱讀此書請自動開啟你們的“超強糾錯” 功能,否則可能無法正常閱讀。 寫這本書,只是想把自己會的一點東

3、西完全的落于紙上。在努力學習 UVM 的過程中,自己花費了很多時間和精力。我只想把學習的心得記錄下來,希望能夠給后來的人以啟發(fā)。如果這本書能夠給一個人帶來一點點的幫助,那么我的努力就不算是白費。 這本書的前半部分(第 1 到第 9 章)介紹了UVM 的使用,其用戶群較為廣泛; I而后半部分(第 10 到第 19 章)則介紹 UVM 背后的工作原理,用戶群相對稀少。通常來說,一般的用戶只要看懂前半部分就可以了。但是我想,世上總有像我一樣有好奇心的人,不滿足知其然再不知其所以然,會有人像我一樣,會因為一個技術(shù)問題而徹夜難眠,如果你是這樣的人,那么恭喜,這本書的后半部分就是為你準備的。 讀者在閱讀過

4、程中如果有任何意見或者建議,或者發(fā)現(xiàn)了任何錯誤,請發(fā)郵件到 ,我非常期待有人能和我探討關(guān)于 UVM 的問題。 筆者,2011.12.11 于浙江圖書館II簡要目錄序I簡要目錄III詳細目錄VII圖目錄XVII1.初識UVM驗證平臺.1.3.什么是UVM2UVM驗證平臺的組成5一個簡單的UVM驗證平臺72.component與object3..2.5.UVM的樹形組織結(jié)構(gòu)33uvm_object是UVM中最最基本的類36經(jīng)常用到的uvm_object和uvm_component38factory機制40u

5、vm_component與uvm_object的思考433.phase及objection4.3.3.UVM中的phase45UVM中的objection52用domain來劃分不同的家庭554.transaction及field_automation5.field_automation機制60transaction使用時的一些技巧675.sequence機制7.5.3.UVM中的sequence機制73寫出強大的sequence79virtual sequence的使用83III6.config機制9.6.3.config機制的

6、前世今生91強大的config94聚合config變量987.UVM的各種port10.7.3.port與TLM103UVM中各種port的連接110用port實現(xiàn)monitor和scoreboard的通信1178.register model的使用12..register model簡介125搭建一個簡單的register model129復雜的register model137register model中的常用操作1459.callback的使用14.9.3.callback簡介147UVM中callback的使用149cal

7、lback與sequence機制152uvm_component源代碼分析155uvm_component156uvm_root160.2.11.report機制源代碼分析171uvm_error宏的執(zhí)行17.uvm_report_server17712.factory機制源代碼分析187...根據(jù)字符串創(chuàng)建一個類的實例187uvm_object_utils宏189factory機制的應用196uvm_component_utils宏201其它用于factory注冊的宏203override功能206

8、13.phase機制源代碼分析229探索phase229初識uvm_domain233淺探uvm_phase238objection機制276phase的高級應用295field_automation機制源代碼分析307簡單的field_automation308高級的field_automation機制314...15.sequence機制源代碼分析327IV..uvm_do系列宏327sequence_item的產(chǎn)生與發(fā)送344sequence的常用功能363sequence的resp

9、onse36816.config_db機制源代碼分析375基本的數(shù)據(jù)結(jié)構(gòu)375資源的寫入379資源的讀出40..uvm_config_db類對resource_db機制的擴展40217.TLM1.0 源代碼分析411TLM端口簡介411uvm_port_base類416常用的port的定義431register model源代碼分析443基本的數(shù)據(jù)結(jié)構(gòu)443模型的建立452register model的鎖定476uvm_reg的write操作:FRONTDOOR490uvm_reg的write操作:BACKDOOR520uvm_reg的read操作533r

10、egister model的其它常用操作545....18.7.19.callback機制源代碼分析577從uvm_register_cb宏說起577callback的使用586.附錄A:術(shù)語607附錄B:函數(shù)索引609V詳細目錄序I簡要目錄III詳細目錄VII圖目錄XVII1.初識UVM驗證平臺11.1.什么是UVM.1.2.UVM主要用在什么地方2何謂方法學?41.2.UVM驗證平臺的組成.2.2.何謂驗證平臺5UVM驗證平臺61.3.一個簡單的UVM驗

11、證平臺........2.類的定義與實例化8UVM驗證平臺中的driver(一)8UVM驗證平臺中的transaction12UVM驗證平臺中的driver(二)13UVM驗證平臺中的monitor15UVM驗證平臺中的agent16UVM驗證平臺中的reference model19UVM驗證平臺中的scoreboard21UVM驗證平臺中的env22UVM驗證平臺中的sequence24UVM驗證平臺中的case26UVM驗證平臺中的top29VII1.3.1

12、3.UVM驗證平臺的啟動302.component與object332.1.UVM的樹形組織結(jié)構(gòu)3..3.uvm_component中的parent34UVM樹的根在哪里?34uvm_component的phase自動執(zhí)行352.2.uvm_object是UVM中最最基本的類3.2.2.uvm_object與uvm_component是兩個對等的概念嗎36有哪些類派生自uvm_object372.3.經(jīng)常用到的uvm_object和uvm_component3.3.2.常用的uvm_component38常用的uvm_object3

13、92.4.factory機制40...UVM認證準生證40override功能41根據(jù)類名創(chuàng)建類的實例42factory的本質(zhì):重寫了new函數(shù)432.5.uvm_component與uvm_object的思考433.phase及objection453.1.UVM中的phase4...3.1.5.為什么要分成phase45task phase和function phase47phase的自動執(zhí)行48UVM中同一phase的執(zhí)行順序48UVM中的動態(tài)運行(run_time) phase493.2.UVM中的o

14、bjection5..3.objection是如何控制驗證平臺的關(guān)閉的52參數(shù)phase的含義54一般在什么地方raise_objection543.3.用domain來劃分不同的家庭5.3.2.domain的例子56多domain與單domain的區(qū)別564.transaction及field_automation594.1.field_automation機制60...為什么要使用field_automation機制60field_automation機制的使用62field_automation機制都

15、做了哪些事情64如何排除某些字段654.2.transaction使用時的一些技巧674.2.1.“盡量做到”67VIII4.2.2.在uvm_field_*宏前后使用if語句715.sequence機制735.1.UVM中的sequence機制7...激勵信息的產(chǎn)生與驅(qū)動的分離74數(shù)據(jù)流的獨立76sequence的啟動與執(zhí)行77通過sequence來控制驗證平臺的關(guān)閉785.2.寫出強大的sequence7.2.2.使用uvm_do系列宏79把sequence做為uvm_do宏的參數(shù)815.3.virtual sequence的使用

16、8...用做sequence之間的同步83復雜的同步:virtual sequence84在sequence中慎用fork join_none87在virtual sequence中控制驗證平臺的關(guān)閉896.config機制916.1.config機制的前世今生9..3.驗證平臺中要配置的眾多的參數(shù)91config機制的本質(zhì):半個全局變量92config機制是用來傳遞數(shù)據(jù)的936.2.強大的config9..3.省略get的config94跨層次的多重set96同一層次的多重set966.3

17、.聚合config變量9..3.用專門的類來組織config變量98實時的改變config值100在sequence中設(shè)置driver要發(fā)送的包的數(shù)量1017.UVM的各種port1037.1.port與TLM10..3.uvm_component之間的通信103TLM級別的通信105UVM中常見的port1077.2.UVM中各種port的連接1...7.2.5.使用connect建立連接關(guān)系110PORT與IMP的連接111EXPORT與IMP的連接113PORT和EXPORT的連接1

18、14UVM中的analysis port和analysis export1157.3.用port實現(xiàn)monitor和scoreboard的通信117IX...7.3.5.UVM中port連接時的層次關(guān)系117用analysis port實現(xiàn)monitor和scoreboard的通信119有多個uvm_analysis_imp存在的情況120用fifo實現(xiàn)monitor和scoreboard的通信121用fifo還是直接用IMP1238.register model的使用1258.1.register model簡介12..

19、3.register model的必要性125register model中一些常用的概念126register model與UVM驗證平臺1278.2.搭建一個簡單的register model12.2.2.只有一個寄存器的register model129把register model集成到驗證平臺中1338.3.復雜的register model13...8.3.5.層次化的register model137reg file用以區(qū)分不同的hdl路徑139具有多個域的寄存器140跨越多個地址的寄存器142在register mod

20、el中加入存儲器1438.4.register model中的常用操作14.4.2.register model對DUT寄存器的模擬145常用操作對鏡像值和渴望值的影響1459.callback的使用1479.1.callback簡介14.1.2.最簡單的callback函數(shù)147callback:讓一切豐富多彩1499.2.UVM中callback的使用14.2.2.UVM中的callback149pre_tran功能的具體實現(xiàn)1519.3.callback與sequence機制1529.3.1.callback與sequence機制有關(guān)系嗎1

21、5210.uvm_component源代碼分析155uvm_component156..10.1.3.uvm_component的派生圖156為什么要指定一個parent157uvm_component的樹形組織結(jié)構(gòu)的實現(xiàn)15810.2.uvm_root160.2.3.uvm_root的應用161uvm_root的單實例實現(xiàn)161回顧uvm_component的new函數(shù)165X10.2.4.run_test函數(shù)16711.report機制源代碼分析171uvm_error宏的執(zhí)行17.1.uvm_repor

22、t_enabled172uvm_report_error函數(shù)1761.2.uvm_report_server1771.2.3.類的實例化177report函數(shù)179UVM對于信息打印的精細控制18512.factory機制源代碼分析18712.1.根據(jù)字符串創(chuàng)建一個類的實例18712.1.1.創(chuàng)建類的實例的方法18712.2.uvm_object_utils宏1892.2.4.uvm_object_utils宏展開189m_uvm_object_registry_internal宏190uvm_objec

23、t_utils_begin宏的其它部分192uvm_factory類19212.3.factory機制的應用1962.3.3.根據(jù)類名創(chuàng)建類的一個實例196factory機制下獨特的實例化的方法198factory機制的反思19912.4.uvm_component_utils宏202.4.2.uvm_component_utils宏的展開201m_uvm_component_registry_internal20212.5.其它用于factory注冊的宏2032.5.3.uvm_object_param_utils

24、宏203uvm_component_utils_begin宏205uvm_component_param_utils宏20512.6.override功能2062.6.9.用于override功能的數(shù)據(jù)結(jié)構(gòu)207set_type_overide_by_type函數(shù)208類型被override時實例的創(chuàng)建211set_type_override_by_name216set_inst_override_by_type218實例被override時實例的創(chuàng)建221set_inst_ove

25、rride_by_name函數(shù)223find_override_by_name函數(shù)225override功能總結(jié)22813.phase機制源代碼分析229探索phase22913.1.XI3.1.2.從run_test說起229m_run_phases函數(shù)23113.2.初識uvm_domain2333.2.3.get_common_domain233get_uvm_domain235uvm_domain類小結(jié)23713.3.淺探uvm_phase2383.3.7

26、.uvm_phase的類型238構(gòu)造函數(shù)new239uvm_build_phase242add函數(shù)244正常情況運行的execute_phase:普通函數(shù)phase252正常情況運行的execute_phase:task phase265同一層次的component的build_phase的執(zhí)行27313.4.objection機制2763.4.6.uvm_phase中的phase_done276raise_objection278drop_objection283m_forked_drop287systemverilog

27、中關(guān)于函數(shù)的調(diào)度語義293可以寫一點與execute_phase相關(guān)的29513.5.phase的高級應用2953.5.3.phase的jump295domain的使用300進程的同步30214.field_automation機制源代碼分析307簡單的field_automation308..4.1.4.一個簡單的例子308uvm_field_utils_begin宏309操作的類型311uvm_field_int宏31214.2.高級的field_automation機制3144.

28、.. m_uvm_status_container314compare等操作315set_*_local操作320自動get_config功能的實現(xiàn)322小結(jié)32615.sequence機制源代碼分析327uvm_do系列宏327.1.宏的展開327XII5.1.4.uvm_create_on宏329SEQ_OR_ITEM是一個sequence_item333SEQ_OR_ITEM是一個sequence33415.2.sequence_item的產(chǎn)生與發(fā)送3445.2.3.start_

29、item344UVM的sequence的仲裁機制348finish_item35815.3.sequence的常用功能3635.3.2.default_sequence的自動啟動363p_sequencer與m_sequencer的區(qū)別36615.4.sequence的response3685.4.2.put_respont與get_response368使用response_handler37216.config_db機制源代碼分析375基本的數(shù)據(jù)結(jié)構(gòu)375..資源的存放形式376資源的存放地點37716.2.資源的寫入379

30、6.2.11.uvm_resource_db類379uvm_resource#(T)的new函數(shù)380uvm_resource#(T)的write函數(shù)382uvm_resource_pool的set函數(shù)385uvm_config_db的set_default函數(shù)388uvm_config_db的set_anonymous函數(shù)389uvm_config_db的set_override函數(shù)390uvm_config_db的set_override_type

31、函數(shù)390uvm_config_db的set_override_name函數(shù)391uvm_config_db的write_by_name函數(shù)392uvm_resource_db的write_by_type函數(shù)39816.3.資源的讀出406.3.2.read_by_name和read_by_type函數(shù)401uvm_resource#(T)的read函數(shù)40216.4.uvm_config_db類對resource_db機制的擴展406.4.2.uvm_config_db的set函數(shù)402uvm_config_db的get函數(shù)40717.TLM1.0 源代碼

32、分析411TLM端口簡介41..17.1.3.UVM中兩類TLM端口411uvm_tlm_if_base412uvm_sqr_if_base414XIII17.2.uvm_port_base類4167.2.5.uvm_port_component_base類416uvm_port_component417uvm_port_base的基本定義418connect函數(shù)422resolve_bindings42617.3.常用的port的定義437

33、.3.5.uvm_*_imp431uvm_*_port與uvm_*_export433uvm_analysis_*435fifo的使用437sequencer與driver之間的連接關(guān)系44018.register model源代碼分析44318.1.基本的數(shù)據(jù)結(jié)構(gòu)4438.1.7.存儲數(shù)據(jù)的基本單位:uvm_reg_field443邏輯上比較獨立的數(shù)據(jù)單位:uvm_reg445比較大的容器:uvm_reg_block447略顯單薄的uvm_reg_file448memory的模型uvm_mem448實現(xiàn)FR

34、ONTDOOR操作的uvm_reg_map449uvm_reg_item與uvm_reg_bus_op45018.2.模型的建立458.2.7.把uvm_reg_field加入到uvm_reg中452把uvm_reg加入到uvm_reg_block中457把uvm_reg加入到uvm_reg_map中462把uvm_mem加入到uvm_reg_block中465把uvm_mem加入到uvm_reg_map中468把uvm_reg_file加入到uvm_reg_block中470把子uvm_reg_block

35、加入到父uvm_reg_block中47118.3.register model的鎖定4768.3.3.uvm_reg_block的lock_model函數(shù)476Xinit_address_mapsX函數(shù)479uvm_reg_map的get_physical_addresses函數(shù)48618.4.uvm_reg的write操作:FRONTDOOR4908.4.7.reset操作及uvm_reg的原子操作490uvm_reg:write493uvm_reg:do_write(一)4

36、94uvm_reg: Xcheck_accessX495uvm_reg:do_write(二)500uvm_reg_map:do_write503uvm_reg:do_bus_write507XIV8.4.11.uvm_reg:do_write(三)512uvm_reg:do_predict514uvm_reg_field:do_predict(一)515uvm_reg:do_write(四)51818.5.uvm_reg的write操作:BACKDOOR5208

37、...uvm_reg:do_write(五)520uvm_reg:backdoor_read522uvm_reg: backdoor_read_func(一)523uvm_reg:get_full_hdl_path(一)523uvm_reg_block:get_full_hdl_path526uvm_reg_file:get_full_hdl_path528uvm_reg:get_full_hdl_path(二)529uvm_reg: backdoor_read_func(二)530uvm_reg:do_write(六)53218.6.uvm_reg的read操

38、作5338.6.4.uvm_reg的read與XreadX533uvm_reg:do_read(一)534uvm_reg_field:do_predict(二)537uvm_reg:do_read(二)53918.7.register model的其它常用操作5458.7.7.uvm_reg的poke和peek操作545uvm_reg_field的write操作548uvm_reg_field的poke操作558uvm_mem的write與burst_write操作

39、560uvm_reg的set和get操作567uvm_reg的update操作570uvm_reg的mirror操作57219.callback機制源代碼分析577從uvm_register_cb宏說起577..9.1.4.callback的實例577類的繼承關(guān)系及數(shù)據(jù)結(jié)構(gòu)578uvm_register_cb宏的展開582m_register_pair58319.2.callback的使用5869.2.6.uvm_callbacks:add(一)586uvm_callbac

40、ks_base: check_registration588uvm_callbacks:add(二)590加入適用于某一類型的callback593uvm_do_callbacks595子類繼承父類的callback600XV19.2.7.子類繼承父類callback的使用604附錄A:術(shù)語607附錄B:函數(shù)索引609XVI圖目錄圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖1-1 UVM在數(shù)字電路設(shè)計中的位置31-2 UVM對systemverilog的封裝41-3 簡單驗證平臺51-4 UVM驗證平臺的樹形結(jié)構(gòu)61-5 實際驗證平臺71-6 pack_bytes和unpack_bytes

41、141-7 UVM驗證平臺中的agent181-8 加入case概念的UVM樹311-9 UVM驗證平臺執(zhí)行流程312-1 完整的UVM樹352-2 UVM中常用類的繼承關(guān)系373-1 UVM中的常用phase473-2 UVM中所有的phase503-33-44-1兩個driver位于同一domain57兩個driver位于不同的domain58穿梭的transaction605-1 default sequence的設(shè)置與啟動775-2 sequencer與driver之間的通信805-3 virtual sequence的使用856-1 半全局變量937-1 monitor與scoreb

42、oard的通信1047-2 使用public成員變量實現(xiàn)通信1057-3 put操作1067-4 get操作106XVII7-5 transport操作1077-6 component在端口通信中的作用1097-7 connect關(guān)系的建立1107-8 PORT與IMP的連接1117-9 port、export與imp的連接1157-10 使用fifo連接component1228-1 uvm_reg_field和uvm_reg1268-2 使用register model讀取寄存器的流程1288-3 uvm_reg_field:configure函數(shù)的參數(shù)1308-4 register mo

43、del的詳細工作流程(FRONTDOOR)1338-5 register model讀操作返回值的兩種方式1358-6 層次化的register model13710-1 uvm_component及uvm_root類派生圖15610-2 uvm_component樹形結(jié)構(gòu)的代碼實現(xiàn)16010-3 實例化時parent設(shè)置為null的uvm_component16711-1 UVM仿真匯總報告17912-1 形成環(huán)路的override21513-1 UVM的phase運行圖23913-2 predecessor與successor25014-1 句柄與實例31915-1 uvm_sequenc

44、e的繼承關(guān)系33115-2 uvm_sequencer的繼承關(guān)系33719-1 uvm_callbacks類的繼承關(guān)系578圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖圖XVIII1、初識 UVM 驗證平臺1.初識 UVM 驗證平臺本章第一節(jié)將大體介紹一下感性意義上的 UVM,這里不會講的很詳細,因為關(guān)于 UVM 的歷史在網(wǎng)上已經(jīng)有太多的資料。 第二節(jié)講述驗證平臺的組成,這里也只是介紹一個輪廓。 第三節(jié)開始則會教我們一步一步搭建一個UVM驗證平臺?;蛟S有人會說這種方式會不會是太激進了,畢竟前一節(jié)還在教大家什么是UVM,后一節(jié)就開始嘗試著一個能夠運行起來的UVM驗證平臺。我自己最開始學習UVM是

45、從ovm cookbook1開始的,那個時候,當我把那本書看完的時候,都沒有搞明白一個正常的testbench應該怎么寫法。其各章節(jié)之間各自為政,同時到最后也沒有一章完整的把所講述的東西給整合起來。這種感覺讓我在最開始學習的時候感覺相當?shù)碾y受?;谶@一點,本書采取與ovm cookbook完全相反的策略,最開始的時候就給出一驗證平臺,之后的章節(jié)詳細講解驗證平臺的各個部分。讀者可以與ovm cookbook對照著來看。 在傳統(tǒng)的程序語言的教材中,第一章要講述的肯定是 hello world 程序。因為 hello world 可以讓開發(fā)讓人員第一次真真切切的感受到自己的存在,當看到電腦按照自己的

46、要求輸出了東西的時候,那種喜悅感與成就感是無與倫比的。 采用這種貌似“激進”的方式,在本章結(jié)束的時候,讀者就可以自己搭建起一個簡單的驗證平臺了,這個平臺雖小,不過五臟俱全,基于這個平臺,后面章節(jié)講述到的所有的內(nèi)容都可以實驗。 當然了,在本章描述的時候,會有很多地方讓人非常不理解。先不要著急,把 1Open Verification Methodology Cookbook,Glasser, Mark 著,Springer,2009年第一版。不好意思的是,這本書在中國沒有出版,大家只能用某度或者某歌搜索一下電子版。如果發(fā)現(xiàn)錯誤,或有建議,請聯(lián)系 11

47、.1、什么是 UVM不會的地方默默記著,后面會一點一點的展開。 本節(jié)最后一小節(jié)將會講述 UVM 的執(zhí)行流程。這一點對于那些好奇心極其濃的人來說,是極其必要的。但是同樣的,如果你的好奇心不是那么濃,其實這一節(jié)完全可以不用看。我知道的一個 OVM 的用戶,在使用 OVM 一兩年之后,參與了多個項目的驗證工作,但是當問到他驗證整臺的執(zhí)行流程時,他不甚明了。不過這并不妨礙他成為一個合格的驗證人員。 1.1. 什么是 UVMUVM 是 Universal Verification Methodology 的縮寫,即通用驗證方法學。它起源于OVM(Open Verification Methdology)

48、,是由 Cadence,Mentor 和Synopsys 聯(lián)合推出的新一代的驗證方法學。在 2010 年 5 月,UVM 曾經(jīng)出過一個 EA(early adoption) 版本,這個版本里,只是單純的把 OVM 中所有的類的前綴由 OVM 改為了 UVM, 其它幾乎沒有任何變動。從這里可以看出 UVM 與 OVM 的深厚淵源。UVM 的第一個正式版本 1.0 是在 2011 年 2 月發(fā)布的,而截止到本書寫作完成時(2011 年 12 月) 的最新版 1.1 版則是在 2011 年 6 月發(fā)布的。 1.1.1. UVM 主要用在什么地方UVM 主要用于驗證數(shù)字邏輯電路的正確性。何謂驗證?在數(shù)

49、字電路的設(shè)計流程中,最開始的時候會定義需求,把需求細化成為特性列表(feature list),之后設(shè)計人員利用 verilog 或者 systemverilog 把特性列表翻譯成為 RTL 代碼。在翻譯的過程中, 由于各種各樣的原因,如設(shè)計人員自身對于 feature list 的理解不清,設(shè)計人員不小心遺漏了某種情況,這樣翻譯后的 RTL 代碼就不能完全的反映 feature list。驗證的含義就是把 feature list 和 RTL 代碼比對,看看 RTL 是否能實現(xiàn) feature list 的功能。被測試的 RTL 代碼通常稱為 DUT(Design Under Test)或者

50、 DUV(Design Under Verification),本書統(tǒng)一使用 DUT 的稱謂。 2如果發(fā)現(xiàn)錯誤,或有建議,請聯(lián)系 1、初識 UVM 驗證平臺需求說明書特性列表設(shè)計人員驗證人員查找查找原因并修正 原因并修正 一致?否否是結(jié)束圖 1-1 UVM 在數(shù)字電路設(shè)計中的位置在上面的這幅圖中,設(shè)計人員使用的是 verilog,其實這里也完全可以使用systemverilog 實現(xiàn)。就如我們可以使用 c+來寫 c 代碼,并可以完全的用 c+的編譯器來編譯 c 的代碼一樣,systemverilog 也完全包含了 verilog,換言之,veril

51、og 只是systemverilog 的一個子集。 如果發(fā)現(xiàn)錯誤,或有建議,請聯(lián)系 3SystemVerilog實現(xiàn)(基于UVM) Verilog實現(xiàn) 1.1、什么是 UVM1.1.2. 何謂方法學?當我第一次聽到方法學這個詞的時候完全的被震撼住了,因為我不自覺的把它跟人生觀,世界觀,價值觀這種哲學觀念放在了同一級別上,把其理解成人類探索世界認識世界時所采用的思維方式,所要遵循的原則等。但是后來當我切實了解了UVM的時候,發(fā)現(xiàn)這種想法實在是可笑之極 1。 UVM 是建立在 systemverilog 平臺上的一個庫,它提供了一系列的接口,讓我們能夠更方便的進行驗證。什么是庫?我們大家都學習過 C 語言,其中的 stdlib.h, stdio.h,math.h 等就是 C 語言的庫。庫之最其本的目的就是方便人們的使用。像一個 sin 函數(shù),如果沒有 math.h,讓自己來寫,那要怎么寫呢?使用泰勒展開嗎?那要展開多少級呢?庫則把這些基本的、同時又經(jīng)常使用的細節(jié)給隱藏了,讓我們更加方便的編寫驗證平臺。

溫馨提示

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

評論

0/150

提交評論