UVM基于功能将classes/utilities分为以下几大类:Globals 在uvm_pkt的scope中定义了少量types、variables、functions和tasks。 相关文件:base/uvm_globals.svhbase/uvm_object_globals.svhBase 定义了搭建环境所需要的components、transactions、ports。 其中比较特殊的            
                
         
            
            
            
            start():sequence.strat(sequencer,parent_sequence,优先级) ,第一个参数是需要挂载的sequencer;第二个是parent_sequence,一般传入this或者不传入;第三个是优先级;第四个call_pre_post默认为1,则自动执行pre_body/ post_body()函数start 执行 pre_start,body等函数。此时就完成了            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-27 08:55:46
                            
                                657阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1.fatal error: gnu/stubs - 32.h: no such file or directory 解决办法:该报错是因为缺少32位兼容包,网上有些方案是直接安装。更简单的方法是在编译命令中加上-full64 即可正常编译。2.Syntax error Following verilog source has syntax error: super.new cannot be a            
                
         
            
            
            
            UVM的调度也具有其独特的挑战,尤其是在调试的领域。其中的一些挑战如下:
  
  1. Phase的管理:objections and synchronization
  
  2. 线程调试
  
  3. Tracing issues through automatically generated code, macro expansion, and parameterized cla            
                
         
            
            
            
            uvm包的环境搭建1.下载 下载地址https://www.accellera.org/downloads/standards/uvm2.环境配置 参照 。按照该博主的流程操作,可以说明uvm环境已经打好了。3.跑通uvm实战提供的示例代码。 https://github.com/emwzq/example_uvm,该git中有博主提供了uvm源码和uvm实战随书示例源码 。 对于我们这些新手来说            
                
         
            
            
            
            1、UVM中的analysis 端口包含有analysis_port和analysis_export两种端口,它们与port、export和imp的主要区别在于:第一,默认情况下,analysis_port(analysis_export)可以连接多个IMP,而put和get系列端口连接一个IMP(除非在例化时修改连接数量)。第二,analysis_port和analysis_export没有阻塞            
                
         
            
            
            
            参考资料(1) UVM通信篇之六:同步通信元件(上) - 路科验证的日志 - EETOP 创芯网论坛 (原名:电子顶级开发网) -(2) 《Practical UVM Step by Step with IEEE》1.同步的方法1.1 sv与uvm中同步的方法(1) 在sv中,用于同步的方法有event, semaphore和mailbox;(2) 在UVM中,用于同            
                
         
            
            
            
            哪个方法可以激活UVM验证平台,如何调用它?**run_test()方法(静态方法)**用来激活UVM验证平台。通常在顶层的“ initial begin…end”块中调用,并且它使用一个参数(UVM_TESTNAME)指定要运行的test case。所有程序的启动都有一个入口。像是C程序的入口是main(),普通verilog的启动是在顶层模块中的initial begin end间的代码。一般            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-11 20:11:53
                            
                                326阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            lab0查看class中实例:方法一:打开local窗口,会显示实例名和**@类名(实例类型)@创建该类型对象的次数**。要在创建对象实例后设置断点,不让仿真结束,不然就看不到了。方法二:view→class browser→class instances(会打开一个class instances窗口)→transcript窗口,仿真语句后加上“ -classdebug”,回车→sim窗口点击实例            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-29 17:10:08
                            
                                62阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            文章目录一、打印消息二、消息控制2.1 消息过滤2.2 重载打印信息2.3 控制打印信息行为2.4 回调函数 一、打印消息UVM提供的几种不同严重等级的消息报告方法,如下:function void uvm_report_info(string id,string message,int verbosity = UVM_DEDIUM,string filename = “”,int line =            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-15 14:07:52
                            
                                97阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            第三章 UVM基础本章介绍了uvm_componet和uvm_object这两个类的关系和他两的一些特性。 其次是UVM的树形结构。field automaion机制,UVM的打印信息、cconfig_db。 是对第二章中提到的内容的详细介绍。uvm_component和uvm_objectcomponent其实是派生字object的。因此,component是有一些object没有的功能的。第一            
                
         
            
            
            
            UVM中的phase分为两类,一类是function_phase,另一类是task_phase。类似function和task的区别,function_phase的运行不消耗仿真时间,task_phase的运行消耗仿真时间。只有uvm_component类才支持phase机制。function_phase按照执行顺序有:build_phase、connect_phase、end_of_elabor            
                
         
            
            
            
            1.通过get_full_name()得到此component 的路径:2.uvm_top 的名字是            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-07-31 17:28:27
                            
                                287阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、uvm_component两大特性1、通过在new函数时指定parent参数来形成树形结构。只有uvm_component派生的类,才有节点。 2、phase机制自动执行build_phase的内容,一般有:利用config_db set/get传递参数;实例化成员变量。build_phase是一个function,不消耗仿真时间;main_phase是一个task,消耗仿真时间两大特性带来的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-14 06:52:09
                            
                                243阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1.除了PORT 和 EXPORT外,还有第三种端口:IMP。它才是UVM 的精髓,承担UVM 中TLM的大部分代码实现。源码            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-07-31 17:27:09
                            
                                422阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            引入sequence的原因:将 生成测试case的语句 从 main_phase 中独立出来,使得使用不同测试用例时,只需要修改sequence部分即可,而不用关注 UVM剩余部分。(提高剩余部分的可复用性)。引入sequence的仲裁机制的原因:一个sequencer上通过fork…join可以启动多个sequence,而多个sequence按照什么顺序启动需要一定的仲裁机制来控制,具体而言主要            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-15 10:25:00
                            
                                75阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1.除了PORT,EXPORT,IMP外,还有analysis_port 和analysis_export,都用于传递transaction,区别是:1)一个analysis_port 可以连接多个IMP,也就是一对多通信。put 和get 是一对一(除非实例化new时制定数量)。2)analysis_port 和analysis_export 没有阻塞和非阻塞的区分。本身就是广播,像是非            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-07-31 17:27:43
                            
                                476阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1.使用寄存器模型的后门            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-07-31 17:31:48
                            
                                726阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
              一个基本的 uvm 验证环境结构如下图所示,包含两个 agent,其中 in_agent 用于驱动 DUT ,同时将驱动数据同时传递给 reference model, out_agent  用于按照协议采集 DUT 的输出数据,并将数据传递给 scoreboard,在 scoreboard 收集到 reference model 的运算结果后,再进行比对验证。  要想实现 monitor 和            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-25 09:13:54
                            
                                402阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1 之前的方式要测试不同的sequence,必须要修改default_sequence,重新编译            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-07-31 17:36:02
                            
                                274阅读
                            
                                                                             
                 
                
                                
                    