0%

SOC验证环境及跨平台复用


1 SOC环境结构

UVM验证的核心思想是复用,分为水平复用和垂直复用,以及跨平台复用。针对SOC的验证环境,需要做到跨平台复用。

SOC验证环境与sub_system验证环境保持相同的结构。例化整个SOC作为DUT,通过force的方式来提供各模块的时钟信号,使用真实的CPU控制各个IP正常工作,使用真实的DDR仿真模型。

一个典型的SOC结构如图所示,在SOC验证中,sub_system和ip环境会监控对应端口的信号并自动做比对。

basetest中主要包括base_test_cfg,reg_model,ddr_mem和env四个部分。

base_test_cfg:整个testcase的最顶层的配置,其内部包含了env_cfg和一些配置变量。

amba_vip: 配置成passive模式,在顶层的testcase中,创建两个ddr_mem,sram_mem,用于监控总线并提供svt mem给底层env使用。

reg_model: SOC环境中也需要使用寄存器模型,一般连接在SPI debug总线上,同时提供寄存器模型指针给底层env使用。

环境的env中有以下几个部分:

  • virtual sequencer:所有sequencer的句柄都在virtual sequencer中
  • reference model:无
  • scoreboard:无
  • 各个agent:分别用于发送和收集transaction
  • amba env:amba vip的顶层环境包括axi,ahb,apb,其配置在env_cfg中例化
  • 各个sub system环境的env:例化的ip env或者包多个ip env的sub sys env。ip env嵌套在sub sys env里使用
  • env cfg:环境的配置文件。包含各个agent的配置以及amba vip的配置。env cfg会被virtual sequencer,reference model,scoreboard所共用
  • virtual sequence:调度sequence,同步CPU的信息并控制仿真进度

2 SOC环境目录

SOC验证环境与sub_system验证环境保持相同的目录结构。


3 跨平台复用

跨平台复用主要是指在Simulation,Emulation,FPGA Prototype原型平台之间也能够复用。需要注意以下几点:

  • 垂直复用sub system验证环境的组件和sequence,子系统环境配置成passive模式
  • 通过寄存器模型进行系统配置的同时,需要自动生成对应的firmware代码(C代码)
  • 复用中断处理程序的sequence,同时需要产生对应的firmware代码(C代码)
  • SOC中使用真实的DDR模型,对DDR的write和dump需要通过硬件层次后门访问来实现
  • 通过sequence来控制仿真进程,CPU运行的firmware需要与sequence合理通信

3.1 Simulation平台复用

垂直复用所有sub system环境和ip环境,使用passive模式。

可复用的部分

  • 所有interface可正常复用
  • 所有寄存器模型指针可正常复用
  • 所有svt mem句柄可正常复用,需要监控总线
  • 所有monitor和reference model,scorboard可正常复用
  • 所有sequence可正常复用
  • 随机激励可正常复用

不可复用的部分

  • ddr controller和phy的代码在cpu中完成
  • ddr 模型的初始化使用特定的后门函数,不能与svt mem兼容

3.2 Emulation平台复用

跨平台复用SOC环境,使用passive模式。

可复用的部分

  • 部分interface可正常复用,由于跨平台导致内部信号发生变化
  • 部分monitor可正常复用,由于跨平台导致内部信号发生变化
  • ddr controller和phy的代码在cpu中完成,可直接复用
  • reference model,scorboard可正常复用
  • boot相关的C代码可正常复用
  • 随机参数配置可正常复用

不可复用的部分

  • 所有寄存器模型指针不能复用
  • 所有svt mem句柄不能复用
  • 所有sequence不能复用
  • ddr 模型在不同平台上不一致,后门访问函数不能复用

3.3 Prototype平台复用

原型验证平台主要使用FPGA完成,所有的模拟单元,phy,ddr结构均不一致,跨平台复用性较低。

可复用的部分

  • ddr controller和phy的代码在cpu中完成,可直接复用
  • 基于文件读写的reference model,scorboard可正常复用
  • boot相关的C代码可正常复用
  • 随机参数配置可正常复用

不可复用的部分

  • 所有interface不可复用
  • 所有激励不可复用,需使用特定的模型
  • 所有寄存器模型指针不能复用
  • 所有svt mem句柄不能复用
  • 所有sequence不能复用
  • ddr 模型在不同平台上不一致,后门访问函数不能复用

4 总结

跨平台复用主要可以复用随机参数配置,复用参考模型,基于C代码来做测试,基于文件来做比对。