这是寄存器模型类中唯一派生自uvm_component的类,我们的寄存器模式需要实时,以最接近的方式知道DUT中寄存器的变化,uvm_reg_predictor就是为这个而生的. // TITLE: Explicit Register Predictor //------------------------------------------------------------------------------ // // The <uvm_reg_predictor> class defi…
保存寄存器的值 观察DUT寄存器值的变化. //------------------------------------------------------------------------------ // TITLE: Explicit Register Predictor //------------------------------------------------------------------------------ // // The <uvm_reg_predictor…
对于一个复杂设计,寄存器模型要能够模拟任意数量的寄存器域操作.UVM提供标准的基类库,UVM的寄存器模型来自于继承自VMM的RAL(Register Abstract Layer),现在可以先将寄存器模型进行XML建模,再通过脚本工具直接生产寄存器模型.首先来看看uvm_reg_model的代码,该文件用来保存Register Layer的全局变量和文件include. //-------------------------------------------------------------…
0. 引言 在UVM支持的寄存器操作中,有get.update.mirror.write等等一些方法,在这里整理一下他们的用法. 寄存器模型中的寄存器值应该与DUT保持同步,但是由于DUT的值是实时更新的,所以寄存器模型并不能实时知道这种更新,在寄存器模型中专门有个值来尽可能与DUT中寄存器的值保持一致,叫镜像值(mirrorred value).寄存器模型中还有一个值叫期望值(respected value),这个值保存我们希望写入寄存器的值.比如希望向DUT某个寄存器写入'h1,用set函数…
当你完成寄存器模型的时候,你就会想到给后来的人一个接口,给他更多的扩展,让他做更多的事,一般而言,只有做VIP时,会想到做callbacks. typedef class uvm_reg; typedef class uvm_mem; typedef class uvm_reg_backdoor; //------------------------------------------------------------------------------ // Title: Register…
这是寄存器模型的顶层 //------------------------------------------------------------------------ // Class: uvm_reg_block // // Block abstraction base class // // A block represents a design hierarchy. It can contain registers, // register files, memories and su…
寄存器模型 uvm_reg_sequence是UVM自带所有register sequence 的基类. 该类包含model, adapter, reg_seqr(uvm_sequencer). 感觉寄存器模型是个小的UVM系统.有自己uvm_reg_item, uvm_reg_sequence,reg_seqr, uvm_reg_adapter 是用来将寄存器的transaction 和 physical bus transaction之间的转化 //---------------------…
uvm_reg_item 扩展自uvm_sequence_item,也就说寄存器模型定义了transaction item. adapter 的作用是把这uvm_reg_item转换成uvm_sequence_item,再经由uvm_sequencer发送个uvm_driver,最终在总线上传输. //------------------------------------------------------------------------------ // Title: Generic R…
文件: src/marcos/uvm_reg_defines 类: 无 该文件是寄存器模型src/reg/* 文件对于的宏文件,主要定义了寄存器地址位宽,寄存器数据位宽,字节的大小.计算机从最初的8,发展到16bit(过度阶段), 到32bit, 目前的主流是64bit(AMD 烧起来64位计算机的这把火). //------------------------ // File: Register Defines //------------------------ // Macro: `UVM…
当我们对寄存器register, 存储器memory, 都进行了建模,是时候对FIFO进行建模了 uvm_reg_fifo毫无旁贷底承担起了这个责任,包括:set, get, update, read, write, 等等函数. //------------------------------------------------------------------------------ // Class: uvm_reg_fifo // // This special register mod…
有了uvm_reg_field, uvm_reg, uvm_block, 也许我们需要跟大的uvm_file,这就是传说中的寄存器堆. // // CLASS: uvm_reg_file // Register file abstraction base class // // A register file is a collection of register files and registers // used to create regular repeated structures.…
有了存储器模型,再来看看存储器的管理 //------------------------------------------------------------------------------ // // Title: Memory Allocation Manager // // Manages the exclusive allocation of consecutive memory locations // called ~regions~. // The regions can…
看完了寄存器,再来看看存储器: //------------------------------------------------------------------------------ // CLASS: uvm_mem //------------------------------------------------------------------------------ // Memory abstraction base class // // A memory is a c…
寄存器有前门和后门两种访问方式,这儿只看后门访问方式 //------------------------------------------------------------------------------ // Class: uvm_reg_backdoor // // Base class for user-defined back-door register and memory access. // // This class can be extended by users t…
所有的寄存器都需要地址,都需要加入到地址列表中 //------------------------------------------------------------------------------ // // Class: uvm_reg_map // // :Address map abstraction class // // This class represents an address map. // An address map is a collection of re…
uvm_reg_field是最基本寄存器单元. typedef class uvm_reg_cbs; //----------------------------------------------------------------- // CLASS: uvm_reg_field // Field abstraction class // // A field represents a set of bits that behave consistently // as a single e…
uvm_reg_adapter 功能就是在uvm_reg_bus_op和总线操作之间的转换.主要包含两个函数reg2bus 和bus2reg. //------------------------------------------------------------------------------ // Title: Classes for Adapting Between Register and Bus Operations // // This section defines cla…
uvm_reg 是uvm_reg_field , 包含所有uvm_reg_field 所有的函数.…
转载:UVM RAL模型:用法和应用_寄存器 (sohu.com) 在系统设计中通常会面临两大挑战:缩小技术节点的规模和上市时间(TTM,Time to Market).为了适应激烈的市场竞争,大多数系统都是以通用方式设计的,这意味着同一设计可以通过不同的配置实现不同的应用方式.配置数量越多,设计中的寄存器数量越多.最重要的是,由于当前市场对数据存储的大量需求,存储大小也越来越大.为了访问和验证大量寄存器和巨大的存储,需要一些创新的方法.因此,UVM提供了用于寄存器管理及访问的基类库,称为UVM…
第二篇:认识ISA(Instruction Set Architecture) 重要概念: [ISA] [IA-32]:Intel把32位x86架构的名称x86-32改称为IA-32,一种身边很常见的ISA [内存模型] [过程调用] •ISA(Instruction Set Architecture)位于软件和硬件之间 •硬件的功能通过ISA提供出来 •软件通过ISA规定的"指令"使用硬件 •ISA规定了: –可执行的指令的集合,包括指令格式.操作种类以及每种操作对应的操作数的相应规…
转载:浅谈可移植激励规范(PSS)复用策略_路科验证-CSDN博客 译者按 :当今硬件设计变得愈加复杂,如何创建出足够的测试来保证设计的正确性是每个硬件工程师需要面对的问题.Accellera的可移植激励测试规范(PSS.又称便携激励标准)[1]旨在希望能够提供一个独立的测试来源,从而实现跨层级的验证复用,即无论是IP级别.子系统.还是SoC级都使用同样的测试来源,他们也希望提供一系列功能来解决不同级别对于验证测试的不同要求,从而达到真正意义上的复用.然而,即使是像Java和C++这样拥有强大的…
对SSE的学习总算迈出了第一步,用2天时间对双线性插值的代码进行了优化,现将实现的过程梳理以下,算是对这段学习的一个总结. 1. 什么是SSE 说到SSE,首先要弄清楚的一个概念是SIMD(单指令多数据流,Single Instruction Multiple Data),是一种数据并行技术,能够在一条指令中同时对多个数据执行运算操作,增加处理器的数据吞吐量.SIMD特别的适用于多媒体应用等数据密集型运算. 1.1 历史 1996年Intel首先推出了支持MMX的Pentium处理器,极大地提高…
在现代IC设计流程中,当设计人员根据设计规格说明书完成RTL代码之后,验证人员开始验证这些代码(通常称其为DUT,Design Under Test).验证工作主要保证从设计规格说明书到RTL转变的正确性,它包括但不限于以下几点: DUT的行为表现是否与设计规格说明书中的要求一致 DUT是否实现了设计规格说明书中的所有功能 DUT对于异常状况的反应是否与设计规格说明书中的一致 DUT是否足够稳健,能够从异常状态恢复到正常的工作模式 图1 验证发现DUT中的bug 随着芯片规模的增大,验证占整个芯…
1. 类: 面向对象基础传统的面向对象编程与systemverilog类的特点,类的定义,成员与方法,构造函数,对象的复制和深/浅拷贝,父类/子类关系,类的继承,作用域的规则,对象的句柄以及赋值,方法的扩展和重写,local/protected关键字,虚基类,虚方法,虚接口. 2. UVM基础 :UVM的发展历史,可配置的测试组件,类库结构,UVM核心基类的介绍,include/macro,UVM交易(data),基本测试组件 (testbench components),组件的phase结构,…
1 FPGA设计过程中所遇到的路径有输入到触发器,触发器到触发器,触发器到输出,例如以下图所看到的: 这些路径与输入延时输出延时,建立和保持时序有关. 2. 应用背景 静态时序分析简称STA,它是一种穷尽的分析方法.它依照同步电路设计的要求.依据电路网表的拓扑结构,计算并检查电路中每个DFF(触发器)的建立和保持时间以及其它基于路径的时延要求是否满足. STA作为FPGA设计的主要验证手段之中的一个,不须要设计者编写測试向量,由软件自己主动完毕分析,验证时间大大缩短,測试覆盖率可达100%. 静…
原文链接为:http://www.chinaunix.net/old_jh/23/483510.html 保护方式的体系结构 主要问题:          保护方式的寄存器模型          保护方式的描述符与页表项          保护方式的存储器管理与地址转换          多任务机制与保护实现          虚拟 8086 模式 一.保护方式的寄存器模型   新增四个寄存器 (指针 -----  指向内存中的特殊的数据表):  全局描述符表寄存器 GDTR  局部描述符表寄存…
UVM的寄存器模型,对一个寄存器bit中有两种数值,mirror值,尽可能的反映DUT中寄存器的值.expected值,尽可能的反映用户期望的值. 几种常用的操作: read/write:可以前门访问也可以后门访问,如果在env的顶层定义过uvm_auto_predict(1),则UVM会在这两个操作后自动调用do_predict函数 来更新寄存器模型中的mirror值. peek/poke:只用于后门访问,而且完全不管硬件的行为,如向只读寄存器写数据,仍可以写入.应用很少.会自己更新mirro…
UVM中的regmodel继承自VMM的RAL(Register Abstract Layer),现在可以先将寄存器模型进行XML建模,再通过Synopsys 家的工具ralgen来直接生成regmodel,提供后门访问,十分方便. 寄存器模型建模: 1)定义一个寄存器,如下;也可以在该class中定义covergroup,sample的function等.在以后的component中在采样. class  reg_invert  extends uvm_reg; rand  uvm_reg_f…
计算机组成 3 指令系统体系结构 3.2 x86体系结构 X86是商业上最为成功,影响力最大的一种体系结构.但从技术的角度看,它又存在着很多的问题,那我们就来一起分析X86这种体系结构的特点. 要探讨x86体系结构,我们就得从8086开始说起.8086是英特尔在1978年推出的一款16位的微处理器. 它内部的通用寄存器为16位,对外有16根数据线和20根地址线,因此可以访问的存储单元数量为2的20次方,也就是1MByte.而CPU发到存储器的地址,我们称为物理地址,8086的物理地址采用了段加偏…
原文:<A trip through the Graphics Pipeline 2011> 翻译:往昔之剑   转载请注明出处   还没那么快   在上一篇,讲述了渲染命令在被GPU处理前,经历的各种阶段.简而言之,比你想像的要复杂.接下来,我将讲述提过的命令处理器(command processor),最终都对command buffer做了哪些事情.啥?哪提过这个了——骗你的- -.这篇文章确实是第一次提到命令处理器,但是记住,所有command buffer都经过内存或系统内存来访问P…