在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DUT 和 testbench 連接教程

jf_78858299 ? 來源:芯片驗(yàn)證工程師 ? 作者:驗(yàn)證哥布林 ? 2023-03-21 11:20 ? 次閱讀

我們知道,不論是哪一級(jí)的驗(yàn)證,最終都是通過 pin 連接到 DUT 上向其施加激勵(lì),對(duì)于 UVM 驗(yàn)證平臺(tái)中,使用虛接口來實(shí)現(xiàn) DUT 和驗(yàn)證平臺(tái)的通信

為了簡化模塊之間的連接和實(shí)現(xiàn)類和模塊之間的通信,以實(shí)現(xiàn)測試平臺(tái)的可重用性, SV 定義了接口的語法結(jié)構(gòu)。總體來說,接口就是在 testbench 這邊定義了訪問的 DUT 的管腳的集合,通過對(duì)接口中管腳信號(hào)的操作,來實(shí)現(xiàn)對(duì) DUT 的管腳的操作, 這樣能夠?qū)崿F(xiàn)驗(yàn)證平臺(tái)和待測模塊的分離。

驗(yàn)證工程師和設(shè)計(jì)工程師只要定義好接口關(guān)系,就可以分別開展工作。 同時(shí)如果設(shè)計(jì)管腳發(fā)生變化,無需改變 testbench 這邊的虛接口,只需要在例化待測模塊時(shí),給接口綁定對(duì)應(yīng)的待測接口即可。

Testbench 和 DUT 是通過接口進(jìn)行數(shù)據(jù)交互的。接口僅僅是信號(hào)的一個(gè)集合,因此我們可以將 X_MAC 的所有信號(hào)定義為一個(gè)統(tǒng)一的接口,也可以將一個(gè)信號(hào)定義一個(gè)接口,這樣對(duì)于 X_MAC 模塊,就會(huì)有許許多多的接口。另外要注意的是,一個(gè)接口要對(duì)應(yīng)一個(gè) driver,因此,接口過多的話,就需要定義很多個(gè) driver。

同樣的,如果接口數(shù)量過少的話,就只需要定義較少的 driver。接口數(shù)量過多或過少,都不利于后期驗(yàn)證工作的開展。為了方面后續(xù)的工作,接口的個(gè)數(shù)合適為宜,總的原則是:

**1. 將相互關(guān)系緊密的信號(hào)放到同一個(gè)接口中。

****2. 要將同一個(gè)時(shí)鐘周期的信號(hào)放到同一個(gè)接口中。

****3. 將和同一個(gè)模塊連接的信號(hào)要放到同一個(gè)接口中。

**上面的三點(diǎn)基本上表達(dá)的是同一個(gè)意思, 這樣有利于后期方便激勵(lì)。

在接口的定義中需要注意的一個(gè)問題是:對(duì)于同一個(gè)信號(hào),其方向(input/output)對(duì)于 DUT 和對(duì)于 testbench 來說是相反的, 在接口中需要定義信號(hào)的方向是針對(duì) testbench 的方向, 這一點(diǎn)需要注意。

下面是一個(gè)接口示例。

interface hello_if(input logic rxc,input logic txc);
logic [7:0] rxd_1;
logic [7:0] rxd_2;
logic rx_dv;
logic [7:0] txd;
logic tx_en;
//from model to DUT
clocking drv_cb @(posedge rxc);
output #1 rxd_1,rxd_2,rx_dv;
endclocking
clocking mon_cb @(posedge txc);
input #1 txd,tx_en;
endclocking
endinterface

首先,我們需要在 tb_top 模塊中例化接口和待測 DUT,在例化 DUT 的時(shí)候,將 DUT 的接口和接口中定義的管腳綁定即可。如下圖所示:

module hello_tb_top;
import uvm_pkg::*;
import hello_pkg::*;
reg clk;
hello_if my_hello_if(clk,clk);//實(shí)例化接口
dut my_dut(.clk(clk),
.rxd_1(my_hello_if.rxd_1),
.rxd_2(my_hello_if.rxd_2),
.rx_dv(my_hello_if.rx_dv),
.txd(my_hello_if.txd),
.tx_en(my_hello_if.tx_en)
);//實(shí)例化 DUT,并將 DUT 的輸入輸出端口和 my_hello_if 連接在一起


initial begin//產(chǎn)生 DUT 需要的時(shí)鐘
  clk = 0;
  forever begin
    #10;clk = ~clk;
  end
end
//assign physical interface to virtual interface
initial begin//通過 config_db 的 set 方式將 my_if 通知 driver 和 monitor
//從而 Driver 和 monitor 可以直接和 DUT 通信。
uvm_config_db#(virtual hello_if)::set(null,"uvm_test_top.env.input_agt.drv","hello_if",my_hello_if);
uvm_config_db#(virtual hello_if)::set(null,"uvm_test_top.env.output_agt.mon","hello_if",my_hello_if);
run_test();//啟動(dòng) UVM
end
endmodule

在例化 dut 時(shí),我們將 dut 的管腳和虛接口的管腳綁定在一起。這樣,我們?cè)?testbench 中對(duì)虛接口進(jìn)行操作,也就對(duì) DUT 的管腳進(jìn)行了操作。在 testbench 中只有 driver 和 monitor 會(huì)對(duì) DUT 進(jìn)行激勵(lì)的加載和監(jiān)聽,那么在 driver 和 monitor 那里如何訪問到這里的接口?

首先我們看到上面的代碼中有如下的語句

uvm_config_db#(virtual hello_if)::set(null,"uvm_test_top.env.input_agt.drv","hello_if",my_hello_if);
uvm_config_db#(virtual hello_if)::set(null,"uvm_test_top.env.output_agt.mon","hello_if",my_hello_if);

我們?cè)?uvm_top 模塊中,通過 uvm_config_db 的 set 語句將定義在 driver 中的虛接口和 uvm_top 模塊中的接口連接起來。在 driver 中首先需要定義一個(gè)虛接口:

virtual hello_if vif;

這里的虛接口的意思是,這個(gè)接口在 driver 這里是不存在的,這里只是一個(gè)句柄,通過虛接口, testbench 能訪問到 uvm_top 中定義的實(shí)體接口,從而訪問到DUT。隨后在 driver 中通過 uvm_config_db 的 get 操作將 driver 中的虛接口和uvm_top 中的實(shí)體接口連接起來。

if(!uvm_config_db#(virtual hello_if)::get(this,"","hello_if", vif))
`uvm_fatal("hello_driver","Error in Geting interface");

這樣, driver 通過虛接口實(shí)現(xiàn)了對(duì) DUT 的操作。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • UVM
    UVM
    +關(guān)注

    關(guān)注

    0

    文章

    182

    瀏覽量

    19231
  • PIN
    PIN
    +關(guān)注

    關(guān)注

    1

    文章

    305

    瀏覽量

    24440
  • DUT
    DUT
    +關(guān)注

    關(guān)注

    0

    文章

    189

    瀏覽量

    12493
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    第一次寫Testbench文件,不知道哪里錯(cuò)了,請(qǐng)大俠指點(diǎn)。

    Testbench代碼:module fulladd4_tb;reg [3:0] a,b;reg cin;wire [3:0] sum;wire cout;fulladd4_dut (.sum(sum
    發(fā)表于 04-04 19:00

    testbench設(shè)置的問題

    本帖最后由 平漂流 于 2017-5-21 11:09 編輯 如圖,看Verilog仿真視頻教程里面,在testbench設(shè)置時(shí)候,直接復(fù)制“blocking_vlg_tst”到top
    發(fā)表于 05-21 11:04

    請(qǐng)問怎么測量DUT的S參數(shù)?

    論文和應(yīng)用筆記。但是沒有詳細(xì)描述如何進(jìn)行后校準(zhǔn)計(jì)算。他們只提到了所需的標(biāo)準(zhǔn)。 TRL =通過反射線。直通:我已經(jīng)連接了沒有DUT的波導(dǎo)并測量了S參數(shù)(S11,S12,S21,S22)反射:將一個(gè)短路板
    發(fā)表于 08-19 13:24

    LFSR testbench V1.2

    LFSR testbench The LFSR testbench can help you understand the LFSR basics: 1. Change
    發(fā)表于 05-14 11:18 ?50次下載

    Writing Testbench

    Writing Testbench:The Quebec Bridge Company was formed in 1887 and for the nextthirteen years, very
    發(fā)表于 07-10 17:30 ?0次下載
    Writing <b class='flag-5'>Testbench</b>

    編寫高效率的testbench

    編寫高效率的testbench,學(xué)習(xí)編寫測試文件的小伙伴們。
    發(fā)表于 05-11 16:40 ?16次下載

    testbench_book

    verilog Testbench
    發(fā)表于 12-13 22:20 ?3次下載

    testbench怎么寫_testbench經(jīng)典教程VHDL

     testbench是一種驗(yàn)證的手段。首先,任何設(shè)計(jì)都是會(huì)有輸入輸出的。但是在軟環(huán)境中沒有激勵(lì)輸入,也不會(huì)對(duì)你設(shè)計(jì)的輸出正確性進(jìn)行評(píng)估。那么此時(shí)便有一種,模擬實(shí)際環(huán)境的輸入激勵(lì)和輸出校驗(yàn)的一種“虛擬
    發(fā)表于 12-01 17:22 ?5.6w次閱讀
    <b class='flag-5'>testbench</b>怎么寫_<b class='flag-5'>testbench</b>經(jīng)典教程VHDL

    簡單的Testbench設(shè)計(jì)

    testbench是一種驗(yàn)證的手段。首先,任何設(shè)計(jì)都是會(huì)有輸入輸出的。但是在軟環(huán)境中沒有激勵(lì)輸入,也不會(huì)對(duì)你設(shè)計(jì)的輸出正確性進(jìn)行評(píng)估。那么此時(shí)便有一種,模擬實(shí)際環(huán)境的輸入激勵(lì)和輸出校驗(yàn)的一種“虛擬
    的頭像 發(fā)表于 03-08 14:35 ?2537次閱讀

    對(duì)DUT輸入定向或隨機(jī)的激勵(lì)

    TestBench即測試平臺(tái),是為了檢驗(yàn)待測設(shè)計(jì)(design under test,DUT)而搭建的驗(yàn)證環(huán)境。
    的頭像 發(fā)表于 02-24 17:19 ?1032次閱讀
    對(duì)<b class='flag-5'>DUT</b>輸入定向或隨機(jī)的激勵(lì)

    UVM驗(yàn)證平臺(tái)頂層有什么作用

    因?yàn)?b class='flag-5'>DUT是一個(gè)靜態(tài)的內(nèi)容,所以testbench理應(yīng)也是靜態(tài)的,其作為uvm驗(yàn)證環(huán)境和DUT的全局根結(jié)點(diǎn)。
    的頭像 發(fā)表于 03-21 11:33 ?1375次閱讀

    典型的UVM Testbench架構(gòu)

    UVM類庫提供了通用的代碼功能,如component hierarchy、transaction level model(TLM),configuration database等等,使用戶能夠創(chuàng)建任何類型的Testbench架構(gòu)。
    的頭像 發(fā)表于 05-22 10:14 ?2220次閱讀
    典型的UVM <b class='flag-5'>Testbench</b>架構(gòu)

    芯片驗(yàn)證需要圍繞DUT做什么?

    TestBench即測試平臺(tái),是為了檢驗(yàn)待測設(shè)計(jì)(design under test,DUT)而搭建的驗(yàn)證環(huán)境。
    的頭像 發(fā)表于 06-12 17:38 ?2318次閱讀
    芯片驗(yàn)證需要圍繞<b class='flag-5'>DUT</b>做什么?

    testbench是什么? testbench測試的機(jī)制是什么?

    廢話不多說直接上干貨,testbench就是對(duì)寫的FPGA文件進(jìn)行測試的文件,可以是verilog也可以是VHDL。
    的頭像 發(fā)表于 06-28 16:44 ?5003次閱讀
    <b class='flag-5'>testbench</b>是什么? <b class='flag-5'>testbench</b>測試的機(jī)制是什么?

    編寫高效Testbench的指南和示例

    Testbench是驗(yàn)證HDL設(shè)計(jì)的主要手段,本文提供了布局和構(gòu)建高效Testbench的指南以及示例。另外,本文還提供了一種示例,可以為任何設(shè)計(jì)開發(fā)自檢Testbench
    的頭像 發(fā)表于 10-29 16:14 ?398次閱讀
    編寫高效<b class='flag-5'>Testbench</b>的指南和示例
    主站蜘蛛池模板: 久久男人的天堂色偷偷 | 超级狂色而且免费又超好看 | 午夜精品久视频在线观看 | 六月丁香六月婷婷 | 欧美在线91 | 色资源在线观看 | 亚洲成a人片在线观看导航 亚洲成a人片在线观看尤物 | 深夜福利欧美 | 久久婷婷婷 | 成 人在线观看视频网站 | www.热| 成人网在线看 | 久久国产免费 | 99热网站| 国产xxxxxx久色视频在 | 欧美性生活一级 | 欧美精品人爱a欧美精品 | 国产精品成人观看视频国产奇米 | 一区二区三区中文国产亚洲 | 手机精品视频在线观看免费 | 丁香婷婷激情综合 | 欧美高清一级片 | 视频一区二区在线 | 久久伊人男人的天堂网站 | 老熟女毛片 | 国产三级精品播放 | 欧洲精品码一区二区三区免费看 | 激情网五月天 | 色综合天天综合网国产人 | 四虎国产精品成人永久免费影视 | 男人你懂的在线观看视频 | 天天干天天干天天干 | 中文天堂在线视频 | 蕾丝视频成人★在线观看 | 欧美不卡视频在线 | 日本三级2018亚洲视频 | 男人和女人在床做黄的网站 | 啪啪调教所29下拉式免费阅读 | 国产精品资源在线 | 韩国三级视频在线 | www.丁香.com |