zer0hz
IC验证工程师
展开
-
寄存器模型(RAL,Register Abstraction Layer)——UVM
component与component直接可以使用port进行通信,component与object之间是不可以使用port,需要使用event,wait_ptrigger和wait_trigger的区别是一、register model重新有前门后门访问,后门访问是可以直接层次引用,使得访问寄存器中比较简单。二、register model的使用三、前门使用adapter转换,嫁给你trans转换REG2BUS:...原创 2022-02-02 22:42:49 · 3691 阅读 · 0 评论 -
使用VCS的ralgen来生成寄存器模型——UVM
标题一、编写test.ralf文件用于生成ral文件1.1test.ralf文件1.2 makefile二、adapter一、编写test.ralf文件用于生成ral文件1.1test.ralf文件register ctrl { bytes 4; left_to_right; field rev { bits 27; access ro; reset 'h0; } field RE { bits 1; access rw; rese原创 2022-01-21 10:08:24 · 3549 阅读 · 4 评论 -
同步通信(event)——UVM
一、event1.1UVM中的event与SV中的event不同之处UVM中的event与SV中event不同之处是,SV中主要是对同一个对象进行IPC,UVM是不局限于一个对象的,它还为了解决不同的component线程同步问题,还需保持UVM的封闭性,所以它建立了新的同步通信手段(uvm_event、uvm_event_pool和uvm_event_callback)1.2 uvm_event的应用...原创 2022-01-15 18:32:23 · 1298 阅读 · 0 评论 -
message——UVM
文章目录一、什么是冗余度1.1 冗余度的概念以及各种打印方式1.2 冗余度设置方法一、什么是冗余度1.1 冗余度的概念以及各种打印方式四种打印消息的方法`define uvm_info(ID,MSG,VERBOSITY)`define uvm_warning(ID,MSG)`define uvm_error(ID,MSG)`define uvm_fatal(ID,MSG)冗余度是指从安全角度考虑多余的一个量,也就是为了能够去过滤信息的一个考核值,为了能够让log文件的更加可读;冗余度阈原创 2022-01-15 00:31:00 · 332 阅读 · 0 评论 -
sequence机制——response、sequence library与layer sequence
一、response的使用1.1 response机制如果在验证平台中,sequence需要根据driver对于transaction的response来决定接下来要发送的数据。sequence机制允许driver返回一个response给sequence。但是在sequence中需要使用get_response任务,并且driver中需要使用put_responseclass my_driver extends uvm_driver; ... task run_phase(uvm_phase原创 2022-01-14 20:01:43 · 781 阅读 · 0 评论 -
域自动化(field automation)——UVM
文章目录一、域自动化(field automation)基础1.1 核心基类(uvm_void)与uvm_object的关系1.2 field automation相关的宏二、与uvm_object相关2.1 copy2.2 compare2.3 print2.4 clone2.5 pack2.5.1 driver打包byte流2.5.2 monitor打包byte流三、与uvm_component相关3.1 与uvm_objecet不同之处3.2 uvm_component域自动化注册方式3.3 省略co原创 2022-01-09 21:19:50 · 1666 阅读 · 0 评论 -
UVM组件(以APB协议为例)——UVM
class base_test extends uvm_test; `uvm_component_utils(base_test) apb_enviroment apb_env; scoreboard scb; uvm_tlm_analysis_fifo#(apb_trans)mst_fifo; uvm_tlm_analysis_fifo#(apb_trans)slv_fifo; function new(string name = "base_test",uvm_componen原创 2022-01-08 21:05:42 · 2484 阅读 · 0 评论 -
phase机制-UVM
文章目录一、phase机制1.1 为什么要使用phase机制?1.2 phase是如何运行的?1.3 phase的调试二、objection机制2.1 UVM关于objection在run-time phase的执行方法2.2 UVM关于objection在run_phase的执行方法三、domain的应用一、phase机制UVM中的phase机制是将仿真阶段层次化,各个phase按照先后顺序执行,并且同一层次的phase中的层次化组件之间按照顺序执行1.1 为什么要使用phase机制?从上图中可原创 2022-01-08 18:18:31 · 1980 阅读 · 0 评论 -
config_db——UVM
文章目录一、UVM路径1.1 什么是UVM路径二、config_db的使用2.1 config_db函数参数2.2 set/get()2.2.1 set()2.2.2 get()2.3 使用实例2.3.1 传递interface2.3.2 配置sequence与传递参数2.3.3 配置变量三、config_db的特殊用法3.1 多重set/get3.2 省略get3.3 wait_modified( )一、UVM路径1.1 什么是UVM路径class base_test extends uvm_tes原创 2022-01-08 18:11:45 · 1548 阅读 · 0 评论 -
sequence机制(数据激励的产生、配置方式)——UVM
一、关于sequence机制1.1 为什么使用sequence机制sequence机制的目的是为了将激励的产生功能从driver中剥离出来。这样在不同的测试用例中,就可以将不同的sequence设置成sequencer的main_phase的default_sequence,当sequencer执行到main_phase时,发现有default_sequence,那么它就启动sequence。这样就可以在不改变driver的情况下完成不同的激励驱动。1.2 如何理解sequenceuvm_seq原创 2021-12-30 23:50:09 · 2902 阅读 · 0 评论 -
第一次使用uvm相关环境设置以及test_case的启动——UVM
一、TB中需要改动的地方//1、导入uvm库文件import uvm_pkg::*;`include "uvm_macros.svh"//2、与sv中不一样的地方是他不会由new()的过程了initial begin run_test();end//3、生成fsdb波形文件initial begin $fsdbDumpfile("sim.fsdb");//生成波形文件 $fsdbDumpvars(0,top_tb,"+all");//确定将top_tb下面的所有信号都进行dump原创 2021-12-28 22:29:45 · 4359 阅读 · 0 评论 -
工厂机制(factory)-UVM
一uvm_do的作用原创 2021-12-25 22:48:44 · 1345 阅读 · 0 评论 -
UVM基本介绍(UVM class hierarchy、验证平台、树状图)
一、为什么使用UVM随着芯片的功能逐渐增多以及愈发难以理解,通过仿真器的波形去检查验证设计变得越来越困难了。为了缩短和简化验证时间,我们需要标准化验证平台。由于RTL代码是使用verilog语言,但是验证没有标准化,不能够重复利用。UVM能够提供验证平台标准化,这里是我们会使用UVM的原因;但是UVM的什么方面能够提高它的复用性呢?各个模块的验证环境是独立封装的,对外不需要保留数据端口,因此便于环境的进一步集成复用。独立封装:独立封装可以专业点的叫法:自闭性。它是指单元组件只能可以成为独立行为,不原创 2021-12-21 21:30:10 · 2268 阅读 · 0 评论