スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

UVM Register Layerを記述(uvm_reg_block)

UVM1.1 にあるRegister Layerを記述してみました。(その3)
今回は uvm_reg, uvm_mem を組み合わせた uvm_reg_block です。
※基本的には自分で記述するのはナンセンスと思っております。
 仕組みの理解のほうが大切という認識です。

記述例(reg_block)
class reg_block_dut extend uvm_reg_block;

`uvm_object_utils(reg_block_dut)

reg_version VERSION;
:
mem_ram RAM;

function new(string name = "reb_block_dut");
super new(name.UVM_NO_COVERAGE);
endfunction

virtual function void build();
// create
VERSION = reg_version::type_id::create("VERSION");
:
RAM = mem_ram::type_id::create("RAM");

// configure
VERSION.configure(this.null, "VERSION");
VERSION.build();
:
RAM.configure(this, "");

// define default map
// name base_addr, n_byte, endian, byte_addressing
default_map = create_map("default_map", 'h0, 4, UVM_LITTLE_ENDIAN);
// reg/mem, offset, rights="RW", unmapped=0, frontdoor=null
default_map.add_reg(VERSION, 'h0, "RO");
:
default_map.add_reg(RAM , 'hC, "RW");

endfunciton

endclass
reg_blockまで作成することで、検証対象のブロックが表現されました。
この reg_blockを用いて uvm_reg_sequenceで制御していきたいと思います。

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。