uvm_analysis_imp #(BUSTYPE, uvm_reg_predictor #(BUSTYPE) ) bus_in
uvm_analysis_port #( uvm_reg_item ) reg_ap
uvm_reg_map map;
uvm_reg_adapter adapter;
function new (
string name,
uvm_component parent
)
virtual function void pre_predict(
uvm_reg_item rw
)
virtual function void check_phase(
uvm_phase phase
)
virtual function bit predict (
uvm_reg_data_t value,
uvm_reg_byte_en_t be = -1,
uvm_predict_e kind = UVM_PREDICT_DIRECT,
uvm_path_e path = UVM_FRONTDOOR,
uvm_reg_map map = null,
string fname = "",
int lineno = 0
)
更新此寄存器的镜像值和期望值。
根据指定地址映射上的指定观察到的值或基于计算得出的值,预测寄存器中字段的镜像(和期望)值。有关更多详细信息,请参阅uvm_reg_field::predict()。
如果对寄存器中的每个字段的预测成功,则返回TRUE。
uvm_reg_field::predict ()
function bit predict (
uvm_reg_data_t value,
uvm_reg_byte_en_t be = -1,
uvm_predict_e kind = UVM_PREDICT_DIRECT,
uvm_path_e path = UVM_FRONTDOOR,
uvm_reg_map map = null,
string fname = "",
int lineno = 0
)
更新此字段的镜像值和期望值。
根据在总线上使用指定的地址映射观察到的值,预测字段的镜像值和期望值。
如果指定kind为UVM_PREDICT_READ,则该值是在指定地址映射上的读取事务或后门(如果路径是UVM_BACKDOOR)中观察到的。如果指定kind为UVM_PREDICT_WRITE,则该值是在指定地址映射上的写入事务或后门(如果路径是UVM_BACKDOOR)中观察到的。如果指定kind为UVM_PREDICT_DIRECT,则该值是计算得出的,并且将按原样更新,不考虑任何访问策略。例如,如果指定kind为UVM_PREDICT_DIRECT,则只要是只读字段,该方法都会修改其镜像值。
该方法不允许在包含此字段的寄存器正在执行事务时更新其镜像(或期望),因为结果是不可预测的,并且表明测试台中存在竞态条件。
如果预测成功,则返回TRUE。