0

UVM e Referenceドキュメントには次のように書かれています。

You can call read_reg_field or write_reg_field for registers whose fields
are defined as single_field_access (see “vr_ad_port_unit Syntax and Examples”).
...
For example:
write_reg_fields tx_mode_reg {.resv = 4; .dest = 2};

しかし、read_reg_fieldを使用する例はありません...どのように使用すればよいか説明していただけますか?

(次のコードを試してみましたが、コンパイル エラーが発生 some_var = read_reg_field my_reg_file.my_reg {.my_reg_field}します:) ご協力ありがとうございます。

4

2 に答える 2

1

私の知る限り、read_reg_fiedsマクロはありません。レジスターを読み取り、特定のフィールドの値を保存する場合は、次のようにします。

read_reg my_reg;
value = my_reg.my_reg_field;

通常、レジスタを読み取るときは、それらを完全に読み取ります。バス プロトコルが狭い転送を許可する場合 (つまり、データ幅は 32 ビットですが、16 ビット転送が可能)、個々のフィールドのみを読み取ることは理にかなっています。そのようなものが実装されているのを見たことvr_adがありません (存在する可能性があり、私はそれを知りません) が、UVM RAL (SystemVerilog レジスタ パッケージ) はそれをサポートしています。

簡単に言うと、DUT からデータを取得することのみを考えている場合read_regは、使用するだけで十分です。

于 2014-10-28T16:50:06.530 に答える