![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
验证方法学/UVM/SystemVerilog
文章平均质量分 90
数字IC小白的日常修炼
分享数字前端设计和验证的日常学习经验
展开
-
一文看懂组合型/非组合型数组
组合型/非组合型数组文章目录组合型/非组合型数组一、定义二、详释三、区别四、注意五、总结关注作者一、定义组合型数组:在内存中连续存放的数组非组合型数组:在内存中非连续存放的数组bit [3][7:0]b_pack;//合并型bit [7:0]b_unpack[3];//非合并型二、详释非合并型数组占用内存表现如下:从上图可以得到b_unpack实际会占据3个WORD的存储空间。原因: 很多SV仿真器在存放数组元素时使用32比特的字边界,所有byte,shortint,int都是原创 2021-11-03 18:46:23 · 1911 阅读 · 5 评论 -
(9)systemverilog 面向对象编程的高级技巧指南
system verilog 面向对象编程的高级技巧指南文章目录system verilog 面向对象编程的高级技巧指南一、继承二、类型转换三、虚方法四、抽象类和纯虚方法五、回调六、参数化的类关注作者一、继承继承允许从一个现存的类得到一个新的类并共享其变量和子程序。原始类被称为基类或者超类,而新类因为它扩展了基类的功能,被称为扩展类。继承通过增加新的特性提供了可重用性,并且不需要修改基类。子类可以直接访问父类和其本身的所有变量,子类中的函数可以通过super前缀调用父类中的函数。可以调用上一层类的成原创 2021-11-03 10:34:36 · 729 阅读 · 1 评论 -
(8)systemverilog 事件与信箱
system verilog 线程以及线程间的通信文章目录system verilog 线程以及线程间的通信一、线程的使用二、停止线程一、线程的使用标准的Verilog对语句有两种分组方式——使用begin…end或fork…join。begin…end中的语句以顺序方式执行,而fork…join中的语句则以并发方式执行。后者的不足是必须等fork…join内的所有语句都执行完后才能继续块内后续的处理。SV中引入了两种新的创建线程的方法,使用fork…join_none和fork…join_any语原创 2021-10-31 10:16:03 · 1327 阅读 · 1 评论 -
(7)systemverilog 随机化(二)
system verilog随机化(二)文章目录system verilog随机化(二)五、解的概率1.关系操作2.关系操作和双向约束3.solve...before六.控制多个约束块七、内嵌约束八、pre_randomize和post_randomize关注作者五、解的概率SV并不保证随机约束求解器能给出准确的解,但你可以干预解的概率分布。要通过对数千或数百万的值统计后才能滤除噪声,得到随机数的概率。1.关系操作class Imp1; rand bit x; rand bit [1:0]y;原创 2021-10-26 09:41:05 · 560 阅读 · 0 评论 -
(6)systemverilog 随机化(一)
system verilog随机化文章目录system verilog随机化一、前言二、SV中的随机化三、约束1.集合(set)成员和inside运算符2.在集合里使用数组3.条件约束4.双向约束5.使用合适的数学运算来提高效率6.权重分布四、约束求解一、前言随着设计变得越来越大,要产生一个完整的激励集来测试设计的功能变得越来越困难。可以编写一个定向测试集来检查某些功能项,但当一个项目的功能项成倍增加时,编写足够多的测试集就不可能了。更严重的是,这些功能集之间的关系是大多数错误(BUG)的来源,而且这原创 2021-10-24 10:29:00 · 1235 阅读 · 1 评论 -
(5)systemverilog 面向对象编程(二)
面向对象编程(二)文章目录面向对象编程(二)五、类的方法1.在类之外定义方法2.this六、 动态对象七、 公有和私有关注作者五、类的方法类中的程序也称为方法,也就是在类的作用域内定义的内部task或者function。类中的方法默认使用自动存储,所以不必担心忘记使用automatic修饰符。1.在类之外定义方法一条值得称道的规则是,你应当限制代码段的长度在一页范围内以保证其可读性。该规则用于函数或任务时你能并不感到陌生,但是它同样适用于类。如果你可以在一屏内读到类的所有的东西,那么理解该类就会变原创 2021-10-23 09:48:21 · 526 阅读 · 1 评论 -
(4)systemverilog 面向对象编程(一)
面向对象编程文章目录面向对象编程面向对象编程使用户能够原创 2021-10-22 09:47:45 · 549 阅读 · 1 评论 -
(3)systemverilog 接口
system verilog 接口文章目录system verilog 接口一、前言二、接口的优势三、接口的使用1.modport2.clocking3.clocking模板四、建议关注作者一、前言验证一个设计需要经过几个步骤:生成输入激励,捕获输出响应,决定对错和衡量进度。但是,首先你需要一个合适的测试平台,并将它连接到设计上。测试平台包裹着设计,发送激励并且捕获设计的输出。测试平台组成了设计周围的"真实世界"。模仿设计的整个运行环境。由于Verilog的端口描述繁琐,代码常会长达数页,并且容易原创 2021-10-19 14:20:44 · 1669 阅读 · 5 评论 -
(2)systemverilog 任务和函数
system verilog任务和函数文章目录system verilog任务和函数1.ref2.参数的缺省3.子程序的返回4.局部数据存储关注作者在verilog中,任务和函数之间有很明显的区别,任务可以消耗时间而函数不能。函数里面不能带有诸如#100的时延语句或诸如@(posedge clk)的阻塞语句,也不能调用任务。另外,veriolog中的函数必须有返回值,并且返回值必须被使用,例如用到赋值语句中。在SV中,对任务和函数做了一些小改进,使得他们看起来更像C或C++中的程序。在SV中如果你想原创 2021-10-16 15:47:15 · 779 阅读 · 0 评论 -
(1)systemverilog 数据类型
System Verilog 数据类型文章目录System Verilog 数据类型数据类型logic逻辑类型符号类型缺省情况总结数组类型定宽数组动态数组队列关联数组自定义结构类型转换枚举类型关注作者数据类型logic在SV中新引入了一个数据类型logic,SV对经典的reg数据类型进行了改进,使得它除了作为一个变量以外,还可以被连续赋值、门单元和模块所驱动。任何使用线网的地方均可以使用logic,但要求logic不能有多个结构性的驱动。例如在对双向总线建模的时候。此时,需要使用线网类型。SV作为原创 2021-10-12 13:47:56 · 1119 阅读 · 6 评论