发布信息

数字数据的基于硬件的混淆的制作方法

作者:admin      2022-07-09 20:12:41     901



计算;推算;计数设备的制造及其应用技术数字数据的基于硬件的混淆1.相关申请2.本技术要求于2020年12月22日提交的且标题为“hardware-based obfuscation of digital data”的美国临时专利申请号63/129,354的权益,并且上述申请以其整体并入本文中。3.政府许可权利4.本发明是在由美国(u.s.)国防高级研究计划局(darpa)授予的合同号hr0011-20-9-0043的政府支持下进行的。美国政府对本发明具有某些权利。技术领域5.本公开总体上涉及电子设计自动化(eda)系统。特别地,本公开涉及用于在硬件中提供数字信息的混淆(obfuscation)的系统和方法。背景技术:6.硬件制造商可以将秘密信息(诸如对称加密密钥或用于密码密钥生成器的种子)嵌入到片上系统(soc)架构中。这些秘密可以用于测试或验证soc到(诸如在制造现场的)一个或多个外部装置的真实性。这样的测试或验证可以在soc制造之后并且在制造现场的任何提供之前被完成。例如,这些秘密可以是可以用在协议中的一个或多个密钥材料,以利用制造现场的硬件安全模块(hsm)进行认证。该协议(连同秘密一起)可以用于建立soc和hsm能够执行提供过程中的后续步骤的证据。7.隐藏或混淆这些秘密对于大多数制造商而言是挑战。为了保持较高级别的安全性,混淆方法通常被视为机密的和专有的。技术实现要素:8.本公开的一些方面涉及一种用于实现数字数据的基于硬件的混淆的方法。例如,本公开的一些方面包括:执行捕获操作,该捕获操作将多个主输入(pi)位加载到多个测试数据寄存器(tdr)的对应的移位寄存器中,多个测试数据寄存器被部署在一个或多个数字半导体装置上并且被配置为存储多个秘密信息位。该方法还包括对多个tdr执行一系列移位操作以获得多个输出位。该方法还包括:由认证处理器对多个输出位应用导出函数,以提取多个秘密信息位,从而认证一个或多个数字半导体装置。9.根据一些方面,多个tdr中的第一tdr的pi端口至少部分地基于多个秘密信息位被设置为逻辑高或逻辑低。根据一些方面,多个tdr中的第一tdr的pi端口和主输出(po)端口被连接到数字逻辑门网络。根据一些方面,导出函数至少部分地基于数字逻辑门网络。根据一些方面,应用导出函数包括使用位映射列表来对多个输出位重新排序。根据一些方面,位映射列表至少部分地基于多个tdr的地址。根据一些方面,多个秘密信息位是密码密钥或用于密码密钥生成器的种子。10.本公开的一些方面涉及一种用于实现数字数据的基于硬件的混淆的系统。例如,本公开的一些方面涉及一种存储指令的存储器,以及与存储器耦合并执行指令的至少一个处理器。根据一些方面,指令在被执行时使至少一个处理器执行捕获操作,该捕获操作将多个主输入(pi)位加载到多个测试数据寄存器(tdr)的对应的移位寄存器中,多个测试数据寄存器被部署在一个或多个数字半导体装置上并且被配置为存储多个秘密信息位。根据一些方面,指令在被执行时还使处理器对多个tdr执行一系列移位操作,以获得多个输出位。根据一些方面,指令在被执行时还使处理器对多个输出位应用导出函数以提取多个秘密信息。11.本公开的一些方面涉及一种包括被存储的指令的非暂态计算机可读介质,指令在由处理器执行时使处理器执行捕获操作,该捕获操作将多个主输入(pi)位加载到多个测试数据寄存器(tdr)的对应的移位寄存器中,多个测试数据寄存器被部署在一个或多个数字半导体装置上并且被配置为存储多个秘密信息位。根据一些方面,指令在被执行时使处理器对从多个tdr获得的多个输出位应用导出函数,以提取多个秘密信息位,从而认证一个或多个数字半导体装置。12.本发明内容不试图提供任何特定创新、实施例或示例的完整意义,如其可以在商业中使用的。另外,本发明内容并不旨在表示创新、实施例或示例的关键或重要元素,或限制本公开的主题的范围。在本公开中发现的创新、实施例和/或示例不是全包含性的,而是描述了本主题的基本意义。因此,本发明内容的一个用途是下面给出的具体实施方式的序言。附图说明13.根据下面给出的详细描述和本公开的实施例的附图,将更全面地理解本公开。附图用于提供对本公开的实施例的知识和理解,并且不将本公开的范围限制于这些特定实施例。此外,附图并不一定按比例绘制。14.图1示出了根据一些方面的示例性测试数据寄存器(tdr)位。15.图2示出了根据一些方面的提供tdr的主输入(pi)的示例性方法。16.图3示出了根据一些方面的半导体装置的测试基础结构中的寄存器的示例性拓扑。17.图4示出了根据一些方面的被连接到测试网络接入基础结构的电子系统的多个部件。18.图5示出了根据一些方面的用于执行数字数据的基于硬件的混淆的示例方法。19.图6描绘了本公开的实施例可以在其中操作的示例计算机系统的图。20.图7描绘了根据本公开的一些实施例的在集成电路的设计和制造期间使用的各种过程的流程图。具体实施方式21.本公开的各个方面涉及数字数据的基于硬件的混淆。22.需要使用和隐藏存储在硬件装置(例如,数字电路装置)中的密码密钥,以便在装置与其外部安全基础结构之间建立信任。在一些实施例中,未提供的片上系统(soc)(例如,紧接在制造之后的尚未被验证或认证的soc)可以与外部装置建立某种程度的信任,诸如经由某种形式的认证/验证。这样做的一种方式是隐藏soc中的密钥材料,其可以使用与诸如hsm之类的外部装置的协议来测试,从而避免依赖第三方信任源。23.本公开提供了使用多层方法在数字电路装置中(诸如在半导体装置内)混淆或隐藏密钥、密钥集或其他秘密数据的自动化手段。24.根据一些方面,秘密信息的位可以被隐藏在测试数据寄存器(tdr)的捕获值中。参见例如联合测试行动组(jtag)、电气与电子工程师协会(ieee)标准ieee 1149.1-2013、图9至图6(pi输入)。例如,这些输入可以在一些tdr中未使用,从而允许电路设计者或工程师将这些数字输入中的任何数字输入设置为恒定值,例如逻辑1或逻辑0,而不影响主电路设计。25.根据一些方面,隐藏秘密信息位可以被放置在装置(例如,soc、半导体装置、多芯片模块(mcm)、集成电路(ic)或其它数字装置)周围的各种物理位置中。隐藏信息位可以被集成到给定电路布局板上随机配置的固定值逻辑云中。这样的逻辑云也可以在布局过程期间散布在多个物理位置周围,这可以使得逻辑云在诸如分层(delamination)的反向工程过程之后更难以被标识或暴露。其他未使用的捕获值可以以混淆有用和非有用的电路元件的方式被随机化。由认证客户端处理位的顺序也可以保密。26.本公开的实施例提供了防止可能允许攻击者获得对私有密码密钥信息的未授权访问的、基于硬件的攻击(例如,分层或其他侧信道攻击)的技术优点。这里的实施例还提供了如下技术优点:使用soc测试基础结构设施在soc中隐藏秘密密钥位,从而使得难以对电路进行反向工程以暴露soc上的秘密位。本文的实施例还提供了如下技术优点:在soc中随机隐藏秘密密钥位,使得使用该方法的不同soc将生成用于隐藏位的不同模式,从而减轻在反向工程尝试期间破坏对应于单个soc的密钥导致对应于所有其他soc的密钥被泄露的情况。27.图1示出了根据一些方面的示例性测试数据寄存器(tdr)位。tdr 102包括移位寄存器104和更新寄存器106。根据一些方面,移位寄存器104和更新寄存器106是数字触发器(例如,d型触发器)。根据一些方面,测试数据寄存器tdr 102符合jtag ieee1149.1-2013标准规范。图1中命名的信号与用于这些类型的寄存器的、如在本文别处引用和描述的ieee 1149.1中定义的命名约定一致。测试数据寄存器tdr具有三种操作模式:捕获模式、移位模式和更新模式。根据一些方面,在捕获模式期间,主输入(pi)108可以被路由到移位寄存器104。在时钟数据寄存器(dr)信号的上升沿,pi 108的值可以被捕获到移位寄存器104中,并且先前存储在移位寄存器中的值可以被移出作为扫描输出(so)122输出。28.根据一些方面,在移位模式期间,可以传递so 122以扫描下一个tdr位的(si)输入110。在更新模式期间,在更新数据寄存器(dr)116信号的上升沿,存储在更新寄存器106中的值可以被传递到主输出(po)124,并且移位寄存器104的so 122的值可以被存储在更新寄存器106中。29.根据一些方面,在上电复位120信号可以被断言和解除断言,以清除更新寄存器106。此后,po 124可以用于形成半导体装置上的另一tdr或tdr 102的pi输入。指令118可以充当触发移位寄存器104和更新寄存器106的开关。时钟dr 114可以触发移位寄存器104,并且当指令118被设置为逻辑高时,更新dr 116可以触发更新寄存器106。此外,时钟dr 114不能触发移位寄存器104,并且当指令118被设置为逻辑低时,更新dr 116不能触发更新寄存器106。30.由于电子设计自动化(eda)应用(诸如设计测试(dft)系统)使用tdr的性质,可以很少使用捕获模式和捕获值或观察到的值。然而,移位寄存器104处的捕获事件仍然可以发生,但是在一些情况下,没有电路装置可以对事件做出响应,或者静态值可以被捕获在tdr的移位元件中,或者值可以在该事件期间保持状态,或者可以进行dft观察以帮助调试tdr电路本身中的故障,仅举几个非限制性示例。本系统可以利用这样的观察点来混淆或隐藏秘密信息,诸如密码密钥或用于密码密钥生成器的种子。此外,在示例用例中,可以在给定装置中隐藏诸如对称密钥(例如,高级加密标准(aes))或非对称私钥(例如,椭圆曲线密码)之类的私钥,以便开始在给定装置与其(内部和外部的)安全基础结构之间建立信任。31.根据一些方面,tdr位的更新寄存器可以在上电时或者在测试接入端口(tap)复位的断言时复位。如果在tdr中没有提供更新寄存器,如对于某些实现方式的情况有时是这样,那么移位寄存器104可以直接从其q输出复位和驱动po。32.图2示出了根据一些方面的提供tdr的pi输入的示例性方法。tdr的pi 108可以被设置为逻辑高或逻辑低。根据一些方面,数字半导体装置可以包含多个tdr,并且tdr的子集可以被改变用途(repurpose)以混淆或隐藏秘密信息。根据预定方案,可以将半导体装置上的tdr的子集的pi值设置为逻辑高或逻辑低。33.根据一些方面,可以从逻辑云(密钥云202)获得pi值。图2示出了具有从密钥云202导出的pi输入的tdr 204至212,并且tdr的主输出(po)被输入回到密钥云214。根据一些方面,密钥云214可以包括各种数字逻辑门(例如,nand门和nor门,诸如214至220)。因此,密钥云202可以是数字逻辑门网络。根据一些方面,密钥云202可以是预定义电路,使得给定被输入到密钥云202中的po值和密钥云202的结构,可以确定被输出的pi的值。根据一些方面,密钥云214可以是tdr 204至212被部署在其上的半导体装置的子部件。根据一些方面,密钥云214可以是被部署在具有tdr204至212的数字半导体装置上的数字逻辑门网络。在密钥云202中,tdr的po和信号值(例如,逻辑高“1”)可以被输入到数字逻辑门,以生成下一个pi值。所生成的下一个pi值随后可以用于驱动另一个tdr的主输入。例如,可以使用数字门216将tdr 4 204的po与逻辑高电平组合以生成可以被输入到tdr3 206的pi。34.根据一些方面,可以选择半导体装置上的tdr的子集(例如,tdr 204至212)以用于隐藏秘密信息位。每个tdr可以存储单个信息位。tdr的子集可以由执行一系列操作(例如,捕获、移位和更新)的安全引擎或认证处理器来驱动,以访问存储在tdr的子集中的信息位。根据一些方面,驱动tdr的子集的安全引擎或认证处理器可以对应于ieee标准1149.1、1500或1687中定义的测试基础结构的部件。tdr的子集可以串联连接,使得tdr 204的so连接到tdr 206的si,tdr 206的so连接到tdr 208的si,tdr 208的so连接到tdr 210的si,并且tdr 210的so连接到tdr 212的si。根据一些方面,可以将tdr的子集中的每个tdr的pi输入设置为逻辑高或逻辑低。根据一些方面,tdr的子集中的每个tdr的pi输入可以来源于密钥云202。根据一些方面,可以在tdr的子集上执行捕获操作,以将每个tdr的pi输入加载到相应tdr的移位寄存器中。随后,可以对tdr执行一系列移位操作以扫描输出存储在tdr的子集中的位。35.图3示出了根据一些方面的半导体装置(例如,启用jtag的装置)的测试基础结构中的寄存器的拓扑。此外,图3示出了对包含一些秘密信息位的特定tdr位的访问可以被驱动地址解码到感兴趣的tdr的安全策略位阻止访问。图3的背景涉及在soc的核心中发现的接入架构的实施例,其遵守用于嵌入式核心测试(sect)的ieee1500标准,例如,具有一些修改。36.数据可以沿着从包装器串行输入(wsi)318到包装器串行输出(wso)326的路径通过ieee 1500 sect核心被串行扫描。在典型应用中,当在多路复用器328处断言selectwir 320信号时,可以将地址加载到包装器指令寄存器(wir)316中。wir 316然后可以选择数据寄存器以在selectwir被解除断言时进行扫描。在一些用例中,可以不存在解码器块。wir 316可以选择要被寻址的寄存器(例如,寄存器302至314)。例如,当值“0000”被加载到wir 316中时,然后可以在多路复用器330处选择wby寄存器314。根据一些方面,逻辑云332的解码器从wir 316馈送地址,其中附加信令来自测试网络接入基础结构的安全策略生成器。此策略的位可以包含来自soc的电熔丝(efuse)322的输出(例如,电熔丝的“bit0”和“bit1”)和来自安全引擎或引导处理器324的控制信号(“secure”),仅举几个非限制性实例。根据一些方面,电熔丝322可以是控制电源的接通和关断的集成电路,并且引导处理器可以是执行诸如高级统一引导加载器(grub)或linux加载器(lilo)的引导加载程序的集成电路。根据一些方面,可以阻止对保持秘密值或位的特定寄存器的访问,从而挂起来自soc的策略引擎的一些授权方案。根据一些方面,策略引擎可以在半导体装置上被实现为测试网络接入基础结构安全引擎408的一部分。另外,根据一些实施例,寄存器302至314的实现可以包括至少一个线性反馈移位寄存器(lfsr)。在另一实施方案中,lfsr可以由伪随机数生成器(prng)或密码原语(诸如,流密码或散列函数)替代。37.图4示出了根据一些方面的被连接到测试网络接入基础结构的电子系统的多个部件。部件u1 402和u2 404可以是不同的层级模块、多芯片模块中的芯片或半导体装置的逻辑部分。根据一些方面,u1 402和u2 404可以包括若干tdr。每个部件上的tdr的子集可以被改变用途以混淆或隐藏秘密信息位。可以基于包括位映射列表的预定义的位顺序映射410来选择tdr的子集。例如,在u1 402中的五个tdr中,三个tdr(tdr 3、1和0)用于隐藏秘密信息位。此外,在该示例中,在u2 404中的五个tdr中,三个tdr(tdr1、2、3)用于隐藏秘密信息位。38.根据一些方面,选择每个模块上的tdr的子集,并且可以基于所选择的tdr来生成位映射列表。在一些实施例中,位映射列表可以包括所选择的tdr的标识、所选择的tdr的位置、以及所选择的tdr的顺序。在一些实施例中,位映射列表410可以包括所选择的tdr的地址。在一些实施例中,基于作为数字逻辑门网络的密钥云202创建位映射列表。39.使用图4来说明系统,根据一些方面,伴随的过程可以如下工作。40.u1 402和u2 404上的所选择的tdr的子集可以(例如)在上电时进入复位状态。可以向安全引擎408提供位顺序映射410的位映射列表,基于该位顺序映射410选择u1 402和u2 404上的tdr的子集。安全引擎408可以确定可能需要访问哪些tdr来提取隐藏信息位。安全引擎408可以通过设置使安全引擎408能够命令测试网络接入基础结构406选择寄存器320至314中的一个寄存器的策略位来允许访问寄存器(例如,寄存器302至314)。选择可能需要访问测试网络接入基础结构406以将核心的wir设置为适当的地址。时钟dr信号的断言可以触发捕获操作,借此将每个tdr的pi输入加载到相应tdr的移位寄存器中,如图1中所描述。随后,可以对tdr执行一系列移位操作以扫描输出存储在tdr的子集中的位。可将基于对应位顺序映射410的导出函数(derivation function)应用于扫描输出的位以获得隐藏信息位。根据一些方面,应用导出函数可以涉及基于位顺序映射410解扰(unscramble)扫描输出的位。根据一些方面,应用导出函数以获得隐藏信息位可以涉及删除扫描输出的位中的一个或多个位,其中删除的位可以对应于u1 402和u2 404中的未使用的tdr位。然后,安全引擎408可以改变策略位以锁定对tdr的访问。根据一些方面,安全引擎408可以继续提取位,直到提取到期望的信息位串。41.图5示出了根据一些方面的用于执行数字数据的基于硬件的混淆的示例方法。可以关于图1至图4的元素描述图5。方法500可以由图6的计算机系统600执行。方法500可以使用图1中所示的tdr位来执行。方法500可以使用图2至图4中所示的半导体部件来执行。方法500不限于那些图中描绘的特定方面,并且如本领域技术人员将理解的,其它系统可以用于执行该方法。应当理解,并非所有操作都是需要的,并且操作可以不以与图5中所示相同的顺序执行。42.在502处,标识位于一个或多个数字半导体装置上的tdr以混淆或隐藏秘密信息位。根据一些方面,数字半导体装置可以包含若干tdr,并且可以使用tdr的子集来隐藏信息位。基于所选择的tdr的子集,可以创建位映射列表。在一些实施例中,位映射列表可以包括所选择的tdr的地址、所选择的tdr在一个或多个半导体装置上的位置、以及所选择的tdr的顺序。在一些实施例中,位映射列表可以基于tdr的子集所连接到的逻辑门的网络。43.根据一些方面,被标识用于隐藏信息位的tdr的子集可以串联连接。根据一些方面,被标识用于隐藏信息位的tdr的子集可以彼此不相邻,或者可以位于一个或多个半导体装置的不同逻辑部分上。44.在504处,执行捕获操作以将tdr的子集中的每个tdr的pi输入处的信号值加载到相应的tdr的移位寄存器中。根据一些方面,可以将tdr的子集中的每个tdr的pi输入设置为逻辑高或逻辑低。根据一些方面,tdr的子集中的每个tdr的pi输入可以来源于密钥云202。根据一些方面,tdr的子集中的每个tdr的pi输入可以基于秘密信息位。45.在506处,对多个tdr执行一系列移位操作以扫描输出多个输出位。在移位操作期间,移位输入(si)112处的值可以被加载到移位寄存器104中,并且移位输出(so)122处的值可以被传递到下一个tdr位的扫描输入(si)输入。46.在508处,由安全引擎或认证处理器对通过对tdr执行移位操作获得的多个输出位应用导出函数,以提取被隐藏在tdr中的秘密信息位。根据一些方面,安全引擎或认证处理器可以是测试网络接入基础结构的一部分。应用导出函数可以包括使用位映射列表来根据位顺序映射410对多个输出位进行重新排序或解扰。应用导出函数可以包括使用位映射列表来选择与用于隐藏秘密信息位的tdr的子集相对应的多个输出位的子集。因此,应用导出函数可以包括从多个输出位中删除一个或多个位,其中所删除的位可以对应于未使用的tdr位。根据一些方面,导出函数可以基于一个或多个密钥云电路的配置。根据一些方面,提取秘密信息位认证包含tdr的一个或多个数字半导体装置。47.图6示出了计算机系统600的示例机器,在该示例机器内可以执行用于使该机器执行本文所讨论的方法中的任何一个或多个方法的一组指令。在备选实现方式中,机器可以连接(例如,联网)到lan、内联网、外联网和/或因特网中的其他机器。机器可以作为客户端-服务器网络环境中的服务器或客户端机器、作为对等(或分布式)网络环境中的对等机器、或者作为云计算基础结构或环境中的服务器或客户端机器来操作。48.机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、网络装置、服务器、网络路由器、交换机或网桥、或者能够执行指定机器要采取的动作的一组指令(顺序的或其他方式)的任何机器。此外,虽然示出了单个机器,但是术语“机器”还应被理解为包括单独地或联合地执行一组(或多组)指令以执行本文所讨论的方法中的任何一个或多个方法的机器的任何集合。49.示例计算机系统600包括处理装置602、主存储器604(例如,只读存储器(rom)、闪存、诸如同步dram(sdram)之类的动态随机存取存储器(dram)、静态存储器606(例如,闪存、静态随机存取存储器(sram)等)以及数据存储装置618,它们经由总线830彼此通信。50.处理装置602表示一个或多个处理器,诸如微处理器、中央处理单元等。更具体地说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理装置602还可以是一个或多个专用处理装置,诸如专用集成电路(asic)、现场可以编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理装置602可以被配置成执行用于执行本文描述的操作和步骤的指令626。51.计算机系统600还可以包括网络接口装置608,以通过网络620进行通信。计算机系统600还可以包括视频显示单元610(例如,液晶显示器(lcd)或阴极射线管(crt))、字母数字输入装置612(例如,键盘)、光标控制装置614(例如,鼠标)、图形处理单元622、信号生成装置616(例如,扬声器)、图形处理单元622、视频处理单元628、以及音频处理单元832。52.数据存储装置618可以包括机器可读存储介质624(也称为非暂态计算机可读介质),在该机器可读存储介质上存储有体现本文描述的方法或功能中的任何一项或多项的一组或多组指令626或软件。指令626在由计算机系统600执行期间也可以完全或至少部分地驻留在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储介质。53.在一些实现方式中,指令626包括用于实现与本公开相对应的功能的指令。虽然机器可读存储介质624在示例实现方式中被示为单个介质,但是术语“机器可读存储介质”应当被认为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库、和/或相关联的缓存和服务器)。术语“机器可读存储介质”还应当被理解为包括能够存储或编码用于由机器执行的一组指令并且使机器和处理装置602执行本公开的方法中的任何一个或多个方法的任何介质。术语“机器可读存储介质”因此应当被理解为包括但不限于固态存储器、光学介质和磁介质。54.已经根据对计算机存储器内的数据位的操作的算法和符号表示来呈现了前述详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地将他们工作的实质传达给本领域的其他技术人员的方式。算法可以是导致期望结果的一系列操作。这些操作是需要对物理量进行物理操作的操作。这种量可以采取能够被存储、组合、比较和以其他方式操纵的电信号或磁信号的形式。这样的信号可以被称为位、值、元素、符号、字符、项、数字等。55.然而,应当记住,所有这些和类似的术语都与适当的物理量相关联,并且仅仅是应用于这些量的方便的标记。除非特别声明,否则从本公开中显而易见的是,应当理解,在整个说明书中,某些术语是指计算机系统或类似的电子计算装置的动作和处理,该动作和处理将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和转换为类似地表示为计算机系统存储器或寄存器或其他这样的信息存储装置内的物理量的其他数据。56.本公开还涉及用于执行本文的操作的设备。该设备可以是为预期目的而专门构造的,或者该设备可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的计算机。这样的计算机程序可以存储在计算机可读存储介质中,例如但不限于包括软盘、光盘、cd-rom和磁光盘的任何类型的盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡、或适于存储电子指令的任何类型的介质,各自耦合到计算机系统总线。57.本文提出的算法和显示与任何特定计算机或其他设备并非本质地相关。各种其他系统可以与根据本文教导的程序一起使用,或者可以证明构造更专用的设备来执行该方法是方便的。另外,本公开不是参考任何特定编程语言来描述的。将理解的是,各种编程语言可以用于实现如本文描述的本公开的教导。58.本公开可以作为计算机程序产品或软件来提供,计算机程序产品或软件可以包括存储有指令的机器可读介质,该指令可以用于对计算机系统(或其他电子装置)进行编程以执行根据本公开的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储介质、光存储介质、闪存装置等。59.图7示出了在诸如集成电路的制品的设计、验证和制造期间使用的过程700的示例性集合,其用于转换和验证表示集成电路的设计数据和指令。这些过程中的每个过程都可以被构造和实现为多个模块或操作。术语“eda”表示术语“电子设计自动化”。这些过程开始于利用由设计者提供的信息创建产品构思710,该信息被转换以创建使用eda过程712的集合的制品的信息。当设计完成时,设计被流片734,流片是指集成电路的原图(例如,几何图案)被发送到制造装置以制造掩模组,掩模组然后被用于制造集成电路。在流片之后,制造736半导体裸片,并执行封装和组装过程738以产生完成的集成电路740。60.电路或电子结构的规格可以从低级晶体管材料布局到高级描述语言。高抽象级可以用于使用诸如vhdl、verilog、systemverilog、systemc、myhdl或openvera之类的硬件描述语言(“hdl”)来设计电路和系统。hdl描述可以被转换为逻辑级寄存器传输级(“rtl”)描述、门级描述、布局级描述或掩模级描述。作为更详细描述的每个较低抽象级向设计描述中添加更多有用的细节,例如,包含描述的模块的更多细节。作为更详细描述的较低抽象级可以由计算机生成、从设计库导出或由另一个设计自动化过程创建。用于指定更详细描述的较低抽象级语言的规范语言的示例是spice,其用于具有许多模拟部件的电路的详细描述。每个抽象级的描述被使能以由该层的相应工具(例如,形式验证工具)使用。设计过程可以使用图7中所描绘的顺序。能够由eda产品(或工具)使能所描述的过程。61.在系统设计714期间,指定要制造的集成电路的功能。可以针对诸如功耗、性能、面积(物理和/或代码行)以及成本降低等的期望特性来优化设计。在这个阶段,可以将设计划分为不同类型的模块或部件。62.在逻辑设计和功能验证716期间,以一种或多种描述语言指定电路中的模块或部件,并且检查该规格的功能准确性。例如,可以验证电路的部件以生成与正在设计的电路或系统的规格的要求相适配的输出。功能验证可以使用模拟器和其他程序,诸如测试台生成器、静态hdl检查器和形式验证器。在一些实施例中,被称为“仿真器”或“原型系统”的部件的特殊系统被用于加速功能验证。63.在用于测试的综合和设计718期间,hdl代码被转换到网表。在一些实施例中,网表可以是图结构,其中图结构的边表示电路的部件,并且其中图结构的节点表示部件如何互连。hdl代码和网表都是分级制品,该分级制品可以由eda产品用来验证集成电路在制造时是否根据指定设计运行。可以针对目标半导体制造技术优化网表。另外,可以测试完成的集成电路以验证集成电路是否满足规格的要求。64.在网表验证720期间,检查网表与时序约束的一致性以及网表与hdl代码的对应性。在设计规划722期间,构造并分析集成电路的总体布局图以用于时序和顶层布线。65.在布局或物理实现724期间,进行物理放置(诸如晶体管或电容器之类的电路部件的定位)和布线(通过多个导体连接电路部件),并且可以执行从库中选择单元以实现特定逻辑功能。如本文所使用的,术语“单元”可以指定提供布尔逻辑功能(例如,与、或、非、异或)或存储功能(诸如触发器或锁存器)的一组晶体管、其他部件和互连。如本文所使用,电路“块”可以指代两个或更多个单元。单元和电路块都可以被称为模块或部件并且被实现为物理结构和在仿真中实现。为被选择的单元(基于“标准单元”)指定参数,诸如尺寸,并且使参数在数据库中可访问以供eda产品使用。66.在分析和提取726期间,在布局级验证电路功能,这允许布局设计的精细化。在物理验证728期间,检查布局设计以确保制造约束是正确的,诸如drc约束、电气约束、光刻约束,并且确保电路功能与hdl设计规格适配。在分辨率增强730期间,转换布局的几何形状以改进电路设计的制造方式。67.在流片期间,创建数据以用于(在适当的情况下应用光刻增强之后)光刻掩模的生产。在掩模数据准备732期间,“流片”数据用于产生光刻掩模,该光刻掩模用于产生完成的集成电路。68.计算机系统(诸如图6的计算机系统600)的存储子系统可以用于存储由本文描述的eda产品中的一些或全部eda产品使用的程序和数据结构、以及用于开发库的单元和用于使用库的物理和逻辑设计的产品。69.在前述公开中,已经参考其特定示例实现方式描述了本公开的实现方式。显然可以对这些实现方式进行各种修改而不偏离如所附权利要求中阐述的本公开的实施方式的范围。在本公开以单数形式提及一些元素的情况下,在附图中可以描绘多于一个的元素,并且相同的元素用相同的数字标记。因此,本公开和附图应被认为是说明性意义的而不是限制性意义的。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部