UVM入門實驗0

2021-10-19 17:58:51 字數 3984 閱讀 5819

編譯檔案uvm_compile.sv,等待正常編譯結束,在work庫中**模組uvm_compile,在命令視窗執行run -all

uvm_compile.sv**

module uvm_compile;

import uvm_pkg::*

; `include "uvm_macros.svh"

initial begin

`uvm_info

("uvm"

,"hello, welcome to rkv uvm training!"

, uvm_low)

#1us;

`uvm_info

("uvm"

,"bye, and more gifts waiting for you!"

, uvm_low)

endendmodule

uvm驗證頂層都必須有import uvm_pkg::*'include "uvm_macros.svh"這兩行**代表著預編譯的uvm庫。

**結果:

通過編譯**sv_class_inst.sv檔案,實際上是sv模組實驗環節的抽象,它只是在頂層module容器中要例化軟體驗證環境的頂層,即sv class top。從列印出的資訊可以看出,相當於測試的開始,到驗證環境的搭建,激勵的傳送,檢查的執行等,最後又到了測試的結束。

sv_class_inst.sv**

module sv_class_inst;

import uvm_pkg::*

; `include "uvm_macros.svh"

class top;

function new()

; `uvm_info

("sv_top"

,"sv top creating"

, uvm_low)

endfunction

endclass

initial begin

top t;

`uvm_info

("sv_top"

,"test started"

, uvm_low)

t =new();

`uvm_info

("sv_top"

,"test finished"

, uvm_low)

endendmodule

**結果:

而編譯**uvm_class_inst.sv,從列印的資訊來看,也是在模擬驗證結構的創立,只不過利用了uvm類uvm_component來定義了top類,繼而在建立了這個「頂層」驗證結構

uvm_class_inst.sv**

module uvm_class_inst;

import uvm_pkg::*;

`include "uvm_macros.svh"

class

top extends uvm_component;

`uvm_component_utils

(top)

function new

(string name =

"top"

, uvm_component parent = null)

; super.

new(name, parent)

; `uvm_info

("uvm_top"

,"sv top creating"

, uvm_low)

endfunction

endclass

initial begin

top t;

`uvm_info

("uvm_top"

,"test started"

, uvm_low)

t =new(

"t", null)

; `uvm_info

("uvm_top"

,"test finished"

, uvm_low)

endendmodule

**結果:

所謂的uvm驗證環境指的首先是提供乙個uvm的「容器」,即接下來所有的uvm物件都會放置在其中,這樣也可以成為uvm的頂層,這就類似於之前sv模組實驗中的頂層容器test一樣。

編譯**uvm_test_inst.sv檔案,從列印資訊看出uvm驗證結構的構建經歷了9個phase。

uvm_test_inst.sv**

package test_pkg;

import uvm_pkg::*;

`include "uvm_macros.svh"

class

top extends uvm_test;

`uvm_component_utils

(top)

function new

(string name =

"top"

, uvm_component parent = null)

; super.

new(name, parent)

; `uvm_info

("uvm_top"

,"sv top creating"

, uvm_low)

endfunction

task run_phase

(uvm_phase phase)

; phase.

raise_objection

(this);

`uvm_info

("uvm_top"

,"test is running"

, uvm_low)

phase.

drop_objection

(this);

endtask

endclass

endpackage

module uvm_test_inst;

import uvm_pkg::*;

`include "uvm_macros.svh"

import test_pkg::*;

initial begin

`uvm_info

("uvm_top"

,"test started"

, uvm_low)

run_test

("top");

`uvm_info

("uvm_top"

,"test finished"

, uvm_low)

endendmodule

**結果:

只有繼承於uvm_test的類,才可以作為uvm驗證環境的頂層,建立頂層驗證環境,有且只能依賴於run_test(「uvm_test_name」)來傳遞,或者通過**引數傳遞,而不是通過構建函式new(),儘管new()可以建立乙個物件,但是不能做與頂層驗證環境相關的其他工作。

搭建驗證框架 -> 驗證元件之間的連線和通訊 -> 編寫測試用例,繼而完成復用和覆蓋率收斂

實驗 入門實驗

通過乙個最簡單,最基本的嵌入式應用程式,熟悉基本的嵌入式應用程式開發環境和工具,理解基本的嵌入式程式設計方法和流程。1 開發環境 絕大多數的linux 軟體開發都是以native 方式進行的,即本機 host 開發 除錯,本機執行的方式。這種方式通常不適合於嵌入式系統的軟體開發,因為對於嵌入式系統的...

44b0實驗 中斷實驗

之前也提到的過,區區乙個簡單的中斷實驗竟然讓我大動干戈,費了n久才搞定。現在把具體實驗寫寫吧。先把 貼出來吧 include include inc 44b.h include inc option.h include inc def.h include eint.h void irq eint45...

rust學習 0 入門

curl ssf sh如果安裝成功 rust is installed now.great 檢查環境變數 source home cargo env配置 要檢查是否正確安裝了 rust rustc version 更新rustup update 使用時出現 error no default tool...