MCU芯片级验证

MCU芯片级验证

第一讲 前言

只要是做SOC芯片的项目都需要SOC验证,SOC验证也是芯片验证的重中之重。

在之前做过ahb2apb、ahb2uart的验证之后,这篇文章提到相关内容都很少深入,于是乎,还是后面打算去啃ARM架构,默写代码去了!

课程先修知识:

Linux基本操作

Verilog基础

电路设计基础

UVM验证方法学

测试点分解

第二讲 验证flow

验证的Roadmap

验证的目标

UVM验证方法学

ASIC验证分解

验证策略和任务的分解

AMBA可重用、灵活性、兼容性、广泛支持

一.验证的Roadmap

1.ASIC芯片项目流程

市场需求>产品定义>硬件、软件>芯片测试>产品发布

硬件:芯片定义>芯片开发>芯片IO

软件:软件定义>软件开发>软硬件联调

2.验证的阶段和内容

立项------>Tape Out

验证计划>模块验证>子系统验证>系统验证>post仿真

总体设计>模块设计>系统集成>设计迭代>前端实现>后端设计

3.验证阶段的输入输出

< I > 芯片总体设计>验证计划

内容划分:(模块、子系统、系统)

时间安排:(Tape Out时间和设计时间综合考虑)

人力需求

验证平台规划:模块验证平台、系统验证平台等

< II >模块设计spec、协议——>模块验证计划、验证report

验证计划主要关注feature list和testcase验证feature迭代Corner case添加Code coverage要求(视情况),function coverage (必须100%)

行覆盖率、状态机覆盖率、行覆盖率(每个公司的要求不一致)

代码覆盖率100%不能保证功能覆盖率

< III >子系统设计spec、协议——>子系统验证计划、子系统验证平台、验证report

验证计划主要关注feature list和teatcase验证计划迭代Corner case添加接口Toggle coverage (不一定100%)

< IV >系统设计spec、应用场景——>系统验证计划、系统验证平台、验证report

验证计划主要关注feature list和teatcase验证feature需要与设计、架构、软件进行头脑风暴关注性能Direct case,C code

< V >SDF文件——>后仿验证计划、验证report

验证计划主要关注feature list和teatcase验证feature需要与设计、架构、软件进行头脑风暴关注性能Direct case,C code

二.验证的目标

1.为什么需要验证

验证对IC的重要性,对比软件验证的目的是什么?要验证什么?该怎么验?

软件也会验证,软件有问题打个补丁就可以继续上线;而IC出错就变砖头;

验证的目标就是找bug,保证tape out的芯片没致命问题;

要验证设计的代码,有没有实现这个功能,考虑的问题就多一些

2.怎么达成目标?

激励与响应检查点依据100%的含义[ -------]

3.达成目标的手段

验证工具的掌握:

验证语言 、验证方法学、仿真工具、脚本语言算法/协议的理解:

优秀的验证工程师对协议的理解要比设计工程师还透彻

[最好知道为什么错了,该怎么修改,希望自己能达到到这种水平]验证的理念:

要验证什么 怎么检查高效 问题的原因是什么

三.UVM验证方法学

CDV-基于覆盖率驱动 验证

uvm_component就是基础航线、铁路

uvm_sequence就是飞机、火车

只有run phase是task,其他都是function

四.ASIC验证分解

1.按大类分解

数字前端验证:模块验证、子系统验证、系统验证数字后端验证:后端验证(post)FPGA验证:软硬件协同[定位问题比较困难]加速器验证:验证、软件[三家EDA厂商]Validation[芯片回来之后的测试,比如老化、插拔次数]为什么要这么划分?[放到系统级验证,太耗时]

2.模块验证

模块验证侧重点在模块本身功能的验证以模块的spec和协议为基础提取验证feature验证计划的重点是feature和验证架构,然后列出testcase验证计划根据验证的开展进行增补模块能够覆盖的绝对不到下一级去覆盖Function coverage 100%Code coverage 95%+(各公司有标准)Check list[看以前在哪里吃过亏]对于IIP,检查参数设置寄存器访问、复位值寄存器field功能协议检查,时序要求中断产生、查询、清楚所有输入输出信号工作模式覆盖状态机跳转FIFO的读写操作,空满状态计数器的边界loadRam的读写功能,边界点

3.子系统验证

子系统验证侧重点在系统的互联性关注系统的工作模式关注系统的复杂场景应用完成度:芯片bug趋于收敛Review toggle coverage,exclude之后100%Check list检查

3.子系统验证内容

中断的产生和连接DMA功能,所有通道的req,传输、中断IP的模块功能,特别是与其他模块相关的,与接口相关的IOMAX睡眠唤醒Memory读写GPIO功能Clk/Reset

4.系统验证

c代码软硬件协同仿真中断处理关键系统路径覆盖芯片工作模块和测试模块数据通路和性能LowPower功能实现

4.系统验证内容

基本IP功能中断处理多IP同时工作程序启动工作模式,如安全工作jtag功能寄存器测试应用场景

5.后仿验证

网表+sdf,带时序的仿真

wc: worst case slow,低电压,高温度,慢工艺->一般情况下 delay最大, setup差

wcl: worst case low-temperature,低电压,低温度,慢工艺->温度反转效应时 delay最大, setup差

lt:即low- temperature,也叫bc( best case fast),高电压,低温度,快工艺->一般情况下 delay最小,hold差

ml:max- leakage,高电压,高温度,快工艺->温度反转效应下 delay最小,hold差

tc: typical,普通电压,普通温度,标准工艺->各种 typical从系统case中选取case,专注异步处理和PAD接口相关仿真速度较慢,case需要优化

[后仿时间很长,做优化]

五.验证策略和任务的分解

验证平台

子系统验证平台 系统验证平台 后仿验证平台处理脚本

makefile regression coverage子系统验证

内容作为作业,学员补充系统验证

内容作为作业,学员补充Netlist:验证和后仿验证

第三讲 子系统关注点的验证

采用的spec就是下面这个!

一 、APB timer验证讲解

写seq和对应的test

mcu_ctrl_register也有spec

二 、APB dtimer验证

三、I2C验证

四、uart验证

第四讲 子系统验证环境

AHB VIP介绍Regmodelf的生成Adapter介绍Virtual sequencerEnvironmentTb topBase test

一. AHB VIP介绍

1.为什么使用VIP2.AHB VIP使用:三大公司的免费

二. Regmodelf的生成

dut的抽象模型

ralgen可以生成寄存器

三. Adapter介绍

生成regmodel,就要和dut连接起来

镜像值、期望值

四. Virtual sequencer

sequence都运行在sequencer上

五. Environment

Define componentCreate componentComponent connect

六. Tb top

Import packageInterface instantiationDUT instantiationConfig_dbClk and resetWaveform

七. Base test

Create environmentConfig environmentReset phaseMain phase

第五讲 子系统验证仿真

Makefile、debug、功能点梳理

第六讲 子系统验证回归

Memory测试

DMA模块、验证

覆盖率统计和分析

第七讲 系统级验证

一、系统级验证环境

第八讲 Netlist和post仿真

后记

本文已完结,最近几年应该不会补充了!

相关推荐

AI软件为何总卡住?揭秘背后真相
bst365老牌体育

AI软件为何总卡住?揭秘背后真相

📅 07-05 👁️ 3866
阴阳师妖气封印大全
bst365老牌体育

阴阳师妖气封印大全

📅 09-08 👁️ 3826
TB到比特转换器
365bet娱乐场体育在线

TB到比特转换器

📅 09-29 👁️ 6167