• creat a uvm_sched自定义domain的run_time_phase


    前面讲了用户自定义uvm_phase:https://www.jianshu.com/p/90161143bb62
    以及多个domain的同步和设置:https://www.jianshu.com/p/0435c400a7c8

    那么我现在有这样一个需求:如何实现domain的12个run-time_phase自定义?

    如果只是例化一个new_domain并且set_domain(new_domain)的话,只是添加了12个run-time_phase.这个是怎么实现的呢?这就不得不涉及到源码的set_domain的实现。

    伪代码

    如果在设置uvm_domain的时候并没有实例化name="uvm_sched"的uvm_phase的话,这里就会调用uvm_domain::add_uvm_phase(),也就是标椎的12个run-time_phase。并且会将common_domain的run_phase与12个run-time_phase并行起来。

    由此联想到,如果我们将new_domain里面定义一个uvm_sched的uvm_phase(自己定义,而不是12-run_time_phase),那么就走不到if(schedule == null)的分支里面了。

    • C放在了common_domain里面,在pre_reset_phase和reset_phase中间插入了training_phase。
    • A是new_domain,并且手动添加了12-run_time_phase
      • 第一步:例化new_domain和uvm_sched
      • 第二步:add phase并将它add到new_domain上
      • 第三步:将new_domain的sched与common_domain的run_phase并行起来
      • 第四步:set_domain(new_domian)

    自定义uvm_sched的run-time_phase

    接上一个例子,修改A.sv的代码.

    • 在上述的第三步可以修改成你想要的顺序,当然你也可以用add的.with_phase/.before_phase/.after_phase来指定相对的顺序,可以参考https://www.jianshu.com/p/90161143bb62

    另外一种思路:直接将define_domain进行重写。其实也就是将上面的1/2/3步骤挪到define_domain里面。

  • 相关阅读:
    miniSpartan6, another Spartan 6 Kit
    XuLA/XuLA2
    Papilio Pro Boards
    STM32 Hardware Development
    Configuring spartan 6 using mcu and spi flash
    STM32 IO口双向问题
    [Projet] Module NFC
    Spartan-6 FPGA Configuration
    TRF7970A IC Communication Interface
    电动门/汽车遥控器拷贝机
  • 原文地址:https://www.cnblogs.com/xuqing125/p/15874206.html
Copyright © 2020-2023  润新知