外观
第 3 章 构建系统
Building a System
晶体管及其他关键元件推动了过去四十年的数字革命,为所有科学学科和产业注入了持续的创新活力。但如果我们静下心来仔细想想,晶体管本身其实并没有什么了不起的地方。源极(source)、栅极(gate)和漏极(drain),单独存在时毫无用处。唯有将它们串联起来,凝聚数以万亿计的投资以及数百万颗最聪慧头脑的殚精竭虑,不断设计出愈发复杂的系统,晶体管才能实现今天的一切。量产中最先进的集成电路(IC)在单块芯片上需要多达两万亿个晶体管(Hutson, 2021)——试想一下,如果你的工作要求你同时把两万亿件事情做对,那是何等挑战!为了完成这一壮举,硬件设计师必须在层级越来越高的抽象层次上,对电子系统进行分组和组织。在本章中,我们将探讨如此先进的集成电路是如何设计的,但首先我们必须了解这些层级是如何相互衔接的。
电子系统的不同层级——系统如何组合在一起
要理解各个独立元件如何组合形成最终产品,我们可以将系统想象成一个层级结构,其中每个层级都是其下方各层级的总和(见图 3-1)。
![]()
图 3-1 电子系统的不同层级
图中英文标注由下至上:Level 0 Transistors & Discrete Components=第 0 层 晶体管与分立元件;Level 1st Individual Die=第 1 层 单个裸片;Level 2nd Semiconductor Packaging=第 2 层 半导体封装;Level 3rd Board Level Circuitry=第 3 层 板级电路;Level 4th Laptop=第 4 层 笔记本电脑(系统级)。
电子系统的基础层由两类元件组合而成:(1)直接焊接到印刷电路板(PCB,Printed Circuit Board)上的独立分立元件(discrete components),以及(2)集成到单个裸片(die)上的功能元件。
有些元件(如晶体管)适合在裸片层面集成,而另一些元件(如构成系统电源电路的较大电容和电感)则更适合在封装或 PCB 层面集成。无论是裸片级集成还是 PCB 级集成,这些晶体管和元件都构成了基本构建模块,是所有上层结构赖以建立的基础。我们可以在图 3-1 中看到它们以第 0 层的形式呈现。
在集成电路(IC)层级(第 1 层),整块芯片由较小的分立元件或功能元件组合设计而成。这些设计可以是极其复杂的电路,包含数十亿个晶体管(例如驱动你笔记本电脑的 CPU),也可以是较小的专用电路(例如 CPU 用来存储信息或访问数据与指令的存储器)。
在封装层级(第 2 层),单个(有时是多个)集成电路被封入保护外壳,以防止受到邻近元件的干扰。多个元件可以被组合成所谓的模块(module),即一组协同工作、共同完成某项任务的小型电路和元件的集合。
在印刷电路板(PCB,第 3 层),较低层级的小型元件被焊接到一块电路板上,彼此相连,构成更大的系统。来自第 2 层的封装和模块在 PCB 上通常表现为(一般是)方形的黑色元件。PCB 在机械上支撑各电子元件,并通过蚀刻在其表面的导电走线(track)、焊盘(pad)及其他特征,将各元件相互连接(Printed-Circuit-Board Glossary Definition, n.d.)。
现代电路板有多个层次,导线在板内上下穿行,将一个元件连接到另一个元件。如果你曾经拆解过电子产品,PCB 就是那块绿色的塑料片,上面贴满了各种小黑方块和长方块。不同的系统元件通常直接焊接在 PCB 上。如果把电子系统比作澳大利亚,PCB 就是那块大陆,各个城市是不同的芯片,建筑是功能元件和分立元件,道路则是将一切连接起来的互连线(interconnect)。我们可以在图 3-2 中看到一块真实的 PCB。
![]()
图 3-2 一块 PCB(Tronicszone, 2017)
在系统层级(第 4 层),所有一切汇聚在一起,构成一个完整可用的系统或产品。需要特别注意的是,「系统」一词可以在不同层级使用,用以描述一个在其所处层级上完整、独立的结构,具体含义取决于它所执行的任务。换句话说,一家半导体公司的系统架构师(system architect)可能正在负责单块芯片多个部分的整体设计与集成,而同一家公司另一个部门的系统架构师则可能在将多块芯片集成进一个更大的系统。如果你曾经修过电子设备(比如更换手机碎屏),就会发现手机内部有许多不同的小 PCB,由塑料排线和连接器相互连通。这些电路板和元件(如液晶屏和耳机插孔)必须在整体系统层面协同工作。
集成电路设计流程
半导体设计流程可以拆解为六个主要步骤。与半导体价值链(semiconductor value chain)类似,从头到尾理解这一设计流程,可以作为一个锚点,帮助我们深入理解其中的每个组成部分。
我们将借用建筑类比,来更直观地呈现每个步骤的内容,并假设我们正在设计一块标准的数字电路,尽管模拟和混合信号器件也会遵循类似的步骤。我们可以在图 3-4 中看到这一类比的展开。
| 芯片设计 | 建筑流程 |
|---|---|
| 系统架构(System Level Architecture) | 建筑设计(Building Architecture) |
| 前端设计(Front End Design) | 详细施工图(Detailed Schematics) |
| 设计验证(Design Verification) | 验证施工图(Verify Building Schematics) |
| 物理设计(Physical Design) | 建造样板单元(Build a Prototypical Unit) |
| 后端验证(Back End Validation) | 验证结构完整性(Validate Structural Integrity) |
| 制造(Manufacturing) | 建造住宅社区(Build a Housing Community) |
表 3-1 芯片设计与建筑流程对比
设计流程
设计流程由六个离散步骤组成(见表 3-1),具体如下:
系统架构(System Level Architecture)——设计流程伊始,系统架构师(system architect)需要构思出团队要设计什么样的芯片。这一过程通常从业务和市场团队的输入开始,他们会指出某个市场或客户需求。系统架构师需要明确芯片的功能定位、将采用哪些技术、材料和元件来构建芯片,以及如何评估芯片是否成功。这就如同房地产开发商和建筑师在建筑行业的工作:在项目启动之初,他们会先决定要建什么(电影院?健身房?住宅?)。一旦这个决策确定,他们还需要回答诸如建筑应有多少间房、每间多大、几层楼、用什么材料等问题。归根结底,开发商和建筑师必须确保所建之物能实现既定功能,并在预算范围内完成。与建筑行业的建筑师一样,系统架构师不会仅仅列出需求清单、丢给其他团队就了事;他们会在整个设计过程中持续跟踪进度,在每一步为团队提供指引。系统架构师不只是与工程团队打交道,还必须与业务和市场团队协调沟通,确保产品既满足市场需求,又不超出预算。
前端设计(Front End Design)——在梳理清楚高层次细节、正式开始「施工」之前,工程师需要创建系统的详细模型。这从整体行为的高层模型开始,逐步细化为更具体的模型和详细原理图。管道走哪里?电气线路如何接入电网?天花板和地板用什么材料?在硅工程领域,这一阶段正是逻辑设计工程师(logic design engineer)埋头深耕、填充细节的时候。对于数字系统或元件,你可能听说过将其称为逻辑设计(logic design)或 RTL 设计(RTL Design,寄存器传输级,register transfer level)。在半导体行业的早期,设计师需要手动排布单个晶体管来创建各个布尔逻辑门(Boolean logic gate)。
如今,设计工程师使用硬件描述语言(HDL,Hardware Description Language),如 VHDL 或 Verilog/SystemVerilog RTL,来描述他们希望电路实现的功能(RTL Register Transfer Level, 2021)。HDL 是一种专用计算机「编程」语言,用于描述集成电路和电子系统的物理结构(Tucker, 1994)。物理设计工具会将这些语言转换成对应功能所需的单个门和晶体管。在这一阶段结束时,设计师应已完成芯片的虚拟版本,理论上它在现实世界中应能完美实现其功能。
- 设计验证(Design Verification)——与建筑行业一样,硅设计也是一个资本密集型行业。你不会希望建筑师仅在餐巾纸背面随手画几张原理图就开始施工,尤其是当你要建造多套楼宇的时候。为了确保项目成功,你需要验证:按照这些原理图建造出来的结构,真的能实现完整的功能。在半导体行业,单块芯片设计可能被用于数千乃至数百万套必须经过制造、运输、组装并集成进更大系统的产品。正是在这一阶段,工程师对设计团队所构建的成果进行验证。
验证一个复杂设计是一项艰巨的任务——艰巨到平均一块 SoC 设计总时间的一半以上都花在验证上,据 2020 年的部分估算,这一比例高达 56% 的人力工时(Foster, 2021)。验证之所以如此关键,是因为芯片制造成本极高——设计团队必须确保万无一失。SoC(片上系统,system on chip)是集成电路的一种,它将整个系统集成在单个衬底(substrate)上。SoC 不再分别构建主处理器与内存集成电路、GPU 等外围芯片再相互连接,而是将所有必要的电路集成在同一块芯片上——我们稍后会更详细地介绍。
由于存在如此众多的潜在测试用例(即器件可能被使用的各种方式),几乎不可能针对每种可能的场景对设计进行验证。然而,有多种技术在不同情况下各有其效。
目前最常用的验证方法是功能验证(functional verification),它使用 SystemVerilog HDL 代码对设计进行仿真(Wile, Goss, & Roesner, 2005)。物理设计工具用于将 HDL 语言翻译成物理门和导线,而前端验证工具则可以用同一种 HDL 语言来仿真电路的精确行为。
功能验证,简而言之,就是验证设计在任何可能的条件下都能完成预期功能。对于一个简单的与门(AND gate)来说,这几乎微不足道;但对于一块拥有十亿个门的处理器芯片而言,就远非如此了。如何能测试到所有条件呢?为了应对这种复杂性,验证工程师(verification engineer)发明了一种新的验证方法,称为 UVM(通用验证方法论,Universal Verification Methodology)。在这种方法论中,验证工程师为系统的每个部分构建一个模型,然后将设计的输出与该模型进行比对,以判断电路是否按预期运行。UVM 甚至具备收集统计数据的功能,可以记录哪些设计部分已经过验证、哪些尚未覆盖。
设计中的任何缺陷都应体现为给定测试平台(testbench)输入所产生的错误输出,从而通过调试(debugging)加以识别和修正(Wile, Goss, & Roesner, 2005)。可以想象,这是一个非常耗时耗力的过程。从某种意义上说,你需要把芯片「造」两遍——一遍用于创建作为比对基准的「黄金模型」,另一遍才是你实际要制造的实现版本。
另一种可选或补充性的验证方法是仿真验证(emulation),它借助 FPGA(现场可编程门阵列,更多内容将在后续章节介绍)对设计进行编程,以便在真实环境中观察电路的行为(Chang et al., 2009)。这对于处理真实物理信号的应用尤为有用。例如,如果你正在设计一颗音频处理器,功能验证工具可以告诉你对于给定的一组输入,预期输出应是一个 24 位的数字。这对于 MIT 的数学教授来说或许已经足够,但你真正想知道的是:「听起来效果怎么样?」为此,可以将 FPGA 仿真器「编程」为刚设计好的音频处理器,然后直接通过耳机或音箱聆听效果。
FPGA 是「现场可编程门阵列(Field Programmable Gate Array)」的缩写,其关键词在于「可编程」。由于仿真器包含最终芯片不需要的大量非必要电路,它几乎肯定比最终产品更慢、更耗电。这样做的目的不是打造出一个可以上市销售的产品,而是尽可能接近真实的可测试原型。仿真流程虽然繁琐且成本高昂,但其结果更加直观可感。
另一种验证方法是形式验证(formal verification),它不直接测试任何输入输出场景,而是借助数学推理和证明来验证 RTL 设计能否实现预期功能。基于仿真的验证技术采用试错法,尽可能多地猜测和测试各种场景;而形式验证则尝试使用算法来测试设计,从理论上覆盖所有可能的输入输出组合(Sanghavi, 2010)。在形式验证中,你需要建立约束设计正确行为的规则(例如:信号 A 始终是信号 B 的反相,或时钟 X 的频率始终是时钟 Y 的两倍),再由工具检查设计是否遵守所有这些规则。然而,随着设计复杂度的提升,这类验证会变得极为困难,限制了其在高端市场的应用(Sanghavi, 2010)。
设计流程的一部分,正是为芯片的不同部分选择合适的验证策略。一些简单的输入/输出关系或许用形式验证就能有效覆盖,而一个实时视频引擎则可能需要复杂的仿真平台。
- 物理设计(Physical Design)——这是芯片在物理层面真正「建造」的阶段。你已经构建了高层次模型,编写了 RTL 代码并验证了其运行符合预期。芯片最终由数百万个晶体管和其他电气元件构成。那么,RTL 代码究竟是如何变成导线和晶体管的呢?
先进的 EDA(电子设计自动化,electronic design automation)工具,将前端设计团队的工作带入现实。这是一个极其复杂的过程,有时耗时与前端设计阶段相当。物理设计可以拆解为以下五个步骤:
高层次综合(HLS,High Level Synthesis)——这是标志着前端设计结束、后端设计开始的阶段。此时,芯片已用 RTL 语言(如 VHDL 或 Verilog)描述完毕,并通过仿真验证了其应能如预期运行。物理设计工程师(physical design engineer)现在可以通过综合(Synthesis)将 RTL 代码转换成晶体管和导线。对于一个拥有十亿个门的设计,综合是一个极其复杂的过程,可能需要许多小时乃至数天才能完成。以 Synopsys(SNPS)为例,它是综合工具领域的领先开发商,市值在 2021 年 1 月高达 500 亿美元,由此可见这是一个何等困难、代价高昂的问题。通过将一种语言转换为另一种语言,物理(即「后端」)设计工程师得以在前端设计团队的工作基础上进行处理,并完成设计流程的下一阶段。
设计网表(Design Netlist)——高层次综合的产物是网表(netlist),即列出电路中所有电子元件及其所连接的全部节点的详细清单。为了保持我们半导体词汇的持续更新:电路节点(circuit node)是指电路中任何可接收电气信号的单个元素,无论是互连线、晶体管,还是构成电路的其他元件。注意,这里的「节点」不应与工艺节点(technology node)混淆——工艺节点描述的是制造越来越小的集成电路和晶体管所需的一代代制造技术。如果把芯片想象成一个由策略性布置在集成电路或电路板上的电子元件构成的二维网络,那么网表就是对哪些元件与哪些元件相连的文字描述,就像一份只告诉你「怎么走」、但不写「左转」还是「右转」的驾驶路线说明。与设计原理图不同,原理图会展示每个元件相对于其他元件的位置,而网表的主要目的是描述连接关系信息(Holt, n.d.)。
平面规划(Floorplanning)——在物理设计流程的这一阶段,物理设计工程师决定所有元件应放置在哪里。一个给定的设计可能包含内存块和大型逻辑块,而这些逻辑块需要读写这些内存中的数据。平面规划确保这些模块被放置在彼此相邻的位置。物理设计工程师必须想清楚哪些元件应该聚拢或分开,以及哪种组合能以最小的面积实现最高的速度(记住 PPAC!)。如果说网表是我们需要放入建筑内部的所有物品的清单,那么平面规划就是我们决定家具、电视、书桌等各个物品的摆放位置、以最大限度地高效利用有限空间的过程。
布局布线(Place-and-Route)——首先,在布局(placement)阶段,工程师决定所有电子元件和电路的精确位置。一旦确定了某个大型逻辑块需要位于芯片的特定区域,就使用布局工具为每一个逻辑门分配具体位置。如果你能把家具拆解成更小的组成部分,这一步就是决定每个子部件放在哪里的过程。布局完成后进入布线(routing)阶段,CAD 工具整合所有连接已布局元件所需的导线。某些关键导线(如电源线或高精度信号线)实际上可能需要手动布线。回想一下,网表规定了设计中的每一个门及其连接方式,因此布线只是用物理导线来实现所有这些连接。
那么,到这里我们就完成了,对吗?所有元件都已连接好,也与网表相符,还有什么需要做的?尽管构成芯片的功能元件已经完成了布局和互连,但我们还没有分析新设计的一个关键方面——时序(timing)。
时钟树综合(CTS,Clock-Tree Synthesis)——在时钟树综合阶段,工程师确保在电路中传递信息的电气信号能够在整块芯片上「整齐」地时钟驱动,或按预期运行(VLSI Guide, 2018)。时钟频率(clock frequency),或称时钟速率(clock rate),是衡量处理器速度和性能的常用指标,评估信号在集成电路中的传播速度,进而决定其执行指令的速度(Howe, 1994)。处理器电路设计极为复杂,为此工程师发展出了多种管理复杂性的技术,其中之一称为同步设计(synchronous design)。同步设计在所有电路间使用一个统一的「时钟」。至关重要的是,信号不能在错误的时间到达芯片的不同部位,否则芯片可能会变慢或无法如预期运行。时钟信号(clock signal)确保系统的所有部分同时收到时钟信号。如果芯片的一侧认为自己正在为某个时钟周期(clock cycle)计算结果,而芯片的另一侧却已经完成了同一个时钟周期,就可能产生计算错误。
你可以把这个过程想象成一队消防员用水桶接力扑火,就像图 3-3 所描绘的那样。当每个人同时传递水桶时,这条传递链的效率最高。链条从一名消防员开始,他从水箱中舀水装入水桶,然后传给队伍中的第二名消防员。这名消防员随即拿起另一个水桶传给第二名消防员,同时第二名消防员将第一个水桶传给第三名,并准备接收第二个水桶。每个水桶沿着「关键路径(critical path)」一路传递下去,直到到达站在火边的最后一名消防员。那名消防员将水「信号」泼向火焰。如果某名消防员传递水桶的速度太慢,他就没有足够的时间转身接收下一个水桶。随着传递速度加快,消防员就更容易洒出水,或被迫减慢传递节奏。同样地,如果芯片某部分的时序与为设备其余部分设定处理节拍的时钟「失步」,指令就可能无法在下一个时钟边沿(也称捕获边沿,capture edge)之前完成。失败并非不可避免——正如消防员减速或节奏不对未必就扑不灭火一样。实际情况是,系统会减速,那些执行更快的指令被迫等待被延迟的指令。尽管不一定导致故障,但这类时序问题会对系统性能产生显著的负面影响,是芯片设计中的关键考量。
![]()
图 3-3 时钟周期与系统时序——消防员接力类比
图中英文标注:Critical Path=关键路径,Instructions and Data=指令与数据,Signal=信号,Timing Issue=时序问题。消防员接力传递水桶,对应数字电路中时钟信号在各级流水线阶段的逐级传递。
用于计算和验证数字电路预期时序的常用仿真方法称为静态时序分析(STA,static timing analysis)。静态时序分析确保所有逻辑路径彼此之间均能正确定时,从而杜绝任何时序错误的发生。
我们将在后续章节「模拟」、「存储器」和「常见芯片架构」中更详细地讨论信号与时钟频率。
验证(Validation,也称物理验证或后端验证,Physical Verification / Back-End Verification)——一旦电路准备好投入制造,就会生成一个 GDS 设计文件,其中包含晶圆厂(fab)所需的全部信息,包括晶体管配置、互连网络以及其他将被蚀刻到硅衬底上的功能元件。在生成要发送到半导体工厂(即晶圆厂)的 GDS 文件之前,验证工程师(validation engineer)需要复核芯片的可制造性。他们通过使用 EDA(电子设计自动化,Electronic Design Automation)软件工具,如设计规则检查器(DRC,Design Rule Checkers),来验证芯片是否符合所选代工厂的所有规则。约束条件涵盖范围很广,从芯片尺寸到导线和晶体管之间允许多近的间距都有规定。你可以把这些验证工程师想象成在建造整个住宅社区之前,对你的「样板」住宅单元进行检查的督察员。
GDS II 文件生成(GDS II Generation)——GDS II 是一种标准化格式,用于在集成电路设计周期结束时将完成的设计发送给晶圆厂(Rubin, 1993)。你可以把它想象成项目完成后发给上司的一份 Word 或 Excel 文件,只不过这个文件包含了数百万美元工程才智的结晶,以及一个准备好投入制造的最终芯片设计。从事数字项目的物理设计工程师常用「RTL-to-GDS」这个说法来描述自己的工作,指的正是将前端 RTL 设计转化为可制造 GDS 的物理设计过程。在许多公司,生成 GDS 文件并将其发送给代工厂的这一过程仍被称为「流片(tapeout)」。这个术语源于半导体行业的早期,那时最终的 GDS 文件会被保存到一盘大磁带上,再运送到代工厂,或许就是在硅谷从工程楼步行到晶圆厂。所幸如今这些文件可以在几分钟内通过 FTP 传送到世界各地。
请注意,图 3-4 展示的是芯片设计与建筑流程的类比,为便于说明,我们将第 4 步和第 5 步描绘为已完成引脚封装的成品。在现实中,物理设计流程的输出结果是芯片版图,而不是一颗已完成封装的集成电路。
制造(Manufacturing)——每个「i」都点上了点,每个「t」都画上了横,你的团队将完成的 GDS II 文件发送到了晶圆厂,是时候制造集成电路了。对于微电子学而言,这绝非小事一桩。数十亿个相互连接的晶体管和其他电气元件可以集成在单块芯片上,而制造过程既不简单,也不廉价,甚至可能耗费极长的时间。从发送 GDS 文件到拿到成品晶圆(wafer),现代工艺可能需要 12 至 16 周以上。我们将在下一章「半导体制造工艺」中详细介绍众多相关流程和技术。
我意识到这些信息量有些庞大,因此简要回顾一下,半导体设计流程的六个步骤是:
系统架构。
前端设计。
设计验证。
物理设计。
验证。
将 GDS 设计文件发送至晶圆厂进行制造。
![]()
图 3-4 半导体设计流程——构建电路(续)
图中英文标注:Step 1 System Level Architecture=第 1 步 系统架构,Step 2 Front End Design (RTL)=第 2 步 前端设计(RTL),Step 3 Design Verification (UVM)=第 3 步 设计验证(UVM),Step 4 Physical Design (RTL to GDS)=第 4 步 物理设计(RTL 到 GDS),Step 5 Back End Validation=第 5 步 后端验证,Step 6 Manufacturing & Assembly=第 6 步 制造与组装;建筑类比各步骤:Building Architecture=建筑设计,Building Schematics=施工图,Verify Building Schematics=验证施工图,Prototype Housing Unit=样板住宅单元,Prototype Housing Inspection=样板住宅检验,Housing Community=住宅社区。
EDA 工具
EDA 是「电子设计自动化(electronic design automation)」的缩写,也称 e-CAD(电子计算机辅助设计,electronic computer-aided design)。单块芯片上可集成多达数十亿个元件,架构师和设计师无法仅凭一张纸就勾勒出芯片设计方案。EDA 工具贯穿整个设计流程,帮助硬件工程师和芯片设计师构建电子系统。在 EDA 出现之前,集成电路只能靠手工逐个布局,过程缓慢而费力。当设计规模仅有几百个晶体管时,这还勉强可以应对;但在今天,这已完全不可行。为应对整个设计流程中的各种挑战,EDA 供应商开始开发工具,将从功能验证到高层次综合的一切流程自动化、流线化(Nenni & McLellan, 2014)。EDA 公司还协助开发并推广了 VLSI HDL,如 Verilog 和 VHDL,从而实现了设计流程的自动化,并推动了进一步的技术发展(Nenni & McLellan, 2014)。
EDA 工具市场规模在 2020 年约为 110 亿美元,预计到 2026 年将增长至超过 210 亿美元(Mordor Intelligence, 2021)。三家最大的 EDA 工具公司分别是 Cadence、Synopsys 和 Mentor Graphics。
我们已经深入探索了半导体价值链的第二个阶段,跟随芯片从系统架构师的构想到可投产蓝图的完整旅程。一个优秀的设计本身,不比你梦想家园的一张图纸更有用——我们走到了中途,但距离真正「走进前门」还差得远。接下来,我们将介绍价值链中的第 3 步——让我们来看看芯片这根「香肠」究竟是怎么做出来的。
本章小结
在本章中,我们将电子系统拆解为五个不同的层级——器件、PCB、封装、裸片和元件——每个层级都建立在下方更小抽象层级的基础之上。随后,我们深入探讨了硅设计流程:从系统架构出发,历经前端 RTL 设计与验证,再经高层次综合过渡到后端物理设计与验证流程。物理设计的五个主要步骤——高层次综合(HLS)、设计网表、平面规划、布局布线和时钟树综合——最终汇聚成一个可发送给晶圆厂进行制造的 GDS II 文件。最后,我们了解了 EDA 工具如何降低了这一繁复且复杂设计周期的成本与难度!
个人半导体认知测试(SAT)
为了确保你在阅读本书过程中的知识积累是层层递进的,以下是五道与上一章内容相关的测试题。
我们讲到了哪五个电子层级?所有更高层级都建立在哪个层级之上?
你能说出集成电路设计流程的每个阶段吗?每个步骤与建筑类比中的哪个环节对应?
仿真验证、功能验证和形式验证之间有何区别?各自的优缺点是什么?
硅设计流程中哪个阶段代表前端设计与后端设计之间的过渡?这一阶段发生了什么?
EDA 工具如何帮助硬件设计师构建更优质的系统?