次のようなレジスタ読み取りシーケンスがあります。
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 を実行する仮想シーケンスができました。
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?
};
};
私の主な目的は、上記の例では MY_FIELD である特定のレジスタ ビット フィールドの値を読み取ることです。オリジナルを何も変更せずにそれを行う方法はありREAD_REG vr_ad_sequence
ますか? READ_REG vr_ad_sequence
やむを得ない場合、読み込んだ値を呼び出し元に返すにはどうすればよいsample_vseq
でしょうか?
よろしくお願いします。