![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
SV
文章平均质量分 83
SystemVerilog
Num One
IC Verifier
展开
-
初识DFT
一、什么是DFT? DFT是Design For Test的缩写。 是指在芯片设计过程中引入测试逻辑,并利用这部分测试逻辑完成测试向量的自动生产,从而达到快速有效的芯片测试的目的。DFT的工作包括: – 在项目初期规划DFT架构; – 在RTL级别设计测试电路; – 在验证阶段验证测试电路; – 在synthesis阶段实现测试逻辑的插入; – 在测试阶段提供测试向量二、DFT的工作对象是什么? DFT需要处理基本上芯片所有逻辑的测试。他们包含: – 片上存储器 –原创 2021-02-18 19:47:02 · 9068 阅读 · 2 评论 -
那些年,我们一起踩过的后仿真的坑
转载自芯司机微信公众号一、简介 后仿真,是对经过综合/布局布线后的门级网表进行仿真,与前仿真对rtl代码进行仿真,找出功能上的缺陷相比,后仿真主要检查时序上的问题。 相比较理想状况下的rtl仿真(功能仿真、前仿真),后仿消耗时间更多,在可读性差的cell里穿梭行走,debug的难度大大增强了,而一般我们在做后仿的时候,往往也意味着离tapeout的时间很急迫了。 那么,时间紧,任务重的情况下,后仿经验的积累就尤为重要了,除了打怪升级多练手外,我们还可以从彼此的踩过的坑中快速攥经验值。二、没有原创 2021-02-18 19:03:15 · 3105 阅读 · 0 评论 -
网表仿真基础知识
一、意义网表是逻辑/电路设计转化为物理实现的工作产品。按照芯片后端流程,主要分为综合网表,DFT网表,PR网表,其中PR网表是包含SDF的最终版网表。网表验证一般有三种形式,分别是仿真验证、形式验证和静态时序分析STA。其中网表仿真,尤其是PR网表仿真,时间紧,资源消耗大,debug困难,因此费时费力,且验证不全面。网表仿真的目的有以下几点:第一、功能仿真不包含的信息,如DFT插入的扫描链,或者基于工艺单元的功耗评估以及时序信息等。第二、其它方法无法处理的内容,如跨时钟域cdc接口或多周期multi-原创 2021-02-09 23:02:57 · 8204 阅读 · 0 评论 -
verilog 时延相关语法
《Verilog HDL与数字系统设计简明教程》吴戈 人民邮电出版社 p34~351、时延的概念连续赋值语句中经常出现时延,时延就是给出一个值,程序执行到此处就会暂停下来,等待这个值规定的若干个单位时间(单位时间的大小是默认值或由预处理指令timescale定义),然后再继续执行后面的语句。定义时延的形式是使用符号“#”,如#3就表示在此等待3个单位时间。时延可以单独作为一句,如“#3;”就是程序中的一条语句。时延也可以内嵌在连续赋值语句中,跟在关键词assign之后。如果在连续赋值语句中没有定义时延原创 2021-01-11 20:33:37 · 4862 阅读 · 2 评论 -
axi id
1.id的作用主要是用来乱序,对于写通道和读通道来说没有关联,即awid和arid并没有联系。2.对于加速器来说,不支持乱序,即id固定。可以直接在出口上矩阵前不连接,即不例化id。或者将id接死,直接赋0。待经过矩阵路由后,加位后的id也就固定了。3.对于awid和arid,其位宽可以根据需求设置为不同参数。在例化agent时,取最大的ID_WIDTH,然后在连接位宽较小的id时,直接高位赋0。.awid (0,awid); #例化或者定义多比特wire变量,进行连接。wire [2:0] aw原创 2020-12-15 19:48:29 · 4219 阅读 · 0 评论 -
sv的使用
1、force信号为x态force ta_en=1’bx,可以直接将某个信号force为差态。原创 2020-08-24 19:57:14 · 1917 阅读 · 0 评论 -
SystemVerilog验证 测试平台编写指南 第四章 连接设计和测试平台
验证一个设计需要经过几个步骤:生成输入激励,捕获输出相应,决定对错和衡量进度。要完成这个设计,首先第一步就是如何将DUT(Design Under Test)连接到测试平台。这一章的内容就来解决一下这个问题。4.1 将测试平台和设计分开测试平台的代码独立于设计的代码,设计者需要编写满足规范的代码,而验证工程师需要创建使得设计不满足设计规范的场景。使用模块来保存测试平台经常会引起驱动和采样时的时...原创 2019-07-27 23:30:13 · 1706 阅读 · 0 评论 -
SystemVerilog验证 测试平台编写指南 第三章 过程语句和子程序
SystemVerilog在任务task和函数function方面做了很多的改进,使其更加接近于C语言,从而使代码的编写变得更加容易,尤其是在处理参数传递上面。3.1 过程语句SystemVerilog从C和C++中引用了很多操作符和语句。下面就来简单介绍几点。1)for循环,在for循环中定义循环变量,它的作用范围仅限于循环内部,从而有助于避免一些代码漏洞。for (int i=0;i&...原创 2019-07-27 16:15:05 · 732 阅读 · 0 评论 -
SystemVerilog验证 测试平台编写指南 第二章 数据类型 下
2.6 链表SystemVerilog提供了链表数据结构,但是应该避免使用它,因为SystemVerilog提供的队列更加高效易用。2.7 数组的方法2.7.1 数组的缩减方法基本的数组缩减方法就是把一个数组缩减成一个值。最常用的方法就是求和sum,除此之外还有product(乘)and(与)or(或)xor(异或)等。在进行数组压缩的时候,应该特别重要的一点需要注意,那就是位宽的问题。...原创 2019-07-21 16:40:00 · 939 阅读 · 3 评论 -
SystemVerilog验证 测试平台编写指南 第二章 数据类型 上
2.1 内建数据类型通常,在Verilog中我们有两种常见的数据类型:变量和线网。他们各自有0、1、Z、X这四种状态。其中最为常见的应用也就是reg型和wire型。变量无符号的数:reg32比特的有符号数:integer64比特的无符号数或浮点数:time若干变量可以被一起存放在定宽数组里。所有的存储都是静态的,意味着所有的变量在整个仿真过程中都是存活的。线网wire线网通常用来...原创 2019-07-20 21:10:14 · 990 阅读 · 2 评论 -
SystemVerilog验证 测试平台编写指南 第六章 随机化 下
6.11 约束的技巧和技术6.11.1 使用变量的约束随机赋值时使用变量设定上限的约束。例6.33 使用变量设定上限的约束class bounds; rand int size; int max_size=100; constraint c_size { size inside {[1:max_size]}; }endclass通过改变变量max_size的值,可以改变随...原创 2019-07-14 11:05:12 · 567 阅读 · 0 评论 -
SystemVerilog验证 测试平台编写指南 第七章 线程以及线程间的通信
7.1 线程的使用Verilog:begin…end中的语句以顺序方式执行,fork…join中的语句则以并发方式执行。System Verilog:引入两种新的创建线程的方法——使用fork…join_none和fork…join_any语句。fork…join_none块在调用其块内语句时,父线程继续执行。fork…join_any块在调用其块内语句时,当第一个语句完成后,父线程才继续...原创 2019-07-14 16:07:44 · 471 阅读 · 0 评论 -
SystemVerilog验证 测试平台编写指南 第八章 OOP面向对象编程的高级技巧指南
8.1 继承为总线事务创建一个可以注入错误并且带有可变延时的复杂类。方法1:使用合成(composition),即在类中例化另一种类型的类。有时候很难将功能分成独立部分。如果使用合成,则需要为正确和错误事务分别创建不同的类,正确类的测试平台需要重写以处理错误类的对象。方法2:使用扩展类,当需要增加事务,而对现有的测试代码修改越少越好,例如增加错误注入功能。扩展类和类合成的区别:扩展类解决...原创 2019-07-17 00:27:46 · 854 阅读 · 0 评论 -
SystemVerilog验证 测试平台编写指南 第五章 面向对象编程基础
1、OOP术语a.类(class):包含变量和子程序(函数或者任务)的基本构建块。Verilog中与之对应的是模块(module)。b.对象(object):类的一个实例。在Verilog中,你需要实例化一个模块才能使用它。c.句柄(handle):指向对象的指针。在Verilog中,你通过实例名在模块外部引用信号和方法。一个OOP句柄就像一个对象的地址,但是它保存在一个只能指向单一数...原创 2019-07-10 23:18:18 · 1160 阅读 · 0 评论 -
SystemVerilog验证 测试平台编写指南 第九章 功能覆盖率
全面验证设计的唯一途径是采用受约束的随机测试方法(CRT),而功能覆盖率是用来衡量哪些设计特征已经被测试程序测试过的一个指标。如何衡量验证的进展?依靠完善的验证计划test plan和对应的功能覆盖率coverage。用验证计划和对应功能覆盖率的结果来指导验证的进展,这样才能站在更高的抽象层次上看待验证。根据功能覆盖率结果来思考如何提高功能覆盖率,并在功能覆盖率达标或者止步不前时思考验证计...原创 2019-07-19 00:30:19 · 3848 阅读 · 0 评论 -
SystemVerilog验证 测试平台编写指南 第十章 高级接口 未完
虚接口(virtual interface)是一个物理接口的句柄(handle)。 虚接口也成为参考接口(ref interface)。虚接口和对应的通用方法可以把设计和验证平台分隔开来,保证其不受设计改动的影响。当我们对一个设计引脚名字进行改动时,无须改动驱动这个接口的方法,而只需在例化该实物交易处理器的时候,给虚接口绑定对应连接的实体接口即可。以此来实现实物交易处理器的更大重用性。虚接口的...原创 2019-07-20 17:03:15 · 408 阅读 · 0 评论 -
SystemVerilog验证 测试平台编写指南 第十一章 完整的System Verilog测试平台
用System Verilog搭建完整的验证环境,核心在于运用回调函数和蓝图模式,可以说是callback机制和blueprint机制。在System Verilog基础上搭建完整的验证环境,则提供了Sequence机制、factory机制和callback机制三种。其中sequence机制和factory机制是System Verilog的blueprint机制的拓展。...原创 2019-07-20 17:22:46 · 1931 阅读 · 0 评论 -
SystemVerilog验证 测试平台编写指南 第一章 验证导论
作为一名验证工程师,你应该尽可能细致深入地去检验设计,并提取出所有可能的漏洞。在流片之前每发现一个漏洞就意味着最终到顾客手里就会少一个漏洞。System Verilog硬件验证语言(Hardware Verification Language,HVL),相比于硬件描述语言(Hardware Description Language,HDL),HVL具有以下典型的性质:(1)受约束的随机激励生成...原创 2019-07-20 20:03:59 · 2053 阅读 · 0 评论 -
SystemVerilog验证 测试平台编写指南 第六章 随机化 上
6.1 介绍采用受约束的随机测试法(CRT:constrained random test)自动产生测试集。CRT环境不仅需要产生激励,还需要通过参考模型、传输函数或其它方法来预测输出结果。CRT由两部分组成:使用随机的数据流为DUT产生输入的测试代码,以及伪随机数发生器(PRNG)的种子(seed)。6.2 什么需要随机化必须对DUT里的所有关键点都采用随机化的技术。随机化使控制路径里...原创 2019-07-14 09:44:41 · 2257 阅读 · 0 评论