设计流程自动化(DFA:Design Flow Automation)
—— 把经验固化为可重复执行的流程
- 支持把综合、布局布线、签核等步骤配置为**标准流程**,一键触发执行。
- 与 DVC / DQI 集成:输入输出都对应清晰的版本与质量记录。
- 对于跨项目共用的流程,可作为企业级**最佳实践**沉淀在平台上。
设计流程是芯片设计的方法实践,资深的流程设计师将芯片实现和验证的方法具体化成可执行的脚本,让经验不足的团队成员也能通过此设计流程来达到相当水平的成果,因此设计流程是一种传承也是公司重要的资产,因此将设计流程标准化是必要的。
DFA设计流程将传统流程拆解为给用户使用的流程书签(DFA Ticket)与流程方法脚本(DFA Flow DEFINITION与script)两大部分。
DFA是什么?
Flow 相当于规划好的火车路线图,描述的是各个 STEP(流程节点)之间的关系,也就是从哪一站到哪一站该交付什么数据(input/output 的对接关系)。它定义了流程的结构与逻辑顺序,就像是火车站与火车站之间的连接。
Ticket 则像是一张实际的车票,它具体说明了这一次要「从哪个起点出发(DB_SRC)」到「哪个终点抵达(DB_DST)」,代表某次实际执行时的路线选择与数据源/目的地设定。Ticket 中也会包含这段旅程中需要携带的条件(如参数、环境、执行策略等)。

流程书签(DFA Ticket) 是什么?
在DFA系统中,DFA Ticket 是一个关键的介面文件,就如同一张食谱,描述了整个EDA流程的组合方式与执行细节。其主要功能如下:
- 📘 定义流程: 指定要执行的 DFA Flow(方法论与执行逻辑)
- 📘 指定参数: 描述 DFA Flow 需要的各项参数(例如:salt、sugar,即具体执行时的条件与设置)
- 📘 整理资料: 指明输入与输出资料,并规划资源配置(像是EDA工具版本、目录结构等)

DFA Ticket 就像是食谱
整个流程可比拟为「煮一碗好面」的过程:
- 食材与原料:代表我们的设计资料与IP元件(inputs)
- DFA Flow:就像烹饪的方法(Methodology),决定食材如何处理、顺序为何
- DFA Flow Parameter:则是配方(Formula),像盐和糖的比例,具体决定每步的执行条件
- DFA Ticket:汇整了上面所有资讯,像是一份食谱,清楚记录该怎么做
- DFA System:厨师角色,根据食谱执行整个过程(DFA 系统读取 ticket,执行 flow)
- DFA Well-Prepared EDA Environment:最终产出的是一个准备妥当的 EDA 环境(就像是一碗可享用的好面)
DFA Flow Automation的精神是Ticket Driven Design Flow
Design Flow Automation(DFA)是一种用于自动化晶片设计流程的标准化系统,透过 Ticket 驱动、结构化流程与图形介面管理,实现高效率、可重复、可追踪的设计分析环境。
核心特点:
- 🔷 Standardized Flow Definition and Script
所有设计流程皆透过标准化语法与脚本定义,确保每次执行皆一致、可再现,并具备版本控制能力。 - 🔷 Ticket Driven Design Flow
Design flow的每个Step之执行都由一份 DFA Ticket 来驱动,其内描述了流程配置、输入输出、参数条件等,如同工作单据,便于自动化排程与追踪。 - 🔷 Pre-defined Combinational Hierarchical Flow
预先定义好一套组合式且支援阶层式模组的设计流程,支援大规模设计拆分与整合,适用于阶层化SoC分析。 - 🔷 Job Manager GUI
透过图形化介面可操作流程提交、监控进度、检查log与结果报告,降低进入门槛并提升生产力。

在实务上, 执行Ticket Driven设计流程
以 Ticket 为核心的专案执行机制
在 DFA 系统中,设计流程采用 Ticket 机制进行驱动与管理,使专案执行更具结构性与协作效率。其流程如下:
- Function Lead建立 Ticket
由 Function Lead(功能负责人)负责建立并设定 Ticket,明确定义该任务所需的输入资料(如 netlist、layout、constraints 等),并指派给相关成员。 - 团队成员认领与修改 Ticket
被指派的成员可从系统中 Check-out 对应的 Ticket,并根据需求进行内容修改、参数设定或新增任务配置。 - Ticket 执行与客制化流程建置
成员依据 Ticket 内容建立对应的目录结构,并可根据实际需求进行 flow script 的调整与客制化,最终执行整体设计流程。
这样的设计方式可确保每一项设计任务的资料一致性、版本可追踪、流程可复制,同时提升团队协作与自动化程度。
DFA结合 DVC 架构
结合 DVC 架构后,Ticket 驱动的设计流程不仅实现标准化与自动化,更具备强大的版本追踪与比较能力。
透过版本化管理,我们可以轻松比较不同设计阶段(如 20250217 与 20250218)之间的差异,包括:
- 🔹 Flow 配方(Parameter Formula)的变动
- 🔹 所用 EDA 工具版本差异
- 🔹 设计数据(Netlist、DEF 等)的变更
- 🔹 Techlib 技术资料库的更新情况
这些比对机制让问题定位更快速、准确。
此外,任何时刻都可回溯并提取先前版本的 Ticket,完整重现当时的设计环境与结果,有效支援设计流程的可追踪性与可重制性,并进一步促进设计方法论的优化与精进。
以下为RC Extraction的流程书签范例, DFA RC Extraction流程设计者已将方法(Methodology)与经验设定包裹在自动化流程内,用户只需要在书签上指定必要的文档路径就可完成高质量的RC Extraction。
[HEADER]
## DESCRIPTION : flow name & run directory
## ARGUMENT : < flow_name:run_dir_name >, ex. 510_RCX:rcxt_spef
FLOW_ID = 510-RCX:rcxt
## DESCRIPTION : techlib confilg file from TLM
## ARGUMENT : < techlib config file name >, ex.dfalib.cfg
TECHLIB = dfalib.cfg
## DESCRIPTION : source path from DVC
## ARGUMENT : < source path >, ex.phase/block/stage/v1
DVC_SRC = phase/block/stage/v1
## DESCRIPTION : destination path from DVC
## ARGUMENT : < destination path >, ex.phase/block/stage/v2
DVC_DST = phase/block/stage/v2
## DESCRIPTION : top module name
## ARGUMENT : < top module name >, ex.design
DESIGN = design
[INPUT]
## DESCRIPTION : input file of this flow
## ARGUMENT : < path | file_name >, ex. netlist.v
TOP_DEF_FILE = design.full_chip.def.gz
METAL_FILL_GDS_FILE = design_Dummy_BE.gds
[OUTPUT]
## DESCRIPTION : output file of this flow
## ARGUMENT : < output file_name >, ex. netlist.v
COUPLING_REPORT_FILE = couplingreport.rep
NETLIST_FILE =${DESIGN}.spef.gz
[PARAMETER]
## DESCRIPTION : PARAMETER of this flow
## ARGUMENT : < path | parameter >, ex. Typ_85c
MAPPING_FILE = /path/to/layers.map
CORNERS_FILE = ./script/corners.smc
GDS_LAYER_MAP_FILE = ./script/dummy_gds.map
SELECTED_CORNERS =Typ_85c
## DESCRIPTION : Script path of EDA tool
## ARGUMENT : <eda_tool_path_script>, ex. encounter
TOOL = synopsys_starrc_shell_U
## DESCRIPTION : Set tool option
## ARGUMENT : <eda_tool_options> ex. tool version, ...
TOOL_OPTION = -2022.12-SP5-2
## DESCRIPTION : Specify queue name
## ARGUMENT : [Local | BE | FE ]
## if QUEUE = Local, only run job in local machine
QUEUE = BE
## DESCRIPTION: Set queue option
## ARGMENT : <queue_options> #ex. slurm's options
QUEUE_OPTION = -mem=64G -c 4
我们也提供了一个流程追踪软件(如图所示),用户可一目了然各个流程工作间的关系,并可在此软件上控制各流程工作的执行与中断,并监控其运行状态。此外,此软件也会监控各流程工作所需文档是否有所更新,以实时提醒用户必须重新执行此流程工作。例如在后端(back-end)芯片验证流程时,其流程工作数目可达上千个,让人难以掌握,用此软件可大大提升用户的验证效率。



