简介
- Q1: 所有高级的基于类的验证方法都使用类来表示事务,但为什么呢?为什么不使用结构体?
1
对于高级用户而言,答案是显而易见的,但是对于新手而言,这些问题并没有在任何文献中得到解答。2
问题是,大多数现有的 UVM 的参考指南都是由非常非常聪明的软件工程师编写的,他们假设所有用户自然知道这个问题和许多其他问题的答案,但这不是一个有效的假设
了解这些问题答案的第一步是将基于类的事务功能与基于结构的事务功能进行比较。
- 类和结构都具有多个字段。类可以有随机化字段,而结构体字段不能自动随机化。
- 类可以包含随机化约束,而结构不能包含自动约束随机化约束。
- 类可以有重要的内置方法,而结构不能有内置方法
- 类是动态类型,您可以在运行时生成任意数量的结构,而结构是静态类型,用户必须在模拟开始时预期并静态声明所有所需的结构。
-
类类型可以扩展,但结构的新版本必须从原始版本复制并添加新字段。 ‧
-
类可以放入 UVM 工厂中,以便于运行时替换,而结构则不能。
-
ans:原因:类基本上是动态的、超灵活的结构,可以轻松地随机化、轻松地控制随机化,并在需要时创建。类具有结构中存在的多字段封装功能, 此外还有更多功能。这就是为什么类是表示测试平台事务的首选结构。