集成电路验证

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第12讲 回顾和总结
•了解集成电路验证领域的基础知识 •掌握验证的基本流程和工作方法
•具备一定的验证实践能力
•了解集成电路验证领域的最新发展
来自百度文库
•了解集成电路验证领域的基础知识 •掌握验证的基本流程和工作方法
•具备一定的验证实践能力
•了解集成电路验证领域的最新发展
了解集成电路验证领域的基础知识
基础: • 现代集成电路设计面临的挑战 • 集成电路验证的概念和基本原理 • 集成电路验证的分类 原理: • 仿真器的分类 • 仿真器的组成 • 仿真器的原理 语言: • 设计语言(VHDL、Verilog、System C) • 验证语言(Open Vera、e、System Verilog)
• 搭建验证环境
-Bergeron Janick,“Writing HDL Models”. -Bergeron Janick,“Writing Testbench Testbench -Function Verification of eslog SystemVerilog”.
结果正确性检查 • 使用规则进行验证
• 事件驱动模拟验证
基于事件的仿真-------采用基于事件的仿真器,捕获事件(在 时钟内部或在时钟的边界上)并通过设计进行传播,直到实 现一个稳定状态为止。
模拟验证方法的局限性
• 非完备性,即只能证明有错而不能证明无错 • 一般适用于在验证初期发现大量和明显的设计错误, 对于验证后期出现的复杂和微妙的错误,常常面临调 试极其困难,甚至显得难以胜任. • 严重依赖于测试向量的选取,而合理而充分地选取测 试向量,达到高覆盖率是一个十分艰巨的课题. • 由于设计者不能预测所有错误的可能模式,所以尚未 发现某个最好的覆盖率度量. • 即使选定了某个覆盖率度量,验证时间也是一个瓶颈.
现代集成电路设计面临的挑战
规模 市场压力 低功耗设计 …
什么是集成电路的验证?
• 集成电路验证是检查 并确认集成电路设计 的各个阶段不偏离原 始的需求规范的过程 设计 • 验证几乎伴随着集成 电路设计的全过程, 因此验证的周期也是 与设计周期相辅相成 的。
设计需求 是否符合设计需求? 算法描述 是否实现了所需算法?
基于事件的模拟器和基于周期的模拟器
• 基于事件的模拟 · 当且仅当器件的输入有事件发生时,才对器件的状态求值 · 当变量或信号的值发生改变时,相应更新事件触发所有引 用此变量或信号的器件进行求值. · 当一个变量或信号影响多个输出时,模拟器应分别计算每 个输出的延迟,并将事件放入相应事件片的事件队列 • 基于周期的模拟 · 适用于同步时序逻辑的模拟 · 模拟时组合逻辑采用零延迟模型,无法得到内部信号变化 的暂态信息 · 具有闭环的逻辑不适用基于周期的模拟
开发人员
实现功能
逸误分析
改进 设计 方法
需求规范 调试HDL和环境
功能需求规范
建立验证计划 计划审查
开发验证环境
验证流程
• 开发验证环境 包括确定性验证、随机验证、形式化的验证以及测试用 例生成器等。 • 调试HDL和环境 前期准备基本完成,对验证工程师来说,该阶段代表进入 收获阶段,可以真正发现并找到设计错误了。 • 回归测试 发现设计错误后,设计人员会修改原有的设计,为了检测 设计是否已经修改正确以及是否有引进了新的错误,必须 沿原有的验证轨迹重新执行验证过程,称为回归测试。 • 芯片制造 符合流片准则,设计人员会将完成的设计送芯片制造厂制 造。流片准则包括一系列的条件检查,确定逻辑设计、物 理设计、验证的完成情况,验证是其中最重要的部分。
• • • • • • • 测试向量生成(Stimulus Initiator) 参考模型建立(BFM) 搭建环境(Testbench generation) 响应采集(Response collection) 正确性检查(Checker,Monitor,ScoreBoard) 覆盖率检查(Simulation coverage) 集成验证环境(Integrated verification environment)
模拟器的组成
三个主要组成部分:
前端
对输入进行解析,建立程序内部各组成部分的对应关系, 形成对输入电路的一个完整描述,用以支持所有的后续处 理和操作
后端
模拟器的灵魂,决定了模拟器的类型,例:FPGA芯片 划分/电路布局布线
模拟引擎/控制器
输入生成后的代码(可以是C,C++、本机目标码)、 运行,允许用户交互
– 断言(assertion)检测技术 – 自检测(Self-check)技术
• 直接利用已有仿真结果进行验证
– 记分板(Scoreboard)技术 – 自检测(Self-check)技术
• 使用参考设计模型进行验证
- 直接结果比较
与模块级模拟验证相比,系统级验证正确性检查往往需要采用上述所 有的方法,由于系统结构和时序的复杂性,测试激励对应的响应的采 样往往具有多样性,增加了正确性检查的难度
逸误分析
对于硬件芯片阶段发现的错误,还要进行潜在错误分析, 能过躲过前期验证的错误,存在极大的隐蔽性,必须分析 其成因,重复性和危害性,避免再次发生类似问题。最好 能够在仿真验证环境中重复上述错误,确定修补或改正的 正确性。
验证结束的准则
根据不同的项目需求,验证结束的准则不尽相同。通常考 虑以下因素: 静态验证计划是否完成
集成电路验证的基本原理
设计路径 设计 设计需求 等价? 替代设计
等价性检查
验证路径
设计 规范的设计需求 仿真输出 等效?
参考输出
“替代设计” 功能要求 设计需求
设计
满足? 特定的表述方式
正确性检查
“替代设计”
集成电路验证面临的挑战
• 验证方法和工具与不断增大的设计规模不匹配 ----状态空间爆炸问题 • 验证周期增长 ----验证成为处理器设计流程中真正的瓶颈 • 调试更加困难 ---设计复杂度增加,规模增大,从RTL到门级网表的内部信号也 会随之增加,信号的层次深度也会越来越大,调试更加困难 • 需要更多的人力/物力资源投入 ---Intel Pentium4 验证投入10亿美元 Bob Bentley, ―Validating the Intel Pentium4 Microprocessor‖, Proc.38th Design Automation Conf.(DAC01),2001,pp.244-248 验证是证明一个设计能正确实现其功能的过程,然而,客观地 说,验证能发现/证明存在错误,不能证明一个设计绝对不存在错 误。
掌握验证的基本流程和工作方法
验证的基本流程 模拟验证方法(模块级、系统级) 覆盖率检验方法 断言检测方法 形式验证技术
覆盖率检查(Simulation coverage)
覆盖率一般表示一个设计的验证进行到什么程度,也是一个决 定功能验证是否完成的重要量化标准之一: 结构覆盖(Structural Coverage) 结构覆盖可以在仿真时由仿真器直接给出,主要用来检查RTL 代码哪些没有被执行到,使用结构覆盖可以有效地找出冗余代码, 但并不能方便地找出功能上的缺陷。包括:行覆盖率、分支覆盖 率、翻转覆盖率、状态(机)覆盖率等。EDA仿真工具可支持。 功能覆盖(Functional Coverage) 功能覆盖点既可以是接口上的信号,也可以是模块内部的信号, 可用在黑盒验证也可用在白盒验证中。使用功能覆盖可以帮助我 们找出功能上的缺陷。虽然EDA工具提供一定的语言和结构支持 (例如:Vera、e、SystemVerilog等),大部分工作量仍需要验证 工程师在设计者的协助下自定义完成。
正确性检查 验证
RTL描述 是否等价?
门级网表
等价性检查 是否等价?
物理版图
集成电路设计验证的覆盖范围
• 功能验证 功能验证的目标是确保实际设计实现规范文档中所描述的 功能,发现功能模块中存在的逻辑缺陷,保证逻辑设计的 正确性。 • 时序验证 静态时序分析:根据设计规范的要求通过检查所有可能路 径的时序。 动态时序分析:主要指的是门级(或对版图参数提取结 果)仿真。 • 物理验证 物理验证主要是进行设计规则检查、版图与原理图对照和 信号完整性分析。 • 性能验证 性能验证的目标是确保实际设计能够提供实现规范文档中 所要求的性能(如每秒执行的指令数,数据率等)。 • 功耗验证
参考模型建立
• 参考设计模型建立
-需要考虑参考模型自身的正确性问题,在简单易检测 的模型和复杂模型之间折中。 -建立模块级参考模型更需要考虑模块功能不独立所造 成的完备性问题及模块内时序的复杂性问题。 -系统级参考模型可能建立在多种设计层次和抽象层次 上,甚至存在不同设计层次和抽象层次模型混合验证的状 况,时序问题也更为复杂。
验证流程
调试芯片
前期验证速度受到仿真软件等的限制,运行测试向量数目 始终有限。到了真正流片回来,在真正的芯片上,调试向 量运行速度大大提高,可以启动操作系统并运行大量真正 的应用程序,完全有可能发现新的设计问题。但是,由于 芯片早已封装,发现问题容易,跟踪调试错误困难。如果 发现了错误,根据错误的级别,可以采用数码修补,软件 绕过的方式弥补。但对于某些较大的错误,可能不得不修 改设计重新流片。
•了解集成电路验证领域的基础知识 •掌握验证的基本流程和工作方法
•具备一定的验证实践能力
•了解集成电路验证领域的最新发展
掌握验证的基本流程和工作方法
验证的基本流程 模拟验证的方法(模块级、系统级) 覆盖率检验方法 断言检测方法 形式验证技术
验证流程
调试芯片 系统级测试 Tape out 回归测试
基于形式化方法的验证
• 形式化验证的常用方法介绍
定理证明 模型检验 等价性检验
• 形式化验证方法的局限性
形式化验证方法的局限性
适合模块级或中小系统级设计的验证
由于形式验证存在状态空间爆炸性增长的可能,当系 统变复杂时,验证将占用较多的计算机资源,耗时增 加。
解决办法:
采用能够解决更复杂问题的算法 当形式方法不能完全证明为正确时,则进行部分验证,通过 举出反例来协助验证。
形式验证的效果受到以下因素的影响:
设计规范是否存在错误 设计规范中的功能覆盖是否完整 用户可能发生的对规范的错误表述以及对设计的过度约束 形式验证软件程序本身的错误
验证方法比较:模拟vs形式化方法
速度 模拟验证 形式验证
DUT规模
完备性
准确性
复杂度
极限适用 性
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · —
测试向量生成方法示意
• 0:Deterministic • 1:specific scenario • 2: specific scenario with some random values
0 1 2 3 4 5 6
• • • •
3:Tightly constrained random environment 4: random environment 5: Fully random-illegal sequences 6:Random
将激励信号施加于设计,进行计算并观察输出结果,判断该 结果是否与预期一致。根据仿真模式的不同,可分为:
• 时钟驱动模拟验证
基于时钟周期的仿真-------采用基于周期的仿真器,完全不理 会时钟内部发生的事件,而是在每个周期中进行一次信号评 估,由于执行时间较短,这类仿真器的运行速度往往较快, 目前常用的仿真器VCS、NC-verilog、ModelSim都支持此类仿 真
集成电路验证的基本方法分类
• 基于模拟的验证
基于时钟周期的模拟 基于事件的模拟 硬件加速仿真验证
基于FPGA的验证方法 基于并行服务器的硬件加速仿真
• 基于形式化方法的验证
从不同角度可对形式验证方法做不同分类,通常分为:
定理证明 模型检验 等价性检验
基于模拟的验证分类
随机验证计划是否达到了足够的仿真节拍
是否满足了结构覆盖率标准 是否满足了微体系结构覆盖率标准 时间错误曲线特性是否达到了目标 市场变化导致的设计进度安排的调整
掌握验证的基本流程和工作方法
验证的基本流程 模拟验证方法(模块级、系统级) 覆盖率检验方法 断言检测方法 形式验证技术
模拟验证的构成要件
相关文档
最新文档