![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SystemVerilog
文章平均质量分 53
cc__cc__
记录日常,欢迎交流
展开
-
SystemVerilog学习笔记(全)
SystemVerilog学习笔记汇总,欢迎交流!【SystemVerilog笔记(一)】数据类型【SystemVerilog笔记(二)】过程块以及task/function【SystemVerilog笔记(三)】接口和时钟块【SystemVerilog笔记(四)】class与package【SystemVerilog笔记(五)】随机约束【SystemVerilog笔记(六)】覆盖率【SystemVerilog笔记(七)】线程的使用【SystemVerilog笔记(八)】高阶内容..原创 2022-01-28 11:49:37 · 12570 阅读 · 0 评论 -
【SystemVerilog笔记(八)】高阶内容
文章目录1.类型转换2.虚方法3.对象拷贝4.回调函数5.参数化的类1.类型转换类型转换包括隐式转换(如等号左右位宽不同)和显式转换,显式转换又可分为静态转换'(转换失败不会提示)和动态转换$cast(target,src)父类句柄指向子类对象是可以的,但将一个父类句柄赋值给子类句柄在sv中是禁止的,需要通过$cast()实现句柄的动态转换,如果源对象和目的句柄是同一类型或者是目的句柄的扩展类则会转换成功。2.虚方法※由于类的多态性,通过虚方法就可以实现动态绑定,不需要担心句柄指向的对象类型是原创 2022-01-21 21:52:43 · 1847 阅读 · 0 评论 -
【SystemVerilog笔记(七)】线程的使用
1.线程的使用从硬件角度,Verilog通过always、initial过程块和信号数据连接实现进程间通信。可将不同module作为独立的程序块,其同步通过信号的变化(event触发)、等待特定事件(时钟周期)或者时间(固定延时)来完成。线程即独立运行的程序,需要被触发,可以结束或者不结束。验证环境中的对象可以创建和销毁,软件测试端的资源占用是动态的。软件环境中的initial块有两种分组方式,begin...end串行执行或者fork..join/join_any/join_none并行执行。原创 2022-01-21 20:58:06 · 1485 阅读 · 0 评论 -
【SystemVerilog笔记(六)】覆盖率
文章目录1.覆盖率2.覆盖组 covergroup3.数据采样4.交叉覆盖率5.覆盖选项1.覆盖率覆盖率是衡量设计验证完备性的一个通用词语。覆盖率是伴随着仿真来收集的。代码覆盖率在编译时添加一些选项以监测代码的执行情况。包括行覆盖率、路径覆盖率、翻转覆盖率和状态机覆盖率。断言覆盖率– 使用SV的程序性代码可以实现等效性检查,但使用SVA(SV断言)进行表达更容易。– 可以使用cover property来测量所关心的信号值或者状态是否发生。功能覆盖率– 如果覆盖率稳定增长,则只需修改种子原创 2022-01-16 21:35:55 · 2587 阅读 · 0 评论 -
【SystemVerilog笔记(五)】随机约束
1.随机约束关键字随机约束的关键字是rand,通常用于修饰class中的成员变量。此外还有randc表示周期随机性,所有可能值都出现过后才可能重复。通过使用std::randomize()函数才能对声明了rand的变量进行随机化。...原创 2022-01-16 11:59:15 · 2356 阅读 · 0 评论 -
【SystemVerilog笔记(四)】class与package
(一)class面向对象编程的三要素:封装、继承和多态。一、类和对象1.class类class类包含成员变量(property)和成员方法(method)的声明,属于软件的范畴,只能定义软件变量(reg和wire等硬件信号是不能用的),且默认其生命周期是动态的。此外,class可以通过interface作为媒介获取硬件信号。2.object对象和handle句柄object对象是类的实例,类的例化可以在任意时间点发生;handle句柄是用来指向对象的指针(悬空的句柄为null),示例如原创 2021-12-12 19:07:09 · 3626 阅读 · 0 评论 -
【SystemVerilog笔记(三)】接口和时钟块
1、接口将有关信号封装在一个接口(interface)中,进行模块连接时无需众多分散的端口。interface的端口列表只需定义时钟、复位等公共信号或者干脆不定义任何端口信号,而在变量列表中定义DUT与TB连接相关的logic变量。interface例化方式同module相同。2、时钟块在仿真时,为尽量避免时序电路中时钟和驱动信号的时序竞争问题,需尽量给出明确的驱动时序和采样时序,这就需要借助时钟块实现。默认情况下,时钟对组合逻辑电路的驱动会存在一个无限小时间的延迟。下为示例,clk2和d原创 2021-11-27 21:33:20 · 5328 阅读 · 0 评论 -
【SystemVerilog笔记(二)】过程块以及task/function
一、过程块1. always可综合,用于描述硬件时序电路和组合电路,可以在module或者interface中使用。2. initial不可综合,仿真一开始就会执行且只执行一次,可以在module、interface和program中使用。二、function与task1. function可以在参数列表指定输入(input)、输出(output)、输入输出(inout)或者引用参数(ref)。默认数据类型为logic,数组也可以作为形式参数进行传递。软件行为,在仿真的0时刻开始执行,可以原创 2021-11-27 21:07:22 · 4445 阅读 · 0 评论 -
【SystemVerilog笔记(一)】数据类型
(一)内建数据类型1.按照四值逻辑和二值逻辑分类四值逻辑类型:integer、logic、reg、wire等线网类型二值逻辑类型:byte、shortint、int、longint、bit2.按照有符号和无符号分类有符号类型:byte、shortint、int、longint、integer无符号类型:bit、logic、reg、wire等线网类型※记忆:按位定义的变量是无符号的。(二)软件常用类型1.定宽数组在这里插入代码片...原创 2021-11-23 19:31:24 · 8320 阅读 · 0 评论