加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

我的第三個UVM代碼——把testcase與driver分開

2020/10/27
200
閱讀需 3 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

《我的第二個 UVM 代碼——連接 interface》中直接在 testcase 里驅(qū)動 interface,當(dāng)代碼越來越多,需要考慮把環(huán)境拆分成多個小的環(huán)境,便于修改和維護(hù)。

如下圖,定義一個 driver,并例化在 testcase 里。把 interface 連接到 driver 里的 virtual interface,在 driver 里 toggle interface,實(shí)現(xiàn)協(xié)議功能。

第一步,在 build_phase 里連接 virtual interface。分兩次,tb 到 testcase,再從 testcase 里取出 interface 轉(zhuǎn)存到 driver。如下圖。注意,get 和 set 的路徑是由幾個參數(shù)共同組成的。例如,null、uvm_test_top、u_intf 組成了 uvm_test_top.u_intf。又如,this(uvm_test_top)、my_driver、u_intf 組成了 uvm_test_top.my_driver.u_intf。

在編譯時(shí)可以加入+UVM_CONFIG_DB_TRACE 來打印 config_db 的 set 和 get 的詳細(xì)信息。

第二步,在 driver 的 main_phase 里驅(qū)動 virtual interface。這一步與

《我的第二個 UVM 代碼——連接 interface》沒什么區(qū)別,只是把代碼從 testcase 里移到 driver 里而已。

第三步,編譯仿真。仿真命令(以 irun 為例)、波形、環(huán)境層次關(guān)系(verdi)如下。

實(shí)驗(yàn)代碼:

https://github.com/chenfengrugao/uvm_lab

總結(jié):在本示例中沒有 env、agent、sequencer、sequence 等組件,屬于一個簡化的驗(yàn)證環(huán)境,主要是由于分步演示的需要。側(cè)面也說明 UVM 是一個靈活的驗(yàn)證架構(gòu),可以根據(jù)自己的需要進(jìn)行裁剪。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

公眾號ExASIC號主,從事數(shù)字IC設(shè)計(jì)10余年,主要分享日常工作中的經(jīng)驗(yàn)和技巧,分享讓工作更輕松。