全面解析 ASIC 设计流程:从需求到量产
典型设计流程遵循以下结构,可分解为多个步骤,部分并行、部分顺序进行。我们来看看当今行业中典型的项目设计周期。
需求分析
半导体公司的客户通常是计划在其系统或终端产品中使用芯片的其他公司。因此,客户需求在决定芯片设计方式上起关键作用。第一步自然是收集需求、评估终端产品市场价值,并评估项目所需资源。
规格制定
下一步是收集“规格”,抽象描述芯片的功能、接口和整体架构。例如:
- 需要运行图像算法以支持虚拟现实的计算能力
- 需要两个 ARM A53 处理器,带一致性互联,运行频率 600 MHz
- 需要 USB 3.0、蓝牙和 PCIe 2.0 接口
- 需支持 1920x1080 像素显示及相应控制器
架构设计
架构师给出芯片系统级运作视图:决定所需组件、时钟频率、功耗性能目标,以及数据流向。例如处理器从系统 RAM 获取图像数据执行,同时图形引擎处理前一批后处理数据等。
数字设计
现代芯片复杂,无法从零构建,大量组件复用。例如公司 X 需 FlexCAN 模块用于汽车电子,可购买现成设计或自行开发。不现实从触发器、CMOS 晶体管等基础单元设计。代わりに,使用 Verilog 或 VHDL 等硬件描述语言开发行为描述,分析功能、性能等高层问题。这通常由数字设计工程师完成,类似具备数字电子技能的高级程序员。
功能验证
RTL 设计完成后需验证功能正确性。例如 DSP 处理器应发起总线事务从内存取指令,如何确保按预期工作?此时需要功能验证,借助 EDA 仿真器建模设计并施加激励。这是前硅验证工程师的工作。
为节省时间并达成功能收敛,设计和验证团队并行工作:设计团队“发布” RTL 版本,验证团队开发测试平台和测试用例测试该版本功能。若测试失败,表明设计有问题,将在该设计元素上提出“bug”,需在下一版 RTL 中修复。此过程持续直到对设计功能正确性有足够信心。
逻辑综合
设计确认无误后,将其转换为包含组合门和触发器等真实元件的硬件原理图。此步骤称为综合。逻辑综合工具将 HDL 中的 RTL 描述转换为门级网表,即用门及其连接描述电路。网表示例:
and_2_0 u_and2_0 ( .in_a (_net_112), .in_b (_net_56), .out (_net_222));
ff_lt u_ff_lt_122 (.d (_net_222), .clk (_net_11), .q (_net_76));
逻辑综合工具确保网表满足时序、面积和功耗规格。它们通常访问不同工艺节点和数字单元库,智能计算以满足各项指标。这些库来自提供触发器建立/保持时间、组合门输入输出时间等数据的晶圆厂。
逻辑等价性检查
门级网表需与 RTL 进行逻辑等价性检查,有时进行“门级验证”,即在更低抽象层级重新验证某些元素。由于设计包含大量元件并带有回标延迟信息,仿真时间会变慢。
布局布线
网表输入物理设计流程,在 EDA 工具辅助下进行自动布局布线 (APR/PnR)。典型工具如 Cadence Encounter 和 Synopsys IC Compiler。此步骤将标准单元放置在行中,定义 IO 球图,创建金属层,插入缓冲器满足时序。完成后生成版图并送制造。此阶段由熟悉工艺节点和物理实现细节的物理设计团队处理。
芯片验证
流程未结束。样片由同一半导体公司制造或送第三方晶圆厂(如台积电、格罗方德)。样片经历后硅验证,工程师在测试机上运行不同测试向量。后硅验证比前硅验证难得多,因为芯片内部节点可见性大幅降低。百万时钟周期在一秒内完成,回溯错误时刻耗时。若发现真实问题或设计 bug,需在 RTL 修复、重新验证并重新执行后续所有步骤。
尽管设计流程步骤众多,大量设计活动集中在 RTL 描述的优化和验证上。注意:虽然有 EDA 工具自动化流程,但使用不当会导致设计低效,设计师必须在过程中做出有意识的选择。
Verilog