【UVM项目实战】异步fifo—uvm项目结构以及uvm环境搭建
一、异步FIFO1.1 异步FIFO的定义异步时序设计指的是在设计中有两个或以上的时钟, 且时钟之间是同频不同相或不同频率的关系。而异步时序设计的关键就是把数据或控制信号正确地进行跨时钟域传输。一个异步 FIFO 一般由如下部分组成: Memory, 作为数据的存储器; 写逻辑部分,主要负责产生写信号和地址; 读逻辑部分,主要负责产生读信号和地址; 地址比较部分,主要负责产生 FIFO 空、满的标志。 跟普通的FIFO相比,异步FIFO实际上多了读写地址的跨时钟域同步的逻辑,以及两个时钟域中读写信号的比较逻辑。 1.2 亚稳态每一个触发器都有其规定的建立(setup)和保持(hold)时间参数, 在这个时间参数内, 输入信号在时钟的上升沿是不允许发生变的。...
【UVM学习笔记】UVM验证平台的运行—Phase以及objection
一、phase机制1.1 task phase与function phaseUVM中的phase,按照其是否消耗仿真时间的特性,可以分成两大类,一类是function phase,如build_phase、connect_phase等,这些phase都不耗费仿真时间,通过函数来实现;另外一类是task phase,如run_phase等,它们耗费仿真时间,通过任务来实现。灰色背景所示的是task phase,其他为function phase。 值得注意的是,task...
【UVM学习笔记】UVM中的“类”
一、UVM派生结构在上一篇博客讲述了UVM的结构,大家可以发现所有的结构分为两大类,一个是uvm_component,另一个是uvm_object。uvm_object是UVM中最基本的类,读者能想到的几乎所有的类都继承自uvm_object,包括uvm_component。uvm_component有两大特性是uvm_object所没有的,一是通过在new的时候指定parent参数来形成一种树形的组织结构,二是有phase的自动执行特点。下面是整个UVM类的派生图: 1.1...
【UVM学习笔记】更加灵活的UVM—通信
一、TLM是什么?TLM是Transaction Level Modeling(事务级建模)的缩写。所谓transaction...
【UVM学习笔记】UVM基础—一文告诉你UVM的组成部分
一、Driver驱动器这段代码是用 SystemVerilog 编写的一个基于 UVM(Universal Verification Methodology)的驱动器(driver)组件,名为 my_driver。它继承自 uvm_driver 类,用于在验证环境中驱动 DUT(Design Under Test,被测设计)的输入信号。下面我将逐步解释这段代码的结构和功能。 1.1 整体结构代码分为两个主要部分: 类定义部分:定义了 my_driver 类,包括构造函数和一个外部声明的任务(main_phase)。 任务实现部分:实现了 main_phase 任务,负责具体的信号驱动逻辑。 此外,代码使用 ifndef 和 define 宏来防止重复包含。 1.2...