uvm
  • 2024-05-212.3.3 加入monitor
    作用:监测DUT的行为,driver负责把transaction级别的数据转变成DUT的端口级别,并驱动给DUT,monitor的行为与其相对,用于收集DUT的端口数据,并将其转换成transaction交给后续的组件如referencemodel,scoreboard等处理。一些代码中用到的方法如下:monitor代码如下:需要注意1.所有的
  • 2024-05-202.3.2加入env
    env的作用:实例化验证平台的各个组件,作为一个容器类,在这个容器里面实例化其他组件,然后再调用run_test时传递的参数就不再是my_driver,而是这个容器类,即让UVM自动创建这个容器类的实例。所有env都应该派生自uvm_env,且与my_driver一样,容器类在仿真中也一直是存在的,使用uvm_componen
  • 2024-05-172.3.1---加入transaction
    transaction概念:可以简单地将transaction理解为一个包,在不同的验证平台中的transaction也不相同。一个简单的transaction如下:在这些代码中,其中dmac是48bit的以太网目的地址,smac是48bit的以太网源地址,ether_type是以太网类型,pload是其携带的数据大小,通过pload_cons约束可以看到
  • 2024-05-152.2.1最简单的验证平台(单个driver)
    书中的DUT(待测设计)定义如下:这个DUT的功能非常简单,通过rxd接收数据,再通过txd发送出去,其中rx_dv是接收的数据有效指示,tx_en是发送数据的有效指示。本章中的所有例子都是基于这个DUT.验证平台中的所有组件都应该派生自UVM中的类。比如UVM验证平台中的driver应该派生自uvm_driver
  • 2024-05-02RISC-V SoC研发flow的总结
    RISC-VSoC研发flow的总结今年的流片接近尾声了,我个人的评价是相比去年,在进度管理和流程管理上做的更好了一些。对比今年一月份开会时开会的PPT,基本上当时的规划和目标基本上都达成了。这次聊聊整个研发过程中的一些感悟。首先是对于整个团队的研发方向做了一个比较大的修正,大概
  • 2024-04-02将wavedrom图转换为excel+UVM使用双顶层环境+慎用casex和casez使用case inside+shell命令行自动补全+操作系统的分段机制+ASID的功能+查看CPU信息
    将wavedrom图转换为excel原理上是先转换为json,然后写入到excel中。importcsvimportjsonimportpandasaspdcontent=[]withopen("source.txt")asf:c=f.read()c=c.replace("reg","\"reg\"").replace("bits",&
  • 2024-03-21AHB_SRAMC_UVMTB
    如何开展验证的工作?拿到设计spec,理解和分析spec写验证计划:验证功能点提取,规划test,tb架构,用什么方法学,功能覆盖率的提取coverpoint,检查机制.....)搭建验证环境(UVMTB)coding编写用例测试,调试debug,发现RTL的bugregression(跑不同的seed)coverage(codefunction)
  • 2024-03-21UVM - 23 (RAL)
    内容Register和memory不使用UVMRAL的验证平台使用UVMRAL的验证平台
  • 2024-03-21UVM - 21(vritual sequence)
    内容virtualsequence管理sequence在多个agent中管理序列的执行不同agent执行的sequence有先后顺序如果设置default_sequence会并行执行virtualsequence/sequencer通过virtualsequencer中的sequencer调用virtualsequence中的sequence虚序列器:virtualsequen
  • 2024-03-20UVM - 17(计分板和覆盖率)
    内容Scoreboard简介scoreboard:transactionstreamscoreboard实现方法不同的协议不同,数据类型不同in_order_class_comparator-按照一定的顺序比较comparator和两个monitor进行连接Scoreboard:monitorAgent中嵌入monitorUVMagent示例is_active-用于指
  • 2024-03-20[UVM源代码研究] UVM report机制分析(uvm-1.2版)
    [UVM源代码研究]UVMreport机制分析(uvm-1.2版)引子:如何定制一款个性化的打印格式如果使用默认的打印格式,我们执行以下代码:`uvm_info语句实际打印结果格式如下:`uvm_info打印结果打印内容包含了下面几个方面:severity信息(UVM_INFO)打印位置(文件…/env/my_case0.sv
  • 2024-03-19UVM - 16(TLM)
    uvm搭建分层的testbench,组件之间的通信通过tlm组件的通信接口sequencer和driver之家通信机制uvm已经做好,在agent的connect_phase将driver和sequencer的接口进行连接组件接口SV实现组件之间的通信使用中间接口对象UVM组件之间的通信:TLM1.0/2.0UVMTLM1.0p
  • 2024-03-19UVM - 15(factory)
    管理测试案例的要求testbench搭建完成之后,会创建很多的testcase进行测试更改testcase之后,希望不更改平台的条件下,更改testcase的行为,就是工厂机制,实现testcase的多样化Testcase要求:transactionTestcase要求:component解决方案:UVMfactoryTransactionfactory
  • 2024-03-19UVM - 14(uvm_config_db)
    内容UVM组件基类UVM组件的逻辑层次:parent-child关系组件显示和查询任何地方都可以使用uvm_topget_name()-获取组件名称get_full_name-获取组件路径及名称uvm_top.find("*.seqr")-按照逻辑名字查找组件uvm_top.find("*.drv_?",comps)-使用通配符查找组件,查
  • 2024-03-19UVM - 13 (lab2)
    Makefile传递参数到SV中在仿真阶段使用$value$plusargs函数传递字符串//接收Makefile中传递过来的参数if($value$plusargs("UVM_TESTNAME",test_name))begin//传递参数之后执行这里的内容end应用举例//sv文件中,用于接收仿真的时候传入的number_packetsif($(va
  • 2024-03-15UVM -11 (练习)
    sequencer使用usersequencer类的创建classgpio_sequencerextendsuvm_sequencer#(gpio_transfer);`uvm_component_utils(gpio_sequencer)functionnew(stringname,uvm_componentparent);super,new(name,parent);endfunctionendclassvirtualsequencer
  • 2024-03-15UVM - 10 (Sequence机制-2)
    配置sequence:基于instance基于instance配置的好处基于sequencer配置sequence基于sequencer配置的好处基于agent配置sequence在phase中隐式执行sequence显式执行sequencesequence的优先级和权重weightsequencer-driver响应端口(reportport)sequencer-driver
  • 2024-03-15UVM - 7 (Sequence机制)
    内容sequence概述uvm_sequence_item-数据建模uvm_sequence-产生数据uvm_squencer-将产生的数据给到driveruvm_driver-数据驱动给dutsequencer是uvm组件,一个sequencer可以调用多个sequenceuvm_squenceclass普通成员sequence执行流程sequencer和driver是
  • 2024-03-15UVM - 9 (override - 2)
    SystemVerilog本身就是一种面向对象的语言,即本身就支持重载(override),重载即当父类中定义一个virtual类型的函数或任务时,在子类中可以重载这个函数或任务。所以我们来先看一下SystemVerilog对重载的支持。案例2systemverilog重载本质是使用继承和多态的思想实现方法的重载c
  • 2024-03-14UVM - 6 (Transaction Modeling)
    内容uvm_sequence_item是transaction的基类可以使用uvm_sequence_item和uvm_transaction对数据进行建模什么是事务(transaction)?总线协议可以认为是一个事务UVM数据流testcase一般不产生数据,通常进行configsequencer会产生激励给到driver,传递的就是transaction
  • 2024-03-14UVM - 5 (Lab 1)
    DUT的RTL文件:router.vtestbench架构Flowtest.svtest_base.sv注册的时候,以uvm_component扩展出来的类,在注册的时候要使用uvm_component_utils()注册,以uvm_transaction,uvm_sequence扩展出来的类需要用uvm_object_utils()注册//以uvm_component扩展出来的类uv
  • 2024-03-14UVM - 4 (UVM验证平台)
    Reviewthis-指的是当前的类双冒号进行索引-静态方法或者是静态变量在类之外写函数也可以使用双冒号进行索引,双冒号指定作用域所有的phaze是UVM中已经定义好的,不需要显式调用TLM-事务级传输UVM中组件之间的通信使用的是TLM,不使用mailboxuvm_sequence_itemcla
  • 2024-03-13UVM - 3 (UVM验证平台)
    内容UVM-统一的验证方法学UVM演进什么是验证?验证计划验证目标RTL代码覆盖率功能覆盖率功能覆盖率和代码覆盖率的关系覆盖率驱动的验证CDV验证阶段随机大量测试加定向边界测试UVM提供了哪些内容UVM基础类库和宏定义UVM编码原则更多的测试案例和
  • 2024-03-13UVM - 1
    VMM/OVM-都是验证方法学CDV-coveragedriververification-覆盖率驱动的验证课程概述课程概述内容OOP:class类OOP:封装OOP:继承OOP:多态不是虚方法,看句柄的类型是虚方法,看对象的类型使用虚方法,创建通用的方法OOP编程规则:在class之外定
  • 2024-03-12UVM宏解释+odt文件转doc+merge命令和difflib+python调用命令+clog2和系统函数+java添加classpath++ ${1+$@}的用法+uvm1.1和uvm1.2的st
    UVM宏解释UVM_DISABLE_AUTO_ITEM_RECORDINGhttps://blog.csdn.net/MGoop/article/details/127295965itemrecord的方法主要是用于记录事务信息的,原理是调用accept_tr,begin_tr,end_tr。似乎和波形上显示出各个事务相关。默认情况下,在调用get_next_item()和item_done()时自动