标签:monitor ap analysis imp export port
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。