当前位置: 首页 > web >正文

uvm验证环境中struct(结构体)和class的区别与联系

新手常常会问:为什么在验证中要使用类类型而不是结构体?

为了更好地理解为何使用类而非结构体,对比 SystemVerilog 中类和结构体的不同能力是很有帮助的。

  • 类和结构体都可包含多个字段。
  • 类能包含可随机化的字段,而结构体的字段无法自动被随机化。
  • 类可包含随机化约束,而结构体无法包含自动的随机化约束。
  • 类可拥有重要的内置方法,而结构体不能有内置方法。
  • 类是动态类型,你可以在运行时根据需要生成任意多个类的实例;而结构体是静态类型,用户必须在仿真开始时就预先声明所有需要的结构体。
  • 类类型可以被扩展(继承),而结构体的新版本必须从原始版本复制后再添加新字段。
  • 类可以放入 UVM 工厂中,以便在运行时轻松实现替换;而结构体不能。

        类本质上是动态的、超灵活的 “结构体”—— 它们可以轻松被随机化、轻松控制随机化过程,还能在需要时被创建。类具备结构体所拥有的多字段封装能力,除此之外还有更多特性。这就是为什么类是表示测试平台事务的首选结构。

        类和结构体还共享另一个优势:无论事务中包含 1 个信号还是 1000 个信号,它们都能作为一个整体在测试平台中传递。因此,通过 “单一单元操作” 就能很容易地在测试平台环境中传递信号。如果信号被添加到事务中或从事务中移除,测试平台的大部分结构都无需修改。只有少数测试平台组件需要单独与所有组件信号交互、

具体比对如下

类(Classes)

  • ✓ 可以包含多个字段。
  • ✓ 可以包含可随机化的字段。
  • ✓ 可以包含随机化约束。
  • ✓ 拥有内置的 randomize() 方法。
  • ✓ 可以包含重要的用户自定义方法(如 copycompare 和 print-my-contents)。
  • ✓ 是动态类型,可根据需要生成。
  • ✓ 类类型可以被扩展,从而轻松创建添加了字段和方法的新版本。
  • ✓ 类可以放入 UVM 工厂,以便在运行时轻松替换。

结构体(Structs)

  • ✓ 可以包含多个字段。
  • × 不能拥有自动可随机化的字段。
  • × 不能包含随机化约束。
  • × 没有内置的 randomize() 方法。
  • × 不能包含用户自定义方法。
  • × 是静态类型,要求所有用户定义的结构体在仿真开始时就声明。
  • × 结构体的新版本需要用户将原始版本完整复制到新结构体中,然后添加新字段。
  • × 非动态的结构体不能放入 UVM 工厂。
http://www.xdnf.cn/news/19575.html

相关文章:

  • 基于单片机老人防丢失防摔倒系统/老人健康状态检测系统
  • CMake⼯程指南-3
  • [光学原理与应用-361]:ZEMAX - 分析 - 像差分析
  • KingbaseES V009版本发布:国产数据库的新飞跃
  • 基于全参考图的质量评价均方误差MSE、峰值信噪比PSNR
  • [特殊字符] Rust概述:系统编程的革命者
  • 力扣(LeetCode) ——101. 对称二叉树(C语言)
  • Vue Router 嵌套路由与布局系统详解:理解 component = router-view 的核心概念
  • 接口测试总结-含接口测试和前端测试的区别与比较
  • Matlab自学笔记六十六:求解带参数的不等式
  • 国庆福建霞浦游
  • Linux 启动传参
  • 使用AdaLoRA 自适应权重矩阵微调大模型介绍篇
  • Docker一小时快速上手(附报错解决方式)
  • 【MLLM】具有长期记忆的多模态智能体框架M3-Agent
  • 《信息学奥林匹克辞典》中的一个谬误
  • Java异常处理完全指南:从入门到精通
  • 安装proteus,并实现stm32仿真
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘pydantic’问题
  • 从 ETL 到 ELT 再到 EAI:AI 如何重塑数据处理
  • 小迪安全v2023学习笔记(七十五讲)—— 验证码安全插件识别攻击利用宏命令
  • 设计模式在Java中的应用:从单例模式到工厂模式的全面解析!
  • 计算机网络总览
  • 使用 GLSL 实现真实自然的纹理混合技术详解
  • 【Java实战⑨】Java集合框架实战:List集合深度剖析
  • 【STM32】外部中断(下)
  • 829作业
  • 告别强化学习?GEPA:用“反思性提示词进化”实现超越的新范式
  • SpringMVC的执行流程
  • 阿里云-应用实时监控服务 ARMS