MCU芯片级验证

article/2025/9/23 5:14:25

第一讲 前言

只要是做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的读写操作,空满状态
  • 计数器的边界load
  • Ram的读写功能,边界点

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验证

在这里插入图片描述

第四讲 子系统验证环境

  1. AHB VIP介绍
  2. Regmodelf的生成
  3. Adapter介绍
  4. Virtual sequencer
  5. Environment
  6. Tb top
  7. Base test

一. AHB VIP介绍

  • 1.为什么使用VIP
  • 2.AHB VIP使用:三大公司的免费
    在这里插入图片描述

二. Regmodelf的生成

dut的抽象模型
在这里插入图片描述
ralgen可以生成寄存器

三. Adapter介绍

生成regmodel,就要和dut连接起来
在这里插入图片描述
在这里插入图片描述
镜像值、期望值
在这里插入图片描述

四. Virtual sequencer

sequence都运行在sequencer上
在这里插入图片描述

五. Environment

  1. Define component
  2. Create component
  3. Component connect

六. Tb top

  1. Import package
  2. Interface instantiation
  3. DUT instantiation
  4. Config_db
  5. Clk and reset
  6. Waveform

七. Base test

  1. Create environment
  2. Config environment
  3. Reset phase
  4. Main phase

第五讲 子系统验证仿真

Makefile、debug、功能点梳理

第六讲 子系统验证回归

Memory测试

DMA模块、验证

覆盖率统计和分析

第七讲 系统级验证

一、系统级验证环境

在这里插入图片描述

第八讲 Netlist和post仿真

后记

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


http://chatgpt.dhexx.cn/article/RUv8Gmmr.shtml

相关文章

极验验证滑块破解,canvas

前言 请勿用于商务用途哦&#xff0c;仅限于学习&#xff0c;否则后果自负哦 有两篇关于极验验证滑块破解的文章&#xff0c;在此分享一下&#xff1a; https://www.jianshu.com/p/c8df1194b514 https://www.jianshu.com/p/f12679a63b8d 这两篇文章针对不同滑块&#xff0c;有…

极验验证--滑块验证

极验验证–滑块验证 本文通过通过模拟登录极验网站&#xff0c;完成滑块验证 所用语言和相关模块 python3.6seleniumrequestsPIL 极验验证码特点分析 极验验证是一种在计算机领域用于区分自然人和机器人的&#xff0c;通过简单集成的方式&#xff0c;为开发者提供安全、便捷…

vue2.0 + 极验验证

1.极验验证gt.js需要注意的是这两行 window.initGeetest initGeetest; return initGeetest; 网上有博主的文章中是没有这两行的截图的&#xff0c;需要注意。完整的js如下&#xff1a;-------------------------------------------------------------------------------…

更安全的验证方式-极验验证

简介 极验验证是一种在计算机领域区分自然人和机器人的&#xff0c;通过简单集成的方式&#xff0c;为开发者提供安全、便捷的云端验证服务&#xff0c;与以往传统验证不同的是&#xff0c;极验通过分析用户完成拼图过程中的行为特征&#xff0c;通过数据分析来判断是人还是机…

centos7 创建、删除目录软连接

创建/删除目录软连接 ① 目录只能创建软链接 ② 目录创建链接必须用绝对路径&#xff0c;相对路径创建会不成功&#xff0c;会提示&#xff1a;符号连接的层数过多这样的错误 ③ 在链接目标目录中修改文件都会在源文件目录中同步变化 1.创建软连接 创建源目录&#xff1a; …

C#删除目录和目录下的所有文件

方法1&#xff1a;直接删除法 DirectoryInfo di new DirectoryInfo(string Path);di.Delete(true); 注&#xff1a;path是你要删除的非空目录&#xff1b; true&#xff1a;你要删除里面所有的文件&#xff0c;包括文件夹和子文件夹 方法2&#xff1a;层级删除法 /// <…

练习HDFS的访问,创建目录,删除目录--超详细

1、如果连接被拒绝&#xff0c;则输入&#xff1a; source ~/.bash_profile: 2、进入到sbin目录下输入&#xff1a;start-dfs.sh&#xff0c;重启一下。 之后再输入hdfs dfs -ls /&#xff0c;没有出现拒绝连接即可。 3、若需要创建目录&#xff0c;则输入&#xff1a; hdfs…

linux删除目录下文件的几种方法

删除某个目录下的文件 > tree . . └── rumenz├── 1.txt├── 2.txt└── one2 directories, 2 files删除rumenz目录下的所有文件(不删除目录) > rm -f rumenz/* rm: cannot remove ‘rumenz/one’: Is a directory如果是一个目录就跳过提示 使用find删除rumenz…

linux 删除目录下所有指定的子目录

find /var/lib/jenkins/jobs/service-sit-jck-syc/jobs -type d -name "builds" -exec rm -rf {} find 【要搜索的目录】 -type d【d为目录&#xff0c;如果是删除指定文件&#xff0c;就用f】-name “【要删除的目录名】” exec rm -rf {}

bat脚本删除目录下的文件

今天在写脚本的时候有一个场景是需要判断目录是否存在如果存在的话就删除掉这个目录&#xff0c;然后在执行其他操作。 我们需要删除delete目录及其目录下的所有文件 D: set dir delete echo %dir% if exist %dir% ( del /s /q %dir% rd /s /q %dir% ) pause

在 Linux 中删除目录——如何从命令行删除目录和内容

Linux 是著名的开源操作系统,其功能通常在你的开发环境中可用。熟练使用它的基本命令,可以使开发人员的生活变得更加轻松。 在这篇指南中,你将学习如何从 Linux 命令行删除目录和文件。 Linux rm 命令 rm(remove 的缩写)命令非常有用。让我们学习它的语法,并查看一些示…

C++删除目录,包括该目录下所有子目录和文件

目录 一、FindFirstFile 1.函数功能&#xff1a; 2.函数原型&#xff1a; 3.参数&#xff1a; 4.返回值&#xff1a; 5.注意&#xff1a; 二、FindNextFile 1.函数功能&#xff1a; 2.函数原型&#xff1a; 3.参数&#xff1a; 4.返回值&#xff1a; 5.注意&#x…

如何使用 rmdir 命令删除目录?

rmdir 是您将在开始时学习但很少使用的基本 Linux 命令之一。 为什么&#xff1f; 因为听起来好像 rmdir 用于删除目录&#xff08;即文件夹&#xff09;&#xff0c;但事实是&#xff0c;默认情况下&#xff0c;它只删除空目录。 在 Linux 中使用 rmdir 命令 rmdir 有一个…

java实现删除目录

问题 要求&#xff1a;采用java实现删除指定目录及其下所有文件 如果直接directory.delete()&#xff0c;是不能够直接删除不为空的目录。 这里采用递归实现&#xff0c;首先获取该目录下的所有内容&#xff0c;放到files数组里&#xff0c;然后对于files进行循环&#xff0c;并…

几种删除Linux目录的方法

在Linux中有很多方法可以删除目录&#xff0c;在图形化界面可以利用文件管理器&#xff0c;或者通过终端删除。本文将介绍在文本界面使用命令删除目录。 在Linux中有很多方法可以删除目录&#xff0c;在图形化界面可以利用文件管理器&#xff0c;或者通过终端删除。本文将介绍…

创建和删除目录( mkdir函数 和 rmdir函数 )

文章目录 前言一、目录存储形式二、创建和删除目录mkdir 函数rmdir 函数 前言 目录&#xff08;文件夹&#xff09;在 Linux 系统也是一种文件&#xff0c;是一种特殊文件&#xff0c;同样可以使用前面给大家介绍 open、read 等这些系统调用以及 C 库函数对其进行操作&#xf…

蓝队-ELK日志分析系统Yara规则写入

因为经常使用的是window&#xff0c;所以就用window操作系统直接搭建 需要到Elasticsearch、Logstash、kibana官网下载&#xff0c;且必须版本都一致&#xff0c;本次我使用的是7.6.1版本 Elasticsearch:用于存储收集到的日志信息&#xff1b; Logstash:用于收集日志转发给Ela…

linux 静态编译 yara

最近有个需求&#xff0c;要在go中调用yara&#xff0c;发现官方的go-yara跨平台做的不是很好&#xff0c;于是决定在go中直接调用外部yara程序&#xff0c;这样只需要写一份代码在windows和linux上都能用了。 发现官方只提供了windows的发布程序&#xff0c;linux需要自行编译…

Yara引擎编译和发布

我们自己设计软件时有很多情况都需要集成yara引擎 项目-管理NuGet程序包&#xff0c;下载几个包并安装 确保是git上最新代码即可编译 package目录下的include和lib是自动添加到项目中的。 发布时要注意除了yara编译需要依赖的jansson、libcrypto、libssl这几个库&#xff0…

使用yara分析

有时碰到大批量的样本&#xff0c;又发现其中很多相似点&#xff0c;这个时候就需要模式匹配了&#xff0c;yara在分析中当之无愧。 具体的yara规则是怎么回事&#xff0c;freebuff上有相关的文章&#xff0c;要不然看文档也是可以的。这里只记录我第一次使用的几个步骤。 &…