在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7691|回复: 13

[原创] UVM学习 基础篇(二)

[复制链接]
发表于 2021-3-7 15:13:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
1.验证的目的或指标?
  
  • DUT的行为表现是否与特性列表中要求的一致;
  • DUT是否实现了所有特性;
  • DUT对于异常状况的反应是否与特性列表和spec中一致,比如中断是否置起;
  • DUT是否能够从异常状态中恢复到正常工作模式。


2.driver和sequencer交互的方式?

  • 连接——uvm_driver class中的成员变量seq_item_port和uvm_sequencer中的成员变量seq_item_export两者之间建立一个“通道”,用来传递transaction,在my_agent中,通过connect函数将port和export连在一起(eg:drv.seq_item_port.connect(sqr.seq_item_export))


  • driver通过get_next_item(req)向sequencer申请新的transaction,拿到后驱动transaction,驱动完成后通过item_done通知sequencer(get_next_item(req)和seq_item_port.item_done()成对出现时形成握手机制,当sequencer在新的get_next_item之前收到item_done才会接着发新的transaction)。同时,sequence通过uvm_do等宏向sequencer发送transaction,当它接收到driver发送的item_done信号才算结束当前uvm_do行为,继续下一个uvm_do。



3.sequence启动的方式?
  • 在main_phase中通过.start启动
  • 在env或test的build phase中通过default_sequence启动(eg:uvm_config_db#(uvm_object_wrapper)::set(this,”env.vir_sequencer.main_phase”,”default_sequence”,degamma_vir_base_seq::type_id::get())),在sequence中通过starting_phase来控制raise_objection和drop_objection.

4.base_test的主要工作?

  • 实例化env
  • 设置default_sequence
  • 设置超时退出,打印test状态等


5.启动test的方式?

top中使用run_test(),run_test()通过UVM_TEST_NAME从命令行中寻找测试用例名字,然后创建它的实例并启动。


6.uvm_component和uvm_object的关系?
  • uvm_component继承自uvm_object(uvm_component继承自uvm_report_object,uvm_report_object继承自uvm_object,uvm_object是uvm中数据和层级结构化的类的基类)。


  • uvm_component有uvm_object没有的两大特性:1.在构造函数中通过parent参数来指定指向父类的句柄,从而形成层次化结构;2.具有phase自动执行的特性。



7.monitor和scoreboard可以直接从uvm_component派生吗?

通过在顶层模块中调用run test(“test1”)来启动UVM phase。当调用run test()方法时,它首先会创建一个test_top的对象然后调用所有phase。


8.uvm_component_utils_begin/uvm_object_utils_begin的作用?

供需要同时使用factory机制和field_automation注册的类使用,与uvm_xxx_utils_end成对出现。

9.uvm_component具有uvm_object的所有特性吗?为什么?

不是,由于uvm_component是uvm层次化结构(树)的结点,所以某些特性无法享有。比如clone函数(new+copy),因为一旦使用在uvm_component上,新clone出来的类,parent参数无法指定。

10.uvm_top是局部变量还是全局变量?

uvm_top是全局变量,可以在其他uvm组件中直接使用,另外还可以通过uvm_root::get()来获得它的指针。
eg:uvm root top;
    top = uvm_root::get();

11.field_automation机制提供的函数/功能?

copy(用于实例的复制,使用前需先使用new函数分配内存),compare,pack/unpack,clone以及自动获得config_db::set设置的参数。

12.field_automation如何控制copy等操作的开关?

通过17bit的标志位来控制,默认状态UVM_ALL_ON(‘b000000101010101)
eg:UVM_ALL_ON | UVM_NOPACK



关注公众号并回复”UVMBOOK”可获取更多UVM学习资料



欢迎扫描二维码关注
image.png


发表于 2021-3-25 09:32:54 | 显示全部楼层
非常感谢
发表于 2021-3-26 14:41:37 | 显示全部楼层
谢谢
发表于 2021-3-26 15:04:05 | 显示全部楼层
感谢!!!!!!!!
发表于 2021-4-5 14:45:43 | 显示全部楼层
Thank You very much.
发表于 2021-4-15 11:57:46 | 显示全部楼层
ths~~~~
发表于 2021-4-19 11:07:28 | 显示全部楼层
感谢分享
发表于 2021-5-7 14:16:19 | 显示全部楼层
非常感谢
发表于 2021-5-11 11:28:28 | 显示全部楼层
Thank You very much.
发表于 2021-5-14 14:44:41 | 显示全部楼层
666666666666666666
您需要登录后才可以回帖 登录 | 注册

本版积分规则

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 13:27 , Processed in 0.023070 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表