一个 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()
。如果记分牌需要知道它来自哪个端口,则必须将该信息放入事务中。
我正在创建一个具有单个暗示端口的记分牌。我想将来自父 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()
。如果记分牌需要知道它来自哪个端口,则必须将该信息放入事务中。