放小豪老师的b站  IC验证 - 手把手教你搭建UVM芯片验证环境(含代码)_哔哩哔哩_bilibili

整个验证环境由4个组件组成,i_agt、o_agt 、mdl(reference model)、 scb(scoreboard)。

组件之间通过TLM通信,声明了analysis_fifo.

i_agt:内部例化了driver、monitor、sequencer。

o_agt: 内部只例化了monitor。

目录

1.代码解析(声明)

2.代码解析(例化)

3.代码解析(连接)

4.代码解析(打印)

总结:


1.代码解析(声明)

class ue_env extends uvm_env;ue_config cfg;ue_agent    i_agt;ue_agent      o_agt;ue_ref_model  mdl;ue_scoreboard scb;uvm_tlm_analysis_fifo #(ue_transaction) iagt_mdl_fifo;uvm_tlm_analysis_fifo #(ue_transaction) oagt_scb_fifo;uvm_tlm_analysis_fifo #(ue_transaction) mdl_scb_fifo;`uvm_component_utils(ue_env)extern function new (string name = "ue_env", uvm_component parent =null);extern function void build();extern function void connect();extern function void report();endclass : ue_env

extern 表示 build、connect、report方法外部声明

2.代码解析(例化)

function void ue_env::build();super.build();if(!uvm_config_db#(ue_config)::get(this,"","cfg", cfg)) begincfg = ue_config::type_id::create("cfg");endi_agt = ue_agent::type_id::create("i_agt",this);i_agt.is_active=cfg.i_agt_is_active;o_agt = ue_agent::type_id::create("o_agt",this);o_agt.is_active=cfg.o_agt_is_active;mdl = ue_ref_model::type_id::create("mdl",this);scb = ue_scoreboard::type_id::create("scb",this);iagt_mdl_fifo = new("iagt_mdl_fifo",this);oagt_scb_fifo = new("oagt_scb_fifo",this);mdl_scb_fifo = new("mdl_scb_fifo",this);`uvm_info(get_type_name(), $sformatf("built"), UVM_LOW)
endfunction :build

TLM端口并不属于component,所以不能通过create创建

3.代码解析(连接)

function void ue_env::connect();super.connect();i_agt.mon.ap.connect(iagt_mdl_fifo.analysis_export);mdl.gp.connect(iagt_mdl_fifo.blocking_get_export);o_agt.mon.ap.connect(oagt_scb_fifo.analysis_export);scb.act_gp.connect(oagt_scb_fifo.blocking_get_export);mdl.ap.connect(mdl_scb_fifo.analysis_export);scb.exp_gp.connect(mdl_scb_fifo.blocking_get_export);`uvm_info(get_type_name(), "connected", UVM_LOW)endfunction :connect

    TLM_FIFO相当于缓存两端加上import端口作为中转,两侧连接的component都可以主动发送或索取数据。虽然作用上是import端口,但是命名上以export结束。

4.代码解析(打印)

function void ue_env::report();super.report();if(i_agt.mon.sent_item_num == o_agt.mon.sent_item_num) `uvm_info(get_type_name(), "sent_item_num check ok", UVM_LOW)else`uvm_error("ENV_ERROR", "sent_item_num check error")endfunction:report

           i_agt与o_agt数量比较在env中完成。

总结:

    sequencer将sequence产生的激励传给driver,driver通过virtual interface解析为dut可以识别的信号,monitor监测传给DUT的信号并将其发送给reference model,reference model调用c++库函数进行运算,将结果传递给scoreboard。

        另一方面,dut运算后结果被o_agt中的monitor监测并传给scoreboard,在scoreboard中进行比较。

env——同相运算放大器相关推荐

  1. 《电路基础》同相运算放大器

    同相运算放大器

  2. 同相运算放大器电压增益计算

    同相运算放大器电压增益 运算放大器的放大主要取决于两个反馈电阻,如 R1 和 R2,它们连接在分压器配置中.R1 电阻器称为反馈电阻器 (Rf),提供给运算放大器反相引脚的分压器输出等效于 Vin,因 ...

  3. Driver——同相运算放大器

    概述 class ue_driver extends uvm_driver #(ue_transaction);bit show_info;ue_config cfg;virtual ue_inter ...

  4. DUT——同相运算放大器

    一.DUT概述 系统信号 clk_i                                          系统时钟 rstn_i                              ...

  5. 运算放大器电路PCB的设计技巧

    印制电路板(PCB)布线在高速电路中具有关键的作用,但它往往是电路设计过程的最后几个步骤之一. 本文主要从实践的角度来探讨高速电路的布线问题. 主要目的在于帮助新用户当设计高速电路 PCB 布线时对需 ...

  6. 运算放大器应用汇总2

    内容包括Howland电流源的仿真与其定性分析.定量计算,峰值检波电路,正弦波信号频率测量电路,工业4-20mA转0-3.3V/5V/10V/15V转换变送器电路,基于LM358被动红外人体检测,单电 ...

  7. 运算放大器节点电压方程_干货分享 | 关于放大器配置,你不得不知道的22个常用设计方程...

    放大器种类纷繁复杂,有运算放大器.功率放大器,还有射频放大器.仪表放大器等等.作为电路学习中的一大课题,想必大家对于放大器配置肯定不陌生.为了帮助大家更好的学习该知识点,或随时对这一知识点" ...

  8. 运算放大器加法器设计学习笔记

    运算放大器构成加法器    可以分为同相加法器和反相加法器 第一种:同相加法器 举个栗子:Vin1=0.4*Sin(wt)   也就是一个正弦信号    Vin2=1V    那么要实现两个信号的叠加 ...

  9. 同相放大器原理是什么?

    在运算放大器电路中,有一个专有名词叫做"同相放大器".同相运算放大器通过两个规则工作,如电流规则和电压规则,电流规则指出没有电流流向运算放大器的输入,而电压规则指出运算放大器电压试 ...

最新文章

  1. 智源唐杰主编的IEEE Transactions on Big Data期刊被SCI收录 | AI日报
  2. python列表--查找集合中重复元素的个数
  3. 算法系列之使用赫夫曼编码的实战应用【对文件进行压缩、解压缩】
  4. 对未来计算机的畅想初中英语,初中英语期中考试,作文停电一小时,在北京……在上海……在威海…….doc...
  5. 想用 Python3 破冰人工智能?首先你得懂这些数学方法!
  6. 学python电脑硬件_Python实现的读取电脑硬件信息功能示例
  7. 1、计算机组成与体系结构
  8. java简单小程序 生日快乐,微信生日祝福小程序,要一个祝朋友生日快乐的VB小程序。...
  9. uploadify php demo,php uploadify上传
  10. 液压与气压传动(机电)_简要问答_复习笔记
  11. Windows/Ubuntu搭建RTMP服务器+OBS推流+VLC拉流
  12. 209最新100个面试问题大全及答案
  13. 微量样本RNA甲基化m6A技术比较
  14. 如何建立自己的博客网站
  15. Scratch编程与美术:制作美丽的烟花!
  16. jpeg图像质量参数及icc信息提取
  17. 程序的安装——软件安装包的制作、软件仓库的使用
  18. 像素鸟html与js源码(4节课勉强做完)
  19. Error during WebSocket handshake: Unexpected response code: 200 错误解决
  20. L2-001 紧急救援 - java

热门文章

  1. 济宁中考计算机考试试题,济宁市初中信息技术考试模拟题1.pdf
  2. HOWTO--在UNIX裸设备和文件系统之间移动ORACLE
  3. 如何制作爆款便利店小程序?
  4. 陆毅近照曝光,肿成油腻,网友:侯亮平经历了什么?
  5. 哈佛H8、比亚迪S7、传祺GS8、长安CS95发动机横评对比
  6. 麦肯锡报告:2030年近1亿中国人或面临职业转换,全球将有8亿人被机器人取代!
  7. android蹒跚学步
  8. Catia 零件 曲面 装配 工程图 仿真运动 参数和知识工程视频教程
  9. 图文详解Modbus-RTU协议(转载)
  10. 免费打电话,打长途电话的软件,电脑打给手机的免费软件