SystemVerilog验证
文章平均质量分 95
SystemVerilog 是一种硬件描述和验证语言(HDVL),它在 Verilog 的基础上进行了扩展和改进,广泛应用于集成电路设计、验证和测试等领域。
SuperGQB
正在努力成为IC验证工程师
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SV系统验证—第七课:线程的控制和同步(二)
本文摘要: 本文将Verilog/SV中的线程通信机制分为三类进行详细讲解: 事件(event)机制: 使用@操作符进行边沿敏感阻塞 通过triggered()方法实现电平敏感等待 旗语(semaphore)机制: 通过new()初始化钥匙数量 使用get()/put()控制资源访问 保证共享资源互斥访问 信箱(mailbox)机制: 可作为FIFO实现线程间数据交换 提供阻塞(put/get)和非阻塞(try_put/get)方法 支持参数化数据类型原创 2025-06-08 15:33:15 · 1156 阅读 · 0 评论 -
SV系统验证—第七课:线程的控制和同步(一)
线程即独立运行的程序;线程需要被触发,可以结束或者不结束;在module中的initial和always,都可以看做独立的线程,它们会在仿真0时刻开始,而选择结束或者不结束;硬件模型中由于都是always语句块,所以可以看成是多个独立运行的线程,而这些线程会一直占用仿真资源,因为他们并不会结束;软件测试平台中的验证环境都需要有initial语句块去创建,而在仿真过程中,验证环境中的对象可以创建和销毁,因此在软件测试端的资源占用是动态的;原创 2025-05-25 21:34:16 · 881 阅读 · 0 评论 -
SV系统验证—第六课:随机约束和分布(二)
接着,文章探讨了如何通过约束控制来打开或关闭约束,以及如何使用内嵌约束和随机函数进行更灵活的随机化操作。此外,文章还介绍了数组约束的方法,包括对数组大小和元素的约束,以及如何生成唯一元素值的数组。最后,文章讨论了随机控制技术,如随机序列和随机决策树的应用。原创 2025-05-25 21:15:21 · 1460 阅读 · 0 评论 -
SV系统验证—第六课:随机约束和分布(一)
本文详细介绍了SystemVerilog中的随机约束和分布、约束控制、随机函数、数组约束以及随机控制的相关概念和应用。首先,文章阐述了随机测试的重要性,指出随机测试能够发现更多潜在缺陷,并介绍了随机变量的声明和约束的定义。原创 2025-05-21 15:24:38 · 1477 阅读 · 0 评论 -
SV系统验证—第五课:类和对象&包的使用(二)
面向对象编程(OOP)的核心三要素是封装、继承和多态。在SystemVerilog中,类(class)通过封装将数据和方法组合,并控制访问权限;继承(extends)允许子类复用父类特性,可通过super和this关键字区分父类与当前类成员;多态则体现在句柄的动态修改和成员覆盖上。package机制为类提供了命名空间隔离,通过import导入不同包中的类,需注意命名冲突问题。文章详细讲解了类的构造过程、句柄传递规则(需用ref实现传引用)以及包的使用规范,并通过猫类、测试类等实例演示了面向对象特原创 2025-05-30 10:41:42 · 880 阅读 · 0 评论 -
SV系统验证—第五课:类和对象&包的使用(一)
本文详细介绍了SystemVerilog中类和对象的概念及其相关操作,包括对象的创建、销毁、句柄的使用、静态变量和静态方法的应用。通过示例代码,展示了如何定义类、创建对象、使用构造函数和析构函数,以及如何通过句柄传递和修改对象。此外,文章还探讨了类的封装、继承和多态性,强调了面向对象编程在SystemVerilog中的重要性。最后,介绍了包(package)的使用,如何通过包来组织和管理类,避免命名冲突,并通过import语句导入包中的类。文章通过丰富的代码示例和详细注释,帮助读者深入理解SystemVer原创 2025-05-14 11:36:16 · 1126 阅读 · 0 评论 -
SV系统验证—第四课:接口&采样驱动&测试始末
在硬件描述语言(如SystemVerilog)中,`module` 和 `interface` 是两个核心概念,它们用于定义数字系统的行为和结构。下面详细解释了它们的区别与联系:### Module(模块)- **定义**:模块是SystemVerilog中的基本构建块,用来封装设计的某一部分,包括输入、输出端口、内部信号以及实现逻辑。- **功能**:- 模块可以包含寄存器、线网声明、过程块(initial和always)、连续赋值语句(assign),以及其他模块实例化。原创 2025-05-12 15:26:24 · 880 阅读 · 0 评论 -
SV系统验证—第三课:设计例化和连接
**功能**: FIFO 缓冲区用于暂时存储从设备的数据,以确保数据传输的连续性和稳定性。- **功能**: 仲裁器用于协调多个从设备之间的访问请求,确保数据传输的正确性和一致性。- **连接**: 仲裁器与多个从设备相连,通过控制信号来决定哪个从设备可以进行数据传输。- **功能**: 格式器负责将来自不同通道的数据进行格式化处理,生成最终的输出数据。文章浏览阅读1.1k次。- **CLK(0)**: 时钟信号,用于同步系统中的所有操作。- **功能**: 每个从设备负责处理特定通道的数据。原创 2025-05-12 10:30:16 · 761 阅读 · 0 评论 -
SV系统验证—第二课:过程块和方法
本文主要讨论了Verilog中函数参数传递的机制及其对变量初始化的影响。在Verilog中,函数参数默认是按值传递,这意味着函数内部对参数的修改不会影响调用者中的原始变量。文章通过一个具体的例子,解释了为什么在未显式初始化的情况下,结构体变量t的成员addr和data会被重置为默认值'h0,而cmd则因显式赋值而保持为'h2。此外,文章还提出了通过使用引用传递(ref)来避免默认初始化问题的解决方案。最后,文章简要提及了变量生命周期的概念,强调了理解变量作用域和生命周期的重要性。原创 2025-04-18 09:59:32 · 381 阅读 · 0 评论 -
SV系统验证—第一课:数据类型
本文主要介绍了Verilog和SystemVerilog(SV)中的数据类型及其操作。Verilog数据类型包括线网类型和变量类型,而SV在此基础上新增了四值逻辑、二值逻辑、有符号和无符号类型等。SV还引入了内建数据类型、自定义类型以及其他类型。在数据类型2部分,详细讨论了定宽数组、动态数组、队列、关联数组、结构体、枚举类型和字符串等复杂数据类型。此外,文章还介绍了数组的基本操作、缩减、定位和排序方法,以及$display和$write系统任务的使用区别。通过这些内容,读者可以全面了解Verilog和SV中原创 2025-04-18 09:57:34 · 1350 阅读 · 0 评论
分享