編譯檔案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...