1、1郑律郑律 ZETALOGZETALOGsdfirm:RISC-V验证方法论与实践软件历史软件历史20112011年开源年开源USBUSB外设固件:外设固件:支持支持SDCC/GCCSDCC/GCCAT89C5122AT89C5122:128B IRAM128B IRAM,256B ERAM256B ERAM ISO7816ISO7816-3 3协议栈协议栈/Secure CCID/Secure CCID读卡器读卡器 MSD UMSD U盘盘/HID/HID键盘键盘https:/ V系统验证框架系统验证框架/教学系统教学系统启动系统启动系统 ZSBL/FSBLZSBL/FSBL:用作:用作RO
2、MROM,启动固件,启动固件 BBLBBL:SBISBI实现实现ICIC测试盲点:中断测试盲点:中断/异步裸金属系统验证异步裸金属系统验证增强的增强的RISRIS-V V系统验证功能系统验证功能 简单简单benchmarkingbenchmarking RISCRISC-V ISA complianceV ISA compliance RISCRISC-V litmusV litmus GEMGEM切片切片https:/ Slide 2 2RI5CYRI5CY的中断控制器的中断控制器RI5CYRI5CY(CV32E40PCV32E40P)支持)支持Vectored IRQVectored IR
3、Q,不,不适合执行一些通用测试适合执行一些通用测试为为RI5CYRI5CY增加通用中断支持增加通用中断支持https:/ v-verifverif增加增加sdfirmsdfirm验证支持验证支持需要安装需要安装verilatorverilator和和gtkwavegtkwave开发开发https:/ v-verifverif增加外设驱动增加外设驱动 cvprintcvprint:0 x100000000 x10000000 cvtimercvtimer:0 x150000000 x15000000 cvtestscvtests:0 x200000000 x20000000https:/ v-v
4、erif/pull/166verif/pull/166Slide Slide 3 3软件思维验证软件思维验证SoCDVSoCDV/CPUDV test bench/CPUDV test benchSoCSoC验证方法论验证方法论对硬件验证的增强:对硬件验证的增强:使用使用C C测试用例,一次编写,各种验证环境执行测试用例,一次编写,各种验证环境执行串口修改成可读可写,可以实现异步乱序激励,更接串口修改成可读可写,可以实现异步乱序激励,更接近软件调试板卡环境近软件调试板卡环境外设接口外设接口VIPVIP可以替换为产品用的外设的行为模型,可以替换为产品用的外设的行为模型,更接近硅后产品形态更接近硅
5、后产品形态自带的测试属性:自带的测试属性:真实加载流程测出总线编址,内存真实加载流程测出总线编址,内存bankbank编址错误编址错误真实时钟真实时钟/复位流程测出复位流程测出glitch freeglitch free设计问题设计问题真实多核启动流程测出真实多核启动流程测出AtomicAtomic设计需求缺失问题设计需求缺失问题真实输入测出管脚配置设计问题引起的状态死锁真实输入测出管脚配置设计问题引起的状态死锁真实中断处理流程测试中断设计饿死无法应答问题真实中断处理流程测试中断设计饿死无法应答问题测试用例开发支持:测试用例开发支持:提供同步提供同步/异步异步APIAPI提供中断提供中断API
6、API提供总线配置提供总线配置APIAPI提供不同仿真环境下的时钟提供不同仿真环境下的时钟/复位的旁路和加速复位的旁路和加速不同仿真环境下输入不同仿真环境下输入/输出频率可编程输出频率可编程适配生态适配生态Linux/uLinux/u-bootboot驱动驱动测试形态变化:测试形态变化:SoCSoC测试用例的乱序执行测试用例的乱序执行社区软件皆可为测试激励社区软件皆可为测试激励Slide Slide 5 5CPUCPU验证方法论验证方法论对硬件验证的增强:对硬件验证的增强:使用使用C C测试用例,一次编写,各种验证环境执行测试用例,一次编写,各种验证环境执行串口修改成可读可写,可以实现异步乱序