跳转至

04 Canonical UQCI 模型

目的

本章定义 UQCI 的 canonical 内部模型。

语义归属

参考草案明确区分“语义归属”和“导出级别归属”:

  • UQCI 负责对象与执行意图的语义含义
  • OpenQASM Profile 负责导出层级与兼容呈现

因此,canonical 模型必须以 UQCI 为中心定义,而不能以任何单一 .qasm 表示为中心定义。

Canonical Program 结构

UQCIProgram 是 canonical 的内部程序表示。一个程序由有序操作序列及其元数据组成,这些元数据可影响验证、profile 选择、Bundle 组织、兼容导出与执行。

canonical 程序模型必须能够在编辑、验证、封装、导出与后端适配过程中持续保持其语义角色。

v0.1 的最小对象面

v0.1 的最小对象集合包括:

  • GateOp
  • PulseOp
  • MeasureOp
  • SweepOp
  • UQCIProgram
  • ExecutionPlan
  • RunResult

未来版本可以扩展更丰富的 timing、routing、calibration 与 runtime 对象,但这些扩展应建立在 canonical 模型之上,而不是绕过它。

操作语义

  • GateOp 表达与后端无关的逻辑门意图
  • PulseOp 表达脉冲级控制意图,但不强制单一物理载波模型
  • MeasureOp 以 backend-neutral 方式表达分类测量意图
  • SweepOp 表达参数扫描意图,而不绑定唯一执行策略

这些对象共同定义了一个可被验证器、兼容导出器与后端消费的语义层,而不会把语义解释权交给 backend-native 语法。

元数据与执行意图

参考草案始终把元数据视为与执行相关,而非纯说明性内容。程序元数据可以影响:

  • Bundle 打包
  • compatibility profile 选择
  • 诊断与可追踪性
  • 通过兼容扩展机制传递的后端提示

但元数据不得成为把 backend-private 语义偷偷塞回 canonical 层的通道。

后端无关约束

canonical 模型不得把以下内容硬编码为全局真相:

  • 厂商专有指令集
  • 单一硬件族群的端口命名
  • 某一类脉冲语法作为通用语义

这一点尤其重要,因为参考架构面向的正是物理技术路线差异显著的平台。canonical 层必须描述能够跨技术路线保持稳定的执行意图。

与 Sidecar 的关系

canonical 程序在实际执行中并不是孤立存在的。DeviceSpecCalSet 提供规范性的执行上下文,ManifestBundle 则提供封装与可追踪性。这些工件与 canonical 程序互补,但不会取代它。

与 Schema 的关系

canonical 模型应具有稳定的机器可读 Schema 表达。JSON Schema 用于形式化结构,但语义归属 canonical UQCI 模型本身,而非任何兼容导出 profile。

参考草案专门给出 UQCI Program Core Schema,就是为了强调这种独立性。在仓库原生形式中,这一原则应通过“模型与 Schema 对齐但不重复粘贴长清单”的方式继续保持。