
路科V0
路科验证V0 学习
https://www.bilibili.com/video/BV1k7411H7Jo?p=1
对路科V0的学习,从0开始
KylinAnAn
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
V0 第18节 随机变量
1.概述随着设计变得越来越大,要产生一个完整的激励来测试设计的功能也变得越来越困难定向激励的测试方法已经无法满足检查功能完整性的要求SOC的集成度提高带来的模块之间交互的复杂度也是指数攀升,这就使得验证工程师无法预测接下来用户使用过程中会发生什么样的状态随机—约束,两个词组合在一起就构成了目前动态仿真验证的主流方法随机约束测试(CRT, Constrained-Random Test)即能够产生你感兴趣的,你想不到的测试向量,通过回归测试、替换随机种子的方式来提高单位测试用例的覆盖率收集效率随原创 2021-11-25 07:13:31 · 351 阅读 · 0 评论 -
V0 第17节 包的使用
1. 包的定义在大型的验证项目中,很容易出现模块重名的情况对于重名的硬件模块我们可以将它们置入到不同的编译库中对于重名的软件类、方法等,我们可以将它们置入到不同的包中我们可能使用不同的验证IP,我们也无法预测这些类名是否可能重名通过包package可以将关联的类和方法并入到同一个逻辑集合中为了使得可以在多个模块(硬件)或者类(软件)之间共享用户定义的类型,SV添加了包package用户自定义的类型譬如类,方法、变量、结构体、枚举等都可以在package…endpackage中定义2. 导原创 2021-11-22 21:43:38 · 465 阅读 · 0 评论 -
V0 第16节 类的继承
1.继承和子类定义过的类Packet,可以进一步扩展构成一个新的类LinkedPacket通过extends,LinkedPacket继承于其父类Packet,包括继承其所有的成员(变量/方法)class LinkedPacket extends Packet; LinkedPacket next; function LinkedPacket get_next(); get_next = next; endfunctionendclass2.成员覆盖子类可以继承父类的成员,所以原创 2021-11-16 23:05:49 · 252 阅读 · 0 评论 -
V0 第15节 对象拷贝
1. 句柄的传递在区分了类(抽象)和对象(具体)之后,初学者还需要区分对象(存储空间)和句柄(空间指针),也就是说,在创建了对象之后,该对象的空间位置不会更改,而指向该空间的句柄可以有多个2. 赋值和拷贝声明变量和创建对象是两个过程,也可以一步完成Packet p1;p1 = new;如果将p1赋值给另外一个变量p2,那么依然只有一个对象,只是指向这个对象的句柄有p1和p23.类的引用和实例在SV中,对于对象的拷贝,只能针对对象中的成员变量如果想要对对象中的句柄指向的对象也做拷贝原创 2021-11-15 22:49:21 · 160 阅读 · 0 评论 -
V0第14节 类的封装
1. 类的概述类是一种可以包含数据和方法(function, task)的类型例如一个数据包,可能被定义为一个类,类中可以包含指令、地址、队列ID、时间和数据等成员面向对象编程(OOP ,Object-Oriented Programming)使用户能够创建复杂的数据类型,并且将它们跟使用这些数据类型的程序紧密地结合在一起用户可以在更加抽象的层次建立测试平台和系统级模型,通过调用函数来执行一个动作而不是简单地改变信号的电平在验证环境中,包括stimulator,monitor,checker以及原创 2021-10-23 09:38:21 · 111 阅读 · 0 评论 -
V0第 第13节 数组类型
1.动态数组与之前的定长数组相比,SV提供了可以重新确定大小的动态数组动态数组在声明时需要使用[],这表示不会在编译时为其制定尺寸,而是在仿真运行时来确定动态数组一开始为空,需要使用new[]来为其分配空间int dyn[],d2[];//声明动态数组initial begin dyn = new[5]; //分配5个元素 foreach (dyn[j]) dyn[j] = j; //对元素进行初始化end内建方法size()可以返回动态数组的大小内建方法delete()可原创 2021-10-23 09:08:51 · 144 阅读 · 0 评论 -
V0 第12节 数组操作
1. 非组合型unpacked对于Verilog,数组经常会被用来做数据存储,例如reg[15:0] RAM [0:4095]SV 将Verilog这种声明数组的方式称为非组合型声明,即数组中的成员之间存储数据都是互相独立的Verilog也不会指定软件去如何存储数组中的成员wire[7:0] table[3:0]SV保留了非组合型的数组声明方式,并且扩展了允许的类型,包括event,logic,bit,byte,int,longint,shortreal和real类型SV也保留了Verilog索原创 2021-10-10 22:41:16 · 300 阅读 · 0 评论 -
V0 第11节 验证环境组件
1. 激励发生器Simulator (激励发生器)是验证环境的重要部件,在一些场合中,它被称为driver(驱动器)、BFM(bus function model,总线功能模型),behavioral(行为模型) 或者 generator(发生器)Simulator的主要职责是模拟与DUT相邻设计的接口协议,只需要关注如何模拟接口信号,使其能够以真实的接口协议来发送激励给DUTSimulator 不应该违反协议,但不拘束于真实的硬件行为,还可以给出丰富的只要协议允许的激励场景比真实硬件行为更丰富的原创 2021-09-28 23:52:14 · 561 阅读 · 0 评论 -
V0 第10节 硬件设计描述
1. MCDF 简介遵循硬件设计描述的方式,介绍它的结构、功能、寄存器和时序熟悉硬件描述的方式,也是进入验证领域的一项基本技能多通道数据整形器(MCDF, multi-channel data formatter),它可以将上行uplink多个通道数据经过内部的FIFO,最终以数据包data packet的形式送出上行数据和下行数据的接口协议不同多通道数据整形器也有寄存器的读写接口,可以支持更多的控制功能2. MCDF接口描述系统信号接口CLK(0):时钟信号RSTN(0):复位信号原创 2021-09-27 22:48:46 · 349 阅读 · 0 评论 -
V0 第9节 验证环境结构
1. 验证环境结构测试平台(testbench)是整个验证系统的总称它包括验证结构中的各个组件、组件之间的连接关系、测试平台的配置和控制从系统的意义来讲,它还包括编译仿真的流程、结果分析报告和覆盖率量化我们主要关注验证平台的结构和组件部分,他们可以产生设计所需要的各种输入,也会在此基础上进行设计功能的检查2. 测试平台结构图各个组件之间是相互独立的验证组件与设计之间需要连接验证组件之间也需要进行通信验证环境也需要时钟和复位信号的驱动3. 验证语言应用趋势SystemVeri原创 2021-09-26 22:54:41 · 449 阅读 · 0 评论 -
V0 第8节 接口
1. 接口Verilog 是通过模块之间进行端口连接来完成模块间通信的对于大型设计,通过端口进行连接会让硬件集成变得容易出错SV在Verilog语言基础上扩展了接口interface接口提供了一种新型的面向抽象级建模的方式接口的使用可以简化建模和验证大型复杂的设计对于以上的连接,按照Verilog的方式,我们将按照以下步骤进行对每一个子模块进行端口声明在上层环境,需要声明非常多的线网用来在各个模块之间进行连接对于标准的总线端口也不得不在多个模块重复声明相应的通信原创 2021-09-25 23:14:38 · 182 阅读 · 0 评论 -
V0第7节 字符串类型
1. 字符串类型Verilog语言对于字符串的处理手段非常有限SV引入了string 类型用来容纳可变长度的字符串字符串类型变量的存储单元为byte类型字符串类型变量长度为N时,其字符成员索引值为从0到N-1不同于C语言,字符串结尾没有空字符 “\0"字符串的内存是动态分配的,用户无需担心内存空间管理2. 字符串内建方法str.len();返回字符串的长度str.putc(i, c);将第i个字符替换为字符c,等同于str[i] = cstr.getc(i); 返回第i个字符st原创 2021-09-23 23:32:17 · 287 阅读 · 0 评论 -
V0 第 6 节自定义类型
1.自定义类型通过用户自定义类型,以往Verilog的代码将可以通过更少的代码来表示更多的功能用户自定义类型使得代码的可读性更好通过typedef来创建用户自定义类型通过enum来创建枚举类型通过struct来创建结构体类型Verilog语言无法提供方便的特性来使得用户扩展变量和线网类型SV则提供了特性使得用户可以构建更高抽象层的数据类型定义了新的数据类型,就可以利用该类型声明变量1.1 typedef创建用户自定义类型例:typedef unsigned int uint;ui原创 2021-09-22 23:09:23 · 141 阅读 · 0 评论 -
V0 第5节 数据类型
1. Verilog的数据类型Verilog语言提供两种基本的数据类型, 变量类型variables和线网类型nets,这两种类型都是四值逻辑,即可表示0、1、X和Z值例如reg,integer和time等变量类型可以用来存储组合逻辑或者时序逻辑的值例如wire,wor,wand和其它线网类型用来连接硬件模块,以及提供特殊的线网驱动解决方案1.1 Verilog线网类型线网用于建模硬件设计中的连接线路,而线网的值由线网驱动器所决定驱动器可以是门或模块的实例,或者连续赋值的输出1.2 V原创 2021-09-20 10:33:46 · 336 阅读 · 0 评论 -
V0 第4节 SV及UVM概述
1. SystemVerilog发展历史SV 是IEEE 1364-2005 Verilog标准的扩展此扩展包含了用来实现可综合设计的设计语言特性,也包含了用来对大型设计做验证的验证语言特性SV是用来建议一种新的硬件描述和验证语言(HDVL,Hardware Description and Verification Language)SV通过一种统一的语言来帮助工程师对大型复杂硬件系统进行建模,并且对其功能进行验证2. SV标准的诞生SV标准由Accellera标准组织牵头发民Accel原创 2021-09-16 23:34:28 · 2395 阅读 · 0 评论 -
V0 第3节 验证的周期
1. 验证周期功能验证有着一整套完备的流程,从硬件系统定义到硅后测试部分一个验证团队会基于时间差同时进行多个项目,多个项目之间存在着借鉴、更新的关系,验证的环境和复用性也是在不断提高每一个项目在进行瀑布式的开发时,验证团队也会在细分的流程当中完成任务,同时在展开下一项任务之前会进行一些重要检查点(checkpoint)的回顾工作由于验证人员会不断地在新项目中完善验证环境,验证的周期也是不断往复、螺旋上升的过程验证周期的起始点是从创建验证计划开始的,而验证计划需要参照系统工程师给出的功能详述文档原创 2021-09-16 22:55:20 · 428 阅读 · 0 评论 -
V0 第2节 验证的任务和目标
1.验证的目标验证的任务可能是模块级(module level)、子系统级(subsystem level) 或者系统级 (chip level)验证的目标:按时、保质、低耗 完成目标硬件设计的验证工作功能验证是唯一可以低成本在硅前流片将上述目标 按时、保持、低耗 达成的方法衡量的两个标准1)时间2)缺陷数量2.缺陷增长曲线通过缺陷数量在时间线上的记录,可以绘制出缺陷数量的增长曲线缺陷数量的增长曲线是逐渐趋于缓慢的功能验证需要保证的就是将缺陷数量的增长保证在硅前阶段,不应该让其发生原创 2021-09-15 23:38:55 · 462 阅读 · 0 评论 -
V0 第1节 什么是验证
1. 什么是验证是用来证明设计功能正确,并且符合设计功能描述的流程工作量主要集中在设计流片以前,而且在前端设计中占据70%的我作量是需要在流片之前确认产品的功能和系统是否符合规则和要求,看有没有“把事情做对"2. 什么是测试平台对DUT创建测试序列 激励发生器观察DUT的输入输出 检测器对DUT的输出数据与预期数据进行比对 比较器时钟/重置装置报告检查结果3. 芯片开发流程从市场人员与客户沟通开始系统设计人员按照功能划分为各个子系统子系统被进一步划分为功能模块,并由设计团原创 2021-09-15 23:12:35 · 214 阅读 · 0 评论 -
跟着路桑学SystemVerilog
1. 验证技术分类1. 动态验证技术动态验证技术:依靠仿真器(simulator)来对数字电路进行激励发送和结果检查。常用的,成本低的验证技术代码覆盖率功能覆盖率断言随机约束验证语言主要学习 Verilog 、SystemVerilog 、C/C++UVM (验证方法学)2.静态验证技术静态验证技术又可以分为人工形式验证技术和自动形式验证技术人工形式验证技术:property check 通过断言结合形式验证工具对设计功能进行穷举检查,从数学意义上判断设计的正确性自动形式验证:包原创 2021-09-14 23:45:17 · 359 阅读 · 0 评论