UVM中RAL相关的一些函数

本文介绍了UVM中寄存器模型操作,包括set、get、get_mirrored_value、get_reset、predict、randomize等函数以及update、mirror、write、read、peek和poke任务的用法。重点讨论了如何更新和同步模型与DUT之间的寄存器值,以及在不同场景下的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 引言

  在UVM支持的寄存器操作中,有get、update、mirror、write等等一些方法,在这里整理一下他们的用法。

  寄存器模型中的寄存器值应该与DUT保持同步,但是由于DUT的值是实时更新的,所以寄存器模型并不能实时知道这种更新,在寄存器模型中专门有个值来尽可能与DUT中寄存器的值保持一致,叫镜像值(mirrorred value)。寄存器模型中还有一个值叫期望值(respected value),这个值保存我们希望写入寄存器的值。比如希望向DUT某个寄存器写入'h1,用set函数设置期望值,然后用update任务(update会比较镜像值和期望值,如果不一样,将期望值写入DUT,并更新镜像值)。

 

1.  函数

1.1 set 

virtual function void set ( uvm_reg_data_t  value,   string     fname    =  "",int  lineno   =  0   )

 设置模型中寄存器的期望值,不会改变DUT中这个寄存器的值。

1.2 get

virtual function uvm_reg_data_t get(    string  fname    =  "", int     lineno   =  0   )

    返回模型中寄存器的期望值,而不是DUT中的寄存器值。

 

1.3 get_mirrored_value

  virtual function uvm_reg_data_t get_mirrored_value( string  fname    =  "", int     lineno   =  0   )

 返回模型中寄存器的镜像值。

 

1.4 get_reset

virtual function uvm_reg_data_t get_reset(  string  kind     =  "HARD"  )

    返回寄存器的复位值。

 

1.5 predict

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_FRONTD
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值