在使用Verdi UVM Debug Mode之前,首先需要确保已经安装了Verdi工具,并且已经编写好需要调试的硬件代码。接下来,按照以下步骤进入Verdi UVM Debug Mode: 打开Verdi工具,并加载需要调试的硬件代码。 在Verdi的界面中,选择“Windows”菜单,然后选择“Interactive Debug Mode”,进入调试模式。 在调试模式下,可以看到UVM按钮里...
UVM中的工厂模式大致结构与其类似,实现更加复杂。 UVM中的工厂模式 下面梳理一下UVM中的工厂模式,UVM工厂模式对于创建对象大致流程和加入注册的工厂模式中的示例差不多,对重载的支持实现比较复杂,UVM工厂模式的重载支持四种方式,set_type/inst_override_by_type/name, 还支持命令行中的重写以及对工厂模式的debug功能。
然后在另一个地方,通过get获得之前创建的资源。 uvm_config_db机制还为资源加上了scope限制资源的访问,保证数据安全;precedence设置优先级;override资源重写;record记录资源访问历史用于debug等功能。 这里的资源可以是scalar objects class handles queues lists virtual interfaces 等。 队列,数组类型 对于队列,数组的传递...
适配器模式(Adapter Pattern)是结构性设计模式,其目的是协调不兼容的结构,把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 寄存器模型中的adapter就是一个适配器,提供了reg2bus和bus2reg的接口,充当uvm_reg_map和uvm_sequencer中的转换器。uvm_r...
第一种是在SV代码中嵌入函数调用uvm_debug对象。 uvm_debug对象是单例类,因此可以在测试平台或测试用例...
UVM预先定义了六个详细程度; UVM_NONE到UVM_DEBUG。这些级别只不过是整数枚举值 如果我们不指定任何冗余度阈值,则UVM将默认使用UVM_MEDIUM。这意味着将打印所有带有UVM_NONE,UVM_LOW和UVM_MEDIUM的消息,但是带有UVM_HIGH,UVM_FULL和UVM_DEBUG的消息不会。
UVM_NONE的级别最低,UVM_DEBUG的级别最高。一般UVM_LOW,UVM_MEDIUM,UVM_HIGH会比较常用,基本会在这三个中进行选择。可以通过get_report_verbosity_level函数得到某个component的冗余度阈值,函数所返回的就是每个级别的阈值数。 uvm提供set_report_verbosity_level函数来设置某个特定component的默认冗余度阈值。设置完后...
所以存在两个维度,一个uvm_component的维度,根据单例模式中的parent-child关系构建了树状结构;一个phase维度,将每个phase以node的形式放入domain中,统一调度。UVM还支持objection机制,drain_time,timeout,多domain,进程同步,phase的jump,phase_debug等操作,所以简单的访问者模式无法满足要求。
在SV代码中,uvm_debug_pkg中的dpi_read_line()函数将提示打印到屏幕上,等待用户输入行,然后将输入的行作为字符串返回。在C代码中,最简单的实现是从<stdio.h>调用C内置的getline()函数,以从标准输入中读取一行。在模拟器以GUI模式运行的情况下,在Shell和GUI之间来回切换以输入调试命令非常不方便。或者,可以编译C...
UVM_DEBUG=500 UVM提供set_report_verbosity_level函数来设置某个特定component的默认冗余度阈值。由于涉及到层次引用,所以需要在connect_phase及之后的phase才能调用这个函数。如果不牵扯到任何层次引用,如设置当前component的冗余度阈值,则可以在connect_phase之前调用。set_report_verbosity_level只对某个特定的component起...