从零开始搭建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,实现最后的连接。

相关推荐
H_Lisa6 分钟前
我用 Express 写了个 MCP,Claude 直接调用我的 API 了
前端
IT_陈寒13 分钟前
React的useEffect依赖数组把我坑惨了
前端·人工智能·后端
兰亭妙微UI设计公司1 小时前
兰亭妙微ui设计公司分享:B端组件命名如何支持团队协作
前端·javascript·vue.js
云和数据.ChenGuang2 小时前
光哥说Python 异常深度解析:从异常模型到工程化实践
java·前端·人工智能·python·langchain
小大宇2 小时前
Vue知识点-ElementPlus-03提示框+询问+通知
前端·javascript·vue.js
步行cgn3 小时前
Axios 请求成功但页面不显示:两个前端错误的分析与修正
前端
时间的情敌3 小时前
WebGIS + OpenLayers + GeoServer + PostGIS #量算 #点聚合
前端·geoserver·openlayers
不可能片场4 小时前
Electron 发布 cookie 库先查明文再写解密
前端·electron
郭小李4 小时前
springmvc 拦截器
java·开发语言·前端
web打印社区4 小时前
Chrome-kiosk-printing能上生产吗
开发语言·前端·javascript·chrome·websocket