- 博客(23)
- 收藏
- 关注
原创 《UVM实战卷Ⅰ》学习笔记 第八章 UVM中的factory机制
本章主要讲factory机制2个点:1.重载:又称为覆盖,也是opp编程三大特点之一多态的体现2.factory创造实例多说几句:第八章建议多在项目中实践,学习效率会高一些。本书学习笔记就暂时更新到这里,后续不出意外这本书还会反复阅读,希望自己到时候能够更新丰富各个章节的笔记。如果各位在之前的任何笔记发现错误或者有关于UVM等IC验证方面的知识探讨,欢迎和我联系,谢谢~...
2021-11-03 10:43:28
240
原创 UVM寄存器模型知识梳理-(2)
三.寄存器常规方法1.mirror/desired/actual value刚开始一般会进行复位,复位后mv/dv/av三个值相等,而后reg_mod更改dv,dv进过adapter/bus配置在dut_reg中的av,而总线上的监测功能会更新mv,再使三个值相等.2.prediction分类1.自动预测(前篇文章提及过)2.显示预测注意使用predictor时需要将adapter和map的句柄传入,并和monitor相连接.3.uvm_reg的访问方法1.首选注意从谁提供的
2021-10-20 12:28:36
595
原创 《UVM实战卷Ⅰ》学习笔记 第七章 UVM中的寄存器模型(2)
推荐另外一篇相对更为基础的UVM寄存器相关知识梳理UVM寄存器模型笔记_IC-V的博客-CSDN博客目录7.3后门访问和前门访问1.后门访问的方式7.4复杂的寄存器模型7.5复杂寄存器模型7.6寄存器模型中内建的一些sequence7.7寄存器模型的高级用法7.8寄存器模型的其他常用函数7.3后门访问和前门访问1.后门访问的方式1.新建后门interface2.DPI+VPI①构造reg_mod时设置好路径参数②写操作uvm_hdl...
2021-10-19 21:10:58
624
原创 《UVM实战卷Ⅰ》学习笔记 第七章 UVM中的寄存器模型(1)
写在前面:本章可能个人认为是全书最为复杂的一章,也是UVM的提升所在.通过自己的学习,自己有以下几点针对本章的学习建议;1.如果可能的话,建议先有sv验证reg的经验,这样更能体会UVM的方便之处2.前边六章内容,要熟悉,第七章不会刻意提及前边的知识点3.如果第一次看不懂不要勉强,多看几次.另外看的时候一定结合代码,必要的时候看看源代码,有助于理解7.1寄存器模型简介1 2.2.1和7.1.1的dut可能部分同学对dut的理解不透彻,可以结合下边两个图来理解,分别是2.2.1和7.7
2021-10-19 19:25:00
796
原创 《UVM实战卷Ⅰ》学习笔记 第六章 UVM中的sequence(2)
目录6.4sequence进阶应用1.uvm_do系列函数的操作对象是什么?2.从某种程度上讲transaction和sequence界限比较模糊3.seq/sqr/drv之间流转的transaction类型匹配($cast(子类,父类)的重要应用)4.p_sequencer($cast(子类,父类)的重要应用)6.4sequence进阶应用1.uvm_do系列函数的操作对象是什么?①transaction:uvm_do的操作对象在6.4之前都是transactio...
2021-10-18 17:25:12
685
原创 《UVM实战卷Ⅰ》学习笔记 第五章 UVM验证平台的运行
5.1phase机制1.两种自上而下执行顺序1.空间上:不同层次的build_phase自上而下依次执行2.时间上:不同phase依次执行2.phase的执行顺序1.UVM树直系comp(彼此依靠parent/child联系起来的comp)的phase:①:不消耗仿真时间的phase不同层次的build_phase--->自上而下依次执行,其余不消耗仿真时间的phase(例如connect_phase)--->自下而上②消耗仿真时间的phase--->自下而上.
2021-10-17 13:16:03
13442
原创 《UVM实战卷Ⅰ》学习笔记 第四章 UVM中的TLM1.0通信
写在前面:TLM有1.0和2.0,本书只讲述1.04.11.TLM通信解决的三个需求1.transaction级数据在comp之间的传输2.comp数据传输存在的阻塞和非阻塞问题3.接收数据部件如何向发送数据部件请求数据2.控制流(initiator和target)和数据流(productor和consumer)在最开始的第一章,作者就提及了控制流和数据流,在TLM这章可以有具象的认识.数据流顾名思义就是数据的流动,从productor到consumer而控制流是命令或请
2021-10-16 19:44:35
474
原创 《UVM实战卷Ⅰ》学习笔记 第三章 UVM基础(2)
目录3.43.53.4本小节主要是讲的信息管理,在后续的调试中很重要.内容相对简单繁琐,多查询多应用即可.3.5
2021-10-16 15:22:49
173
原创 《UVM实战卷Ⅰ》学习笔记 第三章 UVM基础(1)
3.11.补一张更为全面的uvm库图注意uvm_compoent和uvm_object的关系,按继承于uvm_object与否分类该图2.uvm_compoent继承于uvm_object,相对又有什么扩展?1.构造函数new(name,parent),可形成树形结构2.phase自动执行,对比可以回顾transaction是怎么启动3.uvm_compoent相对uvm_object有什么缺失?(纵然uvm_compoent继承于uvm_object)由于其树形结构..
2021-10-16 10:49:39
723
原创 《UVM实战卷Ⅰ》学习笔记 第二章 一个简单的UVM验证平台(4)
2.51.为什么引入base_test?经过重重改造,我们来到了最后一步.截止目前uvm_test_top是env(run_test的参数就是env),然后用于验证dut的激励在seq中生成,在env中启动.为了利用现有的env构造,我们最好的办法是,再套娃,再找个容器把env例化进去,这就是base_test.然后把原来的seq以及和seq相关的启动单独拿出来(原来启动是在env)组成case.结合代码可知,case就分成两部分:一是原来的seq,二是为了利用原有env(已例化在base_te
2021-10-15 20:31:19
351
原创 《UVM实战卷Ⅰ》学习笔记 第二章 一个简单的UVM验证平台(3)
2.41.定义driver时传递给uvm_driver参数有什么用?class my_driver extends uvm_driver#(my_transaction);//传递参数............ for(int i = 0; i < 2; i++) begin req = new("req");//直接例化使用,省略my_transaction req assert(req.randomize() with {pload.size ==
2021-10-15 18:19:18
630
原创 《UVM实战卷Ⅰ》学习笔记 第二章 一个简单的UVM验证平台(2)
写在前面:为了避免文章过长,引起阅读疲劳,会将有些章节分开写2.31.什么是基于信号级的操作?什么是基于transaction的操作?transaction是个抽象的概念,我们可以结合代码来理解,先看不同driver中什么是信号级再看什么是transaction.需求是:满足一般物理协议,以帧或者包传递数据.解决是:引入transaction信号级task my_driver::main_phase(uvm_phase phase); phase.raise_objection(
2021-10-15 16:53:36
654
原创 《UVM实战卷Ⅰ》学习笔记 第二章 一个简单的UVM验证平台(1)
写在前面:本章作者想通过一个极为简单的验证环境让读者初始UVM,因此该章学习有一些建议.第一点,有的细节暂时不用深究,因为后续章节会详细讲解.做好备忘,回头再温习即可.第二点,个人认为作者关于UVM中语法点或者说新机制的引入是从"需求--->解决方案"的思路来讲解的,所以可以从这个角度理解,抓大放小.2.1无2.21.想要在使用UVM实现一个功能时,第一步应该做什么?这里主要谈的是面向对象编程.从开始讲,UVM本质上是一个库,库中有各种各样已经定义好的类(class),这里的定义好
2021-10-15 02:13:00
2332
原创 《UVM实战卷Ⅰ》学习笔记 第一章 与UVM的第一次接触
写在前面: 本章可以简单理解为一个通识介绍.主要介绍:1.验证与UVM的介绍 2.通过学习本书可以掌握UVM中什么内容.1.两个基本概念1.reference model(参考模型):reference model用于模拟硬件功能,用于接收硬件输入接口的数据然后产生输出,将输出和硬件输出对比,达到验证目的.2.Design Under Test(DUT 待测设计/硬件):即设计人员依特性列表完成的RTL代码2.待迭代内容1.作者在1.1.1(p.2)中提及的验证的主要内容是否可以理解透彻
2021-10-13 23:34:05
256
原创 《UVM实战卷Ⅰ》学习笔记 前言
1.为什么要写这个专栏?1.尝试使用费曼学习法(即输出式学习法)消化知识2.个人认为《UVM实战卷Ⅰ》这本书很适合UVM初学者使用,但是网络上关于此书的相关学习经验较少,有部分直接把书中内容搬上来,个人觉得意义不大3.不断更新迭代自己对UVM的理解,随着自己对UVM理解更深,可以在此专栏进行更新迭代4.试图建立一个关于此书的讨论区,由于自己水平有限,希望有同在学习的伙伴加入.或评论或私信一起讨论2.学习《UVM实战卷Ⅰ》的建议1.需要有面向对象编程语言基础,最好是system ver
2021-10-13 22:11:58
508
原创 从UVM源代码理解uvm_compoent的构造函数的参数列表
本文主要针对初学者. 之前和人讨论问题时,遇到这样一个关于uvm_compoent new函数基础的问题,在某种程度上反映了基础编程思想对UVM学习的必要性. 直接看问题:function new (string name, uvm_component parent=null);和function new (string name, uvm_component parent);有什么区别? 我们可以通过源代码看看这个问题(源代码来源网址:...
2021-09-16 10:16:35
1754
1
原创 UVM phase机制中各个phase function/task 的参数列表(uvm_phase phase)怎么理解?
敲代码过程中,发现自己不是很理解这个参数列表,部分人建议直接记住就好.但是其实《UVM实战卷I》有过相关讲解(在5.2.2参数phase的必要性,需要结合5.2.1来看).但是当时看完之后没感觉,也觉得不难理解,但是事实证明还是忘了.坑就是这样必须自己踩,才会学到东西. 回归主题,《UVM实战卷I》作者通过5.2.1铺垫objection机制,引出phase这个句柄的必要性,即你要用objection,就要phase.raise/drop_objection,所以没这个句柄...
2021-09-15 17:47:42
743
原创 从《UVM实战卷Ⅰ》第2章组件的添加过程中的实际需求谈phase机制的核心意义
UVM作为一门验证方法学,一开始上手的确有点摸不着头脑,但是个人认为一切的原理都是从实际需求出发的,这样理解事物会事半功倍,张强在一开始也劝告读者不要想一开始就想理解方法学是什么东西?他本人在写作的过程中也秉承了这一思路,第2章通过搭环境,在实际搭环境过程中遇到需要引入概达到目的. 再谈本文主题,来自于张强<UVM实战卷1>p.31下方,书中写到"这样引起的问题时无法通过直接赋值的方式向uvm_agent传递is_active的值.在my_env的build_p...
2021-09-04 10:29:35
282
原创 简单几句话说明bit(比特)/byte(字节)/word(字)的关系
检索了一些blog感觉有的讲的不是很清晰,这里是说三者的对应关系,其余基础以及拓展知识不做说明.① 1byte=8bit② 16位系统中 1word=16bit=2byte 32位系统中 1word=32bit=4byte 64位系统中 1word=64bit=8byte 所以严格意义上不提系统的具体情况,直接讲word和byte的关系,是一个错误的思考方式....
2021-09-03 11:44:34
1061
原创 关于在Windows环境下使用Questasim运行<UVM实战 卷1>张强 代码常见报错更新积累
在学习UVM圣经<UVM实战卷1>过程中,亲自运行书中代码不失为一种效率高的学习途径.很多小白在学习初始,没有相应的Linux环境,仍在使用Windows环境,因此特此更新使用过程中的报错,抛砖引玉,供大家交流.下文中基本过程已经写得比较详细,但是有些细节还有些不详细,暂且引用一下,后续有时间自己会更新一版基本过程.https://blog.csdn.net/qq_40893012/article/details/112258741常见错误更新:1.在set命令设置过程中,切记不
2021-09-02 02:28:26
1437
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人