
UVM
文章平均质量分 90
carrotbanana
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【寄存器模型】三、寄存器模型对DUT的模拟与预测
一、期望值、镜像值、实际值寄存器模型中有两个值,分别为期望值和镜像值。DUT中的寄存器值称为实际值。实际值①:使用[write&read任务通过前门访问or后门访问的方式]向DUT中的寄存器实际值写入&读取一个新值,寄存器模型中的期望值与镜像值会自动更新为新值。②使用[peek&poke操作]向DUT中的寄存器实际值写入&读取一个新值,寄存器模型中的期望值与镜像值会自动更新为新值。③:使用[mirror操作通过前门或后门方式]......原创 2022-08-31 18:58:25 · 2892 阅读 · 1 评论 -
【寄存器模型】二、前门访问与后门访问
1.后门访问可以更好的完成前门访问能够完成的事情:后门访问不消耗仿真时间,且消耗的运行时间也远小于前门访问的运行时间。2.后门访问可以完成前门访问不能完成的事:对于某些特定的场景,如网络通信系统中的一些只读计数器,当要验证计数器进位归零的场景时,前门访问无法完成写寄存器操作,只能通过消耗仿真时间来使计数器到达特定的计数值。而后门访问可以直接对只读寄存器赋一个初值......原创 2022-08-31 10:43:11 · 8962 阅读 · 0 评论 -
【寄存器模型】一、一个简单的寄存器模型
在描述寄存器模型之前,首先来了解一下实际寄存器的组成结构:如下图所示的DUT内部真实的寄存器寄存器中最小的一个单位是域(field),域是由一个或多个bit拼接而成的。一个或多个域就构成了一个寄存器(reg)。一个或多个寄存器就构成了一个块(block)。将DUT中的寄存器抽象出来,建立寄存器模型,如下图所示:uvm library已经定义好了field、reg、block等相关的概念,构建寄存器模型时,只需要继承这些类即可。:构建寄存器模型中的域段。uvm_reg。...原创 2022-08-23 21:10:36 · 4987 阅读 · 1 评论 -
【UVM的数据流】分为一个agent和多个agent的情况
一个sequence在向sequencer发送transaction前,要先向sequencer发送一个请求,sequencer把这个请求放在一个仲裁队列中。作为sequencer,它需做两件事情:第一,检测仲裁队列里是否有某个sequence发送transaction的请求;第二,检测driver是否申请transaction。只有一个agent时,sequencer一般在agent类之前使用typedef定义一下,然后在agent中例化即可。...原创 2022-08-20 22:19:23 · 3438 阅读 · 0 评论 -
【m_sequencer与p_sequencer】
而连接到driver 的真正的sequencer 是从uvm_sequencer_base类派生出来的uvm_sequencer类型,所以如果使用m_sequencer句柄来引用sequencer,会产生编译错误。因此要访问正在运行sequence 的真实sequencer ,我们需要将m_sequencer类型转化为真实sequencer ,通常称为。sequence 希望访问sequencer的 clock monitor组件,有两种办法,分别为手动转换,和使用宏的方式自动转换。原创 2022-08-19 11:06:37 · 590 阅读 · 0 评论