env——同相运算放大器
放小豪老师的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——同相运算放大器相关推荐
- 《电路基础》同相运算放大器
同相运算放大器
- 同相运算放大器电压增益计算
同相运算放大器电压增益 运算放大器的放大主要取决于两个反馈电阻,如 R1 和 R2,它们连接在分压器配置中.R1 电阻器称为反馈电阻器 (Rf),提供给运算放大器反相引脚的分压器输出等效于 Vin,因 ...
- Driver——同相运算放大器
概述 class ue_driver extends uvm_driver #(ue_transaction);bit show_info;ue_config cfg;virtual ue_inter ...
- DUT——同相运算放大器
一.DUT概述 系统信号 clk_i 系统时钟 rstn_i ...
- 运算放大器电路PCB的设计技巧
印制电路板(PCB)布线在高速电路中具有关键的作用,但它往往是电路设计过程的最后几个步骤之一. 本文主要从实践的角度来探讨高速电路的布线问题. 主要目的在于帮助新用户当设计高速电路 PCB 布线时对需 ...
- 运算放大器应用汇总2
内容包括Howland电流源的仿真与其定性分析.定量计算,峰值检波电路,正弦波信号频率测量电路,工业4-20mA转0-3.3V/5V/10V/15V转换变送器电路,基于LM358被动红外人体检测,单电 ...
- 运算放大器节点电压方程_干货分享 | 关于放大器配置,你不得不知道的22个常用设计方程...
放大器种类纷繁复杂,有运算放大器.功率放大器,还有射频放大器.仪表放大器等等.作为电路学习中的一大课题,想必大家对于放大器配置肯定不陌生.为了帮助大家更好的学习该知识点,或随时对这一知识点" ...
- 运算放大器加法器设计学习笔记
运算放大器构成加法器 可以分为同相加法器和反相加法器 第一种:同相加法器 举个栗子:Vin1=0.4*Sin(wt) 也就是一个正弦信号 Vin2=1V 那么要实现两个信号的叠加 ...
- 同相放大器原理是什么?
在运算放大器电路中,有一个专有名词叫做"同相放大器".同相运算放大器通过两个规则工作,如电流规则和电压规则,电流规则指出没有电流流向运算放大器的输入,而电压规则指出运算放大器电压试 ...
最新文章
- 智源唐杰主编的IEEE Transactions on Big Data期刊被SCI收录 | AI日报
- python列表--查找集合中重复元素的个数
- 算法系列之使用赫夫曼编码的实战应用【对文件进行压缩、解压缩】
- 对未来计算机的畅想初中英语,初中英语期中考试,作文停电一小时,在北京……在上海……在威海…….doc...
- 想用 Python3 破冰人工智能?首先你得懂这些数学方法!
- 学python电脑硬件_Python实现的读取电脑硬件信息功能示例
- 1、计算机组成与体系结构
- java简单小程序 生日快乐,微信生日祝福小程序,要一个祝朋友生日快乐的VB小程序。...
- uploadify php demo,php uploadify上传
- 液压与气压传动(机电)_简要问答_复习笔记
- Windows/Ubuntu搭建RTMP服务器+OBS推流+VLC拉流
- 209最新100个面试问题大全及答案
- 微量样本RNA甲基化m6A技术比较
- 如何建立自己的博客网站
- Scratch编程与美术:制作美丽的烟花!
- jpeg图像质量参数及icc信息提取
- 程序的安装——软件安装包的制作、软件仓库的使用
- 像素鸟html与js源码(4节课勉强做完)
- Error during WebSocket handshake: Unexpected response code: 200 错误解决
- L2-001 紧急救援 - java