スポンサーサイト

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

UVM Register Layerを記述してみる。

今回は、UVM Register Layerを記述してみる。です。
検証メソドロジ(OVM,VMM)とか知らないので背景は語ることはできませんが。

UVM Register Layer Class(VMMベース)を使って何が出来るか?というより、
使い方も知らないので「何を期待して」使おうとしているかが重要だと思います。

筆者が簡単に見て「期待すること」として以下の2点になります。
他にも知らない利点があるかもしれませんが、これからということで。
1) 直感的な表現(記述方法)
2) レジスタ動作の期待値
これらのことを期待して記述していこうと思います。
※別途 IP-XACTとの関係もありますが。

また、UVM配下にある↓の Exampleは割とわかりやすいです。
uvm-1.1/examples/simple/registers/primer
「直感的な表現(記述方法)」に関しては、シナリオが書きやすいという意味です。
Register Layer Classを使うことで、そのレジスタに Write/Readと記述することでDUT(検証対象)に対してのアドレスなどの変換をしてくれます。

記述例(抜粋)
repeat (10) begin
bit [7:0] idx = $urandom;
uvm_reg_data_t data = $urandom;
uvm_status_e status;
model.TABLES[idx].write(status, data, .parent(this));
end
// Find which indexed registers are non-zero
foreach (model.TABLES[i]) begin
uvm_reg_data_t data;
uvm_status_e status;
model.TABLES[i].read(status, data);
if (data != 0)
$write("TABLES[%0d] is 0x%h...\n", i, data);
end
TABLES[]がDUTにあるレジスタ(メモリ)になります。
このように記述したするだけで、Register Layer Classから driverへ値(アドレス、データなど)が渡ることになります。
直感的にこのレジスタにアクセスすると分かるので、便利だと思います。
もちろんレジスタがアドレスと対応しているので、アドレス変更があった場合や値の間違いがなくなることもメリットだと思います。

次回より実際に記述していきます。

関連記事

コメントの投稿

非公開コメント

プロフィール

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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。