IC 验证篇(09-04)关于 SoC 验证和 DEBUG 技巧

本文详细介绍了芯片原厂学习课程中的第九篇章——IC验证篇,包括系统SoC验证的阶段分类、方式分类,以及DEBUG技巧,如PATTERN测试、内存比较分析和常见DEBUG问题的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

芯片原厂必学课程 - 第九篇章 - IC 验证篇

09-04 关于 SoC 验证和 DEBUG 技巧

新芯设计:专注,积累,探索,挑战

引言

  NOTES:本文来自《芯片原厂必学课程 - 第九篇章 - IC 验证篇》技术专栏


🌏 一、系统 SoC 验证

1. 按照阶段分类

  ✉ 前仿:指的是根据中间版,最终版的 RTL 代码进行功能上的验证

  ✉ 后仿:指的是根据中间版,最终版的 NETLIST + SDF 进行的后仿回归验证,其中根据 SDF 带电和不带电划分成了功能仿真、功耗仿真以及 PG 仿真

功能仿真:主要确定功能是否正确,内部 CLK 以及外部 IO 的时序约束是否 OK
功耗仿真:主要确定各个模块的 POWER 是否符合预期,是否满足 SPEC 要求
PG  仿真:主要确定 ULP 设计流程是否正确,POWER 界面处理是否干净,特殊信号处理是否按照要求

2. 按照方式分类

  ✉ 主要是划分为 UT 单元测试,IT 集成测试,ST 系统测试

  ✉ 这里主要详细描述一下 ST 系统测试:ST 主要是按照真实的 CPU 行为,编写 C 代码,配置相关的寄存器,进行数据的处理,通过 C 代码编译出 HEX 文件,然后 LOAD 到系统中的 RAM and SDRAM 中,释放 CPU 复位,令其读取与执行 RAM and SDRAM 中的指令和数据,仿真完成之后,查看 LOG or MEM_COMPARE or TXT or WAVE,确认 CASE 是否正常结束

09-04-01 经典的 ST 系统测试验证方案


🌏 二、验证 DEBUG 技巧

1. DEBUG 思路

  ✉ 执行仿真之前,验证人员需要了解清楚仿真 PATTERN 的主要测试内容,测试方法,控制流程等等,而这些内容全部记录于 PATTERN LIST 中

  ✉ 在设计 PATTERN 的时候,可以增加 PATTERN GOTO 的打印,这是非常必要的,一方面可以协助验证人员定位当前 PATTERN 的运行情况,另一方面也可以证实软件程序是否按预期去执行

2. DEBUG 情况

  ✉ 一种是直接显示 FINISH,不过报了 MEM_COMPARE FAILED:这种 CASE 需要查看 MEM_COMPARE.TXT 文件里面的数据信息,根据 具体的提示,如哪一段地址的数据对比失败了,如对比失败的错误类型是只错了若干个字节还是错了一整大段,亦或是全错等等,验证人员根据错误发生的规律,通过自己的逻辑和经验,反向推断 CPU 和 MASTER 的行为,如到底是哪些配置的不合理导致的对比失败,从而定位根因

  ✉ 一种是直接显示 FAILED:这种 CASE 是 PATTERN 里面进行了一些状态或者数据的判断,发现不符合预期,于是直接打印了 PATTERN GOGO 令仿真直接失败,这种情况下可以直接从打印错误的地方追溯到产生差异的点,从而定位根因

  ✉ 一种是 PATTERN 无法结束的情况:这种情况的话可能是仿真时间设置过短,导致 PATTERN 还没有完成就强行结束仿真,也可能是软件程序的异常情况,检查是否存在波形文件,查看 CPU 的 LOG,若是 LOG 没有内容的话说明 CPU 没有跑起来,或者是 CPU 的 LOG 的时间和仿真时间对不上,这种较大的概率是由于 CPU 读取到了不定态数据从而导致挂死

  ✉ 后仿阶段使用的是真实的 NETLIST,没有 CPU LOG,此时 DEBUG 较为困难,不过主要是时序上或者仿真的环境设置上的问题导致 PATTERN 跑不通的

3. DEBUG 技巧

  ✉ CPU 读红:访问的寄存器空间,SRAM,DRAM 等内容可能没有初始化,数据通路上相关控制信号可能存在不定态,访问的 DFF 没有初始值

  ✉ MEM_COMPARE FAILED:数据比对的起始地址和结束地址不对,比对的长度并非一个字的 WORD 对齐,源地址和目标地址全 0 或者全 X

  ✉ CPU 不打印 LOG:存在上述的可能,CPU 没有时钟或者复位没有释放,BROM 中没有释放跳转指令

  ✉ 仿真没有波形:设计上存在逻辑环,仿真无法进行却又结束不了,环境问题,波性文件存放错误或者指定错误

  ✉ CPU 行为正常但是 PATTERN 挂死:接口相关的问题,CPU 在等待状态位,程序 BUG

  ✉ CPU 返回地址返回非预期数据:确认数据最先出错的位置,检查 PATTERN 是否设置缺漏或者错误

  ✉ CPU LOG 存在循环或者异常跳转:栈空间可能存在异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新芯设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值