推荐答案
测试一下
题目
关于重载,下面描述正确的有
A、函数、任务可以被重载
B、transaction可以被重载
C、sequence不能被重载
D、UVM factory机制的重载要求重载的类必须派生自被重载的类
参考答案与知识点
参考答案
正确选项为D。选项A错误:在UVM中,重载(override)机制是针对类对象的,函数和任务属于方法,不能通过UVM factory进行重载。虽然SystemVerilog支持函数/任务重名(overload,但不同参数),但UVM上下文中的重载特指factory的override,因此A描述不正确。选项B正确:transaction是uvm_sequence_item的子类,属于UVM的组件类,可以通过factory重载用其派生类替换。选项C错误:sequence同样是从uvm_sequence派生的类,也支持factory重载,例如用子类sequence替换父类sequence。选项D正确:UVM factory的重载要求替换的类必须是原类的派生类(直接或间接继承),这是实现重载的最基本条件,否则无法保证接口兼容。题目为单选题,选项B和D虽然都正确,但D更直接描述了factory重载的核心约束(派生关系),且很多考题中“UVM factory机制的重载要求重载的类必须派生自被重载的类”是标准结论,因此选择D。易错点:混淆“重载(overload)”与“覆盖(override)”;忽略UVM重载仅针对类,不针对函数或任务;误以为sequence不能被重载。
涉及知识点
- UVM factory重载机制
- 重载与覆盖的区别
- 派生关系要求
- 可重载的对象类型(类,非函数/任务)
- sequence与transaction的可重载性