其他分享
首页 > 其他分享> > 篇5-UVC通信方式二之analysis_port/export/imp

篇5-UVC通信方式二之analysis_port/export/imp

作者:互联网

1.analysis端口(ap与imp)

(1) analysis_port和analysis_export其实与put和get系列端口类似,都用于传递transaction;

(2) 一个analysis_port/analysis_export可以和多个IMP相连进行通信,但是IMP的类型必须是uvm_analysis_imp;

(3) 在analysis_imp所在的component,必须定义一个write函数.

2.analysis端口与put/get系列端口的异同

(1) 默认情况下, 一个analysis_port (analysis_export)可以连接多个IMP(见下文示例), 也就是说, analysis_port (analysis_export)与IMP之间的通信是一对多的通信,而put和get系列端口与相应IMP的通信是一对一的通信(除非在实例化时,指定可以连接的数量).

(2) put与get系列端口都有阻塞和非阻塞的区分. 但是对于analysis_port和analysis_export来说,没有阻塞和非阻塞的概念. 因为它本身就是广播, 不用等待与其相连的其他端口的响应,所以不存在阻塞和非阻塞.

(3) 对于put系列端口, 有put、try_put、can_put等操作,对于get系列端口,有get、try_get和can_get等操作. 对于analysis_port和analysis_export来说,只有一种操作: write.

(4) 与put系列端口的PORT和EXPORT直接相连会出错的情况一样,analysis_port如果和一个analysis_export直接相连也会出错;只有在analysis_export后面再连接一级uvm_analysis_imp,才不会出错;

3.跨层次的ap,imp连接

比如o_agt的monitor与scoreboard之间的通信;

3.1连接方式一: 直接在env中跨层次引用monitor中的ap;

3.2连接方式二: 在agent中声明一个ap,并实例化它,在connect_phase将其与monitor的ap相连,并可以在env中把agent的ap直接连接到scoreboard的imp;

3.3连接方式三: 在agent中声明一个ap,但是不实例化它,让其指向monitor中的ap. 在env中可以直接连接agent的ap到scoreboard的imp;

3.4 三种连接方法的对比

三种跨层次ap,imp连接方法的比较:第一种简单但层次关系不好; 第二种稍显麻烦; 第三种既具有明显的层次关系,同时较易实现.

4.一个component内多个IMP

4.1 多个IMP需要有多个write函数与之对应, 宏uvm_analysis_imp_decl可以解决一个component内多个IMP的问题.

4.2示例:

(1)通过宏uvm_analysis_imp_decl声明两个后缀_monitor和_model; UVM会根据这两个后缀定义两个新的IMP类-uvm_analysis_imp_monitor和uvm_analysis_imp_model;

(2)在my_scoreboard中声明并实例化uvm_analysis_imp_monitor与uvm_analysis_imp_model, 句柄分别为monitor_imp和model_imp;

(3)当与monitor_imp相连接的analysis_port执行write函数时,会自动调用write_monitor函数; 而与model_imp相连接的analysis_port执行write函数时,会自动调用write_model函数.

 

标签:monitor,ap,analysis,imp,export,port
来源: https://www.cnblogs.com/csjt/p/15563353.html