篇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