当前位置 博文首页 > Tommi_Wei的博客:UVM平台调试问题引出的层级关系

    Tommi_Wei的博客:UVM平台调试问题引出的层级关系

    作者:[db:作者] 时间:2021-09-09 13:41

    在这里插入图片描述

    关于这个问题:UVM平台调试问题引出的层级关系

    UVM_FATAL cpri_link_env.svh(274) @ 1001547128000: uvm_test_top.env.core_env.cpri_link_env [YETI_CPRI_LINK_ENV] Timeout waiting for link configuration to finish
    可以想到一下几点

    1. 找到cpri_link_env.svh代码中出错的第274行!
    2. uvm_test_top.env.core_env.cpri_link_env需要搞清楚这个层级关系!
    3. 报错信息:Timeout waiting for link configuration to finish
      这个问题是因为我在testcase中添加了#120us延迟!引发的!
      增加了延迟120us
      但是问题又回到了最初的问题上了!
      UVM_INFO ctx_axc_scoreboard.svh(30) @ 933823884958: ctx_axc_evaluator[0x00000000] [Evaluator(w=1)(b=0)(k=0)] Reference FIFO empty!

    可以想到以下几点内容:

    1. 在ctx_axc_scoreboard.svh文件中的第30行代码,报了如下的错误!
    if (!reference_data.try_get(reference_item))
        `uvm_fatal(get_info_id(), "Reference FIFO empty!")
    //`uvm_info(get_info_id(), "Reference FIFO empty!",  UVM_LOW) ;
    

    reference model 没有接收不到数据!换句话说,问题的根源就在这里!!!
    它为什么会接受不到数据呢???

    1. ctx_axc_scoreboard.svh文件中,定义了以下2个class!
      class ctx_axc_evaluator
      class ctx_axc_scoreboard

      然后,在class ctx_axc_scoreboard中又定义了evaluators这个句柄!
       local ctx_axc_evaluator evaluators[int][int][bit];
    

    问题的突破口就在这里!
    但是在这个文件中定义了很多的task,我用questa 无法知道先执行的是哪一个?所以我需要添加一些打印信息!!!

    如果仅仅只是从局部分析问题的话,可能是这个文件有问题!但是,从更深远的层面分析!就要看问题是什么了!

    task ctx_axc_scoreboard::wait_stim_done();
       `uvm_info(TAG, "I don't know task compile order, So i need to add debug_yuqinw2", UVM_LOW) ;
       wait(!evaluator_done.size() || evaluator_done.and());
       #120us;	 // for debug,new add
    endtask
    

    我希望的是,等待所有数据可以全部结束,我的reference model 也应该会有数据!所以就等一会,再执行别的task!但是延迟时间是不是应该添加在这个地方我也不能确认!

    全局分析!
    cpri_scoreboard.svh文件中,定义了ctx_axc_scoreboard
    ctx_axc_scoreboard ctx_axc_sb;
    然后再往上一层分析看!看看哪些文件中添加了cpri_scoreboard!!
    cpri_link_env.svh中包含了所有的agent文件以及scoreboard!

    class cpri_link_env extends uvm_env;
    
       // scoreboard and connectivity
       cpri_scoreboard scoreboard;
    

    如果我们想再往上一级分析,看看那里又包含了cpri_link_env这个类?
    这就涉及了UVM的树形结构!

    cpricore_env这个层级关系!!!cpri_link_env 的上一级是cpricore_env!!但是我认为这个层级关系不应该是最顶层!!!因为这个层级中可能也添加了别的关系!
    我看还有obsal模块!!!

       obsai_link_env obsai_link;
    

    所以这个文件不是最顶层,这仅仅这是一个假象!!!实际上最顶层是yeti_base_test!!!

    UVM树形结构

    cs