一个 IMP_PORT 连接到多个 EXPORTS

One IMP_PORT connected to multiple EXPORTS

我正在创建一个具有单个暗示端口的记分牌。我想将来自父 class 的多个导出连接到我正在编写的记分牌 class 的同一个 imp 端口。本质上(伪代码):

class parent_class extends uvm_scoreboard;

  uvm_analysis_export #(my_type) export0;
  uvm_analysis_export #(my_type) export1;
  uvm_analysis_export #(my_type) export2;
  uvm_analysis_export #(my_type) export3;

  my_scoreboard m_scb;

  function void connect_phase(uvm_phase phase);
    export0.connect(m_scb.my_imp);
    export1.connect(m_scb.my_imp);
    export2.connect(m_scb.my_imp);
    export3.connect(m_scb.my_imp);

  endfunction
endclass

class my_scoreboard extends uvm_scoreboard;

  uvm_analysis_imp#(my_type) my_imp;

  function void write (my_type);
    // do something here
  endfunction

endclass

这很好用,但我现在想知道,如果我们在同一时钟周期内从它们的端口广播了 2 或 3 或 4 笔交易,write 函数会被调用 twice/thrice/4times 吗?这是我想要的行为。

我不依赖于它们的调用顺序,但不想因为我的设置而错过广播。

是的,您可以以不确定的顺序调用多个 write()。如果记分牌需要知道它来自哪个端口,则必须将该信息放入事务中。