随笔分类 -  UVM基础

摘要:内容 Register和memory 不使用UVM RAL的验证平台 使用UVM RAL的验证平台 阅读全文
posted @ 2024-03-21 11:18 Icer_Newer 阅读(16) 评论(0) 推荐(0) 编辑
摘要:sequence library UVM 序列库sequence library 建立序列库包 在验证环境中引用序列库 登记并执行 自定义序列库对象 配置问题 配置序列库 配置序列库的例子 自定义序列执行 阅读全文
posted @ 2024-03-21 10:44 Icer_Newer 阅读(42) 评论(0) 推荐(0) 编辑
摘要:内容 virtual sequence 管理sequence在多个agent中管理序列的执行 不同agent执行的sequence有先后顺序 如果设置default_sequence会并行执行 virtual sequence/sequencer 通过virtual sequencer中的seque 阅读全文
posted @ 2024-03-21 10:24 Icer_Newer 阅读(87) 评论(0) 推荐(0) 编辑
摘要:内容 UVM中组件的执行顺序 phase Common phase Run phase uvm_phase类中核心方法 phase同步 synchronization phase objection机制 uvm平台至少有一个objection机制,存在raise_objection和drop_obj 阅读全文
posted @ 2024-03-21 09:42 Icer_Newer 阅读(38) 评论(0) 推荐(0) 编辑
摘要:内容 改变UVM组件的功能行为 pre_send - 用于注入error post_send - 用于收集coverage 编写代码实现简单的回调操作 定义一个new_driver extends driver,重写其中的pre_send和post_send方法 UVM_callbacks 不需要创 阅读全文
posted @ 2024-03-21 03:55 Icer_Newer 阅读(106) 评论(0) 推荐(0) 编辑
摘要:test Makefile Makefile中定义变量,在运行Makefile的时候可以传入参数 make verbosity=UVM_HIGH packet 继承自uvm_sequence_item 定义随机变量并创建约束 test_base Virtual interface interface 阅读全文
posted @ 2024-03-21 02:35 Icer_Newer 阅读(20) 评论(0) 推荐(0) 编辑
摘要:内容 Scoreboard简介 scoreboard:transaction stream scoreboard实现方法 不同的协议不同,数据类型不同 in_order_class_comparator - 按照一定的顺序比较 comparator和两个monitor进行连接 Scoreboard: 阅读全文
posted @ 2024-03-20 12:59 Icer_Newer 阅读(331) 评论(0) 推荐(0) 编辑
摘要:uvm搭建分层的testbench,组件之间的通信通过tlm 组件的通信接口 sequencer和driver之家通信机制uvm已经做好,在agent的connect_phase将driver和sequencer的接口进行连接 组件接口 SV实现组件之间的通信 使用中间接口对象 UVM组件之间的通信 阅读全文
posted @ 2024-03-19 15:15 Icer_Newer 阅读(30) 评论(0) 推荐(0) 编辑
摘要:管理测试案例的要求 testbench搭建完成之后,会创建很多的testcase进行测试 更改testcase之后,希望不更改平台的条件下,更改testcase的行为,就是工厂机制,实现testcase的多样化 Testcase要求:transaction Testcase要求:component 阅读全文
posted @ 2024-03-19 13:13 Icer_Newer 阅读(17) 评论(0) 推荐(0) 编辑
摘要:内容 UVM组件基类 UVM组件的逻辑层次:parent-child关系 组件显示和查询 任何地方都可以使用uvm_top get_name() - 获取组件名称 get_full_name - 获取组件路径及名称 uvm_top.find("*.seqr") - 按照逻辑名字查找组件 uvm_to 阅读全文
posted @ 2024-03-19 12:26 Icer_Newer 阅读(103) 评论(0) 推荐(0) 编辑
摘要:Makefile传递参数到SV中 在仿真阶段使用$value$plusargs函数传递字符串 // 接收Makefile中传递过来的参数 if($value$plusargs("UVM_TESTNAME",test_name)) begin // 传递参数之后执行这里的内容 end 应用举例 // 阅读全文
posted @ 2024-03-19 10:46 Icer_Newer 阅读(39) 评论(0) 推荐(0) 编辑
摘要:uvm exercise-1 实现apb_sequencer.sv,传输数据类型式abp_trans 实现virtual sequencer.sv,定义两个sub sequencer:mst_sqr,slv_sqr class abp_sequencer extends uvm_sequencer 阅读全文
posted @ 2024-03-16 01:13 Icer_Newer 阅读(105) 评论(0) 推荐(0) 编辑
摘要:sequencer使用 user sequencer类的创建 class gpio_sequencer extends uvm_sequencer #(gpio_transfer); `uvm_component_utils(gpio_sequencer) function new (string 阅读全文
posted @ 2024-03-15 17:14 Icer_Newer 阅读(30) 评论(0) 推荐(0) 编辑
摘要:配置sequence:基于instance 基于instance配置的好处 基于sequencer配置sequence 基于sequencer配置的好处 基于agent配置sequence 在phase中隐式执行sequence 显式执行sequence sequence的优先级和权重weight 阅读全文
posted @ 2024-03-15 13:42 Icer_Newer 阅读(58) 评论(0) 推荐(0) 编辑
摘要:内容 sequence概述 uvm_sequence_item - 数据建模 uvm_sequence - 产生数据 uvm_squencer - 将产生的数据给到driver uvm_driver - 数据驱动给dut sequencer是uvm组件,一个sequencer可以调用多个sequen 阅读全文
posted @ 2024-03-15 12:48 Icer_Newer 阅读(281) 评论(0) 推荐(0) 编辑
摘要:System Verilog本身就是一种面向对象的语言,即本身就支持重载(override),重载即当父类中定义一个virtual类型的函数或任务时,在子类中可以重载这个函数或任务。所以我们来先看一下System Verilog对重载的支持。 案例2 system verilog重载 本质是使用继承 阅读全文
posted @ 2024-03-15 09:27 Icer_Newer 阅读(226) 评论(0) 推荐(0) 编辑
摘要:在uvm 中可以利用factory机制的重载作用改变某些component的特性, 而不用去修改testbench。比如说:写了2个driver的class,但是uvm环境中只需要用到一个,如果这两个driver都是用factory注册,那么就可以用override的方式替换当前uvm环境中的dri 阅读全文
posted @ 2024-03-15 08:28 Icer_Newer 阅读(164) 评论(0) 推荐(0) 编辑
摘要:内容 uvm_sequence_item是transaction的基类 可以使用uvm_sequence_item和uvm_transaction对数据进行建模 什么是事务(transaction)? 总线协议可以认为是一个事务 UVM数据流 testcase一般不产生数据,通常进行config s 阅读全文
posted @ 2024-03-14 16:27 Icer_Newer 阅读(317) 评论(0) 推荐(0) 编辑
摘要:DUT的RTL文件:router.v testbench架构 Flow test.sv test_base.sv 注册的时候,以uvm_component扩展出来的类,在注册的时候要使用uvm_component_utils()注册,以uvm_transaction,uvm_sequence扩展出来 阅读全文
posted @ 2024-03-14 14:38 Icer_Newer 阅读(24) 评论(0) 推荐(0) 编辑
摘要:Review this - 指的是当前的类 双冒号进行索引 - 静态方法或者是静态变量 在类之外写函数也可以使用双冒号进行索引,双冒号指定作用域 所有的phaze是UVM中已经定义好的,不需要显式调用 TLM - 事务级传输 UVM中组件之间的通信使用的是TLM,不使用mailbox uvm_seq 阅读全文
posted @ 2024-03-14 13:39 Icer_Newer 阅读(106) 评论(0) 推荐(0) 编辑