1 SOC环境结构
UVM验证的核心思想是复用,分为水平复用和垂直复用,以及跨平台复用。针对SOC的验证环境,需要做到跨平台复用。
SOC验证环境与sub_system验证环境保持相同的结构。例化整个SOC作为DUT,通过force的方式来提供各模块的时钟信号,使用真实的CPU控制各个IP正常工作,使用真实的DDR仿真模型。
一个典型的SOC结构如图所示,在SOC验证中,sub_system和ip环境会监控对应端口的信号并自动做比对。
![](/images/dv-uvm-reuse-cross-platform/0.png)
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合理通信
![](/images/dv-uvm-reuse-cross-platform/1.png)
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代码来做测试,基于文件来做比对。