ASIC 设计流程

17 Mar 2025 | 5 分钟阅读

一个典型的设计流程遵循以下结构,可以分解为多个步骤。 其中一些阶段并行发生,一些阶段顺序发生。

ASIC Design Flow

要求

半导体公司的客户通常是其他公司,他们计划在其系统或最终产品中使用芯片。 因此,客户的要求在决定如何设计芯片方面也起着重要作用。

第一步是收集需求,估算最终产品的市场价值,并评估执行项目所需的资源数量。

规范

下一步是收集规范,以抽象的方式描述功能,接口以及要设计的芯片的整体架构。 这可以类似于以下内容:

  1. 需要计算能力来运行图像算法以支持虚拟现实。
  2. 需要两个具有相干互连的ARM A53处理器,并且应以 600 MHz 的频率运行。
  3. 需要 USB 3.0、蓝牙和PCIe第二代接口。
  4. 它应支持具有适当控制器的 1920x1080 像素显示器。

架构

现在,架构师给出了芯片应如何运行的系统级视图。 他们将决定需要哪些其他组件,它们应以什么时钟频率运行,以及如何满足功率和性能要求。

他们还决定数据应如何在芯片内部流动。 一个例子是处理器从系统内存中获取图像数据并执行它们时的数据流。 同时,图形引擎将执行从先前批次转储到内存另一部分的后处理数据,依此类推。

ASIC Design Flow

数字设计

由于现代芯片的复杂性,不可能从头开始构建某些东西,并且在许多情况下,许多组件将被重用。

例如,公司 A 需要一个 FlexCAN 模块来与汽车中的其他模块交互。 他们可以从另一家公司购买 FlexCAN 设计以节省时间和精力,也可以花费资源来构建一个。

从诸如触发器和 CMOS 晶体管之类的基本构建块设计这样的系统是不切实际的。

相反,开发一种行为描述,以使用硬件描述语言(例如VerilogVHDL)分析设计的功能,性能和其他高级问题。

这通常由数字设计师完成,类似于配备数字电子技能的高级计算机程序员。

验证

RTL 设计准备就绪后,需要对其功能正确性进行验证。

例如,DSP 处理器应发出总线事务,从内存中获取指令,并知道这将按预期发生。

此时需要功能验证,该验证是在 EDA 模拟器的帮助下完成的,该模拟器可以对设计进行建模并向其应用不同的刺激。 这是硅前验证工程师的工作。

ASIC Design Flow

为了节省时间并达成功能闭包,设计和验证团队并行操作,其中设计师发布 RTL 版本。 验证团队开发一个 testbench 环境和测试用例,以测试该 RTL 版本的的功能。

如果任何这些测试失败,则可能表明设计存在问题,并且会在该设计元素上提出“bug”。 此 bug 必须在设计团队发布的下一个 RTL 版本中修复。

这个过程一直持续到对设计的功能正确性有很好的信心为止。

逻辑综合

现在,我们将使用诸如组合门和触发器之类的真实元素,将此设计转换为硬件原理图。 此步骤称为综合。

逻辑综合工具能够将 HDL 中的 RTL 描述转换为门级网表。 该网表是以门及其之间的连接描述电路。

逻辑综合工具可确保网表满足时序、面积和功率规范。 通常,它们可以访问不同的技术节点工艺和数字元件库,并且可以进行智能计算以满足所有这些不同的标准。

这些库是从半导体制造厂获得的,这些制造厂提供了不同组件的数据特征,例如触发器的上升或下降时间,组合门的输入输出时间等。

逻辑等效性

检查门级网表与 RTL 的逻辑等效性。 有时,会再次执行门级验证,其中对某些元素再次进行验证,不同之处在于这次是在门级和较低的抽象级别。

由于设计中涉及的大量元素和反向注释的延迟信息,仿真时间往往较慢。

布局和布线

然后,将网表输入到物理设计流程中,在该流程中,借助 EDA 工具完成自动布局和布线。 Cadence EncounterSynopsys IC Compiler 是此类工具的很好的例子。

这将选择标准单元并将其放置在行中,定义输入和输出的球图,创建不同的金属层,并放置缓冲区以满足时序要求。

完成此过程后,将生成布局并通常将其发送用于制造。 此阶段通常由物理设计团队处理,他们非常熟悉技术节点和物理实现细节。

验证

样品芯片将由同一家半导体公司制造,或发送给第三方,例如 TSMCGlobal Foundries

现在,该样品经过一个硅后验证过程,另一组工程师在其中运行不同的测试器模式。 与硅前验证相比,在硅后验证中调试更困难,仅仅是因为芯片内部节点的可视性水平大大降低。

一百万个时钟周期将在 1 秒内完成,并且追溯到确切的错误时间将非常耗时。

如果在该阶段发现任何实际问题或设计错误,则必须在 RTL 中修复该问题,重新验证所有后续步骤,并且必须执行所有后续步骤。

即使设计流程中有很多步骤,但很多设计活动通常都集中在电路 RTL 描述的优化和验证上。

重要的是要注意,尽管有 EDA 工具可用于自动化该过程,但是不正确的使用会导致设计效率低下。 因此,设计人员必须在设计过程中做出有意识的选择。


下一主题设计抽象层