UVM实战训练2

305 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天!

--

make run时报错的原因的是按照指定的makefile文件去寻找test= test_base.而在lab2中使用test_da_3_inst 类去继承test_base类。 并且在“test_da_3_inst”类中去override基类方法。

pack_da_3类的定义 image.png 这个时候,我们在test_collection中实现了两种不同类型之间的重载

set_inst_override_by_type("env.i_agent*.seqr.*",packet::get_type(),packet_da_3::get_type());

这个时候,如果需要重新跑仿真的话,就不可以直接make all ,而是需要使用该语句make test=test_da_3_inst。 需将test的测试指定为重载之后的类型。否则就是makefile中的指定类型。

Override with different factory method

  • override method in uvm_component
- function void set_inst_override_by_type(string relative_inst_path,【相对路径】
                                        uvm_object_wrapper original_type,
                                        uvm_object_wrapper override_type);
- function void set_inst_override(string relative_inst_path,
                                  string original_type_name,
                                  string overrride_type_name);
                                  
- function void set_type_override(uvm_object_wrapper original_type,
                                  uvm_object_wrapper override_type,
                                  bit replace = 1);
- function void set_type_override(string original_type_name,
                                  string override_type_name,
                                  bit replace = 1);           
                                        
  • override method in uvm_factory
function void set_inst_override_by_type(uvm_object_wrapper original_type,
                                         uvm_object_wrapper override_type,
                                         string full_inst_path);
                                         
function void set_inst_override_by_name(string original_type_name,
                                         string override_type_name,
                                         string full_inst_path);
                                         
function void set_type_override_by_type(uvm_object_wrapper original_type,
                                        uvm_object_wrapper override_type,
                                        bit replace=1);                   
                                         
function void set_type_override_by_name(string original_type_name,
                                       string override_type_name,
                                       bit replace = 1);                                                  
                                         

override的两类方法,总共8种。一类是用在uvm_component类中,一类是用在uvm_factory中。


SoC架构

  • 什么是SoC 目前的SoC,都是基于ARM的CPU结构。 SoC芯片设计主要是基于IP的集成
  • CPU
  • DSP (DSP作为一种“专精型”微处理器,内部采用的是哈佛结构。这一结构中,程序存储器和数据存储器采用不同的总线,通过指令、数据分开的方式,两条总线能够重叠访问两个空间。这样一来,DSP就具有更大的存储器带宽,数据的移动和交换更加方便,非常适合处理数字信号任务)
  • IPs(USB,PCIE)
  • AMBA

深亚微米EDA软件,主要是Synopsys,Cadence,mento

芯片量产流程

  1. 市场调研 -> 产品定义 -> 方案设计 -> 芯片需求(这里定义芯片的specification)
  2. 芯片需求分析 -> 芯片定义(选什么CPU) -> 模块划分 -> 电路设计 -> 芯片验证 -> 物理设计 -> 流片 -> 封装 -> ATE测试 (一般芯片设计指的是物理设计之前的部分) 3. 板级模块测试 -> 系统级测试 -> 稳定性测试 -> 产品样机 -> 产品小批量 -> 芯片量产

CPU -SoC中的内核

  • CPU所做的工作由其指令集(ISA)决定

  • CPU的控制和数据通路执行指令集中的各种指令