
UVM
bleauchat
证明自己,同时验证你的选择是错误的!
展开
-
UVM Phase
UVM Phases所有testbench的组件都是继承uvm_component来的,每一个组件都包括一些预定义的同名phase,在没有执行完所有组件的当前phase之前绝对不会去执行所有组件的下一个phase,这就保证了所有组件之间是同步的!UVM就是利用phase机制实现了各个组件之间的同步!因为所有的phase都被定义为回调(callback)方法,因此各个组件可以自动执行回调p...原创 2019-05-29 19:48:43 · 7442 阅读 · 5 评论 -
一个简单的UVM验证平台
2.1 验证平台的组成2.1.1. 何谓验证平台何谓验证平台?验证最基本的目的在于测试 DUT 的正确性,其最常使用的方法就是给 DUT 施加不同的输入(激励),所以一个验证平台最重要的的功能在于产生各种各样不同的激励,并且观测 DUT 的输出结果,把此结果与期望值比较一下,判断DUT 的正确性。注意,这里出现了一个词:期望值。什么是期望值?比如我们的DUT 是一个加法器,那么当我们输...原创 2019-08-16 20:14:36 · 14906 阅读 · 4 评论 -
uart接口用systemverilog实现
1.发送模块module uart_tx(clk,rst,start,tx_data_in,tx,tx_active,done_tx);parameter clk_freq = 50000000; //MHzparameter baud_rate = 19200; //bits per secondinput clk,rst;input start;input [7:0] tx_...原创 2019-08-12 19:17:27 · 1540 阅读 · 0 评论 -
一个加法器的验证
1.DUTmodule alu_top ( input wire clk_i, input wire rst_i, input wire [31:0] dataA_i, input wire [31:0] dataB_i, input wire [ 2:0] ALU...原创 2019-08-16 00:48:48 · 2013 阅读 · 1 评论 -
功能验证流程
下图显示了功能验证流程: 这个验证过程可以被分解成三个主要阶段: 制定验证策略和验证计划; 创建验证平台, 运行和调试; 覆盖率分析和回归测试;1 制定验证策略和验证计划阶段制定验证策略和验证计划阶段主要处理以下三个问题:(1) 主要功能点和测试用例当前, 复杂设计的测试空间是非常大的。 一个典型的百万门的设计可能有百万乃至上亿个需要测试的功能点, 将测试空间缩小到一个可以管理的范围,...原创 2019-08-24 21:26:03 · 7245 阅读 · 1 评论 -
UVM实例之APB总线
1.定义transaction`ifndef APB_RW_SV`define APB_RW_SVimport uvm_pkg::*;//apb_rw sequence item derived from base uvm_sequence_itemclass apb_rw extends uvm_sequence_item; //typedef for READ/Wr...原创 2019-08-08 21:59:34 · 6404 阅读 · 9 评论 -
UVM TestBench 举例
DUT为一个可读可写的存储器,RTL代码如下://------------------------------------------------------------------------// Memory Model RTL - www.verificationguide.com//----------------------------------------------...原创 2019-06-23 20:46:29 · 2409 阅读 · 1 评论 -
UVM TLM
目录TLM通信概述单向、双向及多向通信通信管道应用TLM SocketsTLM通信概述TLM(transaction level modeling)用于建立各组件和系统之间的抽象传输模型。在这个模型中,数据是以传输类(transaction,这个类中包含了各种随机变量)的形式流通于各个组件之间,各个组件之间的接口称为TLM端口。UVM提供了一系列的TLM...原创 2019-06-03 21:52:39 · 2949 阅读 · 0 评论 -
Callback
SV中的回调(callback)明确了定义方法的规则,并且指定了一个方法用来回调已经定义的该方法;简而言之就是,被调用的方法就是回调方法(callback method),调用回调方法的方法称为回调勾(callback hook),回调方法一般是虚方法(dummy method),一般通过继承来进行覆盖重写.我们来看回调方法是如何工作的:在上面的图中,temp()方法就是回调勾,ca...原创 2019-06-13 21:02:28 · 844 阅读 · 0 评论 -
Misc
目录Using factory overridesHow to use uvm_printerReporting FunctionsSetting policy using uvm_comparerHDL access routinesUVM PoolUsing factory overrides在SV中我们是通过new()来创建类的对象的,这种方法也可以在...原创 2019-06-02 16:05:12 · 847 阅读 · 0 评论 -
Register Layer
目录IntroductionRegister ModelRegister EnvironmentConnecting register envUVM Register Model ExampleUVM Register Backdoor AccessIntroductionUVM中的寄存器层类(Register Layer class)是用来创建高层次(h...原创 2019-06-08 15:00:28 · 1322 阅读 · 0 评论 -
Driver Sequencer Handshake
目录sequencerDriver Sequencer HandshakeUsing get_next_item()Using get() and put()sequencersequencer控制着sequence与driver之间的sequence item流向,一个sequence必须挂载在一个sequencer上运行;uvm_sequencer派生自uvm_...原创 2019-05-31 10:51:08 · 1024 阅读 · 0 评论 -
Testbench Hierarchy
目录UVM Testbench TopUVM Test [uvm_test]UVM Environment [uvm_env]UVM Driver [uvm_driver]Sequencer [uvm_sequencer]UVM Sequence [uvm_sequence]UVM Monitor [uvm_monitor]UVM Agent [uvm_age...原创 2019-05-29 16:28:23 · 1334 阅读 · 0 评论 -
UVM Object
目录Base ClassesUVM utility & field macrosUVM Object PrintUVM Object Copy/CloneUVM Object compareUVM Object Pack/Unpackuvm_object与uvm_component的比较UVM树Base Classes验证环境的基本组件...原创 2019-05-27 20:03:19 · 4861 阅读 · 0 评论 -
Sequences
目录新手上路Sequence itemcreate and use a sequence使用`uvm_do_*宏来运行sequence item通过start()方法来运行sequence通过`uvm_do_*来运行sequenceSequence action macros for pre-existing itemsVirtual SequenceU...原创 2019-06-03 17:19:06 · 2953 阅读 · 0 评论 -
config机制
目录Understanding the resource databaseuvm_resource_dbuvm_config_dbuvm_config_db examples常见的uvm_config_db使用Understanding the resource database资源(resource)是参数化的容器(container,可以保存任意的数据。资源...原创 2019-05-30 10:27:11 · 2122 阅读 · 1 评论 -
初识UVM
What is UVM ?SV是一门语言有自己的语法和结构,而UVM是SV类的结构框架,从中可以建立完整功能的testbench.简单来说,UVM就是由一系列基本类(类中定义了一系列的方法)组成的类库,SV的验证环境可以通过继承这些基本类来搭建.Why do we need UVM ?UVM列举了一系列的指导准则用于testbench的搭建,这保证了不同验证团队之间、不同验证IP之间...原创 2019-05-27 12:51:12 · 999 阅读 · 0 评论