📚 LibreLane RTL2GDS 教程示例
🔧 LibreLane 教程总览
官方教程: sscs-chipathon-2026/examples/librelane_rtl2gds_gf180
LibreLane 项目: github.com/librelane/librelane
内容: 5 个 Jupyter Notebook,引导从一段 Verilog 代码到符合 workshop padring 规范的制造级 GDSII
构建方式: 一个 YAML 配置文件 + 一个命令,LibreLane 编排上游 5 个开源 EDA 工具完成 RTL 到 GDSII
📖 Notebook 阅读顺序
| # | Notebook | 运行时间 | 状态 | 说明 |
|---|---|---|---|---|
| 00 | 00_slots_explained.ipynb | 2 min (只读) | ✅ | 理解 Slot 概念: 三个文件定义一个 Slot |
| 01 | 01_rtl2gds_counter.ipynb | 1-2 min | ✅ | 4位计数器 Classic Flow (无 padring) |
| 02 | 02_rtl2gds_chip_top_custom.ipynb | ≈80 min | ⏳ | Chip Flow: 自定义宏替换 SRAM, 层次化 |
| 03 | 03_rtl2gds_chipathon_use.ipynb | 35-45 min | ✅ | 核心 Notebook: chip_core 放入 workshop slot |
| 04 | 04_counter_alu_multimacro/ | 60-90 min | ✅ | 双宏 (counter+ALU) 独立硬化后缝合入 slot |
Notebook 01 — 计数器 Classic Flow
4位计数器 (🔧 Classic Flow)
最简单的入门 Notebook。将一段 4位计数器 Verilog 通过 Classic Flow 硬化为 GDSII,不带 padring。
| 特性 | 值 |
|---|---|
| RTL 模块 | 4-bit counter (递增, 同步使能, 异步复位) |
| 流程类型 | Classic Flow (单模块, 无 padring) |
| 工具链 | Yosys -> OpenROAD -> OpenSTA -> Magic + Netgen |
| 运行时间 | 1-2 分钟 |
| Signoff | Magic DRC = 0, LVS = 0, STA = 0 |
Notebook 03 — Chipathon 核心流程
chip_core 放入 workshop slot
这是 Waibibabu 中最重要的 Notebook。将你的 chip_core 放入 workshop slot,生成完整的带 padring 的 GDSII。
| 特性 | 值 |
|---|---|
| RTL 模块 | 你的 chip_core (替换 chip_core_multi.sv) |
| 流程类型 | Chip Flow (完整芯片, 含 padring) |
| Slot | workshop (2935um x 2935um) |
| 运行时间 | 35-45 分钟 |
| Signoff | Magic DRC = 0, LVS = 0, STA = 0 |
Notebook 04 — 多宏示例详解
双宏 (counter + ALU) 独立硬化后缝合
Waibibabu 验证最完整的示例: 两个宏独立硬化后缝合入 workshop slot,包含完整 cocotb 验证链。约 84,631 个实例,四轮 signoff 全部归零,端到端 2 小时 13 分钟。
RTL 模块
| 文件 | 说明 |
|---|---|
counter.sv | 8位递增计数器, 低电平异步复位, 同步使能, 每 256 周期环绕 |
alu.sv | 纯组合 4位 ALU, 8种操作: ADD, SUB, AND, OR, XOR, SHL, SHR, PASS |
alu_macro.sv | alu.sv 的 2级流水线包装 (输入寄存器+输出寄存器) |
chip_core_multi.sv | Chip Core 替换: 实例化两个宏 |
ALU 操作表
| op | 名称 | 结果 | 进位/借位 |
|---|---|---|---|
| 3'b000 | ADD | a + b | 进位输出 |
| 3'b001 | SUB | a - b | 借位 |
| 3'b010 | AND | a & b | 0 |
| 3'b011 | OR | a | b | 0 |
| 3'b100 | XOR | a ^ b | 0 |
| 3'b101 | SHL | a << b[1:0] | 末位输出 |
| 3'b110 | SHR | a >> b[1:0] | 末位输出 |
| 3'b111 | PASS | a | 0 |
验证时间线
| 步骤 | 耗时 | 说明 |
|---|---|---|
| cocotb RTL 仿真 | ≈15s | counter + alu 测试 |
| 硬化 counter 宏 | ≈1.5min | Classic Flow, signoff clean |
| 硬化 alu_macro | ≈1.5min | Classic Flow, signoff clean |
| cocotb 门级仿真 | ≈15s | counter.nl.v + alu_macro.nl.v + gf180 cells |
| 芯片级流程 (workshop slot) | 60-90min | Chip Flow + Magic DRC + Netgen LVS |
完整签名: 约 84,631 个实例,四轮 signoff (Magic DRC, KLayout DRC, Netgen LVS, OpenSTA) 全部归零,端到端总计 2 小时 13 分钟。
Notebook 02 — Chip Flow 自定义宏
完整 Chip Flow: 自定义宏替换 SRAM, 层次化宏路径
展示如何将自定义宏 (非 SRAM) 放入 Chip Flow 的完整流程。包含层次化宏路径管理和自定义 padring 配置。
| 特性 | 值 |
|---|---|
| 流程类型 | Chip Flow (层次化) |
| 运行时间 | ≈80 分钟 |
| Signoff | Magic DRC clean |
🎉 Quickstart
# 1. 启动容器 (首次约 18 GB 下载)
scripts/bootstrap_container.sh
# 2. 验证环境
scripts/verify_prereqs.sh
# 3. 打开 Notebooks
jupyter lab 00_slots_explained.ipynb