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

Posted 陆嵩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三万字长文带你了解电子设计自动化(EDA)相关的知识,希望对你有一定的参考价值。

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

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 之上的硬件描述移动到系统级表示是通过抽象获得验证性能的另一种方法。一旦系统级语言(

以上是关于三万字长文带你了解电子设计自动化(EDA)的主要内容,如果未能解决你的问题,请参考以下文章

基于Quartus II软件FPGA与PC之间的串行通信系统开发(9000+字)

电子产品设计中的EDA是啥意思?

基于FPGA的通用8251串行异步收发器(6600+字)

什么是EDA软件?

EDA软件,啥是EDA软件

什么是EDA软件