UVM:将音序器+监视器与记分牌连接
UVM: connecting sequencer+monitor with a scoreboard
我想将计分板与代理的排序器+监视器连接起来。使用分析 imp (uvm_analysis_imp) 连接监视器很简单,因为监视器有一个分析端口。
但是,我不确定如何连接音序器和记分板,因为音序器有一个 uvm_seq_item_pull_imp 并且不可能简单地将它连接到分析 imp .我的想法是检查 uvm_driver 使用的端口,即 uvm_seq_item_pull_port。
不幸的是,连接音序器和记分板似乎并不常见,但出于我的目的,这是必要的。是否只能使用 uvm_seq_item_pull_port 进行音序器-记分板连接,还是有更简单的方法?
由于可重用性方面的原因,在活动组件(定序器或驱动程序)之间进行这种连接通常是不受欢迎的(我在合同上有义务这样说 :D)。不过,这在 SoC 级别可能有意义。
您可以做的是创建您自己的包含分析端口的音序器 class(您可能已经有了)。您必须扩展 send_request(...)
才能在该分析端口上也写入该项目。然后,您可以将此分析端口连接到记分牌,就像连接普通监视器一样:
class some_sequencer extends uvm_sequencer #(some_item);
uvm_analysis_port #(some_item) aport;
function void send_request(uvm_sequence_base sequence_ptr, uvm_sequence_item t, bit rerandomize = 0);
some_item item;
if (!$cast(item, t))
`uvm_fatal("CASTERR", "Can't cast")
super.send_request(sequence_ptr, t, rerandomize);
aport.write(item);
endfunction
endclass
您可以在 EDAPlayground 上找到一个工作示例(注意:我从公认的 UVM 编码指南中获取了一些快捷方式)。
此解决方案是可行的,但会限制 SoC 级别的可重用性。如果你想在 SoC 级别重用你的 UVM 环境,那么最好将 SB 与监视器连接起来。原因是在 soc 级别,你的刺激可能来自其他区块,例如 CORE,在这种情况下,交易(应用于你的区块的刺激)应该被监视器捕获。
我想将计分板与代理的排序器+监视器连接起来。使用分析 imp (uvm_analysis_imp) 连接监视器很简单,因为监视器有一个分析端口。
但是,我不确定如何连接音序器和记分板,因为音序器有一个 uvm_seq_item_pull_imp 并且不可能简单地将它连接到分析 imp .我的想法是检查 uvm_driver 使用的端口,即 uvm_seq_item_pull_port。
不幸的是,连接音序器和记分板似乎并不常见,但出于我的目的,这是必要的。是否只能使用 uvm_seq_item_pull_port 进行音序器-记分板连接,还是有更简单的方法?
由于可重用性方面的原因,在活动组件(定序器或驱动程序)之间进行这种连接通常是不受欢迎的(我在合同上有义务这样说 :D)。不过,这在 SoC 级别可能有意义。
您可以做的是创建您自己的包含分析端口的音序器 class(您可能已经有了)。您必须扩展 send_request(...)
才能在该分析端口上也写入该项目。然后,您可以将此分析端口连接到记分牌,就像连接普通监视器一样:
class some_sequencer extends uvm_sequencer #(some_item);
uvm_analysis_port #(some_item) aport;
function void send_request(uvm_sequence_base sequence_ptr, uvm_sequence_item t, bit rerandomize = 0);
some_item item;
if (!$cast(item, t))
`uvm_fatal("CASTERR", "Can't cast")
super.send_request(sequence_ptr, t, rerandomize);
aport.write(item);
endfunction
endclass
您可以在 EDAPlayground 上找到一个工作示例(注意:我从公认的 UVM 编码指南中获取了一些快捷方式)。
此解决方案是可行的,但会限制 SoC 级别的可重用性。如果你想在 SoC 级别重用你的 UVM 环境,那么最好将 SB 与监视器连接起来。原因是在 soc 级别,你的刺激可能来自其他区块,例如 CORE,在这种情况下,交易(应用于你的区块的刺激)应该被监视器捕获。