03 2024 档案
摘要:验证计划 AHB-SRAMC验证计划
阅读全文
摘要:IC Verification Flow 阅读design specification 编写验证计划 搭建验证平台 编写testcase regression回归测试:周期往复的进行回归验证,为测试案例提供不同的seed 分析代码/功能覆盖率 写测试报告 SRAMC Design Spec 可以到I
阅读全文
摘要:如何开展验证的工作? 拿到设计spec,理解和分析spec 写验证计划:验证功能点提取,规划test,tb架构,用什么方法学,功能覆盖率的提取coverpoint,检查机制.....) 搭建验证环境(UVM TB) coding 编写用例测试,调试debug,发现RTL的bug regression
阅读全文
摘要:内容 Register和memory 不使用UVM RAL的验证平台 使用UVM RAL的验证平台
阅读全文
摘要:sequence library UVM 序列库sequence library 建立序列库包 在验证环境中引用序列库 登记并执行 自定义序列库对象 配置问题 配置序列库 配置序列库的例子 自定义序列执行
阅读全文
摘要:内容 virtual sequence 管理sequence在多个agent中管理序列的执行 不同agent执行的sequence有先后顺序 如果设置default_sequence会并行执行 virtual sequence/sequencer 通过virtual sequencer中的seque
阅读全文
摘要:内容 UVM中组件的执行顺序 phase Common phase Run phase uvm_phase类中核心方法 phase同步 synchronization phase objection机制 uvm平台至少有一个objection机制,存在raise_objection和drop_obj
阅读全文
摘要:内容 改变UVM组件的功能行为 pre_send - 用于注入error post_send - 用于收集coverage 编写代码实现简单的回调操作 定义一个new_driver extends driver,重写其中的pre_send和post_send方法 UVM_callbacks 不需要创
阅读全文
摘要:test Makefile Makefile中定义变量,在运行Makefile的时候可以传入参数 make verbosity=UVM_HIGH packet 继承自uvm_sequence_item 定义随机变量并创建约束 test_base Virtual interface interface
阅读全文
摘要:内容 Scoreboard简介 scoreboard:transaction stream scoreboard实现方法 不同的协议不同,数据类型不同 in_order_class_comparator - 按照一定的顺序比较 comparator和两个monitor进行连接 Scoreboard:
阅读全文
摘要:uvm搭建分层的testbench,组件之间的通信通过tlm 组件的通信接口 sequencer和driver之家通信机制uvm已经做好,在agent的connect_phase将driver和sequencer的接口进行连接 组件接口 SV实现组件之间的通信 使用中间接口对象 UVM组件之间的通信
阅读全文
摘要:管理测试案例的要求 testbench搭建完成之后,会创建很多的testcase进行测试 更改testcase之后,希望不更改平台的条件下,更改testcase的行为,就是工厂机制,实现testcase的多样化 Testcase要求:transaction Testcase要求:component
阅读全文
摘要:内容 UVM组件基类 UVM组件的逻辑层次:parent-child关系 组件显示和查询 任何地方都可以使用uvm_top get_name() - 获取组件名称 get_full_name - 获取组件路径及名称 uvm_top.find("*.seqr") - 按照逻辑名字查找组件 uvm_to
阅读全文
摘要:Makefile传递参数到SV中 在仿真阶段使用$value$plusargs函数传递字符串 // 接收Makefile中传递过来的参数 if($value$plusargs("UVM_TESTNAME",test_name)) begin // 传递参数之后执行这里的内容 end 应用举例 //
阅读全文
摘要:uvm exercise-1 实现apb_sequencer.sv,传输数据类型式abp_trans 实现virtual sequencer.sv,定义两个sub sequencer:mst_sqr,slv_sqr class abp_sequencer extends uvm_sequencer
阅读全文
摘要:sequencer使用 user sequencer类的创建 class gpio_sequencer extends uvm_sequencer #(gpio_transfer); `uvm_component_utils(gpio_sequencer) function new (string
阅读全文
摘要:配置sequence:基于instance 基于instance配置的好处 基于sequencer配置sequence 基于sequencer配置的好处 基于agent配置sequence 在phase中隐式执行sequence 显式执行sequence sequence的优先级和权重weight
阅读全文
摘要:内容 sequence概述 uvm_sequence_item - 数据建模 uvm_sequence - 产生数据 uvm_squencer - 将产生的数据给到driver uvm_driver - 数据驱动给dut sequencer是uvm组件,一个sequencer可以调用多个sequen
阅读全文
摘要:reference model 用于模拟RTL的行为,产生希望的值 driver的驱动给到reference model和dut,dut产生的结果和reference model产生的结果在score board中进行比对 Code driver scoreboard Test generator
阅读全文
摘要:System Verilog本身就是一种面向对象的语言,即本身就支持重载(override),重载即当父类中定义一个virtual类型的函数或任务时,在子类中可以重载这个函数或任务。所以我们来先看一下System Verilog对重载的支持。 案例2 system verilog重载 本质是使用继承
阅读全文
摘要:在uvm 中可以利用factory机制的重载作用改变某些component的特性, 而不用去修改testbench。比如说:写了2个driver的class,但是uvm环境中只需要用到一个,如果这两个driver都是用factory注册,那么就可以用override的方式替换当前uvm环境中的dri
阅读全文
摘要:内容 uvm_sequence_item是transaction的基类 可以使用uvm_sequence_item和uvm_transaction对数据进行建模 什么是事务(transaction)? 总线协议可以认为是一个事务 UVM数据流 testcase一般不产生数据,通常进行config s
阅读全文
摘要:DUT的RTL文件:router.v testbench架构 Flow test.sv test_base.sv 注册的时候,以uvm_component扩展出来的类,在注册的时候要使用uvm_component_utils()注册,以uvm_transaction,uvm_sequence扩展出来
阅读全文
摘要:Review this - 指的是当前的类 双冒号进行索引 - 静态方法或者是静态变量 在类之外写函数也可以使用双冒号进行索引,双冒号指定作用域 所有的phaze是UVM中已经定义好的,不需要显式调用 TLM - 事务级传输 UVM中组件之间的通信使用的是TLM,不使用mailbox uvm_seq
阅读全文
摘要:内容 UVM - 统一的验证方法学 UVM演进 什么是验证? 验证计划 验证目标 RTL代码覆盖率 功能覆盖率 功能覆盖率和代码覆盖率的关系 覆盖率驱动的验证CDV 验证阶段 随机大量测试加定向边界测试 UVM提供了哪些内容 UVM基础类库和宏定义 UVM编码原则 更多的测试案例和更少的代码 随机化
阅读全文
摘要:虚方法和纯虚方法 虚方法 定义一个函数为虚函数,不代表函数为不被实现的函数。 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 virtual function 纯虚方法 定义一个函数为纯虚函数,才代表函数没有被实现。 定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程
阅读全文
摘要:VMM/OVM - 都是验证方法学 CDV - coverage driver verification - 覆盖率驱动的验证 课程概述 课程概述 内容 OOP:class类 OOP:封装 OOP:继承 OOP:多态 不是虚方法,看句柄的类型 是虚方法,看对象的类型 使用虚方法,创建通用的方法 OO
阅读全文
摘要:ahb_sramc控制器补充说明 时序处理 访问地址 一个地址的大小是1byte bank选择 使用地址的最高bit 1bit+13bit+2bit = 16bit,最高bit选择bank,低两bit选择哪几个memory 8/16/32bit访问 timing check 测试小技巧 如果测试一个
阅读全文
摘要:内容 写验证计划需要参照design spec AHB-SRAMC功能验证计划 SVTB架构图 验证平台目录结构 ahb_sramc_svtb doc - 文档 rtl - dut verif - 验证代码 env agent sim tb test 如何编写SVTB Makefile fileli
阅读全文
摘要:AHB-SoC芯片架构 地址空间 各个IP都有自己的地址空间,CPU根据地址空间进行访问外设 Spec 内容 Features Specification Architecture Timing: Basic Transfer AHB Transaction Example AHB Burst Tr
阅读全文
摘要:not intersect 总结 所有的组件都是通过class进行建模 通过interface进行连接形成测试平台 每一个class都是一个SV文件,进行结构化管理 搭建testbench的主要目的是对DUT进行测试的,主要关注DUT的interface和feature,只要拿到interface就
阅读全文
摘要:内容 断言属性 支持多时钟 并发断言 总结 在时钟复位的时候,不会进行assertion
阅读全文
摘要:内容 Sequence匹配 $表示无穷大,随着仿真时间一直持续,占内存比较大 sequence是可以进行嵌套的 sequence重复操作符 sequence采样函数 $past(b,n) - 前n个时钟周期的b的值 sequence操作符 总结
阅读全文
摘要:内容 断言有很多,这里主要讲解SVA 立即断言和并发断言是SVA的核心 断言Assertion 假设有一个valid信号只能维持一个时钟周期,如果valid信号超过两个时钟周期就表示valid信号出错了 使用SV语法写monitor.sv检测信号 int cnt_valid; always @(po
阅读全文