从零开始搭建UVM平台(九)-加入reference model

书接上回:

从零开始搭建UVM平台(一)-只有uvm_driver的验证平台

从零开始搭建UVM平台(二)-加入factory机制

从零开始搭建UVM平台(三)-加入objection机制

从零开始搭建UVM平台(四)-加入interface

从零开始搭建UVM平台(五)-加入transaction机制

从零开始搭建UVM平台(六)-加入env

从零开始搭建UVM平台(七)-加入monitor

从零开始搭建UVM平台(八)-加入agent

加入reference model

Reference model的作用类似于dut,输入到dut的数据也会给到reference model进行处理后方便和dut输出的数据一起做比较来查看dut的功能是否正常。

由于reference model的作用仅仅是copy一下数据,因此可以在my_transaction里实现这个copy方法:

在搭建reference model之前要想清楚现在的环境结构。在uvm里,实现不同component之间transaction级别通信的工具是TLM机制。为了从i_agent里面拿到transaction,需要在i_agent里创建一种port,在reference model里也创建一种port,实现transaction从i_agent的port传输到reference model里的port。同时,考虑到两个port在发/收transaction时可能存在阻塞情况,需要在两个port之间建立一个fifo来缓存数据。

在uvm中,常用的主动发数据的port是uvm_analysis_port,常用的用于缓存数据的fifo是uvm_tlm_analysis_fifo,常用的主动接收数据的port是uvm_blocking_get_port。考虑好了这些,可以执行以下步骤:

第一步:新建一个my_model文件

其中port主要用于接收从i_agent传输过来的transaction,经过copy后通过ap写入传输给scoreboard。

第二步:在my_monitor文件里创建一个uvm_analysis_port来实现每收集到一个transaction就传输给reference model。

第三步:i_agent作为my_monitor的parent,作为中间桥梁将i_agent的port指向my_monitor的port,方便reference model能够直接从i_agent的port拿到数据。

第四步:在my_env里例化reference model,并连接各个port和fifo,实现最后的连接。

相关推荐
Fluxart.ai23 分钟前
GPT Image 2 国内怎么用?在 Flux Art 完成图片生成与编辑
前端·javascript·gpt
tanzongbiao26 分钟前
Dorado7文件上传 解决HttpServletResponse返回值中文乱码的问题
java·服务器·前端
郑州光合科技余经理4 小时前
本地生活服务系统:成品模块和定制接口怎么划界
java·前端·人工智能·后端·系统架构·php·ai编程
平头哥~8 小时前
Day 07 _ 那条 1px 的线,为什么在手机上忽粗忽细
前端·css·样式·学习资料
小江的记录本8 小时前
【CSS】CSS 动画:transition、animation、transform、CSS3 新特性(附《思维导图》)
前端·css·安全·spring·前端框架·css3·动画
circuitsosk9 小时前
任务规划器的三种范式对比:ReAct、Plan-and-Execute 与 Tree-of-Thought 在真实业务中的取舍
前端·javascript·python·react.js·llm·ai agent
hzxpaipai10 小时前
企业官网技术架构拆解:前端、后台、数据库、服务器如何协同
前端·数据库·架构
深念Y12 小时前
Lenovo XiaoXinAir 14 — 性能模式切换
前端·网络
计算机魔术师12 小时前
Meta突然杀进第一梯队:一个新模型,把AI推理成本打下来8倍
前端