企业标准文件: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 执行机制

  1. dop ticket checkout → 获取标准 ticket
  2. dop ticket build → 根据 ticket 与 .dfd 组合成执行目录
  3. make run → 根据 Makefile 运行预检查、主流程、DQI 抽取
  4. make checkin → 将产出结果与数据写回 DVC

三、Ticket 结构

[HEADER]

定义 Ticket 的基本属性与执行设置。

域名说明格式
TITLEFlow 的简要描述本 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 中)
TOOLEDA 工具名称(如 encounter)任意文本,EDA 工具名称(如 encounter)
TOOL_OPTION工具版本与执行参数任意文本,工具版本与执行参数
QUEUE排程资源如 Local/FE/BE(可定义在 PARAM 中)
QUEUE_OPTIONQUEUE 提交参数如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 中会产生 run1run2 两个子执行目录,并根据 .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_SRCphase/block/stage/version固定四层
[HEADER]DVC_DSTphase/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"
    ]
}