用途:把用户基于 CATLASS 开发算子的需求,转化为具体的设计文档。核心工作流为需求分析 → 阅读 catlass 仓库 → 组件选型 → 输出设计文档。
前置条件:catlass 仓库须在 OPS_PROJECT_ROOT 下可访问(含 include/、examples/);设计前必须阅读本 skill 的 references/ 文件,包括 design-document.md(设计文档模板)、matmul-templates.md(模板清单与选型指南)、epilogue-components.md(Epilogue 组件分类与组合模式)、custom-epilogue.md(自定义 Epilogue 契约)。
命名要求:op_name 为 snake_case 且必须包含子串 catlass,例如 catlass_matmul_add、catlass_fused_gemm_bias;禁止单独使用 matmul_add、gemm_add 等短名。OpDef/类名为 CamelCase 并与目录名一致映射,如 CatlassMatmulAdd、ops/catlass_matmul_add/。
选型与适配:从 catlass example 和 include 中确定所用模板,而非整份粘贴 example;多数算子工程基于 msopgen 小工程,example 中的 Host 调用代码需改写为 op_host/op_kernel 分离结构;设计阶段只产出选型决策,代码由 code-gen 生成。
需求输入:需确认 op_name(须含 catlass)、功能要点、I/O 与 dtype、布局、目标 SoC、参考 example、约束条件;信息不足时继续追问,不臆测需求。
组件选型:在设计文档中用概念表格记录,不写代码,须显式写出 ArchTag、BlockMmad(L1/L0 TileShape、数据类型)、BlockEpilogue(各环节 Tile/Block 组件)、BlockScheduler、Kernel 类型。Epilogue 在 epilogue-components.md 与 catlass/include/catlass/epilogue/tile/ 中检索,无现成 Tile 时按 custom-epilogue.md 先写设计契约。
输出:独立 Markdown 文件,建议命名 design_<op_name>.md,存放于 USER_OP_PROJECT 或用户指定路径。章节含概述、输入输出信息表、核心组件选型、参考 Example 与模板选型、TilingKey 分支设计、Workspace、接口与使用、扩展性、实现方案纲要。
限制:NEVER 使用不含 catlass 的算子名定稿设计、整份照抄 example、在文档中写大量代码块、信息不足时臆测需求;ALWAYS 算子名含 catlass、目录名与类名一致映射、条件不明则追问、设计前存在并阅读 catlass 仓库、用选型表格描述组件。