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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3318|回复: 3

[原创] 小白学习日记--UVM学习基础篇(四)

[复制链接]
发表于 2021-3-21 16:16:06 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 wenhuajianyuan 于 2021-4-11 18:48 编辑

1.验证平台超时退出的设置方式?  
  • 通过uvm_root的set_timeout(time timeout, bit overridable = 1)函数来设置;
  • 通过command行+UVM_TIMEOUT=<timeout>,<overridable>。


2.如何设置sequence产生的transaction的优先级?
    一方面,通过uvm_do_pri ,uvm_do_on_pri,uvm_do_pri_with或uvm_do_on_pri_with宏来产生transaction,代表priority的参数数值越大,优先级越高,默认为-1。另一方面,通过仲裁算法set_arbitration使优先级起作用(其中SET_ARB_STRICT_FIFO和SET_ARB_STRICT_RANDOM代表严格按照优先级顺序产生transaction)。

3.如何控制sequence有效性?
   通过重载is_relevant函数可以使sequence失效或重新生效,返回值为1代表有效,0代表无效。
virtual function bit is_relevant()
       if A return 0;
        else rerun 1;
  endfunction
  通常wait_for_relevant与is_relevant成对重载,因为若所有有效sequence的transaction发送完时,失效sequence尚未释放出来,验证平台会报错。而当存在wait_for_relevant时,若sequencer所启动的所有sequence失效,则自动调用wait_for_relevant并等待sequence有效(因此wait_for_relevant中需要设置使sequence恢复有效的条件)。

4.uvm_do等宏(没有显示指定sequencer指针的宏)默认的sequencer指针是什么?
这一类宏默认的sequencer指针为宏对应的sequence启动时指定的sequencer指针,sequence把该指针放在其成员变量m_sequencer中。也就是说,uvm_do等价于`uvm_do_on(tr,this,m_sequencer)。

5.什么是向下类型转换和向上类型转换?
  • 父类向子类转换称为向下类型转换,此时子类的句柄指向父类对象,可用cast进行类型转换:1.定义一个子类对象,child_tr=new;2.父类句柄指向子类对象,father_tr=child_tr;3.类型转换,$cast(child_tr,father_tr),若类型兼容则返回1,否则返回0.
  • 子类向父类转换称为向上类型转换,此时父类句柄指向子类对象,直接用“=”即可实现转换。



6.m_sequencer和p_sequencer的关系?
        m_sequencer是每个sequence自带的成员变量,其类型为uvm_sequencer_base。
当sequence中想要使用sequencer的成员变量时,由于类型不一致,无法直接使用m_sequencer句柄,可以通过`uvm_declare_p_sequencer转换生成对应的p_sequencer来使用(`uvm_declare_p_sequencer(my_sequencer)执行了两步操作:1.声明了一个my_sequencer类型的句柄p_sequencer;2.进行类型转换,将m_sequencer类型句柄转换为p_sequencer类型,相当于$cast(p_sequencer,m_sequencer))。

7.什么是前门访问,什么是后门访问?

前门访问是指通过配置总线来对DUT进行读写操作;后门访问不通过总线进行操作,而是通过层次化的引用来改变寄存器的值。


8.如何实例化寄存器模型中的map?
通过调用uvm_reg_block中的create_map来实现。
Eg:default_map = create_map(“default_map”,0,4,UVM_LITTLE_ENDIAN,0);
其中,第一个参数表示实例化名称,第二个参数为基地址,第三个参数为总线宽度(单位为byte),第四个为大小端,最后一个参数代表是否可以按照byte寻址。

9.重载的条件以及优势?
在父类中定义的函数或任务,如果为virtual类型,则可以在子类中对它进行重载。重载的优势是子类指针以父类类型传递时,表现的行为仍为子类行为。

10.寄存器模型中的adapter定义的两个函数分别是什么作用?
reg2bus:寄存器模型通过sequence发出的uvm_reg_bus_op型变量转换成bus_sequencer可以接受的形式。
bus2reg:当监测到总线有操作时,把收集到的transaction转换成寄存器模型可以接收的形式。

11.factory机制重载的函数有哪些?
  • uvm_component的重载函数

全部替换:
set_type_override_by_type(uvm_object_wrapper original_type, uvm_object_wrapper override_type, bit replace=1);
部分替换:
set_inst_override_by_type(string relative_inst_path, uvm_object_wrapper original_type, uvm_object_wrapper override_type);
两个函数中代表重载和被重载类的参数都是uvm_object_wrapper类型,可通过xxx::get_type()获得。
也可直接用字符串表示。对应的函数分别是:set_type_override(string original_type_name, string override_type_name, bit replace=1);
set_inst_override(string relative_inst_path, string original_type_name, string override_type_name);
  • 非component的重载函数

set_type_override_by_type(uvm_object_wrapper original_type,uvm_object_wrapper override_type,bit replace=1);和uvm_component中的同名函数类似,传递的参数也相同。
set_inst_override_by_type(uvm_object_wrapper original_type,uvm_object_wrapper override_type,string full_inst_path);传递的代表路径的参数与uvm_component中的同名函数不同,full_inst_path指要替换的实例中使用get_full_name()得到的路径值。
set_type_override_by_name(string original_type_name, string override_type_name, bit replace=1);与uvm_component中的set_type_override类似,参数也一致。
set_inst_override_by_name(string original_type_name, string override_type_name, string full_inst_path);与uvm_component中的set_inst_override相比,路径参数不同,此处仍需要full_inst_path。

12.使用factory机制重载的条件有哪些?
  • 重载的类和被重载的类,都要在定义时注册到factory机制中;
  • 被重载的类在实例化时,需要使用factory机制的实例化方式,而不能使用new方式;
  • 重载的类与被重载的类之间有派生关系,即被重载的类必须为重载类的父类;
  • component与object之间不能进行重载。



                               
登录/注册后可看大图






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

                                                                           



image.png
发表于 2021-3-22 15:31:53 | 显示全部楼层
等你熟悉了,可以用自己的话,把这些重新叙述一下,可以找点东西类比一下,加上记忆
发表于 2021-3-22 17:44:05 | 显示全部楼层
把张强的 UVM1.1应用指南及源代码分析 后面的源码分析看一遍,这些东西自然都会了。
发表于 2021-4-1 12:15:53 | 显示全部楼层
刚毕业一年,希望可以转行芯片测试,学习学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

×

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

GMT+8, 2024-11-5 13:32 , Processed in 0.021355 second(s), 9 queries , Gzip On, Redis On.

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