から読み出したデータを取得する私はこのようなものになりレジスタ読ん配列を有する:どのようvr_ad_sequence
extend MAIN MAIN_TEST sample_vseq {
!reg_read : READ_REG vr_ad_sequence;
body() @driver.clock is first {
do reg_read keeping {
.driver == driver.reg_driver;
.reg_kind == MY_REGISTER;
};
// how to get the value of MY_REGISTER.MY_FIELD from
// the reg_read sequence above?
};
};
:今
extend vr_ad_sequence_kind: [READ_REG];
extend READ_REG vr_ad_sequence {
// register to read
reg_kind : vr_ad_reg_kind;
!reg : vr_ad_reg;
// more fields no longer shown here
body() @driver.clock is {
var reg_item : vr_ad_reg; // reg_item gets a value from a
// method that returns the correct
// register instance from the addr_map,
// which I no longer want to show here
reg = new vr_ad_reg with { .kind = reg_kind; };
read_reg { .static_item == reg_item; } reg;
};
};
を、私は上記のvr_ad_sequenceを行う仮想配列を有し
私の主な目的は、上記の例でMY_FIELDである特定のレジスタビットフィールドの値を読み取ることです。元のREAD_REG vr_ad_sequence
に何も変更せずにそれを行う方法はありますか?それが助けられない場合は、に読み取り値を返すようにするにはどうすればよいですか?
ありがとうございます。
あなたのBFMは、読み込むデータを使用してバストランザクションを更新していますか? vr_ad - > sequence_driver - > BFMチェーン全体に適切なインフラストラクチャを設定する必要があります。 –
@TudorTimi:はい、実際にREAD_REGシーケンスを実行した後、vr_adはこのメッセージからわかるように、正しいバス値を取得している 'compare_and_update_body()'を実行します - 主な質問を参照してください上記。 – renvill
こんにちは、シーケンスregフィールドは実際にread_regアクションによって変更されると予想されます。また、レジスタに入れる値は、vr_ad_execute_op()メソッド(BFMドライバのメソッド)によって返される値です。 vr_ad_execute_opは、compare_and_updateを呼び出す1つの値(例では0x4)とモニタを返し、別のデータ(0)で呼び出しを行うことがあります。 * .vr_ad_execute_opにブレークポイントを設定し、それが返す値を確認することをお勧めします。 – user3467290