企业标准文件:Flow Ticket 格式说明(T400-XXXX.stf)
一、简介
Flow Ticket 是用于描述一项主流程(flow_reference_id)及其输入、输出与参数定义的配置文件。该文件以人工撰写和阅读为主,支持结构化验证(Schema 检查)。
Ticket 文件主要由流程使用者(如设计工程师)编写和编辑,目标在于:
- 标准化流程执行输入
- 支持跨流程数据关联与版本管理
- 提供结构化的验证基础(JSON Schema)
- 与 DFA flow definition (.dfd) 结合执行设计流程
每个 Ticket 对应一个 DFA flow,通过 FLOW_ID 指定所采用的流程模板(.dfd),由使用者填写必要参数以生成可执行的设计工作环境。
二、设计概念
Ticket 作为流程接口定义
Ticket 定位为 “流程执行实例的入口描述”,与 .dfd 搭配使用:
- .dfd 描述流程的 静态结构(flow blueprint)
- Ticket 提供 动态输入(执行场景)
通过 symbolic link 机制(+、@),Ticket 可动态控制:
- 哪些输入/输出资源被链接
- 哪些参数被注入与覆盖
对应 DFA 执行机制
dop ticket checkout→ 获取标准 ticketdop ticket build→ 根据 ticket 与 .dfd 组合成执行目录make run→ 根据 Makefile 运行预检查、主流程、DQI 抽取make checkin→ 将产出结果与数据写回 DVC
三、Ticket 结构
[HEADER]
定义 Ticket 的基本属性与执行设置。
| 域名 | 说明 | 格式 |
| TITLE | Flow 的简要描述 | 本 ticket 的名称,一般为 TXXX_XXX 命名(如 T510_RCXT)任意文本 |
| FLOW_ID | 绑定的 flow 名称与执行子目录 主流程代号与 Ticket 执行路径: – 若无指定 ticket_run_dir_list,表示单一流程,其执行路径即为 flow_reference_id – 若需指定多重执行路径,格式为 flow_reference_id:ticket_run_dir1,ticket_run_dir2,… | 对应的 DFA flow 流程名称,与 .dfd 文件对应 flow_reference_id[:ticket_run_dir1,ticket_run_dir2,…] 格式为 flow_reference_id 或 flow_reference_id:ticket_run_dir1,ticket_run_dir2,… |
| TECHLIB | 指定技术库配置文件 | 工艺库配置文件,由 TLM 管理 .cfg 文件格式,可为相对或绝对路径 |
| DVC_SRC | 设计来源版本路径 | 设计版本管理来源与目标目录,由 DVC 控制 固定格式 phase/block/stage/version |
| DVC_DST | 设计目标版本路径 | 设计版本管理来源与目标目录,由 DVC 控制 固定格式 phase/block/stage/version |
| DESIGN | 本模块名称 | 任意文本,建议符合 TCL 命名规范 |
| PARAM | 流程中所需的变量或参数设置 | 如 Local/FE/BE(可定义在 PARAM 中) |
| TOOL | EDA 工具名称(如 encounter) | 任意文本,EDA 工具名称(如 encounter) |
| TOOL_OPTION | 工具版本与执行参数 | 任意文本,工具版本与执行参数 |
| QUEUE | 排程资源 | 如 Local/FE/BE(可定义在 PARAM 中) |
| QUEUE_OPTION | QUEUE 提交参数 | 如SLURM 提交参数(如 memory/core) |
[INPUT] / [OUTPUT]
定义该流程或其子步骤(sub-step)所需的输入与输出资源。
– 格式为: <step_dir_name>/input_id = 文件名(指定给子流程 step)
input_id = 文件名(指定给主流程)
– 左侧的 input_id 符号链接名称,必须符合 TCL 变量命名规范(不可包含 -、空格、数字开头)。
– <step_dir_name> 相对目录名称,对应 .dfd 中某个 STEP 名称。
[PARAM]
定义执行时所需的参数值,支持覆盖 .dfd 中 PARAM 默认值。
语法同 INPUT/OUTPUT,也可针对特定 step 指定参数:
– 可针对任一步骤指定参数。
– 语法为: <step_dir_name>/param_id = 参数值(指定给子流程 step)
param_id = 参数值(指定给主流程)
必要字段:
TOOL:EDA 工具名称(如 encounter)TOOL_OPTION:工具版本与执行参数QUEUE:执行资源指定(Local | FE | BE)QUEUE_OPTION:SLURM 提交参数(如 memory/core)
四、命名与格式规范
– 变数命名(Key):
– 必须符合 TCL 变量命名规则:开头不可为数字,不可含 “-“,可含 “_”,不含空格。
– step_dir_name:
– 必须为相对路径(例如:sub1/sta),不可为绝对路径。
– 技术库档案(TECHLIB):
– 仅接受 .cfg 文件格式,可为相对或绝对路径。
– 版本(DVC_SRC, DVC_DST):
– 格式为 phase/block/stage/version(例如:p1/b2/s3/v4)
多重 run_dir 支持
FLOW_ID 可指定多个执行子目录,格式:
FLOW_ID = 510-RCX:run1,run2
表示 ticket 中会产生 run1、run2 两个子执行目录,并根据 .dfd 重复展开。
支持 symbolic link 意义
所有 INPUT、OUTPUT、PARAM 所定义的 key-value,不会复制实际文件,而是通过 symbolic link 建立到 .design/、.script/、.techlib/ 等目录,确保流程间数据传递最小冗余与一致性。
五、附录:Schema 结构说明
| 区段 | 域名 | 必填 | 格式 | 限制 |
| [HEADER] | TITLE | 是 | 字符串 | 无 |
| [HEADER] | FLOW_ID | 是 | 字符串 | flow_id 或 flow_id:dir1,dir2 |
| [HEADER] | TECHLIB | 是 | 字符串 | .cfg 文件,相对或绝对路径 |
| [HEADER] | DVC_SRC | 是 | phase/block/stage/version | 固定四层 |
| [HEADER] | DVC_DST | 是 | phase/block/stage/version | 固定四层 |
| [HEADER] | DESIGN | 是 | 字符串 | TCL 命名建议 |
| [INPUT]/[OUTPUT] | <step_dir_name>/key 或 key | 否 | 字符串 = 文件名 | 相对路径、TCL 命名 |
| [PARAM] | <step_dir_name>/param_key 或 param_key | 否 | 字符串 = 值 | 相对路径、TCL 命名 |
Ticket Sample:
# Flow Ticket file (T400-XXXX.stf)
[HEADER]
TITLE = description of the flow ticket
# ticket_run_dir_list = ticket_run_dir1, ticket_run_dir2, ...
# if FLOW_ID = flow_reference_id
# there is no ticket_run_dir_list, it means a single ticket_run_dir and the ticket_run_dir is flow_reference_id
FLOW_ID = flow_reference_id:ticket_run_dir_list
TECHLIB = techlib_config_file
DVC_SRC = design_source_version_path
DVC_DST = design_dest_version_path
DESIGN = top_module_name
[INPUT]
<ticket_run_dir>/input_ref_id1 = input_file_name
<ticket_run_dir>/input_ref_id2 = input_dir_name
[OUTPUT]
<ticket_run_dir>/output_ref_id1 = output_file_name
<ticket_run_dir>/output_ref_id2 = output_dir_name
[PARAM]
<ticket_run_dir>/parameter_id1 = parameter_value1
<ticket_run_dir>/parameter_id2 = parameter_value2
Ticket Schema
{
"type": "object",
"properties": {
"HEADER": {
"type": "object",
"required": [
"TITLE",
"FLOW_ID",
"TECHLIB",
"DVC_SRC",
"DVC_DST",
"DESIGN"
],
"properties": {
"TITLE": {
"type": "string"
},
"FLOW_ID": {
"type": "string",
"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*(?::[a-zA-Z0-9_,/]+)?$"
},
"TECHLIB": {
"type": "string",
"pattern": "^.*\\.cfg$"
},
"DVC_SRC": {
"type": "string",
"pattern": "^[^/]+/[^/]+/[^/]+/[^/]+$"
},
"DVC_DST": {
"type": "string",
"pattern": "^[^/]+/[^/]+/[^/]+/[^/]+$"
},
"DESIGN": {
"type": "string"
}
}
},
"INPUT": {
"type": "object",
"patternProperties": {
"^(?:[a-zA-Z_][a-zA-Z0-9_]*/)?[a-zA-Z_][a-zA-Z0-9_]*$": {
"type": "string"
}
}
},
"OUTPUT": {
"type": "object",
"patternProperties": {
"^(?:[a-zA-Z_][a-zA-Z0-9_]*/)?[a-zA-Z_][a-zA-Z0-9_]*$": {
"type": "string"
}
}
},
"PARAM": {
"type": "object",
"patternProperties": {
"^(?:[a-zA-Z_][a-zA-Z0-9_]*/)?[a-zA-Z_][a-zA-Z0-9_]*$": {
"type": "string"
}
}
}
},
"required": [
"HEADER"
]
}
