三万字长文带你了解电子设计自动化(EDA)

文章目录

  • 三万字长文带你了解电子设计自动化(EDA)
    • EDA 的工业视角
      • 简介
      • 物理设计
        • 不断发展的设计环境
        • 早期物理设计:交互式支持
        • 自动设计
        • 路由
        • 布局布线中的关键支持子系统
        • 经济影响较小的物理设计工具
        • 关于物理设计EDA的未来
      • VSLI 设计的仿真和验证
        • 事件
        • 周期
        • 模型
        • 编译代码
        • 硬件描述语言
        • 测试平台语言
        • 加速和仿真
        • 事件驱动的加速器
        • 基于周期的加速器和仿真器
        • 大规模并行通用处理器
        • 基于 FPGA 的仿真器
        • 分析
        • 模型检查器
        • 等效检查器
        • 未来:SoC
      • 综合
        • 开端
        • 逻辑优化和设计编译器
        • RTL 综合
        • 顺序映射和优化
        • 扩大合成范围
        • 行为综合
        • 物理综合
        • 数据路径合成
        • FPGA 合成
        • 未来
      • 测试
      • 总结

EDA 的工业视角

电子设计自动化(Electronic Design Automation,下称 EDA)已经有相对悠久的发展历史了。它和集成电路设计(IC)之间相互影响,相互促进。现在已经有很多的 EDA 工具被开发出来,里面涵盖了很多的技术、算法和方法。EDA 的核心技术,主要包含在以下的四个方面:

  • 物理设计(布局)
  • 仿真/验证
  • 综合
  • 测试

EDA 的技术也往各个方面去发展,比如说在现场可编程门阵列(FPGAs)的软件可编程性的实现。

简介

在数字领域,不断变化的流行设计方法——以连续的“时代”为特征。

  • 手工设计:Shannon 的布尔代数和 McCluskey 的关于最小化组合逻辑电路构成了数字电路的基础。那时候的大部分工作都是手工完成的,直到二十世纪六十年代末。比如说用于掩码生成的图纸设计和一种特殊塑料薄膜的切割。
  • 自动化图稿和电路模拟:二十世纪七十年代早期,Calma 等公司以数字化系统来制作艺术品,使用香料用于电路仿真。印刷电路的自动布线切割板可从 Applicon、CV、Racal-Redac 获得。其他一些公司如 IBM 和 WE 开发和搞定了 IC 路由器。Calma 的 GDS II 成为标准布局格式。
  • 原理图捕获和逻辑仿真:工作站技术与图形用户界面相结合允许设计师直接在原理图中绘制他们的逻辑捕捉工具。一旦进入此中,这些设计就可以在逻辑级别进行模拟以供进一步开发和调试。此时最大的进入者是 Daisy、Mentor 和 Valid。
  • 布局布线:二十世纪八十年代,强大的 IC 布局工具出现:自动布局和布线,设计规则检查,布局与原理图比较等。同时,硬件描述语言 Verilog 和 VHDL 使得逻辑和 RTL 模拟器的广泛被采用。商业领域的主要角色成为 Mentor 和 Cadence。
  • 综合: 1987 年,商业逻辑综合推出,允许设计师自动映射网表进入不同的单元库。90 年代期间,从 RTL 描述合成网表,然后再布局布线,成为主流设计方法。结构化的测试在那个十年的末尾被广泛采用。RTL 仿真成为主要用于验证数字系统的工具。正式验证和静态时序分析也对仿真进行了补充。到 1990 年代末,Cadence 和 Synopsys 已成为主要的商业剧透。IC 的 EDA 市场已经增长到大约三亿美元。

此外,意味着基本元素,如作为晶体管和库单元的面料设计,已经发展并变得更加丰富。全流程定制设计,基于单元的设计[主要是标准单元和专用于 IC (ASIC) 的门阵列] 和 FPGA [或可编程逻辑器件 (PLD)] 是今天最流行的的面料。

下面我们回顾已在 EDA 工具中使用的技术、算法和方法。特别是侧重于四个关键领域随:物理设计、仿真/验证、综合和测试。这些领域不包括所有的 EDA 领域。即,不包括物理分析(提取、LVS、晶体管级别仿真、可靠性分析等)。因为这是一个过于多样化的领域,内容很多,一下子说不完。我们也不谈系统级别设计自动化的这个新兴领域。

也会谈及 EDA 设计朝着软件可编程性的发展,比如对于 FPGAs。这个发展我们是肉眼可见的。随着 FPGA 市场的健康增长,这个话题现在在技术上受到越来越多的关注,比如在设计自动化会议等等会议上都很受重视。这个原因是方方面的,比如说 IC 设计的固定成本(NRE、Masks 等等)和产品生产线成本的增加。复杂性使得 IC 设计变得更加困难,因此,IC 设计在数量上开始减少。目前每个芯片上大约有 10 000 个 ASIC/系统芯片 (SoC),从 FPGA 设计开始,加上大约 80 000 个。所以有一个共享基本架构设计的压力越来越大,特别是典型的专门针对特定应用程序。这种设计通常被称为“平台”。在这个方案之下,平台的数量可能会成百上千地增加。不同用途的主流平台至少需要几十个,这使得不同 IC “设计” 的总数 (= 平台数*平均每个平台使用的 IC 数)超过了十万。如果不同平台的数目高于 1000 的数量级,那么谈论可编程 SoC 设计可能是更准确的,但是这不会改变下面的分析。

EDA 市场将会相应地进行分裂。

  • 需要针对 IC 设计师的一些工具集去设计这些平台。这些工具需要掌握复杂性,能够处理深亚微米效应,允许大的比较分散的设计团队等。 比如:物理综合(合成、放置、布线)、布局规划、芯片、水平测试,顶级芯片路由器等。
  • 需要一些工具集去使用这些平台,通常,这些工具将处理较低的复杂性,将表现出一定的平台特异性且将需要硬件/软件协同设计。例子:合成 FPGA 模块、编译器、硬件/软件协同仿真,包括平台模型(处理器、DSP、内存),系统级设计自动化等。

物理设计

从技术和财务角度来看,物理设计一直是 EDA 中最成功的领域之一,约占 2000 年 EDA 收入的三分之一。为什么物理设计自动化如此成功?有很多因素,但根据 EDA和机器设计的历史,这里有三个因素:首先,物理设计是乏味且容易出错的。早期的计算机设计师很擅长为复杂机器设计原理图,但实际的布线过程和制造显然是一项没有吸引力的工作,需要数小时的精确计算并且不能容忍错误。而且由于物理设计通常是由逻辑设计驱动的,微小的逻辑变化导致物理过程的重新启动,这使得工作更加令人沮丧。其次,可以调整机器的物理设计,使其更适合自动化。电路的外部行为通常由其应用指定, 它的布局可以通过多种方式实现,包括一些简单的方式自动化。最后,计算机的物理设计用计算机本身来表示相对容易。虽然物理设计数据量可能很大,但布局几何和布线计划的精确性质可以有效地表示和处理。相比之下,其他设计概念(如功能需求)则更难编码。提供机械化协助来处理大量的设计可能是第一个成功的 EDA 系统的基础。为了满足需求,开发了可以捕获艺术品和逻辑图的 EDA 系统。后来,EDA 工具开始通过审核设计中的某些违规(例如短路)来增加价值,后来又通过自动生成布局或布线来增加价值。设计审核的价值仍然是物理 EDA 的主要贡献。事实上,今天,设计的物理验证(例如,提取)约占物理 EDA 市场的 45%——设计创建过程占 55%。

不断发展的设计环境

物理 EDA 工具的演变与目标进程的演变和可用计算平台的演变并行进行。定义“最佳”目标的过程,一直是简化问题以使设计和测试过程更容易的愿望与从每一代技术中榨取最佳性能的愿望之间的拉锯战。 这场战斗远未结束,技术复杂性与设计速度的权衡可能会成为下一代芯片技术的主题。除了目标技术的发展之外,每一代新技术都通过提供一个更强大的平台来运行 CAD 工具来影响 EDA。本节将讨论 EDA 工具的共同进化、它们运行的机器以及它们所针对的技术。由于物理 EDA 是一个庞大而多样的领域,因此有许多分类法可以应用于它。出于阐述的目的,将根据技术的时间线对其进行粗略划分,因为它们对 EDA 行业产生了经济影响。具体来说,这些将包括
交互式工具、自动布局和布线、布局分析和一般布局支持。另一方面,有些物理设计技术非常有前途,甚至在有限的环境中非常有效,但对收入数字的影响不大。本节的结尾假设了为什么这些技术尚未产生经济影响。

早期物理设计:交互式支持

最早的物理 EDA 系统支持当时的技术,按照今天的标准,它既小又简单,但与之前的系统相比却很复杂。早期的电子机器由分立元件组成,通常是双极晶体管或在两层板上装有无源元件的超小型 IC。这些板的机架通过使用绕线互连的背板连接在一起。在这种环境下,第一个物理EDA 工具基本上是电子绘图系统,可帮助生成电路板和背板的制造图纸,然后技术人员可以使用手动工具实施。在 1960 年代后期,情况发生了变化,因为物理设计的后端开始变得自动化。在此之前,复杂的印刷电路板和 IC 掩模是直接在大张纸或红宝石上完成的。只要最终的设计是手工实现的,生产新机器的时间就很长,电路的大小也有限。但在 1969 年左右,发明了新机器,包括 Mann IC 掩模制造商和Gerber 平板绘图仪,可以自动生产最终掩模。瓶颈一下子从制造端转移到了设计文件的生产,这些文件通常存储在大卷磁带上。

因此,将掩模制造机械化,产生了可以对中间步骤加速设计的工具的需求。其中一部分是“捕获”原理图和其他设计数据。在那些日子里,将设计过程建模为计算环境外部的模型很流行,因此,数字化平板电脑是一种“捕获”它并将其存储到计算机内存中的设备 。 Applicon 和ComputerVision 在 1970 年代开发了第一个电路板和芯片设计图形站。这些在商业上具有重要意义,并为 EDA 工作奠定了基础。具体来说,1970 年代末和 1980 年代的大多数 EDA 公司被视为必须提供硬件和软件组合的系统供应商。例如,Daisy 和 Valid 通过开发和运送专门用于 EDA 的工作站成长为大公司。这些早期 EDA 工作站的功能在很多方面都受到限制, 包括应用的算法和可用的硬件,通常限制在 64K ——几乎不足以启动今天的机器。最终,通用工作站出现在公开市场上,其功能与专用工作站相同,而且很快就会更强。这是 Mentor 的方法,基本上所有成功的实体 EDA 公司都采用了这种方法。

物理 EDA 需要的不仅仅是计算能力:它需要图形显示,这在 1970 年代后期在计算机上很少见。当时,大多数计算机用户都在运行机械纸终端,或者可能是 80 字符乘 24 行 CRT 终端。价格合理的矢量图形显示器(从显示列表中不断在 CRT 上重新绘制一系列线条)和存储管显示器(使用电荷存储效应在显示器表面的特定位置保持发光)的出现打开了人类与二维物理设计数据交互的大门。这些技术在 1970 年代进行商业开发,并在 1970 年代后期普遍可用。在其商业推出时,一些显示器设计师开始开发“位图”图形显示器,其中 CRT 上的每个像素都从 RAM 存储器中不断更新。这些被认为是高端机器,因为它们需要大量内存(多达 128K 字节),因此价格超出了普通用户的范围。当然,1980 年代内存价格暴跌,位图显示器开始主导市场。 EDA 行业曾是工作站开发的早期领导者,现在只占机器销售的一小部分。这扼杀了特殊 EDA 工作站的前景,但意味着 EDA 软件开发人员可以依赖一系列功能越来越强大的工作站来运行他们的纯软件产品。

自动设计

虽然交互式物理设计是成功的,但 1970 年代后期的自动物理 EDA 才刚刚开始提供布局和布线功能。当时,大型公司的内部工具,尤其是 IBM、贝尔实验室和 RCA,可能是最先进的。 IBM 工具自然地在大型机上运行,而其他工具将在大型机或当时的“小型机”上运行,它们是 16 位机器,如 PDP-11,或者可能是 24 位机器,如 Harris 计算机。 “超级迷你”的推出,尤其是 1977 年的 DEC VAX 11-780,可能对加速计算机辅助设计起到了与其他任何单一事件一样多的作用。随着几乎无限(大约 24 位)虚拟内存的出现,可以同时在内存中表示巨大的设计数据库(可能有 20K 个对象)! 这释放了大量用于将大型设计问题分割成小问题的开发工作,这意味着可以在中小型公司和大学负担得起的机器上在真实的运行时间内处理真实的设计。

在这种情况下,第一个商业自动物理设计系统开始证明它们可以与布局工程师完成的设计竞争。当时一个悬而未决的问题是:“什么是最合适的 IC 布局风格?” Mead 和 Conway 的畅销书 为大量仅使用彩色铅笔的研究生打开了布局问题,但它所倡导的方法对于自动化来说似乎已经成熟。它基于 CIF 语言中单个多边形的规范,并严重依赖可编程逻辑阵列 (PLA),这似乎是指定电路复杂行为的理想方式。毕竟,它们易于设计,具有可预测的界面,并且可以轻松修改。为了支持它们,开发了 PLA EDA。但是用 PLA 设计的问题很快就超过了它们的优势:它们不能扩展到非常大的尺寸,而且通常不会制造更大的芯片。此外, 优化其面积的 EDA 系统破坏了它们的可预测性:对 PLA 的逻辑进行微小更改可能会导致其不再折叠,从而导致面积发生更大的变化。这通常意味着它不再适合分配给它的区域。最后,正在开发其他设计风格,它们同样易于使用,但可以扩展到更大的尺寸。因此,EDA 对 PLA 的支持本身从来都不是主要的经济因素。

虽然 PLA 和简笔画在校园里风靡一时,但业界正在试验一种称为“标准单元”设计的完全不同的范式,这极大地简化了单元的布局和布线问题。定制 IC 一次只布置一个晶体管,每个基本逻辑门都适合其上下文,而标准单元的引入将晶体管级设计与逻辑设计分离,并定义了一个新的抽象别。当布局由标准高度的单元组成时,这些单元被设计为邻接以便它们的电源线和地线匹配,几乎您创建的任何布局都是合法的(即使它不是很有效)。由于间距直到布线完成后,行才被确定,几乎所有通道路由器都可以成功连接 100% 的网络。因此,自动生成电气和物理正确的大型设计突然成为可能。许多人谴责早期标准单元的面积效率,因为通道路线占据了一半以上的面积。缺乏电路调谐导致芯片运行速度明显低于该技术的“最佳”速度。学术界呼吁新一代“高瘦”设计师能够同时处理架构、逻辑、布局和电气问题。但是这样的人供不应求,当时的计算机系统对中等规模集成(MSI)和大规模集成(LSI)芯片的需求很大(通常需要几十种芯片设计,即使是一个简
单的 CPU )。明显优先考虑的是设计效率和准确性:大多数芯片必须“第一次工作。” 好处是如此明显,以至于标准单元布局成为大部分设计开始的标准做法。

紧随标准单元方法之后的是门阵列的引入。标准单元可以减少设计时间,而门阵列提供更多:减少芯片制造时间。通过对布局施加更多限制,他们减少了“翻转”芯片所需的掩模步骤数量。因为所有单元都预先设计为适合“主切片”,所以生成有效的布局对于门阵列来说从来都不是问题。但是由于可用于布线的区域是固定的,不可拉伸的,因此大多数芯片的布线受到限制。因此,新问题是区域布线主导了门阵列的 CAD 支持领域。

商业自动物理设计工具在 1980 年代早期到中期开始出现。 Silvar-Lisco、VRI、CADI、Daisy、SDA、ECAD 和其他公司提供了早期的硅 P&R 工具,其中包括布局和布线子系统。 Silvar-Lisco 的 CalMP 计划在技术和经济上都取得了成功,例如,在 1983 年左右。早期的布线产品仅限于两层,这对于标准单元来说很好,但对门阵列不是很有效。因此,为三个金属层提供有效区域布线的工具对门阵列的使用提出了很高的要求。 Tancell 尤其是 Tangent 的 TanGate 程序是 1985 年至 1986 年期间布局和布线的主要参与者。除了它们的多层功能之外,它们成功的部分原因是为库和设计数据开发了标准的 ASCII格式,分别称为 LEF 和 DEF。 因为这些允许供应商以相对易于理解的格式指定他们自己的物理库,所以它们成为了行业的事实上的标准。当时,它们是专有格式而非公共格式这一事实放慢了速度,但并没有阻止其他 EDA 供应商对其进行改编。最终,来自 Tangent、SDA 和 ECAD 的物理设计工具被归入 Cadence 旗下,Cadence 凭借其 Cell3、Gate Ensemble 和后来的 Silicon Ensemble 产品主导了物理 EDA 市场。自从引入 Cell3 以来,该领域一直存在竞争,包括来自 Silvar-Lisco 的 GARDS 程序,以及后来来自 ArcSys(后来称为 Avant!)的工具等。目前,Cadence和Avant!凭借其 Silicon Ensemble 和阿波罗系统在物理 P&R 工具市场上分别占据主导地位。Cadence 继续在其工具中支持和扩展 LEF 和 DEF,并且最近将这些格式和相关阅读器放入了一个开源模型中。

许多第一个商业上成功的放置算法都是基于切片树放置,由相对简单的图分割算法指导。这些算法的优势在于它们在早期步骤处理整个网表,并且至少可能产生减少导线交叉数量的布局。但随着对更好 QOR 的竞争加剧,以及 1970 年代初期 EDA 可用的计算能力增加,在放置问题上投入更多周期以实现更小的芯片面积变得很有吸引力。大约在这个时候,Metropolis 和模拟退火算法的性
质从理论和实践的角度得到了更好的理解,并且最高质量的放置通常由退火放置者持有。

因为模拟退火相对容易理解和实施(至少以一种天真的方式),所以许多学生和公司实施了退火引擎。各种加速机制被采用以取得不同程度的成功,从一次运行到另一次运行的因子为 10 并不少见。早期的退火引擎需要专家用户指定退火“时间表”,有时以“百万度”为单位开始“温度”。这种本土的发式方法将物理设计的可访问性降低到一小群知道所有按钮在哪里的专家。渐渐地,退火技术得到了更好的理解,奠定了更坚实的基础,更多的参数是根据从设计中提取的指标自动推导出来的。

但是切片放置并没有消亡——随着分析算法的出现,它获得了新的生命,这些算法可以最佳地解决在一维或二维内对细胞进行排序的问题。由于经典分区算法在处理超过几千个单元格的问题时往往运行非常缓慢且次优,因此在PROUD 等系统中使用分析指导可更快地产生更高的质量。当被 Cadence 等公司商业化时,它们被称为“二次”和“快速”算法的 Q。他们为在合理的时间内放置 10 万个单元的设计打开了大门。

近年来,布局器的竞争环境开始包括时序驱动布局和综合导向布局。早期的时序驱动布局技术通过采用一组固定的小净权重来工作,并试图放置单元以使高权重网络更短。该领域最近的工作支持基于路径的时序约束,具有一组固定的时间关键路径。时序驱动布局的当前技术水平是将布局算法与时序分析相结合,这样用户只需提供整体时序约束,系统就会导出路径和内部网络优先级。

综合定向布局(或根据某些人的布局定向综合)是布局操作和综合操作的融合。合成操作范围
从简单的设备大小调整到从技术独立表示开始的完整逻辑再综合。大多数商业“放置”系统,包括 Cadence 和 Avant! 的当前一代内置有效的大小调整和缓冲操作。这些极大地改善了最终电路的时序。与 Silicon Ensemble合作的 Cadence 和与 Apollo 合作的 Avant! 目前是市场领先的工具。

在另一种方法中,其他人目前正在努力将 RTL 综合操作(如资源共享)、核心逻辑综合(如时序驱动结构化和布局)结合起来,同时使用通用时序模型和核心时序引擎。尽管此时集成综合与布局的经济影响很小,但大多数商业布局工具似乎必须在其中包含某种综合操作,以便从长远
来看保持竞争力。目前进入这个新领域的市场参与者包括 Avant! 的 Saturn 、 Cadence 的 PKS 、 Synopsys 的 Physical Compiler、Monterey Designs 的 Dolphin、Magma 的 Blast Fusion 等。这并不是说这些产品的技术方法是相同的,只是它们都针对通过某种综合与布局的组合来解决时序收敛问题。

路由

自动布线技术的第一个应用是印刷电路板,其中自动布线算法早于成功的布局算法。至少有三个原因:布线是一个比布局更乏味的过程;需要重做布线的放置的微小变化;并且要布线的引脚数量比要放置的组件数量大一个数量级。早期的 PC 板布线 EDA 主要由 1960 年代和 1970 年代在大型机和当时可用的小型计算机上运行的内部工具组成。大多数实用的路由算法基本上都是基于广度优先网格搜索或线探测搜索算法的搜索算法。由于广度优先搜索技术需要不可接受的长运行时间,因此许多优化(例如算法)已被用于加速路由器。

在 1970 年代的某个时候,IC 上的组件数量开始超过 PC 板上的组件数量。此时,物理 EDA 中最大的挑战和最大的收入开始迁移到硅领域。该技术的性质涉及放置数百到数千个相对简单的电路。在这种情况下,如果没有自动布线,自动布局几乎没有任何价值。因此,有强烈的动机提供一个包括两者的解决方案。如上所述,早期的自动门级布局通常是基于标准单元的,这意味着可以应用通道布线。正如 1970 年代初定义的那样,通道布线是将一组引脚连接到具有最少轨道的并行通道两侧的问题。因为这个问题很简单,可以进行分析建模,它的定义导致了文献中的大量算法和启发式方法。尽管通过通道路由连接的标准单元是有效的,但门阵列布局的出现带来了对新一代 IC 路由器,可以连接分布在芯片表面的一组点。具有讽刺意味的是,这更像是最初的印刷电路板布线问题,可以用类似的方法进行攻击,包括网格和无网格布线——尽管大多数实用的商业路由器直到最近才被网格化。但是经典的布线技术有一个问题,它们倾向于一次布线一个网络直到完成,有时称为顺序布线,然后再开始下一个。这往往导致开始时网络的高完成率和运行结束时网络的低完成率或长路径。十多年来,解决这些结果质量问题一直是路由器工作的主要焦点。已经取得了许多重大进展,包括战略性地对路线进行排序的过程,在主路线之前运行全球路线,以及在逐网路由期间或之后完成的选择性撕裂和重新路由的许多启发式方法。今天生产具有竞争力的路由器需要对这些过程进行广泛的实验、集成和调整。

布局布线中的关键支持子系统

实际的布局系统依赖于许多专门的子系统来完成芯片。但是,将这些构建为单独的工具以链接到另一家公司的 P&R 系统通常在商业上不可行。此类工具的示例包括时钟树综合、电源/接地布线、填充单元插入和其他功能。一些初创公司已经开始提供诸如点工具之类的支持,例如具有故意非零偏斜的专用时钟树综合解决方案,但它们尚未产生大的经济影响。

经济影响较小的物理设计工具

除了中央布局/布线/验证业务外,还开发了许多其他物理设计设施和工具,其中许多已经商业化。然而,到目前为止,它们还没有对 EDA 的业务方面产生太大的影响。这些示例包括自动布局规划工具、单元布局合成器、布局生成器和压缩器。本节讨论这些和类似工具经济影响有限的一些原因。

布局规划是将芯片组织成大区域并将主要块分配给这些区域的过程。通常,要进行布局规划的块具有延展性,并且布局规划过程的一部分是重塑块以有效地适应模具。平面规划涉及许多约束和成本指标,其中一些很容易计算,例如不合适的块损失的浪费区域量。但其他限制条件更难计算,例如芯片布线对其时序的影响。许多学术论文和一些商业 EDA 系统都提出了布局规划的解决方案,并且在某些情况下,它们在特定环境中取得了重大成功。但总体而言,EDA 行业并没有看到与布局规划相关的大量收入流——它仅占物理 IC EDA 市场的 2% 左右。这可能部分是由于该地区缺乏成功的工具。但这也是由于, 至少在某种程度上,对于布局规划问题的性质:它既易于处
理人类设计师,又吸引他们。一般来说,芯片架构师并不急于将这个问题交给机器,因为熟练的设计师可以生产出比最好的机器制作的平面图更好的平面图,并且可以在几天内开发出来。因此,如今的公司似乎不愿意花大钱进行自动平面图。随着芯片变大,设计团队变得更加复杂,总体而言,平面规划和分层设计可能发挥更大的作用,因为使用显式分层块为将一个复杂的子系统与另一个子系统隔离开来提供了有效的机制。

另一个没有太大商业影响的领域是细胞布局合成。这是采取晶体管级规范和产生详细晶体管级布局的过程。许多这种性质的项目都是在研究中完成的。内部大公司和一些初创公司试图使它成为一个商业产品。但到目前为止,自动蜂窝布局对 EDA 经济影响甚微。这可能是因为行业内晶体管级布局总量较小且越来越小,也可能是因为晶体管级别的架空验证电路将有效成本提高得过高。但无论如何,目前细胞合成对EDA的经济影响很小。

对于对全定制布局感兴趣的人而言,在 20 世纪 80 年代末和 90 年代初,使用布局生成器是一个很有前途的领域。这些工具为设计师编写的算法放置系统提供了一个框架,并可以在特定环境中提供惊人的生产力提升。然而,人们往往患有太多的贡献者综合症,对他们的需求太少。就是说,许多团体会为 ALUs 这样的电路编写发电机,但很少有设计师会拿起别人的发电机并使用它,因为它的详细物理和电气特性没有得到很好的了解。此外,发电机开发系统针对的是一个相对较少的群体,他们是布局和编程领域的专家,这些人往往可以自己提供类似的系统。目前,
这些系统尚未得到广泛应用。

最后的例子是布局压实工具。这些技术从 20 世纪 80 年代开始推广,作为提高物理设计效率和使设计从一种技术移植到另一种技术的一种方式。然而,他们遇到了几个问题。首先,他们的目标是数量有限的全定制布局设计师。其次,他们制作的布局在大多数规则中通常是正确的,但通常需要调整来理解真实详细的高性能布局中涉及的一些特殊技术规则。第三,他们被那些习惯于以交互方式进行完整定制布局的设计师们怀疑地看待,最终并没有被广泛接受。

关于物理设计EDA的未来

每一代技术都带来了更大的问题,在更强大的计算机平台上运行,针对的是更快、更有能力的大规模集成(VLSI) 技术。每一代人都利用基础技术的原始能力,希望快速完成设计。这样的权衡抽象了一些物理的问题,使复杂的效果被忽略。再加上制造过程的日益复杂和工作站的加快,EDA 开发人员的努力水平在过去 20 年中似乎大致保持不变。即,随着金属迁移等问题被充分理解,技术中的下一个皱纹(例如自热)就会暴露出来。整体效果是累积的,实用的EDA系统今天往往很大,并随着时间的长线性增长。

在平衡的另一边,可以设计更多的系统,而无需"掩蔽编程"的硅。代表早期芯片设计自动化尝试的PLA 变成了 PLD,然后是CPLD。 同样,用于缩短周转时间的门阵列现在与 FPGA 正面竞争。即使是自定义计算机微处理器芯片,如英特尔奔腾,现在也与 SW 仿真相同的指令集竞争,就像TransMeta 克鲁索处理器中一样。此外,还有一个新的设计类别,名为"应用特定可编程产品",将可编程性与传统应用特定芯片设计相结合。这允许设置一个掩码来支持多个用户,甚至跨多个客户。另一个例子是 FPGA 供应商的预测,例如,在十年内,几乎所有的设计都将有一定数量的可编程逻辑。这对物理 EDA 意味着什么? 这取决于 EDA 是芯片设计师还是芯片用户。

定制芯片设计师的数量可能会保持相对稳定。这是因为有几个因素倾向于相互对立:设计开始的数量正在减少,但每个设计的复杂性正在增加。设计和测试每个芯片的成本是巨大的,而且正在增长,因此,先进的 EDA 工具所能提供的杠杆作用仍然很大。因此,如果不是扩大市场,提供良好的性能与卓越的可靠性 EDA 工具的掩码编程芯片,也许应该有一个稳定点。

VSLI 设计的仿真和验证

数字 IC 设计功能验证始终这是一个巨大和具有挑战性的问题,在可预见的未来将继续如此。

如果我们衡量难以验证其存储元件的完全可能状态(即两个元素数量的功率)来验证设计,我们将面临摩尔定律功率的两次爆炸。实际上,情况并没有那么糟糕。但长期的经验清楚地表明,验证工作是设计尺寸的超线性函数。一个公平的近似是,将门数翻倍使每个时钟周期的工作翻
倍,额外的复杂性至少使获得可接受的覆盖所需的周期数翻倍。因此,验证问题被摩尔定律牵绊住了,即在指数级增长的功能中使指数翻倍。即使处理器性能继续根据 Moore 的法则(指数级)提高,设计验证时间仍每 18个月翻一番,所有其他内容仍保持均等。

由于"上市时间"的压力不允许核查时间加倍,所有其他事情都不匹配。电子 CAD 算法和方法在三种一般性方法上得到了拯救:抽象、加速和分析。在过去20年中,主流核查已经转向不断提升的抽象水平,从门级到注册转移级(RTL),现在又进入系统级别。同样,计时分辨率也从纳秒移动到时钟周期。利用并行性和特定的数据流和操作,应用了特殊用途的 HW 来加速验证。逻辑仿真和快速原型设计使用真正的可编程 HW 每天运行数十亿个设计验证周期。分析,即正式验证,可以证明逻辑网络的等价性和特性。与模拟和仿真相比,正式工具的处理时间有限,但是,他们的验证在逻辑上是完整的,模拟和仿真是永远不可能完成的。

**抽象化:**我们选择验证的任何级别都涉及一些抽象。早期的逻辑设计者发现,他们可以抽象出他们的晶体管电路设计之上,并模拟在逻辑水平的门,逃离 SPICE 功能验证。数字 VLSI 早期使用的逻辑模拟器主要在门级工作,在纳秒级别完全模拟名义计时,并使用事件驱动算法。

事件

事件驱动算法以前在 ECAD 以外的大型模拟世界中是众所周知的。它计算逻辑信号的每个过渡,称为事件,及时定位它,并将其扇到其接收器。计算时间仅用于处理事件,而不是用于没有活动的大门和时间步骤。由于门级设计中不超过 10%-20% 的门在平均周期中处于活动状态,这是一种有
效的算法。它对时间没有假设,除了门延迟,所以它可以正确建模异步反馈,透明闩锁,和多个时钟域,对存储元素的设置和保持时间违规情况进行建模和检测。事件驱动的逻辑模拟仍然是当今广泛使用的基本算法。

20 世纪 70 年代此类模拟器的例子包括 IBM 的 VMS、TEGAS 和 CADAT。它们是为大型项目开发的,如大型计算机,这是 VLSI 技术最早的采用者。VLSI 门阵列(即 ASICs)出现在 20 世纪 80 年代早期,取代了通过实时原型造型验证的离散 MSITTL 实施,并用跳线进行了更正。随着 ASIC 的出现,设计界对逻辑仿真的需求也随之扩大。Daisy 系统、导师图形和有效逻辑等通过将示意图捕获和事件驱动的逻辑模拟运行在基于网络的微处理器工作站上到 ASIC 设计师的办公桌上而建立起来。

周期

不久,事件驱动算法的更高抽象替代方法开始使用,基于周期的模拟抽象时间到时钟周期水平。事件驱动模拟的大部分工作是事件检测、计时和调度,这涉及到大量依赖数据的分支和指点。通
过大型数据结构进行跟踪,这在传统处理器中很难加快速度。门评估需要的时间很少。在纯基于周期的模拟中,事件处理被免除,以换取每个周期在一个方块中评估所有门。预处理分析存储元件之间的闸门,以找到正确的评估顺序。模拟器几乎没有运行时间数据依赖性,通常只有启用或禁用整个块的条件。具有大型缓存的管道处理器(在 20 世纪 80 年代末的主机和工作站中开始可用)可以非常快地运行此算法。生成的性能通常比同一平台上的事件驱动模拟大一个数量级。

不幸的是,不是每个人都可以使用纯基于周期的模拟。它从根本上假设每个门每个时钟周期只活动一次,按排名顺序排列。具有异步反馈(包括透明闩锁或其他异步行为)的设计不能以这种方式进行模拟。单个时钟周期的假设排除了具有多个独立时钟域的设计,这在电信和媒体处理器
中很常见。可使用时钟周期最大常见分界器的子周期,以极快的速度进行处罚,从而模拟普通时钟域中的多个时钟。毫不奇怪,第一个基于周期的逻辑模拟器是由大型计算机公司(如 IBM)开发的,这些公司构建了具有单个时钟域的大型复杂处理器,并且可以对其设计人员实施严格的同
步设计方法。IBM 的 3081 大型机项目开发了基于循环的模拟器 EFS,在20世纪70年代末。纯基于周期的模拟在设计上被广泛使用,主要是 CPU,它可以适应其方法限制。随着事件驱动模拟器的性能稳步提高,它的吸引力已经减弱,部分原因是它们采用了基于周期的技术。

基于周期的模拟无法验证时间。在同步设计中,使用静态正时分析。与模拟相比,分析在验证时间方面做得更为彻底,因为它涵盖了所有路径,而不依赖于覆盖的刺激。定时分析具有相反的缺点,报告虚假路径,路径在实际操作中永远不会发生。与早期的分析仪相比,现代静态定时
分析工具更能够避免错误路径。但是,当设计具有异步逻辑时,需要具有完整时间的事件驱动模拟,至少在异步部分是这样。

模型

大多数设计都包含大型模块,不需要验证,因为它们是标准部件或以前验证过的 HDL 内核,但必须存在才能验证设计的其他部分。幸运的是,我们可以使用这些模块的模型,这些模块只提供外部行为,而内部详细信息被抽象化。模型采取一些 SW 或 HW 形式,其中大多数出现在 20 世纪 80 年代中期,特别是从逻辑自动化和逻辑建模系统。

全功能 SW 模型完全代表内部状态和基于周期的行为,从芯片的引脚中可以看出。它们还可以通过程序员友好的界面为内部寄存器提供可见性。指令设置模拟器将处理器进一步抽象到指令级别,并且可以以非常高的速度执行二进制代码。通常只需要公车级的行为,因此由交易命令脚本控制的芯片和总线的公车功能模型被广泛使用。没有什么比硅本身更快速或更准确的了。HW 建模师将实际芯片进行接口以进行模拟。

所有这些建模技术都通过标准接口连接到模拟器。Verilog 的编程语言界面 (PLI) 是标准模型界面。PLI 还使用户能够构建可与模拟器同步运行的自定义实用程序,以任意方式进行仪器仪表。这就是测试台语言 Vera 的前体的实现方式,并且使用 PLI 编写了许多覆盖工具。它是 SW 与 HW 加速模拟器的一个区别特征。

编译代码

模拟器最初是作为循环解释器构建的,使用静态数据结构来表示逻辑及其互连,以及一个事件轮列表结构来及时安排事件。一些基于早期周期的模拟器使用编译代码技术代替。逻辑设计由编译器分析,编译器构建一个程序,执行时根据模拟算法模拟设计。与编程语言编译器一样,避免了口译员的开销,并且可以在编译时间找到一些不实用或在运行时间可能实现的优化。该技术利用预处理时间来换取运行效率,这通常是逻辑验证中一个很好的权衡。虽然最初被认为是基于周期的算法的同义词, 事件驱动的模拟器也已在编译的代码中实现,效果良好。计时学的 Verilog 编译模拟器(现为 Synopsys VCS)是 Verilog 在 1993 年首次编译的代码模拟器,也是第一台本地代码编译的代码模拟器。

硬件描述语言

随着设计尺寸增加到数十万个门,门级设计变得过于笨拙和低效。还需要在更高层次上表达设计,以指定和评估架构。硬件描述语言 (HDL) 是首次开发以满足此描述
性需求。

第一个广为人知的HDL是贝尔和纽厄尔的ISP1971。ISP 也是第一个使用 RTL 一词的。在 1979-1980 年左右,美国国防部要求用统一的方式记录技术和设计独立的部件功能,并且能在任何模拟器上以相同方式工作。 只有高密度脂蛋白能满足一需 求 。 VHDL(VHSIC HDL) 基于早期的 ADLIB HDL 和 Ada 编程语言从此要求中脱颖而出。VHDL 于 1987 年成为 IEEE 标准。

1984-1985 年,Gateway 的 Moorby 等人开发了Verilog HDL 和事件驱动模拟器,该模拟器非常高效,可进行门级模拟,但也包括 RTL 和行为功能,以表达测试台和系统的其他部分。Verilog 非常成功,并在 20 世纪 80 年代保持垄断。Cadence 在收购网关后于 1991 年将其打开,并在 1995 年成为 IEEE 标准。

对 HDL 的抽象在许多基本方法上提高了验证性能。

  1. 用多门表达的模拟取代每个门的模拟。
  2. 将多位巴士、寄存器和常数作为单个值处理。
  3. 结合这两个抽象,使用多位算术和逻辑操作。
  4. 使用更高级别的方式来表达控制流以及
    可以包围整个方块的陈述(如果/然后/其他)。

1988 年,Synopsys 推出了设计编译器,这是将更高级的 Verilog 合成到大门中的第一个工具。这使得工程师能够将整个设计过程转移到更高层次的抽象,创建和验证他们的高密度脂蛋白设计。最初主要由 HDL 验证性能优势,一旦由 HDL 合成启用,就将其推入了当今的主流方法。

######上述所有的
当 今 最 高 性能 的 基 于 软件 的 模 拟 器, 例 如 VCS、Verilog-XL 或 NC-Verilog,将事件驱动和基于周期的HDL 仿真与优化的 PLI 模型接口结合到本地编译代码可执行文件中。例如,认识到大多数活动是由时钟边沿触发的,VCS 会在事件驱动的模拟器中尽可能插入基于周期的算法。当设计允许时,可以实现基于周期的仿真的性能,但不会放弃正确仿真任何 Verilog 设计的能力。

VCS 中使用的其他加速方法包括电路分级、逻辑块的合并、分层结构的优化和设计抽象技术。逻辑值的进一步抽象,从四态和 120 值到两个状态,在安全可能的情况下自动完成,不会失去对标准 Verilog 的遵守,通过在需要它的那些变量上保留完整的四态。高级源代码分析和优化,就像在编程语言编译器中所做的一样,利用编译代码架构来进一步提高性能。

测试平台语言

测试平台抽象了设计,存在于整体的其余部分,提供刺激并检查响应以验证设计是否在其环境中正常工作。表达这种抽象的测试平台语言具有广泛的起源,受到测试人员、过程模拟语言中的刺激生成器、HDL 以及最后现代编程语言和形式方法的多重影响。

在 1980 年代初期,我们可以看到过程模拟语言和早期 HDL 在 Cadat 的 DSL(数字刺激语言)、Daisy 的刺激语言以及 HiLo 和 Silos 的刺激结构的影响。此外,我们可以在 1981 年斯坦福大学的 John Newkirk 和 Rob Matthews 的 IC 测试语言中看到,现代测试平台语言中不可或缺的特性:时序和功能的解耦、测试平台和设备引脚的显式绑定,以及使用标准的高级语言(用程序扩展的
C)。

在 1980 年代后期,Systems Science 与英特尔合作开发了一种函数式宏语言,在生成器中抽象出时序,这些生成器直接与规格表相关联,捕捉了可执行规格的概念。在 1990 年代,Verilog 和 VHDL 以及标准语言 Perl 和 C/C 被广泛用于开发测试平台,尽管它们专注于硬件或软件描述,而不是测试平台。他们已经提出了正式的方法来解决测试平台的生成问题,并且有时作为通用灵丹妙药被夸大了,而事实并非如此。尽管在标准语言和一些形式技术中都有许多吸引人的元素,但它们的情况被夸大了 。尽管如此,我们仍然可以看到这两个领域的巨大影响。

验证问题在 90 年代中后期爆发,公司发现他们在验证上的花费比在设计上的花费要多得多。来自 Systems Science 的现代验证语言 Vera(现在是 Synopsys 的一部分)和来自 Verisity 的 Specman 作为回应而出现,它们从一开始就专注于功能验证。

Vera 是一种面向对象的硬件感知语言,它允许用户以实用的方式生成刺激、检查结果和测量覆盖率。它解决的一些问题包括定向和随机刺激、刺激的自动生成(具有专门的数据包生成机制和非确定性自动机)、为检查复杂功能响应而定制的灵活抽象、启动和同步大量并发活动的方法、高- 级别覆盖(状态、功能、序列等)、测试平台 IP 的封装、与 HDL 和高级语言(如 C 和 Java 等用
于 HW/SW 协同仿真的高级语言)的无缝接口,最后是专门的测试平台调试,因为测试平台具有成为复杂的程序本身的可能。

现代测试平台语言,如 Vera,已被许多最大的半导体和系统公司采用,并且在使用和功能方面不断成熟和增长。

加速和仿真

加速器在硬件中实现模拟算法,从操作和处理器级别的并行性以及专用运算符和控制中获得加速。逻辑仿真器可以将设计插入实时硬件中,以便通过实际操作进行验证。

事件驱动的加速器

事件驱动的硬件加速器几乎与逻辑仿真本身一样长。第一台机器由 Angus McKay 于 1960 年代在波音公司制造,包含了从那时起在事件驱动加速器中发现的大多数元素。

HW 时间轮调度事件,这些事件通过一个或多个网表散布到其输入原语。硬件可以直接评估一个逻辑原语,检测一个输出事件,找到它的延迟,并非常快速地将它提供给时间轮。大多数时间步有许多独立事件要处理,因此流水线可以利用这种低级并行性来提高门评估速度以匹配加速器硬件时钟速率。大多数加速器还使用电路拓扑局部可用的高级并行性,通过具有多个并行处理器来加速分区设计。跨分区边界的事件通过快速互连进行通信。

在 1980 年代初期出现一款基于 MIPS 桌面工作站的 EDA 后不久,对加速的需求立即显现出来。 Zycad、Silicon Solutions、Daisy、Valid、Ikos 和其他公司以事件驱动的硬件加速器作为回应。到 1980 年代中期,实现了每秒 10 万到 3.6 亿个门评估的速度和高达 380 万个门的容量。这比当时的 SW 模拟器快一到两个数量级,而且体积更大。

Mentor Graphics 1986 年的加速器 Compute Engine 是一个流水线超标量 RISC 附加处理器,具有大物理内存和 HLL 编译器。它预示着 1980 年代末和 1990 年代初具有流水线超标量 RISC CPU 的通用工作站的发展。它们急剧增加的性能和容量大大减少了对硬件加速器的需求,大多数此类产品最终消失了。今天,Ikos 仍然是事件驱动硬件加速器的唯一供应商。

基于周期的加速器和仿真器

IBM 在 1980 年代开发了几个基于循环的大规模仿真加速器,首先是约克城仿真引擎 (YSE) 研究项目,随后是工程验证引擎 (EVE)。 EVE 可以在每秒 22 亿次门评估的峰值下模拟多达 200 万个门,在纯循环或单位延迟模式下,或两者的混合。它在 IBM 内被广泛使用,特别是用于基于处理器和控制器的系统,在加速设计上运行实际软件。

类似的技术在 1990 年代以逻辑仿真器的形式商业化,当 时 Arkos 推 出 了 其 系 统 , 而 Quickturn 推 出 了 CoBALT 机器,IBM 芯片和编译器技术的产品化直接源自 YSE/EVE 工作。今天的 CoBALT Plus 能够在高达 2000 万门的系统设计上达到每秒超过 100,000 个周期的速度,足够快以成为实时硬件目标中的在线连接逻辑仿真器。

基于周期的机器受到相同的设计约束,上面详述的适用于基于周期的算法的所有实现,因此大部分设计项目不能使用它们。

大规模并行通用处理器

1980 年代对加速性能需求的另一个响应是研究通用大规模并行处理器上的逻辑仿真。这项研究的结果主要是负面的。在全局时间事件驱动的逻辑仿真中,足够的高级并行性可以保持大约 10 个,但远不及 100 个,处理器很忙。这是因为逻辑设计具有非常不规则的拓扑结构。事件可以立即在逻辑设计中传播很远。大规模并行处理在物理模拟上取得成功,例如流体流动和结构分析,因为三维物理现实中固有的最近邻通信使通信保持本地和可预测。此外,逻辑设计中的并行性在时间上非常不规则,主要集中在时钟周期的开始。许多时间步几乎没有并行处理的事件。有人研究了分布式时间算法,但所需的开销超过了收益 。今天,一些模拟工具可以利用现代工作站中广泛使用的适度多处理。

更常见的是任务级并行性,它存在于大量回归向量集的集合中,这些向量集必须在项目后期进行微小的设计修改后进行仿真以验证设计的正确性。许多项目已经建立了由数十或数百台廉价网络工作站或 PC 组成的“农场”或“牧场”,它们以批处理模式运行传统的模拟工具。就周期/秒/美元而言,这是一种非常成功的加速技术,它可能是当今最常用的一种。重要的是要记住,这仅在任务级并行性可用时才有效。当需要单线程验证时,例如在逻辑设计上运行 OS 和应用程序 SW 以及大数据集时,没有任务级并行性可用,仍然需要在单个任务上具有非常高的性能。

基于 FPGA 的仿真器

FPGA 出现在 1980 年代后期,作为数字逻辑的实现技术。大多数 FPGA 由静态随机存取存储器的小集群组成,用作在可编程互连阵列中查找表以实现组合逻辑和触发器。用于 ASIC 和完全定制设计建模时,FPGA 的容量比有意定位时要小,因为技术映射和 I/O 引脚利用率远非理想。用于验证的 FPGA 在 1990 年代初期可以容纳1K 门,如今已增长到 100K 或更多。

逻辑仿真系统很快就采用了大量 FPGA 并将它们用作逻辑验证工具。编译器将仿真特定的 HDL 综合到 FPGA 原语中,运行时序分析以避免引入保持时间违规,将网表划分为 FPGA 和电路板,观察容量和引脚约束以及关键时序路径,路由 FPGA 间互连,并运行每个 FPGA 上的芯片级
布局和布线。在运行时,对 FPGA 和互连进行编程,并对逻辑设计结果进行实时仿真。通常可实现多 MHz 系统时钟速率。仿真设计可以直接插入目标硬件的减速版本,并以真实应用程序、操作系统和数据集作为激励进行操作。或者,可以使用预编译向量进行非常大的回归测试。逻辑仿真中最困难的技术挑战是互连通用 FPGA, 可扩展且经济实惠的方式,无需浪费 FPGA 容量或引入路由延迟过大。大多数商业仿真器,例如 1992 年之后的 Quickturn 系统,使用单独的部分交叉互连架构,构建有交叉路由芯片的层次结构。 Ikos 仿真器在网格中直接将 FPGA 相互互连,并与设计时钟同步地对引脚上的时间复用信号。两种互连架构都使 FPGA 的内部布线相互依赖,因此很难在不进行重大重新编译的情况下逐步更改设计人员或插入探针。

另一个主要的技术挑战是逻辑仿真编译器 。多级、多路时序驱动分区是一个大型且 NP 难的问题,可能需要很长时间才能执行,并且对并行加速有抵抗力。需要一个仿真设计数据库将 HDL 级名称映射到 FPGA 硬件以进行运行时调试。通常需要大量用户干预才能成功编译,尤其是在识别时钟树以对涉及许多门控时钟的设计进行时序分析时。

逻辑仿真,以 FPGA 和基于周期的形式,今天广泛用于主要的微处理器开发项目、多媒体、电信和网络设计。有趣的是,由于仿真器提供的可见性,用户发现后硅片的价值与预流片一样多。可以通过逻辑仿真器的内置逻辑分析器观察系统级问题,并在实际操作期间访问设计内部,这对于真正的硅来说是不切实际的。可以证明工程变更单可以在硅片重新设计之前纠正问题。然而,逻辑仿真硬件和软件的费用以及在设计周期中使用它的持续困难,通常需要全职专家人员,已将逻辑仿真限制在那些能够负担得起的大型项目中。

分析

即使是最强大的模拟器或仿真器也只能增加信心,不能保证大型设计中的所有重要状态和序列都经过检查。非常需要分析得出经过证实的结论。形式验证工具可以在许多重要情况下提供此类分析。形式验证研究中出现的大多数工具要么是模型检查器,它分析设计以查看它是否满足设计者定义的属性,要么是等效检查器,它比较两个设计以证明它们在逻辑上是相同的。到目前为止,所有实际的形式验证都在功能级别,仅在周期级别处理时间,这取决于静态时序分析的使用,以及基于周期的仿真。

模型检查器

模型检查器根据逻辑设计中的一组可达状态检查时间逻辑中表达的条件(称为属性),以证明属性为真。早期的研究基于有限状态模型 (FSM) 的显式状态表示,它只能描述相对较小的系统。但是任何有意义的规模的系统都有惊人数量的总状态,需要更好的表示。状态空间爆炸问题
主导了研究并限制了模型检查工具的范围 。 Bryant 在 1986 年对有序二元决策图 (OBDD) 的突破性发展为符号模型检查开辟了道路。

一年之内,摩托罗拉的 Pixley、IBM 的 Kukula、CMU 的 McMillan 以及 Bull 的 Madre 和 Coudert 都提出或开发了模型检查工具,这些工具使用 OBDD 以紧凑和规范的方式表示可达状态集以及它们之间的关系形式。当模型不满足条件时,模型检查的一个重要的附加结果可以是特定的反例 ,可用于模拟以识别和纠正错误。后来的大学系统,特别是 SMV [82] 和 VIS [16],进一步发展了模型检查技术,并在今天被使用。

模型检查器通常仅限于模块级分析,因为确定具有一致性的数百个寄存器的可达状态集是不切实际的,因为 OBDD 表示的大小会爆炸式增长。它们还需要非常密集的用户培训和支持,才能正确表达时间逻辑属性。验证的准确性取决于用户声明的属性的正确性和完整性。模型检查器已成功用于检查协议属性,例如缓存一致性实现,避免死锁或活锁,或安全关键控制系统,例如汽车安全气囊。

等效检查器

等效检查器正式比较两个设计以证明它们在逻辑上是否等效。该过程原则上是理想的,因为不涉及用户定义的属性或测试平台。通常,设计的 RTL 版本使用仿真或仿真进行验证,将其确立为黄金版本。此黄金版本可作为等效性检查方法开始时的功能参考。设计的每个后续版本都是黄金数据库中指定和模拟的行为的实现。一旦一个实施数据库被证明是等效的,它就可以用作任何后续等效比较的参考。例如,设计的扁平化门级实现版本可以证明等同于其分层 HDL 源。等效性检查对于验证具有明确更高级别定义的非常大的组合块也非常强大,比如乘数。

等效性检查器通过应用正式的数学算法来确定一个设计中每个比较点的逻辑函数是否与另一设计中的匹配比较点等效。为了实现这一点,该工具将电路分割成逻辑锥体,边界由源点和端点表示,例如主 I/O 和寄存器。随着每个逻辑锥的边界点在两个设计之间对齐,求解器可以使用两个设计的功能描述来确定它们的等价性。

第一个等效检查器是在 1980 年左右为 IBM 的 3081 项目开发的 [106]。早期的等价检查器使用布尔表示,这几乎类似于 OBDD,但不是规范的。 Bryant 开发的OBDDs [20] 被立即用于提供研究工具的规范形式。现代商业等效检查器,1994 年的 Chrysalis 和 1997 年的 Synopsys Formality,带来了这项技术主流设计项目。 Formality 最重要的创新是它使用了许多不同的求解器,这些求解器是根据分析问题自动选择的。它基于用于复杂控制逻辑的 OBDD,而其他算法用于大型组合数据路径元素,如乘法器,以在合理的时间和空间内获得具有各种特性的设计结果。

等价性检查器和模型检查器对计算时间和内存空间的要求都非常高,并且通常一次超过几十万个门是不切实际的。由于几乎所有大型设计都按照该粒度级别进行模块化,因此在模块级别应用分析非常有用。

未来:SoC

只要摩尔定律成立,验证工作的超线性增长就没有停止的迹象。到目前为止,抽象、加速和分析的组合已经上升以应对挑战。借助现代模拟和形式验证工具,当今大多数芯片开发项目都成功地获得了正确的第一块芯片。更大的芯片和系统设计通过添加加速或仿真,或通过使用 FPGA
进行原型设计而取得成功。

片上系统 (SoC) 最近在经济上变得越来越受欢迎,带来了最新和最大的挑战,并将在不久的将来主导验证问题。 SoC 很难验证。首先,因为和以前一样,他们增加的门数需要每个周期更多的工作和更多的周期来获得验证覆盖。其次,由于 SoC 是系统,系统包括处理器,而处理器运行代码。系统级验证问题主要是硬件/软件协同验证问题之一。嵌入式软件操作系统、驱动程序和应用程序以及 SoC 硬件必须在设计周期中由硬件和软件工程师共同验证。这大大增加了每个工作日所需的验证周期数。运行代码需要单线程验证,因此没有可用的任务级并行性。和以前一样,通过抽象、加速和分析的组合来应对这一挑战。

Eagle Design Automation 将系统软件执行抽象到源代码或指令集级别与 HDL 逻辑仿真相结合,形成硬件/软件协同验证工具集。系统的处理器-内存部分由指令集模拟器建模,它可以实现每秒数十万个指令周期,或者直接执行编译到验证工作站的嵌入式源代码,这是甚至更快。系统硬件的其余部分驻留在传统的 HDL 逻辑模拟器中。两者通过 Eaglei 系统连接,该系统将处理器内存软件执行嵌入到虚拟软件处理器 (VSP) 中。 VSP 通过处理器总线的总线功能模型与硬件仿真交互。当软件与模拟硬件交互时,VSP 和逻辑模拟器可以耦合在一起以遵循相同的模拟时间步长,或者当软件独立运行时解耦,大多数时候,允许全速执行软件。耦合控制可以是静态的或动态的,由硬
件或软件活动触发。通过这种方式,HW-SW 系统可以在标准工作站上的合理时间内通过数百万次循环进行验证。

将 HDL 之上的硬件描述移动到系统级表示是通过抽象获得验证性能的另一种方法。一旦系统级语言(例如 SystemC)可以在通用逻辑设计中与系统级综合工具一起使用,就像今天的 HDL 一样,这将支持基于系统的设计方法,通过抽象获得高验证性能。

通过对每个抽象、加速和分析技术的渐进改进,验证能力将继续增强。更复杂的 HDL 分析和编译技术不断提高HDL 仿真器的性能。 FPGA 和用于加速的编译器技术继续快速增长,这得益于 FPGA 在硬件产品中的广泛接受。可以期待形式验证中新的更好的算法和实现,因为这是学术
界和工业界的一个活跃研究领域。

我们还将看到抽象、加速和分析技术之间越来越多的协同作用。分析技术覆盖逻辑很透彻,但不能深入时间,而模拟可以覆盖很长时间而不完整。在设计验证和测试台生成方面,这些互补技术可以结合起来发挥各自的优势。继续研究将 FPGA 加速技术应用于抽象 HDL 和系统级仿真的新方法。我们甚至可能会在形式验证中看到求解器的FPGA 加速。

综合

开端

逻辑综合可以追溯到它在开关理论工作中的早期开端。Quine 和 McCluskey 的早期工作解决了布尔函数的简化或最小化问题。由于在计算机设计中遇到了最苛刻的逻辑设计,因此很自然地,IBM
在许多算法的发明和许多内部系统的开发中发挥了举足轻重的作用。 MINI 是一个早期的系统,它使用启发式技术进行两级优化。 IBM 的 LSS 是一个早期的多级逻辑综合系统,用于寻找已制造设计的用途。LSS 是一个基于规则的系统,它首先对电路的技术独立表示进行操作,然后进一步映射和优化电路。

LSS 以及另一个 IBM 综合系统 Yorktown Silicon Compiler (YSC) 的工作在许多方面促成了 1980 年代逻辑综合研究的爆炸性增长。不仅来自发表论文,而且作为许多研究人员的训练场,IBM 综合研究为一代研究人员提供了必要的背景。大学中值得注意的努力包括科罗拉多大学博尔德分校的 BOLD 系统、伯克利的 MIS 和通用电气的苏格拉底。

所有这些系统都旨在优化多级逻辑,它们使用的方法可以粗略地描述为算法或基于规则(或两者兼而有之)。在MIS 中使用了算法方法,而 Socrates 以及较早的 LSS,两者都使用基于规则的方法。在任何一种情况下,最佳解决方案过去和现在仍然不具备计算可行性。然后优化系统的目标就变成了以极大加速的方式匹配或击败人类设计师。

在业务方面,我们发现在 EDA 公司的“第二波”中首次使用了逻辑操纵。如果说第一波 EDA 公司专注于物理设计和验证,那么第二波则专注于逻辑设计。 Daisy、Mentor 和 Valid 公司都提供原理图输入作为逻辑仿真程序的前端。虽然这些产品没有使用逻辑优化技术,但其中一些产品确实提供了基本的逻辑操作,例如可以操作逻辑示意图的“气泡推动”(相位分配)。

逻辑优化和设计编译器

1980 年代中后期出现了一些公司,它们专注于将逻辑综合方面的学术研究成果商业化。这个市场的早期进入者是 Trimeter、Silc 和 Optimal Solutions Inc.(后来更名为 Synopsys)。在下文中,我们将专注于 Design Compiler 系列综合产品的技术和业务发展。

当新技术应用于现实世界的设计问题时,进一步创新的机会就会变得明显,因为必要性推动了进一步创新以满足市场需求。 Design Compiler 在这种环境中的早期成功可以追溯到许多技术和商业因素。第一个是 Design Compiler 的最初用途是优化预先存在的逻辑设计。在这种情况下,用户可以尝试优化功能并使他们的设计更小、更快,而无需更改他们的设计方法。对设计方法的影响是接受任何新 EDA 工具的关键因素。虽然今天在设计和 EDA 社区中对这一点的理解要好得多,但在 1980 年代后期,人们并不普遍理解这可能是工具接受度的成败命题。 仅优化方法的一个推论是使用 Design Compiler 作为移植和重新优化工具,可以将设计从一种 ASIC 库或技术转移到另一种。Design Compiler 可能就是以这种方式首先被大量使用的。

这种初始使用场景是由多种因素促成的。在业务方面,大量 ASIC 库的可用性是一个关键优势。这是由早期的顶级客户需求以及对具有支持和工具开发的硅供应商的强烈内部关注共同推动的。开发库编译器是为了支持封装所有用于逻辑综合的相关数据。最初,这仅包含有关逻辑功能和连接性、面积和延迟的信息。今天,这些库包含有关线负载的信息、静态和动态功耗以及不断增加的物理信息量。今天,这得到了 Liberty) .lib STAMP 格式的支持,这些格式通过 TAP-IN 程序获得许可。

早期接受 Design Compiler 的另一个关键是原理图生成的可用性。没有自然和直观的原理图生成,逻辑设计人员对逻辑优化的初步接受会显着放缓。当时的逻辑设计师最熟悉原理图输入,习惯于用原理图的方式思考。优化的输出必须以这种方式呈现,这样设计师不仅可以让自己相信改进的设计特性,而且更重要的是,可以让自己相信新设计的正确性。

也许 Design Compiler 最初成功的最大原因是它专注于性能驱动的设计。更准确地说,优化目标是在最小化面积的同时满足设计人员的时序约束。通过不断改变时序约束,可以获得设计权衡曲线上的一整套解决方案。此设计权衡曲线绘制了最长路径延迟与实现所述功能所需的面积之间的关系。这条曲线也被称为香蕉曲线。另一个幸存下来的艺术术语是“结果质量”。通常缩写为“QoR”。如果一种工具或算法的香蕉曲线完全低于任何其他方法的香蕉曲线结果,则其 QoR 被证明是优越的。

实现综合时序 QoR 有两项关键技术。第一个是具有嵌入式、增量静态时序分析功能。如果没有良好的时序,包括对时钟、延迟建模、互连延迟估计和约束管理的透彻理解,就不可能实现高质量的设计。静态计时引擎必须是增量的,以支持潜在优化移动的延迟成本。它还必须快速且内存高效,因为它将在许多综合过程中被多次调用。但是良好的静态时序分析还需要良好的时序建模才能获得准确的结果。在 80 年代后期,很明显简单的线性延迟模型不再足以描述门延迟 。为了解决这种情况,开发了一种查表延迟模型。该模型称为非线性延迟模型(NLDM), 将单元延迟和输出斜率建模为输入斜率和输出电容的函数。这些技术以及称为线路负载模型 (WLM) 的路由估计技术的发展,使得能够准确估计到达时间和合成程序所需的时间。第二个关键技术是时序驱动综合,它是技术和算法的集合。它们包括技术独立领域中的时序驱动结构化,以及许多对技术映射网表进行操作的技术。

1980 年代中期,逻辑综合在设计流程中占据一席之地的最大竞争是“硅编译器”的概念。我们指的是根据初始规范生成最终布局的编译器。对于哪种技术能带来最大的好处,市场存在很多不确定性。最后,由于几个原因,逻辑综合加上自动布局布线赢得了几乎所有的业务。首先,在大多数情况下,硅编译产生的设计比综合和 APR 产生的设计更大、更慢,导致设计缺乏竞争力。其次,硅编译没有应用的普遍性。

由基于综合的设计流程提供。硅编译器要么严格针对特定设计(即生产 8051),要么编译为固定的微体系结构,再次导致设计缺乏竞争力。

RTL 综合

早期的 Synopsys 文献试图向大量的逻辑设计者描述,他们当时不理解“方程”的综合
综合=翻译+优化综合=翻译+优化综合=翻译+优化

我们已经描述了这个方程中的优化项。我们现在将注意力转向翻译术语。

硬件描述语言多年来一直是一个活跃的研究领域,CHDL 的悠久历史证明了这一点(另请参见验证
部分中关于 HDL 的评论)。然而,正是 Verilog 的引入使 HDL 方法能够站稳脚跟。用户首先被 Verilog 吸引,不是因为它的语言,而是因为它是可用的最快的门级模拟器。VHDL 然后在 1980 年代中期被引入,作为基于 Ada 语法的 HDL,并在 VHSIC 程序下设计。使用这些 HDL 作为综合输入的一个绊脚石是它们都被设计为仿真语言。那时,如何对语言进行子集化以及如何将综合语义叠加到它们上并不明显。实际上, Verilog 和 VHDL 有许多相互竞争的子集和编码风格。虽然大多数工作依赖于 HDL 中的并发分配语句来模拟硬件的并发性,但 Synopsys 率先使用顺序语句来暗示组
合和顺序逻辑。这具有重要影响,使 HDL 更普遍有用,因此被设计社区接受。这种“Synopsys 风格”或“Synopsys 子集”(当时被称为“Synopsys 风格”或“Synopsys 子集”)成为事实上的标准,其影响在今天最近批准的 VHDL 寄存器传输的 IEEE 1076.6 标准中可见一斑。

一旦设计人员开始使用这些语言进行门级仿真,他们就可以试验更多面向软件的语言结构,例如“if. then.else”和“case”,以及对时钟同步进行建模的特定硬件建模语句。很快就进行了 RTL 合成实验。但随着设计师对方法的信心逐渐增强,这种变化一开始只是缓慢地实现。正是通过这种方式,Design Compiler 和 Verilog XL 能够将 RTL 方法引导到 ASIC 设计社区。

1980 年代的大多数 HDL 综合研究都集中在行为级综合,而不是 RTL 综合。一个值得注意的例外是伯克利的 BDSYN项目。在这种方法中,放松了数据和控制的严格分离,将所有生成的逻辑合并到一个初始设计网表中,然后可以在 RTL 和逻辑级别进一步优化。在进行任何 RTL 优化之前,RTL 综合从 HDL 到初始电路的相当直接的映射开始。语言文本中的流控制成为电路中的数据控制逻辑(多路复用器)。迭代变得完全展开并用于构建并行硬件。时钟语句会导致内存元素的推断,新手 RTL 设计者的祸根仍然是控制流分支中不完整的分配将导致透明锁存器的推断。本领域技术人员从 Verilog 文本片段中直接绘制合成电路的能力证明了这种初始映射是直接的 。在这个初始阶段也可以完成许多类似 SW 编译器的优化,例如死代码消除和乘以 2 的幂时的强度降低。一般来说,不需要时序信息的技术也可以在这个时候进行,比如使用规范的有符号数字表示,将乘以一个常数转化为一系列的加、减、位移(强度降低的另一种形式)。

在初始电路综合之后,还有许多 RTL 优化可以显着提高性能和面积。由于其中大多数涉及设计权衡,因此有必要在综合逻辑的上下文中执行它们。因此,在编译流程的中间构建了一个 RTL 优化子系统。通过使用相同的静态时序分析,以及关于算子时序和面积成本的比特级信息,可以构建有效的算法来实现时序驱动的资源共享、实现选择(RTL 组件的性能区域权衡)、最小化算子树重构延迟和公共子表达式消除。对于 RTL 操作符(例如加法和减法)以及控制信号,此处拥有准确的位级信息至关重要。 这是必要的,因为关键路径可以在控制和数据之间交错,并且许多 RTL 优化倾向于移动设计中的控制信号。为了支持 RTL 组件的准确延迟和面积成本计算,构建了初始 DesignWare 子系统。该子系统管理所有 RTL 操作符的构建、成本计算和建模,并在开发库时产生极大的灵活性和丰富性。允许在 HDL 中表达 RTL 运算符本身的描述,然后以递归方式调用综合程序,以便“原位”计算所有时序信息,从而使该子系统具有逻辑综合系统的所有功能和灵活性.通过添加将任意函数指定为 HDL 源中的运算符的功能,这些 RTL 优化甚至可以在用户定义和设计的组件上执行。

从那时起,逻辑和 RTL 综合方面的创新和改进不断涌现。不到十年,5000-10 000 个门的模块过去需要 10 个以上的 CPU 小时,而今天,在四个并行 CPU 上运行的时间不到4 小时,就可以实现一百万个门的自上而下的自动芯片合成。此外,现在可以同时执行最小/最大延迟优化。也就是说,不再需要单独运行以进行最大延迟优化(设置约束),然后是最小路径(保持约束)修复。时序 QoR 也得到了显着改善。关键路径再合成等技术和技术映射电路的各种转换已使时序QoR 提高了 25% 以上。 RTL 算法优化的进步已经使用进位保存算法重构操作树以获得最小延迟。这种持续不断的创新使现代综合工具产生的设计能够使用现代技术以超过 800 MHz 的时钟频率运行。

OBDD 的发明几乎与验证一样有益于综合。 Synopsys 的一项早期使用是 Design Compiler 的 check_design 命令提供的非常简单的等效性检查。此功能基于 OBDD 包的有效实现。虽然这个简单的命令不具备等效性检查产品 Formality 的容量、稳健性和调试能力,但它被证明对逻辑和 RTL 优化算法的开发人员来说是无价的。可以在开发过程中使用 check_design 命令检查转换和优化的正确性。之后,这些检查可以添加到回归测试套件中,以确保错误的逻辑错误不会蔓延到代码库中。 OBDD 的另一个用途是在 RTL 综合期间表示和操纵控制逻辑。在所有这些应用中,OBDD 的大小是一个关键问题。 动态变量排序和筛选算法 [95] 的发明已被证明是使 OBDD 更普遍有用的关键组成部分。

顺序映射和优化

支持组合逻辑综合的是时序元素的综合和映射。最初的 HDL 设计描述决定了将被推断的存储器元件的类型(即触发器或透明锁存器高电平或低电平有效)。但是现代ASIC 库有各种各样的库元素可以实现必要的功能。这些元素的选择会对最终设计的面积和时间产生影响。正是在这个阶段,可以通过使用启用扫描的触发器并自动更新设计的时序约束来完成时序元件的可测试性设计(DFT)。此外,映射到多位寄存器可以在设计实现的布局和布线阶段产生积极影响。

一种有望提高设计性能的顺序优化技术是重新定时。但是从理论到实际工业应用的道路比最初想象的要长。绊脚石是大多数设计人员使用各种复杂的顺序元素,经典的重定时算法无法很好地处理这些元素。这些元件可能提供异步或同步复位输入以及同步负载使能输入(也称为时钟使能)。这些类型现在可以使用多类重定时技术进行优化。

扩大合成范围

我们已经提到如何在顺序映射阶段插入扫描触发器以实现单程 DFT 设计流程。除了可测试性之外,还有其他可以作为目标。功率优化综合是这些技术之一。功率优化可以在门级、RT 级或行为级执行。时钟门控是一种众所周知的用于节省功耗的技术,但整个 EDA 工具链都需要支持实现高生产率。RT 和行为级别的其他技术包括操作隔离,它使用指示是否需要操作者输出的控制信号来隔离操作的输入。这样,在不需要结果时,实现操作员的逻辑就不会受到更改输入的影响。这些技术可节省超过 40% 的电能,对设计周期和设计质量的影响最小。

虽然 DesignWare 子系统最初的目的是支持 RTL 优化技术,但功能集启用了"软 IP"设计重用,这一点很快就变得很明显。今天,最大的可用库和最广泛重复使用的组件都在设计软件基础库中。该图书馆是技术独立、预先验证的虚拟微型建筑组件的广泛集合。此库包含基本 RTL 组件,如添加器和乘数,其中包含由 RTL 优化算法利用的多个实现。此外,还包括更复杂的组件,如 DW8051 微控制器和 DWPCI 总线接口。设计软件开发人员和其他工具和方法的可用性进一步增强了设计重用的好处。

行为综合

行为综合长期以来一直是学术研究的一个课题]。行为合成的对象是双重的。首先,通过在更高的抽象水平上描述系统,可以提高设计效率。其次,由于设计转型也处于较高水平,因此可以探索更大的可行设计空间,从而产生更好的设计。Synopsys 于 1994 年 11 月首次交付行为编译器。行为编译器中体现了许多创新。首先,开发了一种处理计时限制、顺序操作员建模、预链操作和分层调度的新技术,方法称为"行为模板"。此外,还开发了一个一致的输入/输出 (I/O) 方法,引
入了"周期固定,“超状态固定"和"自由浮动” I/O 调度模式。 这些对于理解如何交互和验证行为合成产生的设计是必要的。最后,高质量设计的关键仍然是准确的面积和时间估计。对于将在计划、分配和绑定 HW 处理器上实施的操作员,以及控制信号延迟的早期估计,情况都是如此。

虽然行为合成尚未实现逻辑合成的无处不在,但它在设计机顶盒、ATM 交换机、手机、无线 LAN、数码相机和各种图像处理 HW 中找到了杠杆作用。最近的一份白皮书详细介绍了一个设计团队在设计带有 20 000 条(M4 宏扩展后 40 000 行)行为 Verilog 行的分组引擎时使用行为编译器的经验。一个不变的主题是,对于一个有经验的 RTL 设计师来说,使用行为编译器是一个陡峭的
学习曲线,因为 FSM 方面的思考是根深蒂固的,需要有意识的努力改变这些思维过程。即使面临这些挑战,也已经制造了数百个具有行为编译器合成模块的芯片。

物理综合

在千年的过去几年中,ASIC 执行中的主要挑战之一是在时间关闭领域。定时关闭是指 RTL 预测的计时和逻辑合成在物理设计阶段后实际实现的理想属性。情况往往并非如此。这种差异的根源在于合成过程中互连延迟的建模。现阶段无法准确估计互连延迟,并且采用统计技术,该技术使用网络的引脚计数和包含网络的块的大小,将网络索引到电容估计的查找表中。这种估计技术与性能由最坏情况延迟决定的事实之间存在根本的不匹配,这实际上依赖于偏颇的平均电容。

在如何解决时间关闭问题方面有许多建议。有人观察到,如果采用分层设计实现,传统合成方法可以保持。在此方法中,芯片被合成为低于某个阈值的多个方块,通常在 50K 到 100K 门范围内引用。对于拥有 2000 到 3000 个此类块的芯片的全球互连的预算、规划和实施,可能证明具有
挑战性。另一种方法是在放置和路由后使用不断延迟或增益的方法进行门大小。此技术取决于连续大小门的能力,延迟也是电容加载的线性函数。与此相对应的是许多 ASIC 库中离散大小的少量,电汇电阻可能是造成(非线性)线延迟的一个重要因素,并且由于输入坡度依赖,闸门延迟本身可能是非线性的。 话虽如此,当与具有丰富驱动优势的库一起使用时,这种方法可以在时间 QoR 方面有所改进。时间关闭的方法似乎最有希望,即将合成和放置组合成单个实现通行证。此通行证将 RTL 设计描述作为输入,并生成优化和(合法)放置的净列表作为输出。通过这种方式,优化程序可以访问设计的位置,这允许准确估计最终的电线长度。

数据路径合成

专门技术通常可以在重点问题领域获得显著的效率。数据路径设计传统上由专家设计师手动完成。构建高质量数据路径设计的技术非常了解,可以构建设计时使用的规则形式表达。使用这些规则可导致具有良好性能和区域的电路。此电路可通过通用逻辑优化工具进行后处理,以便
进行增量改进。提供结构良好、高质量的投入逻辑优化通常会创建一个更好的电路,而不是提供功能正确的输入,结构不完善。

数据路径合成工具(如 Synopsys 的模块编译器)将数据路径设计规则作为其合成引擎的一部分。这些规则根据周围逻辑的定时上下文动态配置正在合成的数据路径设计。因此,初始电路结构并非仅由电路的功能静态决定。初始电路构建以定时驱动的方式完成。这可以创造更高质量的设计,并更快地编译时间,特别是当设计者知道需要什么样的结构时,而不是依靠下游逻辑合成工具来基于时间限制来重组电路。建设性数据路径合成技术的一个关键要素是,放置也可以建设性地确定。数据路径通常以有点切片的方式放置,也称为瓷砖。在瓷砖中,每个单元格被分配到称为相对位置的行和列位置。 行表示位切片,列表示单独的数据路函数。专门的数据路径放置器阅读此瓷砖信息,并将其转换为真正的规律放置。集成数据路径合成和物理合成可导致放置门,同时实现结构化放置和定时收敛。

FPGA 合成

FPGA 设计为逻辑优化技术提供了不同的范式。由于芯片已经设计和制造与专用资源,对其中任何一个的过度需求,逻辑,路由,或切换,导致设计变得不可行。一旦设计适合特定的 FPGA 部分,挑战在于实现性能目标。FPGA 技术映射问题与基层 ASIC 技术映射问题非常相似。然而,用于解决这两个问题的算法在今天的合成工具中大相径庭。使用逻辑门库的 ASIC 方法对于 FPGA 技术不实用,尤其是在基于 LUT 的 FPGA 中(LUT 可以编程来计算其输入的功能)。 与典型的 ASIC 技术制图算法相比,开发了 FPGA 特定的制图算法,以利用 LUT FPGA 和防熔融 FPGA 技术的特殊性,使其在运行时间上更有效率,并产生更好的结果质量。

FPGA 的性能驱动设计也面临巨大挑战。这是由于合成工具的驱动功能选择有限,因为路由架构中隐藏了大部分缓冲。此外,由于互连的可编程性,FPGA 始终在互连中遇到重大延迟。从某种意义上说,挑战在于 ASIC 合成已经从时间趋同的角度赶上了 FPGA 合成的挑战。FPGA 实施的一个有趣方法是利用在 FPGA 环境中为 ASIC 开发的新统一合成和放置解决方案。

未来

合成的未来是它必须成长和伸展,以满足新的千禧需求。这意味着接受芯片设计上的系统异质环境。在这方面,具有类库的 C/C 正在成为指定系统描述的主要语言(如系统 C)。C/C 合成工具将利用最先进的成熟行为和 RTL 合成和逻辑优化功能。但是,C/C 在合成方面提出了一些独特的挑战。例如,使用指点合成描述是很困难的。由于别名等影响,对指点的分析以及指点指向的位置是无关小事。另一个挑战是扩展可合成子集,以包括面向对象的功能,如虚拟功能、多重继承等。

测试

过去 35 年对于参与测试的人们来说是一个非常激动人心的时刻。测试的目的是非常简单地有效地识别有一个或多个缺陷的网络,这使得网络功能不正确。在制造过程中引入缺陷,以便在未打算连接的情况下创建连接,或在制造过程中的一个或多个层中中断预期连接,或更改流程变量。这些短片、打开和过程变化可以在 IC 中以太多不同的方式表现出来,这使得创建详尽的列表不切实际,更不用说为每个短片生成测试了。因此,在典型的测试方法中,利用缺陷的抽象来生成测试和评估测试。缺陷的抽象形式称为缺陷,有许多不同类型的缺陷。 业内最流行的故障模型是单个卡住故障模型,该模型假定设计中的每个网都卡在逻辑值(零或一)。毫不奇怪,这种故障模型已经使用了多年,因为它体现了故障模型存在的原因,即效率。卡住的故障很容易建模,并且随着设计大小线性地增长。逻辑网络测试的大多数年头都集中在连续网络中对故障缠住的进行测试上。尽管我们进行了许多技术更改,但此故障模型在今天仍然被广泛使用。为了生成测试模式来检测这些故障模型,这些测试是手工生成的。1966年,J.保罗·罗斯提出了第一个完整的测试生成算法。此算法用于组合网络。D-算法在适用时用于组合逻辑, 并修改的方式,它可以在有限的范围用于顺序逻辑。测试生成算法(如 D-算法目标故障)一次一个,并创建测试,刺激电路中的故障行为,并在设计中的可测量点观察它。D-算法在输入空间上进行有条不紊的搜索,以解决问题。多年来开发的其他算法基本上与 D-算法相同,具有使用搜索空间的不同方法。这些算法由许多启发式算法提供辅助,这些启发式算法指导算法的决策,以便更快地聚合在针对目标的名义故障的解决方案上。然而,作为一个行业,我们开始难以生成测试板,其中只有 500 个逻辑门与包,只有一个或两个逻辑门在每个模块上。因为这些困难,一些人开始寻找不同的方法来测试。许多人很清楚,连续网络的自动测试生成跟不上网络规模的增长速度。这种快速增长与摩尔定律的增长率的最初几天有关。然而,设计界希望开发一些新的测试生成算法,以解决顺序测试生成
问题,并有能力根据摩尔定律进行发展。迄今为止,仅在连续测试生成工具上获得的成功非常有限。除了需要更强大的自动测试生成工具外,还需要有没有导致测试器比赛条件的设计。这些比赛条件往往导致零收益情况(零收益是预期测试数据响应和芯片实际响应之间差异的结果)。由于比赛条件导致门密度的快速增长和生产问题,设计方式发生了许多变化。小林(70岁)在一篇日文一页的论文中首次提到了新的设计方法。这项工作直到后来才在世界其他地方被发现。1975年(122年)和1977年IBM(48年),第一批工业用户发布了由于自动测试生成复杂性而使设计方式发生巨大变化的工业用户。这种新方法的核心思想是使除 RAM 或 ROM 以外的所有内存元素成为班次登记的一部分。这将允许从包的主要输入和输出中控制和观察到每个内存元素。因此,顺序网络的内存元素可以被视为它们实际上是真正的主要输入和输出。 因此,人们现在可以利用 D-算法的独特能力来生成组合逻辑测试,并能够跟上不断增加的门数。NEC 方法称为 SCAN 方法,IBM 方法称为级别敏感扫描设计,因此 LSSD 的名称缩短。这种适应测试中实际困难的设计新方法一般被称为 DFT 领域。虽然这些设计技术已经存在了多年,直到过去 5 至 7 年,该行业才开始认真进行 SCAN 设计。今天,我们有很大一部分设计,它采用 SCAN。因此,许多 CAD 供应商提供 SCAN 插入和自动测试模式生成工具,这些工具要求 SCAN 结构能够生成非常复杂的顺序设计的测试,并且使测试模式也免费竞争。

今天,我们正看着一个时代,它也以和摩尔定律完全相同的速度增加门数。全扫描的 DFT 技术或高比例的可扫描内存元件在业内似乎司空见惯。此外,可以自动生成100000000 订单上的网络测试!

然而,今天我们面临的技术发展带来了重大变化,对测试有直接影响。随着我们继续扩展到深度亚微米或纳米技术,一些测试技术正在失去其有效性,除了上述在测试规模方面,新航路线图提
到的许多其他问题称为"大挑战",也影响未来需要如何进行测试。其中包括 GHz 周期时间、对相声的更高敏感度以及测试器成本,所有这些都对测试产生了影响。这 GHz 周期时间是指设计界在获得时间关闭时所面临的令人生畏的设计问题。对相声的敏感度较高,使这个问题更加严重。测试成本正成为设计师和制造商的一个核心问题。我们目前认为,NRE 测试成本在 30% 到 45% 之间,而测试逻辑门的实际成本将等于 2012 年制造该门的成本。因此,随着我们进入这些越来越复杂和密集的技术,测试的作用将扩大到更加成本敏感,并包括新的故障模型,非常简单,有效地识别网络与一个或多个缺陷,使这些网络功能不正确并丢弃它们, 只运送 “好” 的。

总结

在过去的几千年里,我们探索了商业 EDA,特别是在物理设计、综合、模拟、验证和测试领域。在未来十年中,对日益复杂的电子系统的需求将继续增长。如第一节所述,以可重新编程/可重新配置的芯片和系统的形式进行市场的灵活性和快速时间将更加重要。已经宣布了用于 ASIC 和 SoC 使用的可重新配置逻辑内核,以及可重新配置的处理器的作物。尽管可编程设备在面积、性能和功率方面的成本高于硬连线设备,但总体技术增长将实现更多的可编程性。对于复杂性和性能需求增长速度低于技术所能交付的细分市场,基于平台的可重新配置设计似乎是可能的。

在这种情况下,什么是合适的 EDA 工具套件,用于在现有平台上实施设计?由于平台定义了基本架构,需要很少的建筑设计。在最高级别上,系统设计工具可以指导 SW 和 HW 之间的系统功能划分,以满足性能目标,同时不溢出任何固定资源。硬件/SW 共同验证环境的重要性将提高。但是,如果平台上提供了足够的内部调试可见性设施,则可以始终将第一硅甚至标准产品芯片运出。我们将回到 VLSI 之前的日子,当验证以最终产品形式本身,实时 HW。合成和物理设计工具与目前使用的 FPGA 实施工具没有根本区别,尽管可能更擅利于性能驱动设计。

将大网列表映射到 FPGA 上的问题与放置门阵列的问题类似:更复杂的是路由不太容易抽象,但更简单的是隐藏了基础技术(即,它始终正确,无需通过重叠进行建模等)。平台设计中一个额外的挑战是匹配处理器的性能和 ASIC 部分具有可重构部分的性能。这种性能匹配最终会反映到实施工具中。无论如何,解决复杂性和上市时间的更高级别工具的出现可能会大大增加 EDA 的可用市场。

用于设计这些平台的 EDA 工具套件看起来很像今天的工具套件,但增加了处理缩放效应和不断增加的复杂性的功能。解决这些问题的智力挑战保持不变。然而,市场的性质可能会发生重大变化。例如,如上所述,掩码验证软件如今约占物理 EDA 收入的一半。但是提取或设计规则检查仅对平台的设计而言是必要的,对于该平台的编程而言不是必要的。同时,掩码验证将变得更加复杂,因此更加耗时。随着用户群缩小但工具使用更加密集,用于平台设计的商业 EDA 的经济性可能会发生变化。在平台抽奖中获胜的半导体供应商的内部 EDA 开发可能会继续在利基应用中进行。 我们还预计半导体供应商和 EDA 供应商将继续加快建立合作伙伴关系,以解决基于部署平台的解决方案的复杂性。

三万字长文带你了解电子设计自动化(EDA)相关推荐

  1. 万字长文带你 搞定 linux BT 宝塔面板 之外网上快速搭建苹果CMS电影网站

    文章目录 万字长文带你搞定宝塔面板 一.本地搭建宝塔面板及安装ecshop 1.1前言 1.2面板特色功能 1.3安装环境说明 1.4安装BT面板 1.5常用管理命令 1.6 BT面板一键安装LAMP ...

  2. 中国电子设计自动化(EDA)软件行业未来发展趋势与投资前景分析报告22022-2028年版

    中国电子设计自动化(EDA)软件行业未来发展趋势与投资前景分析报告22022-2028年版 mmmmmm鸿**mmm晟&mmmmm信**mmmmm合&mmmmm研**mmmmmmm究& ...

  3. 电子设计自动化 (EDA)——新技术需要为 EDA 提供新的解决方案

    电子设计自动化 (EDA) 成本持续增加,而周期时间缩短.这些都为 EDA 设计带来了前所未有的挑战,对现代高性能工作流的需求变得从未如此巨大. 新技术需要为 EDA 提供新的解决方案 最近,对 5 ...

  4. 万字长文带你一览ICLR2020最新Transformers进展(上)

    原文链接:http://gsarti.com/post/iclr2020-transformers/ 作者:Gabriele Sarti 编译:朴素人工智能 Transformer体系结构最初是在At ...

  5. 兄弟姐妹们,我终于上岸了,喜获蚂蚁offer,定级p7,万字长文带你走完面试全过程

    前言 在今天,我收到了蚂蚁金服A级的实习录用offer. 从开始面试到拿到口头offer(四面技术+一面HR)战线大约拉了半个月, 从拿到口头offer到收到正式录用邮件大概又是半个月. 思前想后,决 ...

  6. 喜获蚂蚁offer,定级p7,面经分享,万字长文带你走完面试全过程

    前言 在今天,我收到了蚂蚁金服A级的实习录用offer. 从开始面试到拿到口头offer(四面技术+一面HR)战线大约拉了半个月, 从拿到口头offer到收到正式录用邮件大概又是半个月. 思前想后,决 ...

  7. FEMS综述: 如何从微生物网络中的“毛线球”理出头绪(3万字长文带你系统学习网络)...

    如何从微生物网络中的"毛线球"理出头绪 From hairballs to hypotheses–biological insights from microbial Lisa R ...

  8. 18个月自学AI,2年写就三万字长文,过来人教你如何掌握这几个AI基础概念

    来源:机器之心 本文约30000字,建议阅读10分钟. 这是一篇真正针对初学者的 AI 教程,不只讲概念,还讲概念的底层原理. David Code 有多个身份:他是旅行作家,通晓多国语言,他还是一名 ...

  9. 经过负载均衡图片加载不出来_吐血输出:2万字长文带你细细盘点五种负载均衡策略。...

    Dubbo的五种负载均衡策略 2020 年 5 月 15 日,Dubbo 发布 2.7.7 release 版本.其中有这么一个 Features 新增一个负载均衡策略. 熟悉我的老读者肯定是知道的, ...

  10. 吐血输出:2万字长文带你细细盘点五种负载均衡策略。

    Dubbo的五种负载均衡策略 2020 年 5 月 15 日,Dubbo 发布 2.7.7 release 版本.其中有这么一个 Features 新增一个负载均衡策略. 熟悉我的老读者肯定是知道的, ...

最新文章

  1. 0xc0000225无法进系统_冷却塔进风格栅结冰主要原因及对策
  2. php的一些基本概念梳理
  3. 软件公司应该砍掉的成本
  4. 广州去厦门旅游攻略--(转自 #散文吧网站#)
  5. ★ 科幻分离式手机 富士通F-04B详细图解 ★
  6. switch中case后可以是表达式吗_自学C++基础教程【流程控制语句】(switch语句 )...
  7. jquery函数加载及生成随机数
  8. html 下拉到一定位置,浏览器向下滚动到一定位置继续滚动时,侧边导航固定在页面顶部,再滚动到一定位置时页面再向下滚动侧边导航不再固定。这种效果怎么实现呢...
  9. 强有力的Linux历史命令 你还记得几个
  10. 点云定义、PCL数据类型和点云处理方式
  11. python如何保存计算数据_python – 在scikit-learn中保存新数据的特征向量
  12. js:获取年龄的函数
  13. 网络邻居无法查找计算机,局域网中无法找到网上邻居的原因
  14. nodejs 连接数据库 并在数据库上进行增删改查操作
  15. 比方便面还方便~利用Python开发一个桌面小程序
  16. 《软件工程之美》打卡第四周,2021最新Android面试真题解析
  17. 语义分割论文:Fully Convolutional Networks for Semantic Segmentation (CVPR2015)
  18. 原生JS拖拽模型(有限制范围的)
  19. 移动端h5框架自适应_Html5移动端页面自适应百分比布局
  20. 西南交通大学暑期夏令营面试

热门文章

  1. swiper 切换时间_改变Swiper切换和animate.js动画的时间曲线
  2. 算法笔记:使用A*算法解决八数码问题
  3. python生词本的生词_词汇小助手V1.1——引入自动翻译和在线词典功能
  4. RMAN-06091 no channel allocated for maintenance
  5. wex5 mysql root密码_WeX5基础
  6. 通过UA判断手机的类型
  7. 58赶集基于 Docker 的自动化部署实践
  8. “汽车人”眼中的网络安全-网络安全的5W1H
  9. 嵌入式软件测试——初探
  10. hdu5773 2016年多校4 nlogn求LIS