
UVM_PRIMER
文章平均质量分 65
UVM_PRIMER
斐非韭
这个作者很懒,什么都没留下…
展开
-
uvm_primer ch23 sequence
uvm_primer ch23 sequencevirtual sequence find不指定sequencer的用法virtual sequence finduvm_pkg中有一个对象是uvm_top 是uvm_root 类型的class的实例;find方法可以根据一个string来找到这个对象,然后返回这个对象的handleclass runall_sequence extends uvm_sequence #(uvm_sequence_item); `uvm_object_utils(原创 2021-01-28 18:47:41 · 416 阅读 · 0 评论 -
sv中的新数据类型queue/关联数组
sv中的新数据类型1. 静态数组/动态数组/关联数组1. 静态数组/动态数组/关联数组队列:像动态数组一样,队列可以增长和缩小,但是队列可以很方便地添加和删除元素。b[$] = {3,4};关联数组:如果想要处理具有数千兆字节范围的地址,而实际执行中只会涉及到部分地址,此时创建一个大型数组分配和初始化千兆字节会非常浪费。SystemVerilog提供了关联数组数据结构。SystemVerilog仅在写入元素时为其分配内存。如下图,关联数组保存值0:3,42,1000,4521和200,000。原创 2021-01-28 09:52:52 · 1671 阅读 · 0 评论 -
uvm_primer ch21 uvm transaction/copy/clone/get_type
uvm_primer ch21 uvm transactionMOOCOWclone_me函数transaction 重写MOOCOW使用uvm_transaction的好处之一:在多个模块多个对象中都可以看到相同的数据,在模块较小的TinyALU中可能考不到优势,如果我们的设计包含250个port,原本需要250份备份数据的空间,现在只需要一个即可。双刃剑:上述机制也存在一定的短板:无论任何一个对象对数据进行了修改,整个测试环境看到的数据都会变化。因此引入了MOOCOW(Manual Obliga原创 2021-01-27 16:43:16 · 1619 阅读 · 0 评论 -
uvm ch20 深copy
uvm ch20 深copyconvert2stringdo_copy /convert2string这些函数在使用field_automation的时候不用自己写,否则需要自己实现;建议自己实现方便调试;convert2string在本类中只处理这个类新增加的数据成员,其他的调用super实现;class mammal extends animal; int babies_in_litter; function new(int a = 0, b = 0); super原创 2021-01-27 16:26:40 · 379 阅读 · 0 评论 -
uvm_primer笔记ch2
uvm_primer笔记ch2先按照传统模式建立一个testbench新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入先按照传统模式建立一个testbench包含一个简单的dut,一个top文件,dut是一个两个输入的原创 2021-01-17 12:52:11 · 286 阅读 · 0 评论 -
uvm_primer ch3 BFM笔记
uvm_primer ch3 BFM补充一个sv的知识点, interface这个是一个类似java的概念,java中也有interface;主要在其中定义接口相关的一个信号;还可以在其中使用iniitial block;在其中定义和接口强相关的一些函数;下边的函数一个是驱动reset_n的函数;一个是驱动 A B op的函数;interface 可以在面向对象(OO) 中类似做一个声明,然后直接把接口传递到其他module;interface tinyalu_bfm; import原创 2021-01-17 13:48:09 · 756 阅读 · 0 评论 -
uvm_primer ch4-5面向对象的编程OOP sv
面向对象的编程OOPch4 面向对象的编程OOPoop的好处code reusecode maintainabilitych5 class & extendsionstructclass实例化对象extends classsummarych4 面向对象的编程OOP从第4章开始到第十章 ,介绍oop相关内容,暂时不涉及uvmsv是一个oop的语言,尤其是你在验证中使用sv的时候,uvm也是建立在sv上的一个框架,这部分内容是理解后边uvm的一个基础。sv其实更像是verilog+java;c原创 2021-01-17 15:22:22 · 374 阅读 · 0 评论 -
uvm_primer ch6 多态
uvm_primer ch6 多态uvm_primer ch6 多态非virtualvirtualpure virtualsummaryuvm_primer ch6 多态oop有三大好处或者特征封装继承多态很多人觉得oop最大的特点应该是继承,这个可能学习深入之后发现,多态才是最大的优点。给出一个多态的例子非virtualvirtual具体含义在文章末尾解释class animal; int age=-1; function new(int a); age原创 2021-01-17 15:40:22 · 605 阅读 · 0 评论 -
uvm_primer ch7 static方法和变量
uvm_primer static方法和变量 ch7ch7 static方法和变量不要使用全局变量静态变量两种访问方法的途径queue队列静态方法protectsummarych7 static方法和变量不要使用全局变量菜鸟刚开始写代码 时会觉得全局变量比较好用,不管在哪都能访问;但是项目变大后,调试起来就是噩梦,如果这个变量不对了,要去track哪里修改的,写错了,比较麻烦;因为他在哪里都能访问,比如100个地方对这个变量复制了,就要去逐一排查;静态变量但是全局变量哪都能访问还是有一定优势,所原创 2021-01-17 16:56:29 · 441 阅读 · 0 评论 -
uvm_primer ch8 参数化类
uvm_primer ch8 参数化类ch8 parameterized classtobe update另一种实现方法ch8 parameterized classtobe update另一种实现方法把cage定义成animal类型的队列protected static animal cage[$]; 可以存储该类和该类的子类的对象;但是不能存储和该类无关的对象;lion1 l1; l1这个对象放进去会报错;chicken ,lion放进去没事,是因为这两个是animal的子类;vir原创 2021-01-17 18:07:00 · 410 阅读 · 0 评论 -
uvm_primer ch9 factory pattern 工厂模式
uvm_primer ch9 factory pattern 工厂模式ch9 factory pattern 工厂模式工厂模式例子强制类型转换ch9 factory pattern 工厂模式programming tricks 称作设计模式;工厂模式就是一种设计模式工厂模式是一个static 方法工厂模式例子没有看懂工厂模式的优势,使用工厂模式还是要更改make_animal这个funciton;如果要构造一个狗的对象的话class animal_factory; static fun原创 2021-01-17 19:14:06 · 243 阅读 · 0 评论 -
uvm_primer ch10 面向对象的testbench
uvm_primer ch10 面向对象的testbenchpackagetop中定义dut/interface/testbench,并连接testbench激励testerpackage当import 一个package之后,可以访问package中所有的定义数据等;package tinyalu_pkg; typedef enum bit[2:0] {no_op = 3'b000, add_op = 3'b001,原创 2021-01-23 14:26:03 · 202 阅读 · 0 评论 -
uvm_primer ch11基于uvm的test
基于uvm的test使用factory创建case传递interface,run_test()random_test()从本章正式进入uvm的世界使用factory创建case使用下边的命令,我们可以只编译一次跑多个case;vsim top_optimized -coverage +UVM_TESTNAME=add_testvsim top_optimized -coverage +UVM_TESTNAME=random_test使用UVM_TESTNAME去调用 run_test() 去使用原创 2021-01-23 15:22:42 · 567 阅读 · 0 评论 -
uvm_primer ch13 uvm_env
uvm_primer ch13 uvm_envrandom_test() 和add_test()三种实现方式的对比最差的结构好一点的结构最优结构将激励从component中独立出来;random_test() 和add_test()三种实现方式的对比最差的结构好一点的结构将两个tester的共用的run_phase()写到base_tester然后定义get_op get_data两个纯虚函数最优结构将激励从component中独立出来;separate structure from原创 2021-01-23 17:38:54 · 1077 阅读 · 4 评论 -
uvm_primer ch14 oop再思考&对象之间的通信
uvm_primer ch14 oop再思考&对象之间的通信两种编程之间的差异对象间通信两种编程之间的差异过程式编程关注事务或者算法的顺序,先干a,然后在调用b,然后c;关注于下一步干什么?oop关注于怎么创建对象以及怎么把对象连接起来 从而解决问题;oop一直强调面向接口的编程而不是面向实现的编程对象间通信之前我们的激励 coverage scb之间之和dut通信,彼此之间当其他两个不存在;单线程通信:一个对象调用另外一个对象的方法;双线程通信:两个对象在不同的线程运行,原创 2021-01-24 15:08:36 · 105 阅读 · 0 评论 -
uvm_primer ch15 和多个对象对话
uvm_primer ch15 和多个对象对话oop的思想观察者模式实现subscriber连接对象oop的思想在一个类或者一个函数中只干一件事情;使用变量来沟通不同的object,是一个糟糕的方法;class dice_test extends uvm_test; `uvm_component_utils(dice_test); dice_roller dice_roller_h; coverage coverage_h; histogram histogram_h;原创 2021-01-24 15:46:15 · 192 阅读 · 0 评论 -
uvm_primer ch16 在testbench中使用analysis_port- 单线程通信
uvm_primer ch16 在testbench中使用analysis_port需要订阅多个analysis_portobserver模式适用于monitor连接使用在interface中加入句柄,这个用法之前没有用过;在interface中import tinyalu_pkg::*;interface tinyalu_bfm; import tinyalu_pkg::*; command_monitor command_monitor_h; //定义句柄 result_m原创 2021-01-24 16:33:38 · 250 阅读 · 0 评论 -
uvm_primer ch17线程间的通信
uvm_primer ch17线程间的通信verilog线程间的通信oop的线程间通信协调uvm线程间通信协调blocking 模式非blocking 模式问题verilog线程间的通信producer 和consumer的通信使用put_it和get_it来进行通信协调;module producer(output byte shared, input bit put_it, output bit get_it); initial repeat(3) begin原创 2021-01-24 17:31:02 · 416 阅读 · 0 评论 -
uvm_primer ch18 put/get port的应用
uvm_primer ch18 put/get port的应用用来拆分出sequence问题用来拆分出sequencevirtual class base_tester extends uvm_component;`uvm_component_utils(base_tester) virtual tinyalu_bfm bfm; uvm_put_port #(command_s) command_port;//重点 function void build_phase(uvm_pha原创 2021-01-24 18:08:38 · 303 阅读 · 0 评论 -
uvm_primer ch19 reporting/打印信息
uvm_primer ch19 reporting$display $error $fatal做打印,不能有一些控制;uvm 打印可以有多种设置UVM_VERBOSITY的方式最初使用$display $error $fatal做打印,不能有一些控制;uvm 打印`uvm_info(<Message ID string>,<msg string>,<verbosity>)`uvm_warning(<Message ID string>,<msg原创 2021-01-24 18:41:11 · 1125 阅读 · 0 评论