1、uvm_analysis_port和analysis_export:
一个analysis_port可以和多个IMP连接,但IMP类型必须是uvm_analysis_imp,否则会报错。
对analysis_port和analysis_export来说,只有一种操作:write,在analysis_imp所在component,必须定义一个名字为write的函数。
2、uvm_analysis_imp_decl(_monitor):
uvm_analysis_imp_monitor; (白皮书P123)
write_monitor;
3、uvm_analysis_fifo,使用FIFO通信(白P125)
在agent和scoreboard之间添加一个uvm_tlm_analysis_fifo。FIFO的本质是一块缓存加上两个IMP。
在monitor与FIFO的连接关系中,monitor依然是analysis_port,FIFO中是uvm_analysis_imp,数据流和控制流方向相同。
在scoreboard与FIFO的连接关系中,scoreboard中使用blocking_get_port端口;
而FIFO中使用的是一个get端口的IMP。在这种连接关系中,控制流是从scoreboard到FIFO,而数据流是从FIFO到scoreboard。
4、端口都需要用new实例化,指明(端口名字,uvm_component类型的父节点变量)
5、$sformat和$sformatf(少个f的反而多个变量,多个f的少个变量,均衡)
$sformat:比$sformatf多一个参数,该参数用于存放最终整理好的字符串。
string jerry_string;
string jerry_string_r;
$sformat(jerry_string,"jerry_face_score=%0d",100);
$sformatf()返回的值就是整理好的字符串,可以直接把它整体拿去使用;
jerry_string_r=$sformatf("jerry_cool_score=%0d",100);