rbpu_datasheet/CLAUDE.md

6.0 KiB
Raw Blame History

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

本项目是 RBPU16 读出基带处理芯片 的数据手册datasheet/user manual。RBPU16 是一款用于超导量子比特态信息读出的 SoC 芯片,最大支持 16 个量子比特并行读出,内部集成 PLL、ADC、DAC、DSP 等模块。

手册基于纯文本管理,通过 Python 脚本生成精美的 HTML 和 PDF 报告(参考 AD9164 数据手册风格)。

文件结构

路径 用途
chapters/*.md 手册章节源文件Markdown按章节拆分纯文本 git 友好)
chapters/appendix/*.md 附录(运维手册、配置用例)
data/pin_name.csv 管脚定义表(编号、名称、类型、描述)
data/pin_loc.csv 管脚物理位置网格表(行×列 → 信号名)
data/seg_define.csv 寄存器地址段定义(功能模块→子模块→起始地址→大小)
data/ids.json 寄存器详细定义 JSON由 XLS 生成,供脚本读取)
assets/ 手册内嵌图片(框图、管脚图、协议图等 PNG/JPG 文件)
templates/ Jinja2 模板base HTML + macros + CSS
templates/css/report.css 报告样式表AD9164 风格,支持打印和屏幕)
templates/macros/ 可复用 Jinja2 宏(管脚表、寄存器表、地址映射表)
build.py 主构建脚本(一键生成 HTML + PDF
requirements.txt Python 依赖Jinja2, markdown, Pygments, WeasyPrint
output/ 构建产物gitignore
script/ids_import.ipynb Jupyter notebook解析 读出子系统IDS表.xls 生成 data/ids.json
script/读出子系统IDS表.xls 寄存器详细定义 Excel多 sheet

旧文件(过渡期保留)

路径 说明
读出芯片用户使用手册.md 旧 MPE 单文件手册(过渡期保留,不再更新)
读出芯片用户使用手册.html 旧 MPE 导出 HTML
specification.md 旧 SPI/LVDS 规格(内容已合并到 chapters/
pin_name.csv (root) 旧位置(已复制到 data/
pin_loc.csv (root) 旧位置(已复制到 data/
seg_define.csv (root) 旧位置(已复制到 data/
ids/ 旧位置JSON 已复制到 data/ids.json
pin_loc.xlsx 旧 Excel 文件

构建流程

一键构建

# 安装依赖
pip install -r requirements.txt

# 构建 HTML + PDF
python build.py

产物输出到 output/ 目录:

  • output/RBPU16 读出基带处理芯片_数据手册.html
  • output/RBPU16 读出基带处理芯片_数据手册.pdf

构建步骤build.py 内部流程)

  1. 加载数据源:data/*.csv + data/ids.json
  2. 初始化 Jinja2 模板引擎
  3. 处理章节文件:chapters/*.md
    • 识别 <!-- MACRO: xxx --> 标记并替换为 Jinja2 宏渲染的 HTML
    • Python-Markdown 将 Markdown 转为 HTML
  4. 生成目录 (TOC)
  5. 渲染完整 HTML封面 + TOC + 章节 + 修订历史)
  6. WeasyPrint 将 HTML 转为 PDF

宏标记说明

章节 Markdown 文件中使用 <!-- MACRO: xxx --> 注释标记来指示脚本动态生成表格:

宏标记 功能 数据源
<!-- MACRO: pin_table --> 渲染管脚描述表 data/pin_name.csv
<!-- MACRO: pin_loc_grid --> 渲染 BGA 焊球网格 data/pin_loc.csv
<!-- MACRO: address_map --> 渲染地址映射总表 data/seg_define.csv
<!-- MACRO: register_table --> 渲染完整寄存器定义 data/ids.json

寄存器定义更新流程

当 XLS 寄存器定义文件更新后:

  1. 在 VS Code 中打开 script/ids_import.ipynb,运行所有 cell
  2. notebook 解析 script/读出子系统IDS表.xls 的多个 sheet
  3. 输出为 data/ids.json
  4. 运行 python build.py 重新构建手册

章节编辑指南

添加新章节

  1. chapters/ 下创建新 .md 文件
  2. 文件名格式:{序号}_{英文名}.md(如 10_timing_diagrams.md
  3. 文件以 # 章节标题 开头
  4. 运行 python build.py 验证

修改管脚定义

  1. 编辑 data/pin_name.csv(或根目录 pin_name.csv,然后复制到 data/
  2. 运行 python build.py,管脚表自动更新

修改寄存器定义

  1. 编辑 script/读出子系统IDS表.xls
  2. 运行 script/ids_import.ipynb 更新 data/ids.json
  3. 运行 python build.py,寄存器表自动更新

修改样式

编辑 templates/css/report.css

  • CSS 变量(颜色、字体、间距)在 :root 块中
  • 打印样式使用 @page 规则
  • 屏幕样式使用 @media screen

技术栈

  • 模板引擎: Jinja2 — Python 标准Flask 生态
  • Markdown 解析: Python-Markdown + extensions (tables, codehilite, toc, fenced_code)
  • HTML→PDF: WeasyPrint — 纯 PythonCSS Paged Media
  • 代码高亮: Pygments — Python-Markdown codehilite 依赖
  • 数学公式: KaTeX — CDN 加载HTML 中动态渲染
  • 图表: Mermaid — CDN 加载(当前手册未使用)

关键约定

  • 所有文档内容为中文技术术语保留英文缩写ADC、DAC、PLL、LVDS、SPI、AWG、DAQ、MCU、NCO 等)
  • 管脚编号采用 BGA 网格命名(字母行 + 数字列,如 F4、G7
  • 地址和寄存器偏移使用 24 位十六进制表示(如 0x100000
  • SPI 协议格式1 bit R/W + 25 bit addr + 5 bit chip_id + 1 bit reserved + N×32 bit data
  • LVDS 协议帧格式4 bit header + 16/32/64/128 bit payload + 8 bit CRC8
  • 章节文件命名:{序号}_{英文名}.md,序号决定章节顺序
  • 图片路径:相对于 repo 根目录,从 assets/ 引用

PDF 生成注意事项

WeasyPrint 需要系统依赖:

  • Windows: 通常开箱即用
  • macOS: brew install pango cairo
  • Linux: apt install libpango-1.0-0 libpangocairo-1.0-0

中文 PDF 字体:若系统缺少中文字体,可在 CSS :root 中调整 --font-body--font-heading 变量,使用系统可用字体。