try ai
科普
编辑
分享
反馈
  • 虚拟器件在集成电路设计中的作用

虚拟器件在集成电路设计中的作用

SciencePedia玻尔百科
核心要点
  • 虚拟器件是芯片布局中使用的牺牲性结构,用于创建均匀的局部环境,从而减轻关键组件的制造差异。
  • 可测试性设计(DFT)使用辅助逻辑(如扫描链)来重新配置电路以进行测试,从而简化了发现制造缺陷的过程。
  • 测试数据压缩和内建自测试(BIST)等技术可管理海量测试数据,并减少对外部测试设备的依赖。
  • JTAG 标准提供了一个通用的测试接入端口(TAP)用于调试,但这也带来了安全漏洞,需要使用密码学方法来保护。

引言

在物理学和工程学的世界里,对完美的追求往往掩盖了管理不完美这一更具实践性的艺术。现实世界的系统,尤其是为我们生活提供动力的微观集成电路,本质上是混乱和可变的。现代芯片设计的精妙之处不在于实现不可能的完美,而在于巧妙地控制这些不完美以确保可靠性。本文深入探讨了实现这种控制的最优雅的策略之一:使用所谓的​​虚拟器件​​。这些并非真正“虚拟”的结构,而是智能的附加物,充当着牺牲性护盾和内部诊断工具,使现代电子学成为可能。本文探讨了它们在两个主要领域中的关键作用。首先,在“原理与机制”部分,我们将研究虚拟器件如何确保制造均匀性,并通过扫描链和 JTAG 等架构实现全面的芯片测试。然后,在“应用与跨学科联系”部分,我们将看到这些原理的实际应用,从在工厂车间发现瑕疵到保护设备免受恶意攻击,揭示这些看不见的组件如何使其他一切成为可能。

原理与机制

在物理学和工程学的宏大舞台上,我们常常钦佩设计的纯粹与完美。我们赞美理想气体、无摩擦平面、完美晶体。但我们必须在其中建造我们不可思议的机器的真实世界,是混乱的。它充满了变化、不完美和意外行为。现代工程学的真正天才之处,尤其是在集成电路的微观领域,并非在于实现不可能的完美,而在于巧妙地管理不完美。本章将探讨实现这一目标的最优雅的策略之一:使用所谓的​​虚拟器件​​。

这些结构之所以被称为“虚拟”,仅仅是因为它们不执行电路的主要功能。实际上,它们是极其智能的附加物。它们是无名英雄,充当着牺牲性护盾、秘密检查通道和内部诊断工具,使得我们赖以生存的电路能够被可靠地制造和彻底地测试。我们将探索这些虚拟器件扮演主角的两个宏大舞台:首先是在制造芯片的物理艺术中,其次是在测试芯片的逻辑艺术中。

伪造的艺术:用于制造均匀性的虚拟器件

想象你正在烤一盘曲奇。根据经验,你知道烤盘边缘的曲奇通常烤得不一样——也许它们更脆、颜色更深或更分散。而那些在中间、被其他曲奇包围的曲奇,则有更均匀和可预测的结果。同样的原理也适用于硅芯片的制造,只是风险要高得多。

当芯片被制造时,它会经历一系列极其精确的工艺,如光刻(印刷电路图案)、等离子刻蚀(雕刻图案)和化学机械抛光(平坦化表面)。这些工艺并非完全均匀;它们的效果取决于局部环境。在密集图案边缘被刻蚀的线条会与在该图案中间的线条略有不同。这是​​邻近效应​​和​​局部图形密度​​变化的体现。对于芯片上数百万晶体管中的大多数来说,这可能无关紧要。但对于高精度模拟电路——例如在精密医疗设备或科学仪器中的放大器——即使两个本应相同的组件之间存在微小的不匹配,也可能是灾难性的。

那么,你如何确保两个组件真正相同呢?你可以欺骗制造过程,让它认为它们都是“中间的曲奇”。考虑制造两个完美匹配的电阻器 RAR_ARA​ 和 RBR_BRB​ 的任务。一种常用技术是将每个电阻器分割成更小的部分,并以交替、对称的模式排列,这被称为​​共质心布局​​。一个简单的例子是序列 ABBA。其思想是,任何横跨芯片的线性梯度(也许在某个工艺步骤中一侧稍热)都会同等地影响 A 和 B,因为它们的“质心”在同一个位置。

但这种巧妙的布置并不能解决边缘效应。在 ABBA 图案中,两个 'A' 段位于绝对的两端,而 'B' 段则舒适地嵌套在内部。'A' 段是“边缘的曲奇”。在制造过程中,它们将经历与 'B' 段不同的刻蚀和应力条件。一个假设但现实的模型可能会表明,边缘段的电阻为 R0(1+δ1)R_0(1 + \delta_1)R0​(1+δ1​),而内部段的电阻为期望的标称值 R0R_0R0​。因为只有 'A' 电阻器有边缘段,所以 RAR_ARA​ 将不匹配 RBR_BRB​,这违背了我们精心布局的初衷。

虚拟器件就在这里闪亮登场。一位资深设计师会在两端添加不具功能、电隔离的“虚拟”段,形成一个类似 DABBAD 的布局。我们做了什么?'D' 段是牺牲性的。它们现在占据了孤单的边缘位置。有源的 'A' 段不再位于绝对边缘;现在每个 'A' 段的一侧是虚拟段,另一侧是 'B' 段。它们现在所经历的局部环境与 'B' 段的环境非常非常相似。大的、不可预测的边缘扰动 δ1\delta_1δ1​ 被虚拟段吸收了。有源的 'A' 段可能仍会看到一个微小的、残余的近边缘效应,比如 R0(1+δ2)R_0(1 + \delta_2)R0​(1+δ2​),但因为 δ2\delta_2δ2​ 远小于 δ1\delta_1δ1​,所以 RAR_ARA​ 和 RBR_BRB​ 之间的匹配度得到了极大的改善。虚拟器件为真正重要的组件创造了一个更均匀的世界。

这个原理是普适的。同样的策略对于匹配差分对中的晶体管至关重要,而差分对几乎是每个放大器的核心。通过在交叉指型阵列(D-A-B-A-B-D)的两端放置虚拟晶体管“指”,设计者确保了晶体管 'A' 和 'B' 的所有有源指都被相似的图形密度所包围。这种均匀的环境减轻了刻蚀、抛光和材料沉积中的变化,从而使晶体管具有几乎相同的电气特性——这是高性能模拟设计的关键。虚拟器件通过什么都不做,却成就了一切。

电路自为侦探:用于可测试性的虚拟器件

一块刚制造出来的芯片就像一个有十亿座房子却没有道路的城市。你怎么能确定每座房子都建对了?你不可能单独访问每一座。这就是测试现代集成电路所面临的挑战。解决方案不是试图从外部探测每个晶体管,而是在芯片内部构建一个“检查道路”网络。这种哲学被称为​​可测试性设计(DFT)​​,而这些“道路”和“控制塔”是另一种形式的虚拟器件——专门用于芯片可测试性而非其功能的辅助逻辑。

扫描链:一条秘密的数据高速公路

测试中最令人头疼的是处理时序逻辑——带有存储器(如​​触发器​​)的电路。这些触发器的状态是内部的,对外部世界是隐藏的。测试它们需要复杂的输入序列才能将正确的值送入其中,然后再将结果传播出来。这既缓慢又困难。

​​扫描设计​​的革命性思想是:如果仅为了测试,我们能把所有触发器变成一个巨大的移位寄存器呢?​​扫描链​​是一条“虚拟”路径,它将一个触发器的输出连接到下一个触发器的输入,由一个特殊的 scan_enable 信号控制。在正常模式下(scan_enable 关闭),触发器按其应有的方式工作,从主逻辑中捕获数据。但在测试模式下(scan_enable 开启),它们被重新配置成一条长链。数据可以从单个引脚串行移入,从而设置整个芯片的状态,而被捕获的结果可以移出以供检查。这就像拥有了一条连接我们硅制城市中每个“房子”的秘密高速公路。

测试过程是一个三步舞:

  1. ​​扫描输入 (Scan-In):​​ 在 scan_enable 激活的情况下,一个测试图形被缓慢地移入扫描链,精确地设置每个触发器的状态。
  2. ​​捕获 (Capture):​​ scan_enable 被关闭一个时钟周期。芯片瞬间正常工作。触发器之间的组合逻辑根据我们刚刚扫描输入的状态计算其结果,并且这个结果被触发器“捕获”。在此步骤中,芯片的正常主输入也用于施加测试激励,确保整个逻辑网络都得到测试。
  3. ​​扫描输出 (Scan-Out):​​ scan_enable 再次被打开,捕获的状态被移出,供测试仪分析。

这是一个绝妙的技巧,它将一个困难的时序测试问题转化为一个简单得多的组合问题。但它也带来了自身的挑战。一个拥有一百万个触发器的芯片将有一条一百万比特长的扫描链。移入和移出一个图形就需要一百万个时钟周期!在时间就是金钱的昂贵测试设备上,这是不可接受的。解决方案是什么?分区。工程师们不建一条长长的高速公路,而是建造许多更短的、并行的高速公路。通过将 120 万个触发器分成 100 条并行的、各有 12,000 个触发器的扫描链,移入一个图形的时间减少了 100 倍。测试时间的大幅缩减是使用多条扫描链的主要原因。

管理数据洪流与实现自主化

即使有并行链,测试数据的绝对数量也可能是压倒性的。为了实现高测试质量,可能需要数千个测试图形,总计达千兆字节的数据。这可能会超出测试设备的内存,并进一步延长测试时间。

于是​​测试数据压缩​​应运而生。这涉及到在芯片上添加另一块巧妙的“虚拟”逻辑。一个片上​​解压器​​从少数几个外部引脚接收一个小的、高度压缩的数据流,并在芯片上动态地将其扩展,以馈送给数十或数百个内部扫描链。相反,一个​​压缩器​​接收来自扫描链的多个输出流,并将它们压缩成一个单一的“特征”或一组更小的输出流。例如,一个电路可能只使用 12 个外部引脚来控制 192 个内部扫描链。在这种情况下,压缩比将是内部扫描链的数量除以外部引脚的数量,即 19212=16\frac{192}{12} = 1612192​=16。这意味着测试数据量和传输它所花费的时间减少了 16 倍——这在成本和时间上都是巨大的节省。

这一原则的终极延伸是​​内建自测试(BIST)​​。为什么还要依赖外部测试仪呢?通过 BIST,芯片成为了自己的侦探。关键的逻辑块被包裹在具有双重身份的特殊寄存器中。在正常模式下,它们是透明的。在 BIST 模式下,输入寄存器转变为​​测试图形生成器(TPG)​​,创建伪随机的测试输入序列,而输出寄存器则变为​​特征分析器(SA)​​,将输出响应流压缩成一个单一的、最终的“特征”。在测试结束时,这个特征与一个已知的正确值进行比较。如果它们匹配,该块就通过了测试。电路自主地测试自己。

一种通用的测试语言:JTAG

既然我们的芯片中内置了所有这些复杂的测试逻辑——扫描链、BIST 引擎、压缩器——我们就需要一种标准化的方式来控制它。我们需要一个通用的“控制面板”。这由 IEEE 1149.1 标准提供,通常被称为 ​​JTAG​​(联合测试行动组)。

JTAG 标准定义了一个​​测试接入端口(TAP)​​,这是一个用于与片上测试逻辑通信的简单串行接口。它由四个强制信号——​​TCK​​(测试时钟)、​​TMS​​(测试模式选择)、​​TDI​​(测试数据输入)和 ​​TDO​​(测试数据输出)——以及一个可选信号 ​​TRST​​(测试复位)组成。这五个引脚是解锁芯片内部世界以进行测试和调试的钥匙。

包含可选的 TRST 引脚是稳健工程设计的一个绝佳范例。测试逻辑总是可以通过将 TMS 引脚保持高电平五个时钟周期来同步复位。但如果测试时钟 TCK 不工作怎么办?如果电路板刚刚上电,时钟还不稳定怎么办?同步复位将会失败。TRST 是一个异步复位。它可以在不考虑时钟状态的情况下,强制测试逻辑进入一个安全的、已知的状态。它是一个安全网,是确保我们总是能够重新获得对芯片测试机器控制权的最后手段。

从保证匹配的被动硅条,到实现自测试的复杂数字引擎,“虚拟器件”是工程学实用主义和优雅的证明。它们深刻地承认,在现实世界中,建造完美的东西是不可能的,但建造一个完美可测试和可靠的东西是一个可以实现的美好目标。

应用与跨学科联系

在我们完成了对辅助电路结构基本原理的探索之后,你可能会有一种感觉,就像学会了所有国际象棋的规则却从未见过一盘棋。理论是优雅的,但行动在哪里?实践在何处体现?这是一个合理的问题。这些概念的真正美妙之处,很像国际象棋的规则,不在于它们的存在本身,而在于它们所能实现的复杂而强大的策略。这些所谓的“虚拟器件”绝非无用之物;它们是隐藏的杠杆、窗口和秘密通道,让我们能够建造、理解和信任我们所居住的这个极其复杂的数字世界。

让我们开始一次应用之旅,从工厂车间走向网络安全的前沿,看看这些巧妙的芯片设计附加物如何为我们的技术注入生命和可靠性。

数字侦探:在硅的海洋中寻找缺陷

想象一下,你刚刚制造了一百万只错综复杂的怀表,每一只都密封严实。你怎么知道其中一只里面的某个齿轮是否脱节了?你根本无法直接看到。这正是芯片制造商面临的困境。一个现代微处理器包含数十亿个晶体管,它们由比任何一个大都市的街道地图都更复杂的布线网络连接起来。在这数十亿个连接中,只要有一根断线(“开路”)或两根线之间意外的焊桥(“短路”),就可能使整个设备报废。

这就是边界扫描的精妙之处,一项关键的可测试性设计(DFT)技术。可以把它想象成安装在芯片中的一个专用神经系统,连接到每个输入和输出引脚。这个系统,被标准化为 JTAG,允许测试工程师绕过芯片复杂的“大脑”(核心逻辑),直接控制它的“四肢”(I/O 引脚)。

这如何帮助我们找到断线?假设芯片 A 上的一个引脚本应连接到芯片 B 上的一个引脚,但它们之间的 PCB 走线断了。使用 JTAG 的 EXTEST 指令,工程师可以命令芯片 A 输出端的边界扫描单元“喊出”一个逻辑 '1'。然后我们问芯片 B 输入端相应的边界扫描单元,“你听到了什么?” 在一个没有故障的世界里,它会听到 '1'。但由于线路断了,它什么也听不到。输入引脚处于“悬空”状态,并且由于一个位置恰当(且看似“虚拟”)的下拉电阻,其状态默认为逻辑 '0'。当扫描链报告说它本应听到 '1' 却听到了 '0' 时,侦探就找到了它的罪魁祸首:一个开路。

寻找短路则需要更多的技巧。想象一下,两条独立的线 A2 和 D7 意外地桥接在一起。仅仅让它们都输出 '1' 是无法发现问题的。诀窍在于制造冲突。利用同样的 EXTEST 功能,工程师命令引脚 A2 驱动 '1',同时命令引脚 D7 驱动 '0'。如果引脚们被正确隔离,它们会服从命令。但如果它们短路了,它们就会陷入一场微观的拉锯战。短路线上的电压将是某个模糊的电平,当边界扫描单元回读时,将与原始命令不符。例如,两个引脚可能都报告读到了 '0'。命令(1 和 0)与结果(0 和 0)之间的差异就是揭示短路的铁证。这是一个美妙的、直接的结构测试,完全独立于芯片应该做什么。我们测试的是电路的解剖结构,而不是它的行为。

现场观察者:不中断运行的调试

侦探工作并不会在芯片离开工厂后就停止。一些最令人烦恼的错误是间歇性的,只在特定的高速运行条件下出现。暂停系统进行调查通常是徒劳的,这就像试图通过关闭引擎来理解汽车为何抖动一样——你想要研究的状况本身就消失了。

这需要一种不同的工具,不是审讯者,而是一个沉默的观察者。JTAG 标准通过其 SAMPLE/PRELOAD 指令提供了这一功能。这个卓越的功能允许工程师在芯片全速运行时,对每个 I/O 引脚的状态进行一次非侵入式的、瞬时的“快照”。核心逻辑继续其工作,完全不知道它与外部世界的通信正在被记录。这相当于电子版的高速摄影,将十亿分之一秒的瞬间冻结。当错误发生时,工程师可以触发一次 SAMPLE 操作,然后慢慢地扫描出捕获的数据,仔细研究在故障瞬间从芯片视角看宇宙的确切状态。这种进行实时、原位调试的能力是使从卫星到智能手机等复杂系统得以实现不可或缺的工具。

架构师的困境:当辅助者发生冲突

添加这些强大的测试结构并非简单地将它们附加在上面。它们必须被编织进芯片设计的肌理之中,而这可能会导致新的、微妙的挑战。这些辅助电路必须与主要功能电路和平共存,有时它们的优先级会发生冲突。

考虑一个支持扫描链的触发器,这是该测试架构的基本构建块。它本质上是一个带开关的存储单元:在正常模式下,它监听功能数据;但在测试模式下,它监听扫描输入,允许测试图形被移入。现在,让我们添加另一个常见功能:异步复位。这是芯片的红色紧急停止按钮,旨在立即强制电路进入一个已知的安全状态(通常是全零),覆盖所有其他活动。

如果在测试过程中,我们试图将一个 '1' 移入我们的触发器,而恰好在同一时刻芯片的主复位信号被意外断言,会发生什么?答案在于一个严格的层次结构。异步复位,因其作为紧急控制的本质,必须具有最高优先级。它会强制将触发器的输出置为 '0',无论扫描输入数据或时钟脉冲如何。预期的测试图形会立即被破坏。这不是概念上的缺陷,而是给设计师的一个关键教训:可测试性功能的集成是一场精妙的优先级之舞。架构师必须确保测试操作和功能控制(如复位)不会相互干扰。

王国的钥匙:从可测试性到安全性

在这里,我们到达了一个引人入胜且完全现代化的学科交叉点。JTAG 端口,我们进入芯片的魔术窗口,是一把双刃剑。对测试工程师来说,它是调试和验证的钥匙。对恶意行为者来说,它是通往王国的钥匙。一个未受保护的测试端口是一个巨大的安全漏洞。攻击者可以用它来暂停处理器,读出其内存内容,并对公司最宝贵的知识产权进行逆向工程。他们甚至可以改变芯片的功能,制造一个硬件木马。

解决方案源于 DFT 和密码学的结合:给门上加一把锁。人们不想完全移除这扇门——工程师仍然需要它——但访问必须经过身份验证。这导致了安全调试协议的开发。在 JTAG 端口授予对强大的内部扫描链的访问权限之前,外部测试设备必须首先通过解决一个密码学难题来证明其身份。

这通常采用挑战-响应机制的形式。芯片发出一个公开的“挑战”(一串比特)。授权的测试仪使用一个秘密密钥来计算正确的“响应”并将其发回。在内部,芯片使用自己的逻辑——通常是一种称为 MISR 的特殊类型的移位寄存器——来执行相同的计算。如果来自测试仪的响应与芯片内部计算的结果相匹配,锁就会打开,访问权限被授予。这增加了另一层辅助结构,一个密码学守门人,来保护第一层辅助结构,即测试端口。这是一个绝佳的例证,说明了工程解决方案如何演变,每一种新能力都会产生新的挑战,而这些挑战又需要更巧妙的解决方案。

从工厂车间到安全飞地,这些“虚拟器件”是数字时代的无名英雄。它们是看不见的脚手架,让我们能够建造、测试、调试并最终信任驱动我们世界的硅巨人。它们是工程师远见卓识的深刻证明,表明有时候,一台机器最重要的部分,是那些什么也不做——除了让其他一切成为可能的部分。