# eda_doc **Repository Path**: xmc_whxx/eda_doc ## Basic Information - **Project Name**: eda_doc - **Description**: EDA Documentation - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-31 - **Last Updated**: 2026-08-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # eda_doc — 厂商 EDA 文档加工工程 **本项目总管所有厂商 EDA 文档**:拉取 → 转换 → 清理 → 索引 → 使用的流水线工程。 原始文档在内网(**HTML 或 PDF,视厂商发布格式而定**),经中转机拉到本地;统一转换成本工程的 Markdown 并建索引(各厂商 `INDEX.md`),**供需要的工程检索/阅读**。 厂商**不限于外国厂商**:当前有 Cadence、Mentor/Calibre、华大九天(Empyrean,国产),后续会加 Synopsys 及更多厂商,每个厂商一个一级目录。 与 `qa_utils`(`xmc/qa_utils`)同级,独立 git 仓库(`gitee.com:xmc_whxx/eda_doc.git`)。 ## 目录结构(按厂商一级) ``` eda_doc/ README.md # 本说明 .gitignore # 忽略 **/raw/(原始 HTML 不入库) sync.sh # 中转机同步(开发双向 / 验证单向,见下) scripts/ html2md.py # 通用 HTML→MD 转换器(lxml,1:1,目录镜像) pdf2text.py # PDF→可检索文本(pymupdf) copy_files.sh # 按后缀批量复制到当前目录(保留子目录结构) cadence/ # 厂商一级:Cadence raw/ # 原始 HTML + PDF(内网→中转机拉来;gitignore,本地保留) md/ # 转换后的 Markdown(入库:HTML→md + PDF→文本) samples/ # 厂商自带 SKILL 示例代码(入库,窗体/菜单/绑定键写法参考) INDEX.md # 中文索引:能查什么、在哪个文件 README.md # 本厂商范围、再生成、已知说明 mentor/ # 厂商一级:Mentor (Calibre Interactive,现 Siemens EDA) raw/ # 原始 PDF(gitignore,本地保留) md/ # PDF→文本转换版(入库) INDEX.md empyrean/ # 厂商一级:华大九天 (Empyrean),国产厂商首个实例 smcb2/ # 工具二级:SMCB2 Memory Compiler(含 Relit 平铺引擎) raw/ md/ # 原始 PDF(gitignore)+ 转换文本(入库) skipper/ # 工具二级:Skipper 超大版图布局平台 raw/ md/ INDEX.md README.md pyaether/ # 工具二级:PyAether Python 版图 API raw/ INDEX.md README.md # Sphinx HTML 直存 raw/(不入库) INDEX.md README.md synopsys/ <更多厂商>/ # 将来新厂商,结构同上 ``` ## 流水线 1. **拉取**:内网厂商文档 → 中转机 → 本地 `eda_doc//raw/`。 2. **转换**:按需对子集转换(不同厂商 HTML 结构可能不同,先微调 `scripts/html2md.py`): ```sh python scripts/html2md.py cadence/raw/skuiref cadence/md/skuiref python scripts/html2md.py cadence/raw/sklangref cadence/md/sklangref # ... 每个实际用到的子集一条 ``` 3. **清理**:去导航/页脚噪音、统一锚点、修实体,各厂商规则放各自目录。 4. **索引**:写 `/INDEX.md`,中文说明有什么、能查什么、在哪个文件。 5. **使用**:`grep -rn "函数名" eda_doc//md/`,或直接读 md。 ## 多机同步 ``` 开发机 <-> 中转机 双向 (origin) 验证机 -> 中转机 单向 (internal, 只拉不推) ``` - `sync.sh` 在**中转机**上跑:开发机、验证机都可能提交修改,都在中转机合入 `main`。 - 合并结果只**推回 origin(开发侧)**;`internal`(验证侧)**从不回推**——验证机保持单向。 - 开发机不用本脚本,直接 `push/pull origin` 即可;中转机把验证机改动合进来推回 origin 后,开发机 `pull` 就拿到了。 - 前置(中转机一次):`git remote add origin <开发侧URL>`、`git remote add internal <验证侧URL>`。 - 用法:`./sync.sh`(自动)或 `DRY_RUN=1 ./sync.sh`(只检查不推送)。 ### 验证机提交规范 **原始文档(PDF/HTML)不要直接 `git commit` 进仓库**——`raw/` 一律不入库(`.gitignore` 排除 `**/raw/`)。验证机侧拿到厂商文档后: 1. 原始 PDF/HTML 放本机 `//raw/`(本地保留,不入库)。 2. 转换后只提交 `md/`(PDF→文本、或 Cadence HTML→md);Sphinx 等结构良好的 HTML 直存 `raw/`,只提交 `INDEX.md`/`README.md`。 3. 原始大文件(如 39MB skipper PDF、218MB pyaether HTML)若直接入库,会永久占 git 历史体积,且开发机每次 `pull` 都要重新整理一遍——历史已有记录(skipper/pyaether 两批),别再新增。 ## 当前状态 - **cadence/**:已转换 4 套 SKILL 参考(589 md): | 目录 | 内容 | 文件数 | |---|---|---| | `md/skuiref/` | UI:窗体 `hi*`、菜单、进度、绑定键 | 24 | | `md/sklangref/` | SKILL 语言/系统函数(每函数一文件) | 497 | | `md/skdfref/` | Design Framework:触发器/数据库/图形编辑 | 23 | | `md/skipcref/` | SKILL IPC:进程通信 | 45 | - **cadence/** 另含 PDF→文本 2 个:`md/maeSKILLref.md`、`md/quantusUser.md`(raw/ 里的 `skipcref.pdf`/`skuiref.pdf` 是已有 md 的 PDF 版,无需再转)。 - **mentor/**:PDF→文本 3 个(Calibre Interactive quick ref + 用户指南 ×2,见 `mentor/INDEX.md`)。 - **empyrean/**(华大九天,国产):三个工具目录——`empyrean/smcb2/`(SMCB2 10 份,含 Relit 平铺引擎)+ `empyrean/skipper/`(Skipper 版图平台 9 份)+ `empyrean/pyaether/`(PyAether Python API,HTML 直存 raw/ 不入库),见 `empyrean/INDEX.md`。 - `sklayoutref`(版图 db/le/ge,1798 文件)**未转**——新 layout_qa 核心是 python/klayout,用不到;需要时一条命令补齐。 - `raw/`(HTML+PDF 源)不入库(体积大、可能有授权限制);`md/`、`samples/` 入库,各机可同步。 ## 已知说明 - 跨文件链接已改写 `.md`;HTML 的 `#id` 精确锚点已丢弃(不影响检索)。 - 个别转换小瑕疵(段落误入 `
`、标题偶重复、表格换行)不影响阅读/检索。