《2022年超大规模集成电路可调试性设计综述 .pdf》由会员分享,可在线阅读,更多相关《2022年超大规模集成电路可调试性设计综述 .pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计 算 机 研 究 与 发 展 ? ? () : , 收稿日期: ; 修回日期: 基金项目: “核 高 基”国 家 科 技 重 大 专 项 基 金 项 目( , ) ;国 家 自 然 科 学 基 金 项 目( , , , , , , )超大规模集成电路可调试性设计综述钱诚,沈海华,陈天石,陈云霁,( 中国科学院计算机系统结构重点实验室北京 )( 中国科学院计算技术研究所微处理器技术研究中心 北京 )( 中国科学院研究生院 北京 )( ) , , , ,( , , )( , , , )( , ) ( ) , , ; , , , , , () , , , , , ; ; ; ; 摘要随着硬件复杂度
2、的不断提高和并行软件调试的需求不断增长, 可调试性设计已经成为集成电路设计中的重要内容 一方面 , 仅靠传统的硅前验证已经无法保证现代超大规模复杂集成电路设计验证的质量 , 因此作为硅后验证重要支撑技术的可调试性设计日渐成为大规模集成电路设计领域的研究热点另一方面 , 并行程序的调试非常困难, 很多细微的 无法直 接 用 传 统的单步、 断点等方法进行调试,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - 如果没有专门的硬件支持
3、, 需要耗费极大的人力和物力全面分析了现有的可调试性设计, 在此基础上归纳总结了可调试性设计技术的主要研究方向并介绍了各个方向的研究进展, 深入探讨了可调试性结构设计研究中的热点问题及其产生根源,给出了可调试性结构设计领域的发展趋势关键词调试 ; 验证 ; 硅后验证 ; 并行程序调试; 可调试性设计中图法分类号 可调试性设计简介随着硬件和软件技术的发展, 复杂度越来越高,导致保证硬件和软件设计正确的重要步骤 调试的任务越来越艰巨具体表现为 , 一 方面 , 硬 件集成度的提高 , 新 的 体 系 结 构 的 出 现, 尤 其 是 多 核 系 统的出现 , 导致单 独 依 靠 传 统 的 硅 前
4、 验 证 ( ) 无法保证硬件设计的正确性 最近的数据显示 , 仍然有许多错误在 芯 片 流 片后甚至投入市场后被发现, 为了使 这 些错 误 在 芯 片推向市场前得到解决 , 这些流片后存在的 问 题 需 要通过硅后验证手段来发现另一方面, 在硬件集成度 、 复 杂 度 提高的同时 , 软件的集成度、 复杂度也随之提高, 尤其是随多核而越来越普及的并行技术 、 多线程技术导致现在软件调试的复杂度大大提高 , 仅依靠传统的纯软件调试方法( 如单步 、 断点等 ) 要耗费大量的人力物力 , 这就急迫地需要硬件支持, 从而通过软硬件协作来完成并行程序、 多线程程序的调试 鉴于上述两点 , 硬件的可
5、调试性设计 已 经 成 为硬件设计中一个非常重要的内容作为可调试性设计研究的一个重要动力, 硅后验证越受重视所占芯片开发开销比重越大根据最近几年的统计, 平均每款芯片需要 的开发时间用于硅后验证, 公司用于硅后验证的成本接近设计的 ? 为了提高硅后验证的调试效率, 目前学术界和工业界有很多不同角度的研究 , 可 调试性设计 ( ) 是其中的一个热点传统可调试性设计包括种类繁多的方法和工具 , 例 如约束检查 ( ) 、 扫 描 链 ( ) 等 , 这 些 工 具和方法可以给调试带来极大便利, 将其用于硅后验证是一种很自然的想法在硅 后验证的平台调试和实际系统的调试中, 如果事先加入可调试性设计
6、, 可以帮助硅后验证更好地了解设计内部的状态, 更有效地定位错误, 提高硅后验证的效率和各种物理探针类方法不同, 将可调试性设计模块加入电路中是可调试性设计的重要特点之一 , 而通过 对 可 调试性模块的精心设计, 使错误能被很容易地精确定位, 同时获得各种灵活的调试功能, 这是可调试 性 设计的研究目标可调试性设计研究的另一个主要动力并行程序调试也在蓬勃发展 可调 试 性 设计可以为 并 行程序调试提供强大的硬件辅助功能目前这 方 面 的研究热点主要有两个: 一个是 解 决 并行程序调 试 的确定性重放 ( ) 方法 , 二是用于硅后验证的数据竞争冲突检测( ) 通 过加入可调试性设计可以将
7、上述两种问题的解决速度提高 倍本文介绍了可调试性设计系统包括的个组成部分 , 以及最新的可调试设计系统的结构设计, 在此基础上进一步介绍了可调试性设计的 热 点应用 , 即保证并行程序正确的确定性重放 、 数据 冲 突 检测硬件辅助可调试性设计对 于 可 调试性设计 和 应用热点 , 皆指出了面临的主要问题、 解决问题的关键所在以及现在最新的技术进展 最后 , 给出了当今可调式性设计的总结和发展趋势展望本文的剩余部分组织结构如下, 由于可调试性设计的结构设计和功能需求是可调试性设计的基础和最重要部分, 因此 , 本文首先花了比较大的篇幅对其进行介绍 第 节介绍 了 可 调试性设计 的 基本概念
8、 ; 第 节介绍了可调试性设计的几种主要结构; 第节探讨了可调试性设计结构中的数据采集、 存储 、压缩和导出; 然后我 们在第节介绍了可 调 试性设计用于解决并行程序调试问题的确定性重放设计,以及用于解决数据冲突验证的硬件自动检测设计这两个热门应用 最后一节对 可 调试性设计 进 行了总结 , 并在此基础上对可调试 性 设计发展趋 势 进行了展望可调 试 性 设 计 解 决 的 问 题 以 及 包 含 的个组成部分 硅后调试面临的问题硅后调试问题的基础是有效率地从实际芯片中计算机研究与发展 , ()名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - -
9、 - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 获取运行状态 , 目 前 有 两 种 方 法 : 一 种 是 探 针 类 方法 , 通 过 机 械 或 者 激 光 的 方 式 ( 如 ( )激光电压探测仪技术、 ( ) 微光显微镜等光电检测技术) 探测芯片内部信号 , 可以采集一个或 一 组 具 有精确时钟周期的信号 , 并能重构成高抽象层次的信号; 另一种是通过芯片的引脚利用内部的观测逻辑将状态输出前者适合对底层具体信号进行分析, 后者适合对高层抽象信号进行分析, 对于 边 界 条 件 下的调试以及非逻辑错误往往需要两
10、者结合使用对于硅后调试问题, 一次调试可以分为 步操作 , 即控制错误、 分离错误、 定位错误、 扩展错误、 解决错误 , 其中开销最大的两 步 是 控 制错误和分离错误不 同 于 硅 前 验 证 向 量 的 侧 重 理 论 推 导 和 仿真, 硅后验证需要面对现实中的 不 确 定 因 素, 不仅要面对验证平台提供的验证向量( 如 的奔腾测试 平 台 提 供 的 种 类 齐 全 的 硅 后 验 证 向 量、 测试中的电压温度对) , 还要面对各种真实环境下的可重现问题和不可 重现问题( 如启动操作系统的调试过程、 验证 平台的电气故障) , 需要通过验证向量的可控来使错误可控、 可重现 、 可
11、捕捉 分离错误是在控制错误的基础上, 利用已有的信息和手段将错误隔离到设计中的一个小范围, 例如特定的部件和时钟周期硅后调试需要解决的问题主要是在受限的硅后环境下解决调试问题的控制错误和分离错误 可调试性设计包含的内容目前成熟的 ( ) 设 计 都 可 以作为 设计的基本功能加以使用 例如 的( ) 标准 提供了一种最普遍的 功能 , 即扫 描 链 访 问 、 断 点 设 置 、 时 钟 控 制 等此 外,后 台 调 试 模 块 ( ,) 设计也提供了低层调试功能, 通过将 停机进行单个时钟的调试上述调试标准提供了实用的调试功能, 目前被很多处理器采用, 但是 , 随着 处理器设计日趋 复杂
12、,可调试性设计研究变得越来越重要 , 不断有新的功能更强大的结构被提出, 概括而言 , 可调试性设计系统主要包括部分 : 确定设计需要加入的结构、 确定需要采集的信息、 存储和导出信息、 设计分析信息的软硬件系统 下面我们将结合最新的研究进展, 详述可调试性设计研究的个方面 确定需要加入的结构可调试性设计为了提高设计内部状态的可视性和精确定位错误, 需要具备如下功能: 监 测信号 、 分析信号 、 接收外部控制信号、 建立用于传递信号的网络 、 存储和导出信号以及处理导出的信息基于以上功能需要, 可调试性设计一般包含如下几种结构: 用于获取信号并传递给信号分析模块; 内部包含各种状态机, 对信
13、号进行分析和处理, 生成需要记录的信息, 产生内部的控制信息或事件; 接收内外的控制信息, 控制整个调试结构的运行; 存储需要记录的信息; 将各种调试性设计模块联接在一起的网络 , 各种控制信号、 事件 、 观测信号在其中传递以上结构在不同的可调试性设计实现中可以根据需要进行组合( 如图所 示 ) , 产生各 种 具 有针对性功能的模块: 图可调试性设计结构示例 确定需要采集的信息对于硅后调试而言, 需要获得的信号越多硬件或时间开销越大对于每 一 个 具体的设计 需 要在提高信号可见性和降低开销之间取得平衡确定采集哪些信息: 可调试性设计所采集的信息应该是能反应设计状态, 能 够用于分离 和
14、定位错误的必要信息根据分离错 误 的需要只采 集 尽量少的必要的信息是最基本的设计出发点 , 而 采 集信号的开销和调试方法对错误的覆盖率是 成 正比的在实际的工程中, 确定可调试 性 平台开发效 费 比的工作不可忽视 确定采集的时间窗口等配置内容: 设置采集的数据窗口主要通过内外控制信号来判 断外部 控制信号对于不可 重 复 性 错 误 和 不 确 定 性 出 现 的 错 误钱 诚等 : 超大规模集成电路可调试性设计综述名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 1
15、4 页 - - - - - - - - - 很难起作用; 内部控 制 信号 主 要 通 过监测到的信号来判断系统的当前状况, 因此 通过内部控制信号判断错误是否发生,需要错 误 捕 捉 机 制对可能发生的异常状态产生正确而及时的反应内部控制信号的产生机制越全面复杂开销就越大 存储和导出数据硅后调试信息一般是通过寄存器和专用的存储部件保存下来, 再通过扫描 或 专 用 的存储部件构成的调试通道导出扫描:扫描的实现方式比较简单,获得的接口支持也很广泛, 而 且 也 能 获 取 特 殊 的 状 态 信 息 , 但是对于需要保存大量数据的调试性设计 , 扫 描提供的带宽过小, 对实时性导出的限制非常严
16、格, 而且仅用扫描链和内建自测试( , ) 能够达到的测试质量是有限的, 文献 给出了其能达到的测试效率因此高 性 能 的 可 调试性系统一般用扫描链结合专用存储 来记录和导出数据专用的存储部 件: 利 用 或 者 来 保存要存储的数据 , 在控制信号的驱动下, 可以开始 、 暂停 、 停止 为了尽可能多地记录数据, 各种压缩算法和实时处理方法也被引入和使用 分析信息记录的信息需要进一步分析 一般来说记录的数据抽象层次越低,需要越多的工作来处理数据,使其更易被观察 对于记录的数据, 分析信息的方法主要来源于对已知错误分析方法的总结 、 对不符合规范的行为划分的方法以及选取覆盖广泛的判断错误方法
17、等一 种 错 误 判 断 逻 辑 能 够 检 测 的 错 误 种 类 越 多( 如判断死锁) , 越需要更多的 辅 助 工作来进一步精确定位错误, 但是优 点 是监 测 机 制 的相对设计开销小 、 可移植性强目前各大芯片开发公司都有专门的对调试信息进行分析的软硬件平台可调试性设计系统的结构设计可调试性设计可以应用于系统的各个层次, 从逻辑门到总 线 , 从 处 理 器 核 到 系 统 都 可 以 加入可调试性设计逻辑下面通 过 对 各 种 可 调 试 性 设计结构的介绍 来 阐 述 可 调 试 性 设 计 的 特 点 和 发 展趋势 简单的可调试性设计 测 试 是 一 种 对 设 计 的 工
18、作环境向量进行严格测试的工序, 用于确定 设计的正常工作环境范围从 世纪 年代被提出后,其测试 手 段 一 直 随 自 动 测 试 设 备( ,) 工具 的 进 步 而 改 变 可 调 试 性 设计在 测试中的使用是提高硅后调试效率的一种典型应用文献 介绍了一种用于测试存储部件正常工作电压频率对的可调试性设计 对于待 测 试 的存储部件 , 流片后的功能不一定遵守设计规范, 对比逻辑设计和实际电路,两者的正常工作范围并不一致,在电路中加入可调试性设计可以观测实际电路状态,寻找问题所在如图 所示 , 对存储部件进行 测试的可调试性设计的组成包括控制接口 、 实现 状 态 机的控制寄存器、 存放访
19、问指令的数组 、 可控的时钟输入、记录出错后被恢复信息的容错存储, 以及计数 、 读写控制等功能 图 对存储部件进行 测试的可调试性设计在上述设计中, 可调试性模块和待测的存储部件各自独立,环境向 量 可 控(包括时 钟 频 率可控、数据内容和地址可控) , 测试 结果可存储 , 实 现 了解决调试问题前两步的前提条件, 只要将测试 结 果导出就可以得到整个测试过程的状态这个应用很好地体现了可调试性设计在提高系统状态观测性方面的功能 但是 , 很 多 情 况下 , 我们不仅需要泛泛地了解系统的内部状态 , 更 关 注特定情况下的系统状态,让可 调 试 性设计最大 化 地提炼出有用信息, 这对复
20、杂电路结构调试来说非常重要 用于处理器流水级的可调试性设计模型处理器核是大型系统的核心模块, 面临的调试问题具有一定的代表性对 处 理器流水级 可 调试性问题的分析思路有很多种, 有 的通过增加 超 时计数器 、 寄存器文件错误检测码( , ) 、计算机研究与发展 , ()名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - 指令代码奇偶校验等方法来提高流水级运行时的健壮性 , 增加容 错 率 , 有 的 通 过 加 入 可 配 置
21、 的 支 持硬件对流水级 中 出 现 的 硬 件 设 计 问 题 进 行 规 避 解决 , 而文 献 介 绍 的 一 种 对 流 水 级 中 指 令 的 进行记录, 判断流水级状态是否正确, 进而自动定位错误的可调试性设计结构则最具代表性, 充分运用可调试性设计给硅后调试带来的改进如图 () , () 所示 , 处理器流水级的可调试性设计结构由控制模块( ) 、 分布于各流水级各功能部件的监测部件( ) 、联接各调试性模块 的 流 水 级 网 络、各 监 测 模 块 内 保 存 指 令 足 迹( ) 的存储缓冲区( ) 以及对各存储缓冲区中数据进行导出处理的整理模块( ) 组成 图 处理器流水
22、级的可调试性结构和监测部件的结构在上述系统中, 网络传递信息如下:) 各指令的标识 , 用于唯一表示一条在流水级中的指令, 该 和指令在流水级中的传输同步;) 外部的控制信息,用来控制记录的运行、 暂停和结束;) 各 对信息进行分析后产生的触发事件, 用来判断内部控制信号是否成立信息采集和存储的过程如图() 所示 : 每个功能部件的 有一个状态机,当没有新的 传送过来时, 时 间 计 数 器 记 下 有 多 少 拍 空 转当 新 的 进入时 , 时间 信 息 被 记 录 入 中, 同 时 指 令 和各功能部件提供的内容一起存入 中 考虑到各功能部件需要观测的状态不同 , 为 避 免重复记录 ,
23、 各功能部件提供的内容并不统一, 而是根据需要有所不同例如 , 取指模块只记录 , 译码模块记录指令包含 的 操 作 数 个 数 等 等 当 发 出停止并导出 的命令后 , 先将取指部件的 中记录的 整理成份指令执行顺序文件, 然后按时间顺序将提交部件中已经提交的指令在各部件中的 整 理 一 遍 , 再 将 等 待 提 交 的 指 令 按 时 间顺序 , 将其在各部件中的状态整理一遍, 其余信息忽略掉信息分 析: 检 查种 情 况 来 判 断 错 误是否发生, 分别是向量错、 运算错 、 非正常例外、 段分配错 、 死锁 , 其中段分配错和死锁从导致错误的指令执行到 错 误 显 示 出 来 需
24、 要 经 过 很 多 时 钟 节 拍 , 而 的大小是有限的, 如果采用判断出错再停止,可能 中 记 录 的 信 息 已 经 无 法 定 位 到 正 确 的错误点 , 因此 , 需要采用预判断措施 当 段 分 配错发生时,先发生 ,可 在 此 暂 停 的 记 录,当错误真正发生后再导出 的数据 , 反之 则继续执行记录, 考虑到发生死 锁 前必然会发 生 指令未能及时提交的状况, 可在 一 个 取指周期的 间 隔后未能发生指令提交的情况下暂停记录对于导出的 ,利用数据依赖分析、 控 制流分析 、 存取分析、 译码分析等方法 , 使用 软 件 自动定位错误统 计 的 结 果 为 的 错 误 得
25、到 精 确 的 定位 , 的错误除了精确定位还伴有冗余定位,的错误没有检测出来这项研究对于探索调试的自动化作出了贡献,其结构具有普遍适用性, 其 对 错误的分析 方 法也取得了良好的覆盖率, 尽管 很 多 环境下自动 判 断错误的机制达不到这样的精确程度 , 但是其 提 出 的暂停结构对于判断一些未知的错误是一种有效的思路 用于片上网络的可调试性设计结构目前 , 多核芯片中使用复杂的片上网络已成趋势 对于片上网 络 的 调 试 , 不 管 是 要 检 查 数 据 是否符合协议还是其他错误情况,都需要 了 解 片上网络当前的运行状态片上 网 络 调试性设计 的 特点是其中传输的内容往往需要在高级
26、的抽象层次观察,钱 诚等 : 超大规模集成电路可调试性设计综述名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 对传输内容进 行 分 析 往 往 要 考 虑 不 同 协 议 下 的 传输 , 基于这样的特点, 以通信为中心的模型能比较好地描述片上网络的状态;而另一些情况下,对片上网络中传输的内容需要分析其相关性 , 这时基于一致性协议的模型更适用在实际 工作中根据片上网络调试的侧重点不同选择采用不同的模型 以通信为中心的片上网络
27、可调试性设计模型文献 介绍了片上网络的通信模型 一种多 到单 的映射网络如图() 所示 , 它包括 个 网络 接 口,一 个 : 的 以 实现单对多的映射, 一个 网络接口; 图 () 为单 到多 的映射网络; 图() 为一个基本的多 到多 的片上网络: 图 片上网络通信模型文献 介绍了一种对片上网络加入调试性设计的方法如图所示 , 每一个 和 是发送和接收通信的模块, 需要 加入通 信控制 ,它有两个功能: 监视 和 端的通信情况,根据控制信号 改 变 和 端 的 请 求 和 应答每一个路由逻辑一般包含: 的映射关系, 对其中 每 一 个 : 或 : 的 映 射 , 都 需 要 一 个 来监
28、控 其 中 的 映 射 关 系 , 并 将 分 析 的 数 据和结果存储 到 或 其 他 模 块每 一 个:的 和 之间的通道可以根据选择加入一个 来 观 测 数 据 的 传 输 情 况 , 以 提 高 片 上 网 络 的可视性 一个控制模块用来 控 制信号的获 取 和新的激励的输入 图一种片上网络通信模型的可调试性设计文献 提出了片上网络的多粒度调试方法,充分使用了可调试性设计结构的通信 特 征 , 特 别针对片上网络这一特殊的结构, 将网络中的 通 信划分为连接层、 通道层 、 传输层 、 消息层 、 消息元素层、 时钟层 , 提高调试信息的抽象层次, 与门级电路中的单 信号相比更容易理解
29、和分析对于片 上 网 络 的 每 一 个 : 的 路 由 模 块, 需要加入 个 ,用于记录和分析每一个:或: 映 射 的 状 态, 这 些 判 断 其 监测的网络, 将生成的事件( 例如信号的请求或应答握手 ) 发送给事件 模块事件 是每个路由模块对应的一个组成事件交互网络的部 件 , 接收 本路由模 块 中 所 有 的 事 件 并 和 其 他 事 件 产生事件信息的交互, 它 拥 有 一个事件驱 动 的状态机处理各种情况控制模块通过内部事件和外部控制信号产生控制信息并 发 送 给 调 试 网 络 中 的 各 、事 件 , 片 上 网 络 的 状 态 保 存 于 各 网 络 接 口 的 寄
30、存 器中 , 各网络接口中的状态可以通过扫描的方式导出文献 提出的调试模型对于片上网络的可调试性设计具有普遍适用性, 包含 观 测 、 记 录、 修 改测试向量几种功能, 而文献 提出的多粒 度 调试方法是对文献 方法的进一步细化然而 , 以通信为中心的调试方法侧重点是对片上网络运行状态的观测和改变, 需要进一步分析 来 对片上网络 中 的错误进行分离,而采用扫描方式 导 出数据也需 要 高效的错误定位方法辅助 因此 , 在实际工作 环 境中 , 采用 或实时导出的方式可能更加适用计算机研究与发展 , ()名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
31、 - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - 以检验一致性为中心的结构模型以通信为中心的调试方法对于观测片上网络运行状态提供了一种有效的方法, 但 是在某些特定的环境下 , 可能需要对信息进行更加有针对性的分析,文献 介绍了一种用于调试共享存储网络中的一致性错误的结构, 利用 的存储空间, 当处于调试模式时 , 其中一些区域被 用 来 记 录对存储地址的访问序列 , 通过访问序列可 以 知 道 各处理器对同一地址的操作顺序, 结 合 需 要 维 护 的 一 致 性 协议来判定是否存在错误访问 用于 的可调试性设
32、计结构 的可调试性设计有其 独 特 的 实 时 性 、 复 杂性的特点 , 种类繁多的协议, 不同特性的设备, 使得可调试性设计往往有很强的针对性 文献 提出了一种可配置的调试性结构, 为 了 能够使可调试性模块可重用, 其设计包括如下组件: 观 测 信 号 并 传 输 到 指 定 部件的网络 , 可以跨越时钟域; 对信号进行分析的模块, 可以跨越时钟域; 输出等于输 入 信 号 或 控 制 信 号 传入的激励信号; 存储设备; 事先存入激励向量,输出为存储的激励 , 输入为其他模块给它的反馈在设计时, 对各可调试性组件可以从接口到内部状态机进行配置 该结构对信息的采集提出了种配置方式, 判
33、断 ( 将 判 断 逻 辑加入 中 ) 、 分析 ( 对于复杂的情况以及需要提高观测数据的抽象层次时 , 在 中 加入事件分析的组合逻辑) 、 激励捕获( 对于指定的激励输入,获取执行结果,通过添加 模块来实现 ) 、 假设性实验( 采用添加 的方式来置换想要改变的信号, 观测执 行 结 果 ) 对于每一个实际系统 , 配置需要采集信号时, 根据上述特点, 可以采集有限状态机信号、 传输的重要表征信号( 特别是提供更高层次的抽象信息, 如果 待测设计中没有这类信号 , 可以通过 中加 入的组合逻辑生成) 、 的输入信号、 需要进入 的信号采用可配置的调试性设计对于越来越庞大和复杂的系统是一个重
34、要趋势随着 集 成电路设计工艺的不断更新、 功能的日趋复杂, 为每一个新的设计重新进行可调试性设计将是一个艰巨 而 费时的 工作 ,开发可调试性系统时进行可配置性的设计可以节省大量的不必要开销 几种实际系统的可调试性设计目前可调试性设计逐渐成为芯片设计中必不可少的部分, 各种商业芯片更 是 采用尽可能 高 效的可调试性设计文献 , 介绍了 的 处理器的验证平台和 处理器的验证经验 该平台通过一块 将验证向量实时导入处理器,通过中断等方式切换验证向量的替换和验证处理过程验证向量来源于真实环 境 下导致处理 器 错误的大量实例平 台 提 供 时 钟 控 制 到 变 量 ( 电 压和时钟频率) 控制
35、等多种支持, 同时对于系统各部分的状态提供大量的存储支持 一旦验证向 量 产生错误的结果, 验证平台切换到错误处理程序, 对记录的种信息 ( 状态信息、 同步信息、 恢复现场信息) 进行分析和处理, 随后对异常情况的判断、 错误出现时间和部件的锁定工作由软件完成, 效率非常高文献 介绍了用于摩托罗拉 及其改进型和 数字信号处理器的可调试性设计 这是一种最基本的扫描链结构, 通过对芯片内部的寄存器插 入 扫描链 , 采用 ( , ) 接口来控制数据的导入导出,不具有实时分析的能力,只提供有限的观测功能可调试性设计中数据的采集、 存储 、 导出 、分析 数据的采集为了高效地提取有用信息, 可调试性
36、设计模块必须对采集的信息进行判断和处理, 例如 , 对存储单元的可调试性设计, 根据 访 问 地址判断是 否 记录其附带的数据, 对流水级各部件返回的状态信息, 判断是否停止记录转入错误处理程序等 运 用 先 进的理论分析 , 将复杂的调试方法 转 化为高效可 实 现的方法 , 可以减少需要采集的信号 , 这是提高采集效率的重要方法在信号处理的可配置性和自动化方面, 文献 进行了 一 些 探 索 , 概 括 为 两 个 基 本 问 题 : 问题 和 推导 当输入信号组不变, 对特定的组合逻辑需要通过 分 析来确定信 号 组满足组合逻辑的全部子集, 复杂度为 实际环境中一个可调试性设计会提供若干
37、个固定的 寄 存器 , 对于钱 诚等 : 超大规模集成电路可调试性设计综述名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - 分析得到的所有子集, 通过 推导 , 找到满足条件的寄存器设置值, 使得 分析得到的子集可以经过这几个固定的寄存器代表的判断逻辑, 得到等价于特定组合逻辑的结果当 需要改变对采集信号的 处 理 方 法 时 , 只 需 要 将 新 的 组 合 逻 辑 通 过 分析和 推 导 得 到 等 价 的 配 置 值 ,
38、 就 可 以达到仅通过改变固定的可配置硬件和固定的输入取得可变的分析逻辑的效果 数据的压缩存储由于 或 存 储 容 量 的 有 限 性 , 以 及实时导出对带宽的要求, 常常 需要对记录数据进行压缩处理 , 压缩的方法有两类:) 利用数据的逻辑特性进行压缩 由于采集的原始数据往往是低层次的抽象, 通 过组合逻辑可以产生更高层次的抽象数据 例如 通 过记录待测的运算部件提供的 余 数 码 ( ) 这 一 高 层 次 的抽象取代了对运算结果的记录, 通 过记录通信在通道中的状态来取代对低粒度信息的记录采 用高抽象数据的优点是直观, 更容易被分析软件直接利用,缺点是依赖于事先确定的组合逻辑对错误情况
39、的覆盖率 , 会损失一些信息, 而这可能导致一些情况无法定位错误 , 必须依赖多粒度 的 配 置 或其他存储方式的辅助 )利用不同环境下数据的规律性进行压缩例如流水级中 值变化为等加数列, 可默认不记录文献 介绍了一种对于变化不大的多媒体数据进行差值压缩的可调试性设计, 将 存 储数据分为基地址 、 偏移量 、 数据信息、 连续 数据 种类型 , 由于大多数数据为全 信息以及非信息之间极小的偏移量 , 因此可以达到 左右的压缩率在 环境 中 , 压 缩 是 一 种 普 遍 采 用 的 方 法 ,而实时性压缩也是经常需要满足的要求在 各种压缩源中 , 相同来源的一组数 据 往 往 具有内在的联系
40、性 , 例如同一种语言的 文字 并 不 是 杂乱无章的字母或文字组合 目前对于这种特性的压缩源, 采用字典压缩 算 法 或 字 典 压 缩 混 合 其 他 压 缩 算 法 比 较 有效 但随之而来的问题是这些高效的压缩算法需要记录初始值或经常改变字典, 而 有限的存储空间在进行覆盖存储时会破坏压缩的数据在实时环境下 , 启动一次压缩流程需要初始化硬件, 实时压缩需要解决这一限制文献 提出 了 一种实时压缩存储结构 , 并对循环 进行改造以满足压缩算法特性的需要 利用两套压缩硬件轮转工作, 共用一个存储区的方法保证了实时压缩能正确 初 始化 为了不使循环 的覆盖特性破坏压缩数据, 将 存储区间划
41、分成若干区域, 每个区域重启一次压缩算法,保存初始值, 用很小的代价保存了大多数数据, 使得字典压缩算法的优势得以利用文献 提出了一种有损压缩方法来确定错误范围 对于采集的信息进行每一层压缩时, 仅保留必要的信号以作为确定下一层的划分依 据 , 这样 的有损压缩 如对总线上的信号只记录握手信 息 , 可以用来定位大时间范围内的罕见错误 , 对 于 可重复的罕见错误, 通过有损压缩 可 以在很短时 间 内定位到一个小的范围 数据的导出可调试性设计需要导出的数据目前有两种: 一种是各种寄存器记录的设计内部状态 ; 另 一 种是可调试性设计存储模块保存的压缩数据或各种 数据的导出也有两种方式: 一种
42、是通过高速的调试通道, 直 接 将 压 缩 数 据 或 各 种 通 过 外 部读取命令送到外部存储介质上 , 这种方 式 需 要专门的测试平台,优点是速度快,对实时 调 试 支持好,缺点是目前没有高效的通用规范 , 以及调 试 系 统要保证调试数据导出通道不受待测设计错 误 的影响 ; 另一种使用广泛的数据导出方法是使用 扫 描链 , 优点是有通 用 的 接 口,简 便 易 用,可 以 通 过 内 建 自测试存 储 模 块 作 为 来 保 存 数 据, 然 后 通 过 接口扫描出去由于有统一的标准, 目前有很多支持的验证平台, 例如文献 但是扫描链方式缺点是速度比较慢, 对于实时的需求有限制
43、数据的分析对于可调试性设计导出的数据一般采用软件来推导和定位错误区 域 , 例 如结合指令 在 流水级内部的状态,通过对错误类型的分析,定位错误到相应的部件这一分析过程使 用 软件来确定 有 无数据依赖 、 向量分配错误、 指令跳转错误等一系列问题当软件发现其中存在错误时, 数据往往已 经 隔离到单个部件和单个周期, 提高了调试的效率 在对片上网络的分析中, 可以通过记 录 片上网络的 各 节点状态 , 分析网络的堵塞情况, 进而将错误定位到特定的一次通信在对访存操作的分析中, 可以通过软件分析记录下来的访存操作的序, 将错误定位 到 某个处理器对某个地址的一次访存操作对错误的修复, 既可 以
44、修改 设 计 , 也可 以通过工艺设计来 弥 补 , 采 用 如 硅 后 调 整 、 自计算机研究与发展 , ()名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 14 页 - - - - - - - - - 动修复 、 闲置单元插入( ) 等方法 通过分析错误对系统的影响, 可以 在 新 的 设 计中采用相应的容错措施 , 以提高设计的健壮性 由于数据之间的相互关联, 一次记录可以提取出非常多的信息文献 研究了如何从有限的数据中得到最大化的信息, 以提高信息的可视性 这些
45、研究为相应 工具的开发提供了一些可操作的方法 可调试 性 设 计 在 硅后 调 试 和 验 证 中 的 热点应用 可调试性设计解决并行 软 件 调试的确定性重放方法 确定性重放方法基本概念随着多核处理器的出现, 并行程序应用越来越广泛 , 但随之而来的一个问 题 就 是 并行程序的调试相对于传统的串行程序更加复杂 现在依靠传统的断点等方法调试手段已经无法保证并行程序的正确性,为了更好地调试程序,保证程序的正确性,确定性重放已经成为一种重要方法多核并行环境十分复杂, 不确定因素很多, 经常导致并行程序运行出现致命错误为了重现不确定因素 , 确定性重放方法就是 通 过 在 程序运行时录制必要信息
46、, 在必要时进行重放由于重放只有在特定的情况下( 如出错后 ) 才需要 , 因此 , 其效率要求相对来说不需要很高 而录制往往要求能够在实际发布的产品中运行 , 这 就要求录制带来的额外消耗要低, 录制文件要小因此确定性重放的可调试性设计面对的的主要问题是如何解决有效录制不确定信息 , 这些不确定信息主要包括各种 , 操作 ; 程序中遇到的中断 、 陷阱 ; 多核系统的多线程并行程序中对共享存储访存的访存顺序一般的程序中 、 中断 、等不确定信息相对不频繁 , 因 此 录 制 它 们 成 本 较 低而 对 于 并 行 程序 , 各线程的 核间共享存储访问却很频繁, 因此 , 高效录制的关键之
47、处就 是 如 何 高效地录制共享存储的访存顺序录制这些信息有软件( 如 的 , 的 ) 和硬件两种方法, 但软件方法运行效率的极低, 有研究表明, 这些软件方法导致程序运行比原始的程序要慢 倍 因此 , 近年来 , 研究者开始考虑利用硬件录制这些信息, 从而降低运行时的消耗其基本的录制结构如图所示 : 图 常见的确定性重放基本录制结构下面将介绍确定性重放算法利用可调试性设计的结构采集、 存储 , 以及重放数据的研究进展 确定性重放的可调试性设计较早 ( 年 ) 提 出 的 确 定 性 重 放 可 调 试 性 设计是 等人的 该设计是在缓存模型为基于目录 ( ) 、 顺 序 一 致 性 ( ,
48、) 的多核 系统上实现的对于录制的关键所在 访存竞争结果的录制则是通过如下方法来提高效率在顺序一致性模型的系统中, 每个线程的所有 指 令 形 成 一 个 序 列 ( 称 ) ,这种序列可以通过一个叫 来表示 ,且对访存满足“每次读出来的结果都是最近一次写进去的 ( ) ” 为了用尽量少的 记录这些指令访存顺序, 先把前述顺序关系用有向弧表示 , 然后 对 有 向弧形成的有向图进行化简, 化 简 的 主要依据是 这 种访存顺序的传递性( 如 , 依据传递性只需记录 ,) 采用这种方法可以大大减少访存记录但不会造成重放所需要的信息不足最终 , 该方法取得了比较小的 ( ? ? ) 以及 ( 小
49、于)不 过 , 该 算 法 有 不 足 之 处,首先 , 该算法并不是记录程序运行后所有的信息, 而是只能记录最近的一段信息( 大约 ) , 从而不能从程序执行处开始重放; 其次 , 该算法所基于的模型是顺序一致性模型, 在这种 模 型 下并行程序 运 行效率比较低在 年 , 针 对 上 述 缺 点 , 等 人 又 对 进行了改进, 改进后的算法为 在 中,它将访 存 顺 序 依 赖 具 有 可 向 量 化 ( ) 的特性进 一 步 减 少 记 录 访 存 顺 序 依 赖在 此 之 前 的 年 , 等 人 的 也 对 进行了优化钱 诚等 : 超大规模集成电路可调试性设计综述名师资料总结 - -
50、 -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 14 页 - - - - - - - - - 在 年 , 又 有 两 种 方 法 在 会 议 上 提出 : 它 们 分 别 是 等 人 的 等人 和 等人的 在 的 设 计 中, 引 入 了 一 个 基 于 分 块( ) 的概 念通 过 对 指 令 进 行 分 块 , 只 记录块内的访存顺 序 依 赖, 从 而 进 一 步 减 小 了 的大小以及硬件消耗, 该设 计 的 一 个 关键就是如何进行分块 在此之前的 年 , 等人的 算法也采用了类似