uvm实战-学习笔记

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《UVM实战(卷1)》学习笔记

看了第1/2/3/4/5/6/8/9.1这几个章节。

第一章是综述,第二章是一个具体的例子,学习笔记从第三章相关内容开始。

我个人觉得UVM重要的部分(特点的部分):

1)factory机制(overrideconfig_db)

2)TLM传递

3)phase机制

4)sequence-sequencer以及virtualseq/sqr

内容中的截图基本来自于UVM源代码、书自带的例子和《uvm1.1应用指南及源代码分析》这个PDF里的。需要结合书(

第3

也uvm_void

常用的

item,当发现有

常用的

transaction-level向signal-level的转换。uvm_driver需要参数(REQRSP),比uvm_component增加了几个成员。重要的是seq_item_port和req/rsp.(src/comps/uvm_driver.svh)

monitor/scoreboard派生自uvm_monitor和uvm_scoreboard,但是uvm_monitor和uvm_scoreboard并没有在uvm_component基础上做扩展。

src/comps/uvm_monitor.svh

因为

driver和

env

macro

1)对于

2)对于

对于

`uvm_component_utils(类名)

uvm_component里的成员也可以像uvm_object里成员一样,用field_automation机制。

field_automation机制:

对于uvm_object派生类来说,field_automation机制让对象自动有的copycompareprintpackunpack等函数,简化了实现uvm_component派生类里一些function/task的工作量

对于uvm_component派生类来说,field_automation机制最重要的是可以在build_phase中自动获取

uvm_config_db#()::set()的数值(必须加super.build_phase(phase))----也就是不用写uvm_config_db#()::get()

注意:field_automation的macro的类型要和uvm_config_db的参数类型一致:

如下示例代码,field_intvsuvm_config_db#(bit[47:0])这个时候super.build_phase()是不起作用的。

想要起作用的话,需要用

clone=new+copy 源代码中可以看到clone 函数一上来会做一次create ,然后调copy 函数

src/base/uvm_object.svh

3.2UVM 的树形结构

uvm_component 的new/create 要注意第一个参数是名字,第二个参数是parent 指针。

UVM 真正的树根是“uvm_top ”.根据上面这个树结构,可以看出一个个component 的parent 是什么。uvm_top 的parent 是null 。当一个component 在实例化的时候,如果parent 参数设成null ,那么parent 参数会被仿真器自动设置成uvm_root 的实例uvm_top.

在6.6.1章节里也提到了,sequence 在uvm_config_db#()::get ()的时候,第一个参数设成“null ”,实际就是 0/1两种情况

1

有217bit 中

bit0✍✍packbit9UVM_ALL_ON 是‘

UVM_ALL_ON|UVM_NO_PACK 这样就会忽略掉packbit

这个ps 的更合理一些。然后crc_error 是

3.4UVM打印信息控制

get_report_verbosity_level()

set_report_verbosity_level(UVM_HIGH)只对当前调用的component起作用

set_report_verbosity_level_hier(UVM_HIGH)对当前及下面所有的component起作用

simv+UVM_VERBOSITY=UVM_HIGH命令行方式------我觉得用这个就可以了

重载打印信息:

set_report_severity_override(UVM_WARNING,UVM_ERROR);

上述函数都是在connect_phase及后面的phase使用

设置UVM_ERROR到达一定数量结束仿真

设置在

都是4

set的

1)

2)

3)

调用set

config_db(6.6.1章节)。

使用如下函数调试config_db

check_config_usage()print_config(1/0)这两个函数在connect_phase函数中调

simv+UVM_CONFIG_DB_TRACE

注意:第二个参数设置错误不会报错!!-------config_db机制务必要注意参数的书写。

第4章UVM中的TLM1.0通信

TLM是TransactionLevelModeling缩写

这章要搞清楚portexportimpfifo以及几种操作function/task和对应component中要实现的function/task

相关文档
最新文档