控制/MCU
在基于Universal Verification Methodology (UVM) 的设计中,将配置从设计被测设备 (DUT) 传递到UVM参考模型通常涉及以下步骤:
定义一个配置对象:首先,需要定义一个包含DUT配置的UVM配置对象。这个对象通常会包含被测设备的所有可配置参数。
class dut_config extends uvm_object; `uvm_object_utils(dut_config) // Define your configuration parameters here. For example: int unsigned param1; bit [31:0] param2; function new(string name = "dut_config"); super.new(name); endfunction endclass
在测试中创建和设置配置对象:在UVM测试 (UVM test) 中,创建并设置此配置对象,然后通过UVM配置数据库 (UVM config DB) 设置。
class my_test extends uvm_test; `uvm_component_utils(my_test) dut_config cfg; function new(string name = "my_test", uvm_component parent = null); super.new(name, parent); endfunction virtual function void build_phase(uvm_phase phase); super.build_phase(phase); // Create and configure the DUT configuration object cfg = dut_config::create("cfg"); cfg.param1 = 10; cfg.param2 = 'hDEADBEEF; // Set the DUT configuration object in the UVM configuration DB if (!uvm_config_db #(dut_config)::set(this, "*", "cfg", cfg)) begin `uvm_fatal("SETCFG", "Unable to set DUT configuration in the UVM configuration DB") end endfunction endclass
在UVM参考模型中获取配置对象:在UVM参考模型中,可以从UVM配置数据库中获取此配置对象。
class ref_model extends uvm_component; `uvm_component_utils(ref_model) dut_config cfg; function new(string name = "ref_model", uvm_component parent = null); super.new(name, parent); endfunction virtual function void build_phase(uvm_phase phase); super.build_phase(phase); // Get the DUT configuration object from the UVM configuration DB if (!uvm_config_db #(dut_config)::get(this, "", "cfg", cfg)) begin `uvm_fatal("GETCFG", "Unable to get DUT configuration from the UVM configuration DB") end endfunction endclass
以上示例展示了一种常见的通过UVM配置数据库将DUT的配置传递给UVM参考模型的方法。具体的实现可能会根据设计和验证需求进行调整。
实战MCU+ISP图像处理芯片版图
知识星球发起MCU项目启动,大家一起参与MCU项目规格启动讨论,我把设计、验证、DFT、后端的知识点全部罗列出来,大家一起来完善。
以项目驱动的方式介绍MCU芯片全流程设计的方法;提炼相关的检查列表、signoff checklist的样本;让星球成员熟悉SoC架构、设计流程、开发进度、项目管理;
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !