- 博客(12)
- 收藏
- 关注
原创 SystemVerilog 中 Setter 和 Getter 方法的作用详解
(1) Getter 方法作用:提供对私有(local 或 protected)成员变量的只读访问。命名惯例:通常以 get_ 开头(如 get_value())。// Getterendclass(2) Setter 方法作用:提供对私有成员变量的受控写入,可添加校验逻辑。命名惯例:通常以 set_ 开头(如 set_value())。// Setter// 校验逻辑");endclass场景。
2025-07-21 21:58:09
925
原创 SystemVerilog 类的封装(Encapsulation)
SystemVerilog通过访问控制修饰符(local/protected/public)和设计模式实现面向对象封装。核心机制包括:1)使用local/protected隐藏敏感数据,仅通过public方法暴露接口;2)通过Getter/Setter方法添加访问控制逻辑。封装在编译阶段检查访问权限,仿真阶段防止违规操作。典型应用包括UVM配置管理、硬件寄存器模型和安全计数器等。高级技巧涵盖参数化封装、接口隔离和代理模式等。最佳实践建议:敏感数据用local,子类扩展用protected,公共接口需校验,线
2025-07-21 21:48:08
605
原创 SystemVerilog 类构造函数(Constructor)深度解析
SystemVerilog中的构造函数(new)是类实例化时自动调用的特殊方法,用于初始化对象状态。本文系统解析了构造函数的语法规则、工作原理和典型应用场景,包括默认构造函数、参数化构造函数以及通过默认参数模拟重载的方法。重点介绍了构造函数的三种经典应用模式:带约束的随机对象初始化、资源预分配和单例模式实现。同时指出了继承链调用、虚方法使用等常见陷阱及规避方法,并总结了构造函数的最佳实践原则,强调参数校验、避免虚方法和显式调用父类构造函数等关键点。文章最后提供了不同场景下的构造函数实现方案对照表。
2025-07-20 20:57:35
766
原创 SystemVerilog 类(Class)---基础认识
SystemVerilog类(Class)是面向对象编程的核心,用于构建验证环境和硬件建模。文章系统化讲解了类的基础结构、对象生命周期管理、三大特性(封装、继承、多态)及高级特性(静态成员、参数化类等)。通过代码示例展示了实际应用场景,如UVM事务类、覆盖率和线程安全实现。文章还总结了常见问题,如多态失效、随机化失败和线程安全解决方案,为复杂验证环境开发提供了实用指导。
2025-07-20 20:21:34
635
原创 SystemVerilog 接口(Interface)进阶
应用场景 技术方案收益复杂协议建模内嵌任务+modport验证效率接口绑定UVM虚拟接口验证环境搭建时间减少60%IP核复用参数化接口模板多项目复用率提高75%跨时钟域设计接口内嵌同步器+clocking block亚稳态发生率降低90%形式验证 接口作用域断言缺陷检出率提升35%设计效率:参数化接口减少重复代码验证可靠性:内嵌断言实时捕捉协议错误。
2025-07-20 16:06:12
979
原创 systemveriog----接口-----interface
SystemVerilog接口(Interface)是复杂数字系统设计的核心构造,通过信号封装、协议集成和访问控制机制,极大提升了设计模块化和验证效率。文章全面解析接口的核心原理、经典案例、应用技巧和常见问题。重点介绍了接口的信号聚合功能、Modport角色隔离机制和时钟块同步技术,并给出内存控制器、AXI4总线等典型应用实例。同时提供了分层设计、参数化配置等实用技巧,对比了接口与传统端口的优势。最后强调接口在模块化设计、协议标准化和验证效率方面的重要价值,建议采用分层设计、角色隔离等最佳实践来提升大型So
2025-07-20 15:43:39
751
原创 SystemVerilog ---- Function ----进阶应用
进阶功能典型案例关键技巧常见用途递归函数斐波那契数列、阶乘必须用 automatic数学计算、树遍历返回复杂类型结构体、动态数组、队列优先返回结构体而非多个参数数据统计、转换参数化函数 默认参数、命名参数模拟用结构体模拟命名参数可配置算法、日志打印静态/自动变量调用计数器、缓存优化静态变量共享,自动变量独立性能统计、记忆化递归内嵌随机化生成随机素数、边界值随机测试、UVM 序列内嵌断言。
2025-07-19 23:27:03
549
原创 SystemVerilog--- task---进阶应用
进阶用法适用场景关键技巧参数化任务可配置行为(如测试激励生成)使用默认参数减少调用代码量自动存储任务递归调用、并行执行必须声明 automatic时序控制任务总线驱动、信号同步使用 #delay 或 @posedge多返回值任务返回多个计算结果优先使用 output 而非 ref并行任务(fork)同时驱动多个接口使用 join_none 或 join_any类中的任务UVM 验证环境结合面向对象编程接口封装任务标准化总线协议。
2025-07-19 20:41:32
839
原创 syatemverilog ---函数----function
需要返回一个值的计算(如数学运算、逻辑判断)。无时序控制的纯逻辑操作。数据转换(如 int 转 bit 数组)。使用 #delay 或 @posedge(改用 task)。修改全局变量(尽量保持无副作用)。1、记分板(Scoreboard) 的数据比较。2、覆盖率计算 的辅助逻辑。3、UVM 配置 的参数处理。
2025-07-19 15:21:56
434
原创 SystemVerilog ----任务---task
SystemVerilog中的task是一种可复用代码块,支持时序控制(如延迟、边沿触发)且可不返回值。与function不同,task通过输入/输出参数传递数据,适用于复杂操作如总线事务。task分为静态(默认)和自动(支持递归调用)两种存储类型。基本语法包含输入/输出参数和局部变量,典型应用包括延迟打印、数据交换等。task适合有时序需求或多参数操作,而function更适合纯计算场景。在验证中,task常用于UVM序列和驱动,function多用于记分板和覆盖率计算。
2025-07-19 14:44:08
664
原创 SystemVerilog数据类型
摘要: SystemVerilog提供丰富的数据类型,包括基本类型(如四态logic/reg和二态bit/int)、复合类型(数组、结构体、联合体、枚举)及用户自定义类型。支持动态数组、关联数组、队列等高级数据结构,并引入字符串(string)和事件(event)等特殊类型。通过typedef可自定义类型,增强了代码可读性和复用性。这些特性使SystemVerilog适用于复杂数字设计和验证场景,相比Verilog具备更强的抽象能力和灵活性。(149字)
2025-07-18 21:44:43
421
原创 word转PDF空白页的添加与删除
**word转PDF空白页的添加与删除**关于论文排版中页面设置的一些小技巧。1:不希望用换行的方式将“第二章”的标题赶到下一页,如下图:这样格式会非常的不稳定。因此我们需要在“第一章内容结束的地方”插入“布局—分隔符—下一页”来自动的设置。设置后的效果如图所示:在一些文档处理的时候,希望在打印(生成PDF)的时候,第一章和第二章之间出现一个“空白页”,但是word编辑的时候又不需要这个空白页显示出来。操作方法:在第一章末尾插入分节符的时候,选择奇偶数来插入即可。“布局—分隔符—奇数页(
2022-04-11 14:00:32
1742
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人