逻辑电路初学者
Callback 的考察深度一般到‘理解应用场景+能写简单代码’为止,但如果你答得好,面试官可能会追问设计取舍。高级场景:1. 在 scoreboard 中,通过 callback 实现可配置的比较策略——比如根据不同测试用例,动态切换严格比较或宽松比较模式。2. 在 sequence 中,用 callback 实现激励的实时调整:例如,在发送过程中,根据 DUT 返回的特定状态码,通过 callback 暂停、重发或修改后续 transaction。3. 在环境启动阶段,用 callback 进行条件性检查或资源分配。手写例子的概率很高,建议你提前练熟:定义一个 callback 基类(继承 uvm_callback),在目标组件(如 driver)中用 `uvm_register_cb` 注册,然后在测试中创建 callback 子类并添加。滥用问题:性能上,如果 callback 钩子太多或回调函数太复杂,仿真速度会下降;调试上,callback 是隐式调用,跟踪执行流比较麻烦;设计上,过度使用会让代码分散,维护困难。所以通常原则:如果功能是核心的、固定的,应该直接用继承或配置;如果功能是可选的、后期扩展的,再用 callback。
