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

相关推荐
果壳~21 分钟前
【前端】【canvas】图片颜色填充工具实现详解
前端
Bigger22 分钟前
Tauri (23)——为什么每台电脑位置显示效果不一致?
前端·rust·app
¥懒大王¥23 分钟前
XSS-Game靶场教程
前端·安全·web安全·xss
ssshooter28 分钟前
为什么移动端 safari 用 translate 移动元素卡卡的
前端·css·性能优化
闲云一鹤34 分钟前
Claude Code 接入第三方AI模型(MiMo-V2-Flash)
前端·后端·claude
惜.己34 分钟前
前端笔记(四)
前端·笔记
小北方城市网43 分钟前
第 5 课:Vue 3 HTTP 请求与 UI 库实战 —— 从本地数据到前后端交互应用
大数据·前端·人工智能·ai·自然语言处理
踢球的打工仔44 分钟前
ajax的基本使用(上传文件)
前端·javascript·ajax
樊小肆1 小时前
ollmam+langchain.js实现本地大模型简单记忆对话-内存版
前端·langchain·aigc
徐小夕1 小时前
pxcharts 多维表格开源!一款专为开发者和数据分析师打造的轻量化智能表格
前端·架构·github