自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

转载 亚稳态发生原因

https://blog.youkuaiyun.com/bleauchat/article/details/85291957应用背景亚稳态发生原因在FPGA系统中,如果数据传输中不满足触发器的Tsu和Th,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,而不是等于数据输入端D的值,这段时间称为决断时间(resolution time)。经过re

2021-03-18 19:16:38 444

原创 APB VIP

APB VIP的开发(含APB 接口断言)APB总线协议详解APB 信号列表APB 状态机读操作(重要)读操作(重要)主要的开发阶段**阶段1——定义APB**阶段2——VIP基本搭建APB VIP覆盖率分析APB 接口断言检查APB接口断言覆盖率APB总线协议详解APB 信号列表由上表可以看出,APB信号主要有系统信号(PCLK、PRESETn)、地址信号(PADDR[31:0])、方向信号(PWRITE)、数据信号(WDATA[31:0]、PRDATA[31:0])和传输阶段控制信号(PSELx

2021-03-06 15:54:25 4243 1

原创 SV 3

SV 实战三 激励发生器channel initiatorRegister initiatorFormatter responder监测器(Monitor)比较器(checker)测试功能点提取代码实现chnl_pkgtbreg_pkgfmt_pkgmcdf_pkg(重点)`mcdf_refmod`类`mcdf_env`类`mcdf_checker`类`mcdf_coverage`类寄存器读写测试寄存器稳定性测试数据通道开关测试优先级测试发包长度测试下行从端低带宽测试sample采样test第一,验证环境

2021-03-06 10:58:46 2329

原创 实战2

实战二回顾优化随机约束更加灵活的测试控制测试平台的结构完整代码实现回顾简单回顾下SV1。验证环境按照隔离的观念,应该分为硬件DUT,软件验证环境,和处于信号媒介的接口interface。在module tb 中,有输入输出端口信号的dut;chnl_intf 接口将DUT与要验证的组件MCDT连接;chnl_pkg 里包含 agent ,agent里封装了产出数据的generator和发送数据的initiator。这么层层封装在test中只需调用agent run 就可牵一发而动全身。优化随

2021-02-26 15:25:31 928

原创 SVA 断言笔记

SVA 断言一、断言介绍二、并发断言序列sequence运算符延迟运算符连续重复运算符非连续跟随重复符非连续(无所谓跟随)重复操作符and 运算符intersect运算符within运算符throughout运算符first_match三、sequence序列采样函数$rose$fell$change$stable$past其他会用到的内建函数四、并发断言属性property蕴含算子disable iff 与not用法参考简单而言就是检查某一行为与我们的预期是否相符,如果相符则断言成功否则断言失败。举个栗

2021-02-25 16:38:58 5585 3

转载 SV 覆盖率验证

覆盖率验证代码覆盖率功能覆盖率覆盖组——covergroup覆盖点——coverpoint交叉覆盖率——cross代码覆盖率行覆盖率(line coverage):记录程序的各行代码被执行的情况。条件覆盖率(condition coverage):记录各个条件中的逻辑操作数被覆盖的情况。跳转覆盖率(toggle coverage):记录单bit信号变量的值为0/1跳转情况,如从0到1,或者从1到0的跳转。分支覆盖率(branch coverage):又称路径覆盖率(path coverage),

2021-01-07 17:11:41 3861

原创 SV接口-interface

interface接口概述接口的使用方式绿皮书代码采样和数据驱动总结接口概述1.接口可以用作设计,也可以用作验证2.与module的使用性质很像,可以定义端口,也可以定义双向信号;可以使用initial和always,也可以定义function和task。3.TB和DUT是相互独立的,通过interface连接,下图的红线。4.在interface的端口列表中只需要定义时钟、复位等公共信号,或者不定义任何端口信号。5.interface中可以包含多个modport, 定义interface的不同

2021-01-03 21:31:39 5691

原创 SV实战(一)

MCDT实战设计描述代码实现1代码实现2接口的使用仿真结束类的例化和类的成员包的定义和类的继承完整代码实现及结构框图设计描述​ 接下来的实战练习都是针对硬件设计MCDF进行的, 在这里介绍一下它的结构、功能、寄存器和时序。来源《芯片验证漫游指南》。该设计我们称之为多通道数据整形器(MCDF, multi-channel data formatter) , 它可以将上行(uplink) 多个通道数据经过内部的FIFO,最终以数据包(data packet) 的形式送出。由于上行数据和下行数据的接口协议

2020-12-26 22:17:04 4631 1

原创 IIC 通信协议

一、IIC 通信协议介绍IC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。IIC数据传输速率有标准模式(100 kbps)、快速模式(400 kbps)和高速模式(3.4 Mbps),另外一些变种

2020-12-21 16:15:09 2492

转载 UART通信协议

文章目录一、UART通信介绍二、UART传输的步骤三、UART的优缺点一、UART通信介绍通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),也就是通常说的串口。一般主要有4条线,RX(数据接收)、TX(数据发送)、GND(地)、VCC(电源)。他是一种全双工通信(即可以在接收数据的同时发送数据)。还需要注意的一点是两个设备通过UART通信,那么A设备的RX应该与B设备的TX连接、A设备的TX与B设备的RX连接,这个很好理解A设备发送数据那么B设

2020-12-21 14:49:47 4258

转载 AHB总线

AHB总线一、 简介1.1 AHB总线的架构二、AHB总线(宏观构造)2.1.AHB总线组成2.2.AHB总线组成互连2.3.AHB操作概述2.4.AHB基本传输阶段三、AHB总线传输(时序)3.1.AHB信号描述(重要)3.2.基本AHB传输(重要)3.2.1零等待传输(no wait state transfer)3.2.2等待传输(transfers with wait states)3.2.3.多重传送(multiple transfer)—Pipeline3.3.AHB控制信号3.3.1.传送状态

2020-12-17 22:12:24 15143 3

原创 SPI 通信协议

SPI 通信协议一、串行通信 VS. 并行通信二、SPI 如何工作1.1.SPI信号列表1.2.SPI工作模式1.3.SPI特点——同步、串行、全双工、主从结构三、SPI数据传输步骤3.1.时钟极性CPOL与时钟相位CPHA3.2.时序图3.3. SPI数据传输步骤四、SPI总线的优点与缺点SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外设接口。SPI协议主要作为主控芯片去配置外围芯片的接口协议。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转

2020-12-17 16:21:37 1573 1

原创 UVM--寄存器访问方法

前/后访问寄存器访问方法1.1.前门访问1.2. 后门访问1.2.1.访问前的地址映射1.2.2.后门访问1.3.前/后门访问的比较寄存器访问方法在没有寄存器模型之前,只能启动 sequence 通过前门(FRONTDOOR)访问的方式来读取寄存器,局限较大,在 scoreboard(或者其他 component )中难以控制。而有了寄存器模型之后,scoreboard 只与寄存器模型打交道,无论是发送读的指令还是获取读操作的返回值,都可以由寄存器模型完成。有了寄存器模型后,可以在任何耗费时间的pha

2020-12-16 21:56:16 6339

转载 UVM- 寄存器模型 Register Model(八)

寄存器模型 Register Model一、RAL : Register Abstraction Layer二.UVM 寄存器模型的层次三、RAL模型创建并使用3.1.对每个寄存器进行定义并创建3.2.将寄存器放入register block容器中,并加入到对应的Address Map3.3.创建RAL适配器(adapter)3.4.验证环境中实例化RAL模型并建立连接3.5.编写RAL的测试序列3.6.显式或隐式的运行RAL序列3.7.显式或隐式执行镜像预测四、总结一、RAL : Register Ab

2020-12-16 21:04:52 15434 3

原创 UVM--同步通信息元件(七)

同步通信息元件一、uvm_event用法二、uvm_barrier用法三、uvm_callback用法SV中用来做线程间同步方法分别是semaphore、event和mailbox。然而在UVM中,同步的不再只局限于同一个对象中的各个线程,而是还有各个组件之间的同步问题。一旦发生同步的要求发生在各个组件之间,这就要求组件之间通过某种可以同步的方法来实现。而考虑到UVM各个组件的封闭性原则,我们并不推荐通过层次索引的形式在组件中来索引公共的event或者semaphore。UVM为了解决封闭性的问题,定义了

2020-12-15 22:16:47 819

原创 UVM——sequence机制(六)

sequence机制(下)一、sequence的启动方式细节二、常见sequence/item发送的方法和宏三、sequence的仲裁机制四、sequence对sequencer的占用或失效六、Sequence的层次化virtual_sequencevirtual sequencersequence机制(五)已经了解到sequencer与driver之间的传递sequence item的握手过程,同时也掌握了sequence与item之间的关系。接下来,我们需要就sequence挂载到sequencer上

2020-12-15 15:47:06 3845 1

原创 UVM——sequence机制(五)

sequence机制【上】一、sequence的执行流程二、sequence和item三、Sequence 和 Driver3.1.Driver有哪些操作3.2.Sequence有哪些操作3.3.使用get()和put()完成通信3.4.response机制:Driver->Sequence的反馈一、sequence的执行流程控制和产生一系列的激励,并通过sequencer将激励发送给driver的机制。如果按照交通道路的车流来打比方,sequence就是道路,sequence item是道路上行

2020-12-15 11:18:34 4498 1

转载 UVM-TLM通信机制(四)

UVM-TLM通信机制一、两对象与三端口1.1.两个通信对象:initiator、target1.2.三个通信端口:port、export、imp二、一对一传输2.1.单向传输——put( )和get( )操作传输2.2.transport( )操作传输2.3.跨层次传输——uvm_analysis_port三、一对多传输3.1.fifo模式3.2.分析端口——Analysis port(一对多传输、最常用)TLM(transaction level modeling)是一个基于事务(transactio

2020-12-08 17:14:19 1764

原创 UVM config机制(三)

UVM config机制一、uvm_config_db机制1.1.virtual interface的传递(重要)1.2.配置单一变量1.3.config object对象传递(重要)1.4. config 机制建议1.5. 其他配置方法一、uvm_config_db机制uvm_config_db在uvm验证环境中的应用(interface,config,sequencer),它的使用可以极大的方便我们对一些需要全局可见的变量或类的处理,让我们能够更容易的去管理验证环境中的一些组件,也在一定程度上方便了

2020-12-08 11:55:54 1592 2

原创 UVM世界观 (二)

UVM 基础一、factory 机制1、为什么需要工厂2、使用工厂模式的步骤2.1.、登记注册1.2. 实例化对象1.3. 覆盖override1.4. 检查覆盖是否完成—factory.print()二、phase机制三、UVM 世界四、UVM 仿真结束一、factory 机制1、为什么需要工厂工厂设计模式是一种典型的软件设计模式,UVM工厂的存在就是为了更方便地替换验证环境中的实例或者注册了的类型,同时工厂的注册机制也带来了配置的灵活性。这里的实例或者类型替代,在UVM中称作覆盖(overri

2020-12-07 22:40:54 1692 2

原创 UVM 基础入门(一)

UVM 基础入门一、框架框架一框架二框架三二、各组建关系三、uvm_object类类的预定义类的方法类的声明变量声明方法声明方法的实现一、框架框架一构成环境的组件都从uvm_component类继承而来,这是因为它们都从uvm_component类继承了phase机制,都会经历各个phase阶段。常见组件如下:uvm_sequencer:所有的sequencer都要派生自uvm_sequencer。      sequencer功能:组织管理sequence,driver申请数据时,它就把s

2020-12-07 20:27:12 21459 1

原创 SystemVerilog 类和对象(三)

类和对象一、类的基本概念二、对象的创建和销毁三、对象句柄的深拷贝 与 浅拷贝四、类的特性4.1.封装4.2.继承4.3.多态包的使用一、类的基本概念类class:是一种用来进行数据抽象的工具,将数据和对数据的操作封装在一起,提供建立对象的模板,可以看做是一种数据结构。对象object:是所属类class的某一特定实体(也称实例)。句柄handle:指向对象的指针,即内存的基地址。属性property:类class的实体object中所包含的各种变量variable。方法method:操作变量的

2020-12-05 17:42:32 993 1

原创 SystemVerilog 数据类型(一)

变量类型四值变量: (0、1、x、z)四种状态四值逻辑类型:integer、reg、logic、reg、net-type(如wire、tri);SV并不太常用变量类型是wire(assign语句中)还是reg(initial和always语句中)。logic用的比较多。可以被连续赋值语句驱动,可用在assign、initial、always语句中。四值变量与二值变量的特性:四值变量的默认初始值为x,二值变量的默认初始值为0,在initial中可以直接使用~clk变成1,但是如果是logi

2020-12-05 17:20:05 5234

原创 SystemVerilog随机化(四)

随机化一、随机变量类型1.1.rand与randc随机变量1.2.constraint指定约束范围二、随机约束操作2.1.声明约束(>、<、=、>=、<=)2.2.范围约束(inside)2.3.权重分布约束(dist)2.4.条件约束(if-else; ->)2.5.双向约束2.6.内嵌约束randomize ( )with{ }2.7.solve…before约束三、 随机化函数3.1.关闭或打开随机变量与约束四、数组的约束4.1.动态数组的随机化4.2. 产生唯一元素的数

2020-12-05 16:39:13 2644

原创 SystemVerilog 线程与线程间的通讯(六)

线程与线程间的通讯一、并发线程1.1.并发线程1.2.wait fork 与 disable fork二、线程通信机制2.1.事件event2.2.旗语semaphore2.3.邮箱mailbox一、并发线程1.1.并发线程1.2.wait fork 与 disable forkwait fork:等待所有fork进程全部执行完。disable fork:停止fork…join_any中所有未来得及执行的并发子线程。在使用fork…jion_any或者fork…join_non

2020-12-05 16:21:58 925

原创 Ubuntu 16.04 CUDA_10.0及cuDNN的安装与卸载

(cuda版本:cuda_10.0.130_410.48_linux.run 补丁:cuda_10.0.130.1_linux.runcudnn版本:cudnn-10.0-linux-x64-v7.3.1.20.tgz)cuda下载cuda官网下载(https://developer.nvidia.com/cuda-10.0-download-archive) :选择runfile安装方式下面还有个补丁3.3兆一块下了安装#当前目录下打开终端输入sudo chmod +x ./cuda_1

2020-11-08 19:44:45 618

原创 github代理报错

解决拉取github仓库报错“gnutls_handshake() failed”问题gnutls_handshake() failed: The TLS connection was non-properly terminated.经过仔细排查,发现还是由于代理设置有错,为http错误配置了https的代理,导致出错。正确的为git配置代理的方法如下:git config --global http.https://github.com.proxy http://127.0.0.1:7890git

2020-11-08 18:57:03 1025

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除