IC_SystemVerilog
文章平均质量分 93
OnePlusZero
为天地立心,为生民立命,为往圣继绝学,为万世开太平
展开
-
Systemverilog 疑惑解答第二季(持续更新中)
inital语句块与final语句块有什么区别?inital语句块在仿真开始时执行,final语句块在仿真结束时执行;final语句块不能有delay,wait和non_blocking具有时许的语句。如何检查句柄是否存有对象?检查该对象是否初始化,在SV中,所有未初始化的对象句柄都具有特殊的null值。assert(obj == null)代码覆盖率与功能覆盖率有什么区别?代码覆盖率描述设计中代码执行的客观信息;功能覆盖率决定了设计已实现了多少功能。系统方法与内建方法有...原创 2020-05-28 21:57:03 · 831 阅读 · 0 评论 -
Systemverilog 疑惑解答第一季
`include与import的差别在哪里?SV常会用`include将多个文件"平铺"置于某个域中(scope),这个域可能是package/module/interface等,简单理解就是`include就是将对应文本的内容平铺到当前域的字段中;inport则是从包(package)中引用某些需要的数据类型,例如class/parameter/enum到当前域,以帮助编译器能够识别被引用的类型.在一些头文件(.svh)中,会有typedef class X,这是什么意思?首先这需要与常见 .原创 2020-05-10 09:20:39 · 2210 阅读 · 0 评论 -
verilog断言(SVA)语法
断言assertion被放在verilog设计中,方便在仿真时查看异常情况。当异常出现时,断言会报警。一般在数字电路设计中都要加入断言,断言占整个设计的比例应不少于30%。以下是断言的语法:1. SVA的插入位置:在一个.v文件中:module ABC (); rtl 代码; SVA断言;endmodule注意:不要将SVA写在enmodule外面。2....转载 2018-10-17 20:26:08 · 17633 阅读 · 3 评论 -
systemVerilog Assertion (SVA)断言语法
转载自:http://blog.sina.com.cn/s/blog_4c270c730101f6mw.html作者:白栎旸 断言assertion被放在verilog设计中,方便在仿真时查看异常情况。当异常出现时,断言会报警。一般在数字电路设计中都要加入断言,断言占整个设计的比例应不少于30%。以下是断言的语法:1. SVA的插入位置:在一个.v文件中: ...转载 2018-08-06 16:07:41 · 25661 阅读 · 0 评论 -
SV系统集成篇之一:包的意义
本文转自:http://www.eetop.cn/blog/html/28/1561828-2316833.html从上一篇《SV组件实现篇》来看,verifier梅、尤、娄和董四位验证师已经做完了模块验证,进而转向了验证环境的集成和验证环节。由于verifier董负责验证环境的持续集成,路桑跟他做了一次交谈,问了问这位新手面临哪些困境。路桑: 董亲,大家的模块验证环境都已经准备好了是...转载 2018-10-27 15:51:13 · 2484 阅读 · 0 评论 -
SV系统集成篇之二:验证环境的组装
本文转自:http://www.eetop.cn/blog/html/28/1561828-2316834.htmlVerifier董在将建筑材料打包(package)好运进施工场地以后,就准备着手开始搭建了。搭建之前,他又给我抛出了几个问题:路桑,我应该使用硬件的方式(module)来封装环境,还是软件的方式(class)来实现呢? 从复用的角度来看,我应该使用模块验证的哪一级环境更易...转载 2018-10-27 15:51:58 · 2789 阅读 · 0 评论 -
SV系统集成篇之三:测试场景的生成(上)
本文转自:http://www.eetop.cn/blog/html/28/1561828-2329034.html在《SV组件实现篇》的激励器的封装和随机化两节中,可以看到通过将stimualtor与特定的test区分,就可以实现测试向量(test vector)的生成与stimulator剥离。为什么要这么做呢?因为stimualtor是作为验证环境的组件被设置到不同的测试平台上的,可以看...转载 2018-10-27 15:52:43 · 764 阅读 · 0 评论 -
SV系统集成篇之三:测试场景的生成(下)
本文转自:http://www.eetop.cn/blog/html/28/1561828-2329035.html线程的精细控制除了知道各个子线程什么时候结束之外,是否可以停止?暂停?恢复呢各个线程呢?首先我们来看看停止线程的用法。第一种方式是,给线程先起个名字,譬如“孙行者”或者“行者孙”,然后通过关键词disable来停止线程的运行。来看看下面这个例子:module fo...转载 2018-10-27 15:53:33 · 663 阅读 · 0 评论 -
SV系统集成篇之四:灵活化的配置
本文转自:http://www.eetop.cn/blog/html/28/1561828-2331491.html在之前的一节《验证环境的组装》中提到了如果将stimulator与monitor封装在一个agent组件中,更易于从模块级到MCDF子系统一级的环境组合复用。而在有的时候,我们并不需要agent中的stimulator,只需要monitor,譬如如果要监视MCDF内arbiter...转载 2018-10-27 15:54:23 · 1426 阅读 · 0 评论 -
SV系统集成篇之五(终):初论环境的复用性
本文转自:http://www.eetop.cn/blog/html/28/1561828-2331492.html伴随着模块验证和MCDF设计的子系统应用,在最终的芯片级验证中,MCDF会跟其它的模块一并组合在一起形成一个统一的芯片级验证环境。在之前的底层验证过程中,主要将功能侧重于模块或者子系统一级,而在芯片级验证中则侧重于子系统之间的连接和互动测试上面。伴随着验证系统的逐层提高,我们的验...转载 2018-10-27 15:55:09 · 804 阅读 · 0 评论 -
systemVerilog知识汇总
interfaceVerilog语言使用端口名字连接各个模块;systemVerilog中使用“.*”可以自动匹配具有相同名字的线网和端口,自动连接的名字必须具有相同的端口位宽,连接的端口类型必须兼容;也可以使用“.name”进行连接,.name必须满足端口名字和位宽一直;Verilog传统连接的缺点:通信协议接口在多个模块中使用,在多个模块中都要声明相应的端口,同时不匹配的声明会导致...原创 2018-10-23 21:29:38 · 7432 阅读 · 0 评论 -
Advantages of using Assertions
本文转自:http://www.learnuvmverification.com/index.php/category/assertions/Hi Friends, This time I decided to write about Assertions. I personally feels Assertions are very handy and highly useful asset...翻译 2019-01-02 15:43:49 · 270 阅读 · 0 评论 -
SV program & module
相同之处:1.和module相同,program也可以定义0个或多个输入、输出、双向端口。2.一个program块内部可以包含0个或多个initial块、generate块、specparam语句、连续赋值语句、并发断言、timeunit声明。3.在program块中数据类型、数据声明、函数和任务的定义均与module块类似。4.一个设计中可以包含多个program块,这些prog...原创 2019-09-01 13:00:31 · 2038 阅读 · 0 评论 -
SV static和automatical的区别?
这主要是一个生命周期的问题。如果数据变量被声明为automatic,那么在进入该进程/方法之后,automatic变量会被创建,而在离开该进程/方法之后,automatic变量会被销毁。这同C语言的变量及其作用域的使用说明是一致的。而static变量在仿真开始时即会被创建,而在进程/方法执行过程中,自身不会被销毁,且可以被多个进程/方法所共享。所以,对于automatic与static两种生命周...原创 2019-09-01 13:02:54 · 2921 阅读 · 0 评论 -
OOP(面向对象)的硬件设计思路就够头疼了,还搞什么AOP?
本文转自:http://www.eetop.cn/blog/html/28/1561828-6339373.html面向方面的设计方法(aspect-oriented)能否帮助我们更快更好地完成电路设计呢?一切都还是未知,虽然这些技术在验证领域的初步尝试并不成功。 1992年,Yoav Hollander就试图将面向方面编程(AOP: Aspect-oriented programmi...转载 2018-10-18 18:37:57 · 506 阅读 · 0 评论 -
我跟你谈SV接口类,你却以为我跟你谈接口?
本文转自:http://www.eetop.cn/blog/html/28/1561828-6339382.htmlhttp://www.eetop.cn/blog/html/28/1561828-6339383.html这个话题已经积郁在胸口很久了,然而各种事情每天都在侵占着路桑的大(ling)脑(hun),关于接口类(interface class)的介绍和应用一拖再拖,直到今天无...转载 2018-10-18 18:37:13 · 2302 阅读 · 0 评论 -
把大象装进冰箱要几步?不清楚,但是学会SV验证可能还需5步!
本文转自:http://www.eetop.cn/blog/html/28/1561828-5940106.html在上一期的Lab1中,我们给设计文件搭建了最简单的验证平台并编译和仿真过了这个SV程序。今天的Lab2的学习目标是:1.拓展lab1中的测试平台,从一个输入端向一个输出端发送数据包。2.用新的测试平台来编译和仿真设计文件。 在这次Lab中,你将继续去搭建测试平台上...转载 2018-08-30 20:58:16 · 494 阅读 · 0 评论 -
把大象装进冰箱要几步?不清楚,但是学会SV验证可能还需4步!
本文转自:http://www.eetop.cn/blog/html/28/1561828-5940107.html在上一期的Lab2中,我们拓展了测试平台并从一个输入端向一个输出端发送了数据包。今天的Lab3的学习目标是:1.构造一个从路由器输出端进行取样的监视器(Monitor)。2.构造一个可以验证路由器输出的比较器(Checker)。3.运行Driver和Monitor程序...转载 2018-08-30 20:58:56 · 797 阅读 · 0 评论 -
把大象装进冰箱要几步?不清楚,但是学会SV验证只剩3步了!
本文转自:http://www.eetop.cn/blog/html/28/1561828-5940108.html在上一期的Lab3中,我们创建了TB所需的组件,如Monitor和Checker。今天的Lab4的学习目标是:1.将数据信息封装进入Packet类中2.利用随机化(randomization)在packet类中随机产生源地址,目标地址和payload。3.创建两个pa...转载 2018-08-30 20:59:48 · 1334 阅读 · 0 评论 -
至今还没有把大象装进冰箱,但是学会SV只剩两步了
本文转自:http://www.eetop.cn/blog/html/28/1561828-5940109.html在上一期的Lab4中,我们对数据信息等进行了封装。今天的Lab5的学习目标是:1.创建一个Generator transactor的类。2.创建一个Driver的类。3.创建一个Reciever的类。4.拓展这个测试平台,并将Driver和Monitor同时连接到...转载 2018-08-30 21:00:44 · 339 阅读 · 0 评论 -
大象终于要被装进冰箱了,学会SV也只差一步。完结撒花!
本文转自:http://www.eetop.cn/blog/html/28/1561828-5940110.html在上一期的Lab5中,我们将验证平台更为规范化。今天的Lab6的学习目标是: 实现功能覆盖率从而可以决定仿真何时结束。 在lab5中我们还遗留了一个问题:究竟发送多少数据包才能测试到所有输入端口和输出端口的连接? 根据我们已有的随机激励代码并不能解决这个问题。你需...转载 2018-08-30 21:01:53 · 376 阅读 · 0 评论 -
SV组件实现篇之二:激励器的封装
本文转自:http://www.eetop.cn/blog/html/28/1561828-931236.html在上一节《激励器的驱动》中我们谈到了,实际上module stm_ini自身也可以通过定义方法,最终使得stimulator、tests和tb隔离开来 ,达到初步的封装目的。而这种封装也是通过有形的module这个硬件“盒子”来实现的,我们这一节来看看,如何通过软件“包裹”的方式来...转载 2018-09-09 18:44:58 · 591 阅读 · 0 评论 -
SV组件实现篇之三:激励器的随机化
本文转自:http://www.eetop.cn/blog/html/28/1561828-931237.html约束块约束块的存在就是为了限制验证时的激烈,给出合理的边界。一个约束块是包含一些表达式用来限制一个随机成员的取值范围,或者是多个成员之间的关系。约束块可以同其它成员一样通过类来继承,这也使得通过不同类层次的继承实现约束的分层。 通常,我们将约束块定义在类中。如果一个类的...转载 2018-09-09 18:53:11 · 3071 阅读 · 1 评论 -
SV组件实现篇之一:激励器的驱动
本文转自:http://www.eetop.cn/blog/html/28/1561828-931235.html从这一章开始,我们将进入验证各个组件的实现部分。对于各个组件介绍的顺序也将遵循于《验证的结构篇》,从激励器、到监测器再到比较器,而牵系到的知识点也会以各个验证师实现的方式来介绍,这么做的目的是为了告诉读者SV的特性出色在什么地方,以及如何思考从0到1的过程。《SV验证组件的实现篇》...转载 2018-09-06 14:54:30 · 2259 阅读 · 0 评论 -
SV组件实现篇之四:监测器的采样
本文转自:http://www.eetop.cn/blog/html/28/1561828-931238.html当verifier梅在实现slave channel验证环境的时候,她也绘制了一幅slave channel验证结构图:verifier梅借鉴了verifier董在验证模块registers时的方法,为DUT slave channel创建了2个stimulator,即上行...转载 2018-09-14 13:00:34 · 2387 阅读 · 0 评论 -
SV组件实现篇之五:组件间的通信
本文转自:http://www.eetop.cn/blog/html/28/1561828-2316830.html文章结构:线程间通信的需求 event(事件) semaphore(旗语) mailbox(信箱) 三要素的异同,以及同其它通信方式的比较 实际的应用场景 组件之间通信的方式,monitor到checker的方式 如果将硬件模块理解为一个个运行的程序的话,那...转载 2018-09-14 13:07:46 · 4571 阅读 · 0 评论 -
SV组件实现篇之六:比较器和参考模型
本文转自:http://www.eetop.cn/blog/html/28/1561828-2316831.html在同之前的verifier梅、尤、董完成了slave、arbiter和registers的模块验证之后,我们需要看看最后一位verifier娄是如何完成arbiter验证的。Verifier娄也依照之前的验证步骤,给出了arbiter的验证框图:在实现了stimulato...转载 2018-09-14 13:15:42 · 1997 阅读 · 0 评论 -
SV组件实现篇之七(终):测试环境的报告规范
本文转自:http://www.eetop.cn/blog/html/28/1561828-2316832.html文章结构:通过一种标准化的方式打印信息 过滤(重要级别)信息 打印通道在之前的介绍中,读者从四位verifier的验证组件实现中懂得了通过类和封装和数据随机化来实现stimulator、monitor和checker,而在这三个组件中间的信息输出也是无时不在的。伴随着验...转载 2018-09-14 13:20:10 · 971 阅读 · 0 评论 -
SV断言在测试激励中的应用
本文转自:http://www.eetop.cn/blog/html/28/1561828-1865367.html在我们平常的验证过程中,有这样的一种问题存在:一个测试激励根本没有测试到我们期望的测试点,但是在仿真的过程中也没有出现严重的错误,从头到尾仿真正常的结束,那么我们一般会认为它仿真通过了,在我们收集覆盖率之前我们一般不会发现它其实根本什么都没有做,只是假装仿真通过,今天我们介绍一种...转载 2018-08-24 14:43:23 · 2940 阅读 · 0 评论 -
把大象装进冰箱要几步?我不清楚,但我知道学会SV验证只要6步!
本文转自:http://www.eetop.cn/blog/html/28/1561828-5940105.html路科决定给大家介绍更多与验证入门相关的知识,因此准备把Synopsys公司的一个十分适合新手的SV实验介绍给大家。在上一期的先导篇中我们介绍了验证在IC行业中的地位,验证的工作内容和验证平台的大概结构。最后又提到了我们这个实验的待测试的模块:一个16输入,16输出的路由器。不知道...转载 2018-08-30 20:57:18 · 1064 阅读 · 0 评论