chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

認(rèn)識(shí)一下只有driver的驗(yàn)證平臺(tái)

冬至子 ? 來(lái)源:不二魚(yú) ? 作者:不二魚(yú) ? 2023-06-15 18:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

對(duì)于一個(gè)驗(yàn)證平臺(tái)而言,最重要的角色是激勵(lì)的產(chǎn)生,最開(kāi)始,driver是集合了數(shù)據(jù)的產(chǎn)生、發(fā)送于一體這么一個(gè)重要的角色(后面到進(jìn)入真正UVM會(huì)將功能分離)。對(duì)于整個(gè)驗(yàn)證平臺(tái)而言,產(chǎn)生激勵(lì),將激勵(lì)送到DUT,收集DUT產(chǎn)生的數(shù)據(jù),進(jìn)行對(duì)比,這是最基本的功能。后面一系列的UVM機(jī)制,都只是為了能夠更好的實(shí)現(xiàn)這個(gè)基本功能。

這里也強(qiáng)調(diào)一點(diǎn),學(xué)習(xí)UVM,我個(gè)人覺(jué)得最重要的是搞清楚,what,where,how。你應(yīng)該產(chǎn)生什么樣的激勵(lì)數(shù)據(jù)(what),你的激勵(lì)是在哪里產(chǎn)生(where),能各個(gè)組件之間是怎么連接,數(shù)據(jù)怎么發(fā)送,怎么收集,怎么對(duì)比,這就是how的問(wèn)題。數(shù)據(jù)在哪里對(duì)比,這又是where的問(wèn)題。能夠從數(shù)據(jù)產(chǎn)生的源頭,一路追,追到數(shù)據(jù)在各個(gè)組件里頭的流轉(zhuǎn)。就像你找到了一條小溪的源頭,你能夠沿著這條小溪,一路追下去,直到你明白這條小溪會(huì)流經(jīng)那些村莊,目的地是哪里。

學(xué)過(guò)verilog的應(yīng)該知道,verilog里面進(jìn)行驗(yàn)證,只有兩個(gè)部分,一個(gè)是DUT,一個(gè)是tb,這兩個(gè)組件,組成了最最基本的驗(yàn)證平臺(tái),其中,它包含了激勵(lì)部分,以及代碼部分。在UVM中,最基本的驗(yàn)證平臺(tái)也是由這兩部分組成,但是多了一個(gè)top_tb.sv的組件。下面,先認(rèn)識(shí)一下這個(gè)簡(jiǎn)單的平臺(tái),從代碼進(jìn)行剖析,代碼全部來(lái)自張強(qiáng)老師的《UVM》實(shí)戰(zhàn)的源碼,張強(qiáng)老師如果覺(jué)得我侵權(quán)了,請(qǐng)聯(lián)系我。

module dut(clk,
           rst_n, 
           rxd,
           rx_dv,
           txd,
           tx_en);
input clk;
input rst_n;
input[7:0] rxd;
input rx_dv;
output [7:0] txd;
output tx_en;


reg[7:0] txd;
reg tx_en;


always @(posedge clk) begin
   if(!rst_n) begin
      txd <= 8'b0;
      tx_en <= 1'b0;
   end
   else begin
      txd <= rxd;
      tx_en <= rx_dv;
   end
end
endmodule

這個(gè)dut確實(shí)是很簡(jiǎn)單。當(dāng)復(fù)位也就是rst_n=0時(shí),將輸出數(shù)據(jù)(txd)和使能(tx_en)都設(shè)置為0,否則,將輸入給輸出。

圖片

看到這個(gè)DUT,如果讓你自己寫(xiě)一個(gè)Tb.v,你會(huì)怎么寫(xiě)呢?不妨自己寫(xiě)一個(gè),然后再對(duì)照下面這個(gè)。其實(shí)思路也很簡(jiǎn)答,就是產(chǎn)生相應(yīng)的數(shù)據(jù)給四根輸入信號(hào),經(jīng)過(guò)dut,看輸出的數(shù)據(jù)。產(chǎn)生時(shí)鐘給clk,產(chǎn)生復(fù)位信號(hào)給rst_n,產(chǎn)生數(shù)據(jù)給rxd,產(chǎn)生使能信號(hào)給rx_dv。下面我們來(lái)看看driver和tb。

`ifndef MY_DRIVER__SV
`define MY_DRIVER__SV
//這個(gè)`ifndef和`define其實(shí)就是相當(dāng)于一個(gè)判斷條件,便于調(diào)用
class my_driver extends uvm_driver;
   function new(string name = "my_driver", uvm_component parent = null);
      super.new(name, parent);
   endfunction
   extern virtual task main_phase(uvm_phase phase);
endclass
//這里出現(xiàn)了extern,你翻翻SV的書(shū)就知道,只是因?yàn)榘汛a全部寫(xiě)在這個(gè)類(lèi)里面顯得臃腫
//所以,在這里用extern留下了一個(gè)索引,具體的內(nèi)容放到class外面
task my_driver::main_phase(uvm_phase phase);//::作用域符號(hào),這個(gè)寫(xiě)法就是個(gè)規(guī)則,記住就行
   top_tb.rxd <= 8'b0; 
   top_tb.rx_dv <= 1'b0;
//這兩句相當(dāng)于初始化
   while(!top_tb.rst_n)//這里其實(shí)是等待復(fù)位結(jié)束,否則一直在這里循環(huán)
      @(posedge top_tb.clk);
   for(int i = 0; i < 256; i++)begin// 復(fù)位結(jié)束之后開(kāi)始for循環(huán),產(chǎn)生256個(gè)數(shù)據(jù)
      @(posedge top_tb.clk);
      top_tb.rxd <= $urandom_range(0, 255);//產(chǎn)生隨機(jī)數(shù),賦值給rxd
      top_tb.rx_dv <= 1'b1;
      `uvm_info("my_driver", "data is drived", UVM_LOW)
   end
   @(posedge top_tb.clk);//賦值結(jié)束以后,等待時(shí)鐘上升沿,將rx_dv,重新歸零
   top_tb.rx_dv <= 1'b0;
endtask
`endif
`timescale 1ns/1ps //時(shí)鐘精度
`include "uvm_macros.svh"//導(dǎo)入uvm的庫(kù)文件,才能識(shí)別定義的宏變量


import uvm_pkg::*; // 導(dǎo)入uvm的包
`include "my_driver.sv"


module top_tb;
reg clk;
reg rst_n;
reg[7:0] rxd;
reg rx_dv;
wire[7:0] txd;
wire tx_en;


dut my_dut(.clk(clk),
           .rst_n(rst_n),
           .rxd(rxd),
           .rx_dv(rx_dv),
           .txd(txd),
           .tx_en(tx_en));
//這是信號(hào)的例化,相當(dāng)于把這個(gè)文件中的信號(hào),和DUT的輸入信號(hào)連接起來(lái)
initial begin
   my_driver drv;//指定一個(gè)類(lèi)的指針,你可以理解為用drv代替了driver.
   drv = new("drv", null);//實(shí)例化一個(gè)driver,不實(shí)例化的driver相當(dāng)于一張圖紙
   drv.main_phase(null);
   $finish();
end


initial begin
   clk = 0;
   forever begin  // forever,永遠(yuǎn)發(fā)生,你還能想到其他方法嗎?
      #100 clk = ~clk; //這是產(chǎn)生時(shí)鐘的地方,#是延遲,意思是每隔100個(gè)時(shí)鐘單位,clk進(jìn)行翻轉(zhuǎn)
   end
end


initial begin
   rst_n = 1'b0;
   #1000; //復(fù)位持續(xù)了1000個(gè)時(shí)鐘單位
   rst_n = 1'b1;
end


endmodule

用vcs進(jìn)行仿真

看一下波形:

圖片

從波形圖中,我們?cè)趺纯茨兀?看復(fù)位 ,是不是在1000個(gè)時(shí)間單位以前在復(fù)位; 看采樣 ,復(fù)位之后的時(shí)鐘上升沿是否開(kāi)始采樣,采的樣是不是復(fù)位之后的有效數(shù)據(jù), 看數(shù)據(jù) ,數(shù)據(jù)個(gè)數(shù),對(duì)照輸入輸出的數(shù)據(jù)是否一致;我們就基本可以判定,DUT的功能有沒(méi)有實(shí)現(xiàn)。

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

    關(guān)注

    14

    文章

    1045

    瀏覽量

    86383
  • UVM
    UVM
    +關(guān)注

    關(guān)注

    0

    文章

    183

    瀏覽量

    19842
  • CLK
    CLK
    +關(guān)注

    關(guān)注

    0

    文章

    132

    瀏覽量

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

    關(guān)注

    0

    文章

    192

    瀏覽量

    13260
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    認(rèn)識(shí)一下這款名叫“CAN總線存儲(chǔ)器”的神器

    CAN總線數(shù)據(jù)不能及時(shí)查看怎么辦?CAN總線數(shù)據(jù)過(guò)多沒(méi)時(shí)間處理怎么辦?想要回看CAN總線歷史數(shù)據(jù)又怎么辦?總線數(shù)據(jù)三連問(wèn),卻只需要個(gè)答案,是時(shí)候認(rèn)識(shí)一下這款名叫“CAN總線存儲(chǔ)器”的神器了。
    的頭像 發(fā)表于 05-20 08:08 ?8695次閱讀

    認(rèn)識(shí)一下NI SWITCH模塊的組成和特點(diǎn)

    許多自動(dòng)化測(cè)試應(yīng)用都需要通過(guò)部署個(gè)開(kāi)關(guān)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)儀器儀表和DUT之間的信號(hào)路由。而開(kāi)關(guān)不僅可用于路由信號(hào),也是增加昂貴儀器儀表的通道數(shù)以及提高測(cè)量靈活性和可重復(fù)性的種低成本方法。
    的頭像 發(fā)表于 03-22 13:41 ?2788次閱讀
    <b class='flag-5'>認(rèn)識(shí)一下</b>NI SWITCH模塊的組成和特點(diǎn)

    IC驗(yàn)證"個(gè)簡(jiǎn)單的UVM驗(yàn)證平臺(tái)"是如何搭建的(六)

    個(gè)文件,里面包含了眾多的宏定義,只需要包含 次。第4行通過(guò)import語(yǔ)句將整個(gè)uvm_pkg導(dǎo)入驗(yàn)證平臺(tái)中。只有導(dǎo)入了這個(gè)庫(kù),編譯器
    發(fā)表于 12-04 15:48

    IC驗(yàn)證"UVM驗(yàn)證平臺(tái)加入factory機(jī)制"(六)

      加入factory機(jī)制 上節(jié)《IC驗(yàn)證"個(gè)簡(jiǎn)單的UVM驗(yàn)證平臺(tái)"是如何搭建的(五)》給出了
    發(fā)表于 12-08 12:07

    認(rèn)識(shí)一下針對(duì)單片機(jī)幾個(gè)基本概念

    我們?nèi)粘5纳铍x不開(kāi)秒表的計(jì)時(shí),它提醒著我們什么時(shí)刻該干什么,單片機(jī)也樣,通過(guò)單片機(jī)內(nèi)置的晶振來(lái)計(jì)時(shí),首先讓我們認(rèn)識(shí)一下針對(duì)單片機(jī)幾個(gè)基本概念:時(shí)鐘周期:時(shí)鐘周期 T 是時(shí)序中最小的時(shí)間單位,具體
    發(fā)表于 11-22 06:43

    認(rèn)識(shí)一下Boost拓?fù)浣Y(jié)構(gòu)

    上期答案揭曉:答案上圖 c ,下圖 a小伙伴們答對(duì)了嗎?YTDFWANGWEI :我的笨辦法:source,源的意思,就是提供電流。所以,只要是電流流出,就是source。不知道是否正確?作者:完全正確。繼續(xù)下步講解:參考一下以下兩個(gè)圖:sink...
    發(fā)表于 12-31 08:25

    先來(lái)認(rèn)識(shí)一下正激的基本原理

    我們先來(lái)認(rèn)識(shí)一下正激的基本原理,如圖所示:正激在原邊加正向電壓 MOS 管導(dǎo)通時(shí),副邊的輸出符合變壓器原理,即:Vs = n* VinVs :變壓器副邊輸出電壓n:匝比 = Ns/NpVin:輸入電壓由上式可知正激拓?fù)洳浑y理解。* 注意:原邊還有個(gè)繞組稱為復(fù)位繞組,副邊有...
    發(fā)表于 12-31 06:18

    簡(jiǎn)單地認(rèn)識(shí)一下D/A和A/D

    隨著我們學(xué)習(xí)的逐步推進(jìn),我們可以了解到51單片機(jī)的更多的知識(shí)和元件,今天我們就來(lái)簡(jiǎn)單地認(rèn)識(shí)一下D/A和A/D。首先我們先來(lái)介紹一下D/A,就是兩個(gè)單詞digital和anolog.就是把數(shù)據(jù)量轉(zhuǎn)換
    發(fā)表于 02-24 07:21

    帶你重新認(rèn)識(shí)一下真正的PID

    網(wǎng)上關(guān)于PID算法的文章很多,但是感覺(jué)有必要自己再進(jìn)行次總結(jié),抽絲剝繭地重新認(rèn)識(shí)一下PID;
    的頭像 發(fā)表于 10-10 14:48 ?3380次閱讀

    認(rèn)識(shí)一下甲醛傳感器

    1、什么是甲醛傳感器?? 甲醛傳感器是專(zhuān)門(mén)用于甲醛氣體(CH20)的檢測(cè),基于電化學(xué)反應(yīng)原理。在房屋裝修的過(guò)程中,通常會(huì)伴隨大量的甲醛氣體,它是種有機(jī)化合物,無(wú)色,有刺激性的氣體,對(duì)人眼,鼻有
    的頭像 發(fā)表于 08-23 17:20 ?2523次閱讀

    認(rèn)識(shí)一下丙烷傳感器

    丙烷傳感器主要用于丙烷氣體(C3H8)的檢測(cè),般基于半導(dǎo)體或催化燃燒原理。
    的頭像 發(fā)表于 09-07 16:41 ?2610次閱讀
    <b class='flag-5'>認(rèn)識(shí)一下</b>丙烷傳感器

    認(rèn)識(shí)一下并列刷寫(xiě)(Parallel Flash)

    再有,在車(chē)輛下線時(shí)EOL(End of Line),工廠追求效率,般會(huì)1(刷寫(xiě)上位機(jī))拖N(N個(gè) ECU)刷寫(xiě),這是不是種Parallel Flash呢?
    的頭像 發(fā)表于 11-15 16:03 ?5535次閱讀
    <b class='flag-5'>認(rèn)識(shí)一下</b>并列刷寫(xiě)(Parallel Flash)

    帶你認(rèn)識(shí)一下鋁電解電容

    電解電容是種由兩塊平行金屬板以及兩金屬板之間放置電解液所構(gòu)成的電容。
    的頭像 發(fā)表于 05-16 10:53 ?7298次閱讀
    帶你<b class='flag-5'>認(rèn)識(shí)一下</b>鋁電解電容

    簡(jiǎn)單認(rèn)識(shí)一下EMC中共模和差模的區(qū)別

    電壓電流的變化通過(guò)導(dǎo)線傳輸時(shí)有兩種形態(tài), 即共模和差模。下面帶大家簡(jiǎn)單認(rèn)識(shí)一下共模和差模的區(qū)別。
    發(fā)表于 06-08 14:58 ?9106次閱讀
    簡(jiǎn)單<b class='flag-5'>認(rèn)識(shí)一下</b>EMC中共模和差模的區(qū)別

    認(rèn)識(shí)一下幾個(gè)常用的門(mén)級(jí)電路

    標(biāo)準(zhǔn)單元庫(kù)是數(shù)字集成電路的積木,是復(fù)雜電路和系統(tǒng)的基礎(chǔ)。今天我們來(lái)認(rèn)識(shí)一下其中的幾個(gè)常用門(mén)級(jí)電路。
    的頭像 發(fā)表于 10-09 15:49 ?2906次閱讀
    <b class='flag-5'>認(rèn)識(shí)一下</b>幾個(gè)常用的門(mén)級(jí)電路