7.2.1 scoreboard开关特性控制

之前在scoreboard中添加了loadcounter_enable来控制scoreboard中do_loadcounter_check的开关特性。
同时在配置阶段我们在config中配置了控制scoreboard开关特性的变量scb_enable。 :::info 修改scoreboard来控制其开关特性 :::

  1. `ifndef APB_WATCHDOG_SCOREBOARD_SV
  2. `define APB_WATCHDOG_SCOREBOARD_SV
  3. class apb_watchdog_scoreboard extends apb_watchdog_subscriber;
  4. ...
  5. virtual task do_loadcounter_check();
  6. bit loadcounter_enable = do_loadcounter_en(CHECK_COUNTEREN);
  7. forever begin
  8. @(posedge vif.wdg_clk iff loadcounter_enable);
  9. cur_load = rgm.WDOGLOAD.LOADVAL.get();
  10. cur_count = cur_load;
  11. do begin
  12. @(posedge vif.wdg_clk);
  13. cur_count--;
  14. end while(cur_count != 0);
  15. wdg_reg_intr_assert_e.trigger();
  16. repeat(2) @(negedge vif.wdg_clk);
  17. // From logic timing after count reach zero
  18. if(vif.wdog_int != 1'b1) begin
  19. cfg.scb_check_error++;
  20. `uvm_error("COUNTDOWN_CHECK", "Wdog interrupt signal should be asserted!")
  21. end
  22. cfg.scb_check_count++;
  23. end
  24. endtask
  25. virtual function bit do_loadcounter_en(check_type_e typ);
  26. case(typ)
  27. CHECK_COUNTEREN: return cfg.scb_enable && cfg.do_counter_check_en && wdg_inten;
  28. default: return 0;
  29. endcase
  30. endfunction
  31. endclass
  32. `endif // APB_WATCHDOG_SCOREBOARD_SV

build_phase中的enable在前期是一个快照的作用,到了后期就没有什么影响了; cfg.scb_enable是整个scoreboard的开关,couter_check_en是循环计数功能的开关,wdg_inten是使能int的功能开关。

在cfg中配置了scb_enable以后就可以在仿真的时候对enable的值进行修改,进而进一步对scoreboard的开关特性进行调整
image.png

在uvm_objects里可以查找到与config有关的动态变量,通过修改其中enable的值可以关闭scoreboard的开关特性,进而可以让波形正常跑出。

:::danger 【思考】
代测功能:counter计数到0以后,INT信号拉高并reload,如果之后将INT_CLR,counter从0开始计数,这时的状态应该是回退到从FF开始计数的状态并且等待下一次reset拉高,而不是回退到一开始的reprogram的阶段。
代测功能:INT拉高以后,在counter记到0之前,做了一次INTCLR以后会退到状态机的哪一步? :::

7.2.2 scoreboard的reset功能检查

:::info

  1. 在scoreboard中添加reset的使能信号;
  2. 添加int_check和res_check两个信号;
  3. 完成对于加入reset以后整个状态机的描述。 :::
    • 如果reset做过了检查,那么WDOGRES信号拉高,就没有必要再做其他检查;
    • 如果reset信号没有被使能,那么就一直检查INT信号;
    • 如果reset信号已经被使能且完成了一次INT信号的检查,那么就进入reset信号的检查部分,这与状态机也是相符的。

【调试及结果】

image.png