01 · RNL 是什么
富含电路语义的网表
RNL 补齐网表与原理图之间的高层次语义缺失:结构、意图、画法
一个实际由 Agent 设计的 RNL 案例及渲染出的原理图
审查时不必逐行通读网表,只需核对它声明的语义。精确的原理图信息可由求解器生成,也可由模型直接输出。
网表负责 器件与类型、参数、连接关系、子电路接口
RNL 负责 结构、意图、画法、显示符号;只引用网表
网表描述电气事实,而 Rich Netlist 描述如何理解与呈现该电路
藏于注释中
写在宿主网表的合法注释里,如 SPICE 的 * @RNL {…}。仿真器直接跳过,无需剥离。
绝不改动电路
只引用网表已有的器件、网络和端子;不能新增器件、连接或参数。
详略程度自由
从“M1 和 M2 是差分对”到每个坐标和拐点,不同层次的描述可在同一文件中自由混写。
RNL 不是
- 另一种网表语言
- 第二份连接关系表
- 强制规定唯一画法的格式
- 像素级的图片存档
02 · 为什么
网表与原理图,各自缺少了一半
仿真靠网表,读懂电路靠原理图。只靠其中一种都不够用。
| 工作事项 | 网表 | 原理图(专有格式) | 网表 + RNL |
|---|---|---|---|
| 仿真器直接读取 | 生来即为此用途 | 必须先导出网表 | RNL 只是注释 |
| 一眼看懂电路结构 | 只有一行行文本 | 一目了然 | 由查看器绘出原理图 |
| 纯文本,可 diff 并纳入 Git 管理 | 可以 | 二进制数据库 | 可以 |
| AI 可直接读写 | 纯文本 | 图形格式 | 画法同样是纯文本 |
| 无需原工具即可打开 | 任何文本编辑器 | 需要同款软件与对应版本 | 任何 RNL 查看器 |
| 承载设计意图 | 无 | 仅停留在画面上,机器无法解读 | 差分对与对称均为明确语句 |
| 电路的唯一真相来源 | 可以 | 原理图与网表可能不一致 | 连接关系完全取决于网表 |
AI 设计流程中的新难题
AI 写出的网表,人难以审查
面对几百行生成的网表,审查者很难直接看出这是什么电路。
AI 画原理图不够可靠
让大语言模型一笔一画地画原理图很难,不同模型画出的结果也参差不齐。
Agent 只能通过 EDA 工具读写原理图
原理图保存在专有的二进制数据库里,读图或改一根导线都得经过工具接口。
目前的权宜做法
手动重画
耗时费力,且每当网表修改就得重新画过。
自动生成原理图
自动布局只知连接关系、不知电路结构,看不出哪两个晶体管构成一对。
截图与导出图片
留下了图片却失去了电路:既无法运行仿真,也无法继续编辑。
依赖 EDA 的 API 接口
AI 只能调用 EDA 工具的 API 对电路进行编辑,受 EDA 生态约束。
RNL 的思路:采用人与 AI 都能直接理解和编辑的纯文本格式,不依赖任何特定的 EDA 工具
03 · 优势
把电路含义写进网表能带来什么
含义优先
直接写明哪些器件构成差分对或电流镜、哪里对称、电流流向如何。无论画法怎么调整,这些语句都留在文件里。
单一纯文本文件
仿真器照常运行;可在 Git 中对比差异与合并;原理图和网表不会脱节。
AI 编写,人来审查
AI 在写电路的同时写出结构和画法;人在查看器里审查它声明的结构和意图。
开放
公开的标准与符号库、开源工具,以及可在浏览器中直接打开的查看器。
电路与样式分离
网表定义电路本身,包决定它的外观,正如 HTML 承载内容、CSS 负责样式。引入公开包 eda-symbol 和 eda-style,同一个文件就能画成传统 EDA 原理图的样式。在示例中切换样式。
04 · 场景对比
同一项任务,两种做法
常见场景下,现状做法与 RNL 做法的对比。
帮我设计一个五管 OTA。
网表虽然生成了,但里面没有任何内容说明这是什么电路。
几百行生成的网表让人看不出电路结构,而大语言模型直接画原理图又不可靠。
帮我设计一个五管 OTA。
Agent 在写出电路的同时写明结构和画法;人在查看器里审查它声明的内容。
人审查的是电路结构和设计意图,而不必逐行通读网表。
原理图是二进制数据库,版本控制只能提示“文件已更改”。
一次修改就是一行可读的文字:M2 移到了 x = 30。Git、PR、CI 都能像对代码一样用在它上面。
原理图的修改同样可以进行代码评审(code review)与回滚。
原理图和网表各自保存一份连接关系,两边可能不一致。
连接关系只由网表定义。线条交叉或端点恰好重合都不会产生电气连接;画出的导线只有在共用连接点或端子时才相连。
电路只有一个唯一真相来源:就是网表。
每款工具都有各自的专有原理图格式与符号库。
换 EDA 工具往往要重画原理图;换仿真器则要改写网表方言。
注释前缀随网表格式变化;RNL 内容则完全相同。
RNL 的内容在各种网表格式中完全一致,符号也由 RNL 定义,可随文件或符号库一起迁移。
无论更换仿真器或查看器,原理图画法依然完好保留。
传统格式只能在写出它的 EDA 工具里打开,接收方必须配置相同的环境。截图配网表的做法,只要任一方改动就会过时。
- 仿真器照常运行
- 浏览器直接显示原理图
- 同事与 AI 均可阅读与编辑
RNL 是纯文本,易于共享和开源:仿真器直接运行,浏览器里的查看器直接绘图。
原理图跟着电路走,不再被工具绑住。
05 · 愿景
开放的生态,以及建立其上的设计流程
RNL 是数据层:把电路及其含义保存在任何人都能打开的文件里。
开放的生态
让电路和符号库像开源软件一样发布与复用。
基于 RNL 的设计流程
Agent 编写和修改电路;人审查电路的结构与意图;EDA 工具负责仿真和验证。
Agent
编写和修改电路,同时写明结构和画法。
人
在查看器中审查已声明的结构和意图。
ota5t.sp
RNL 数据层:网表 + 含义
EDA 工具
执行仿真与验证;仿真器会自动跳过 RNL 注释。
06 · 现状
目前的进展
语言已发布 0.3 版标准;网页版和桌面版查看器可以读取、绘制和编辑网表,求解器也已推出首个版本。下方列出最近发布的里程碑和后续计划;完整时间线列出了全部已发布的里程碑。
- RNL 核心 0.5.4
Core 0.5.4: rnl solve says the solver is a preview; each object lists the usages and groups it is a member of, in the Document, the snapshot and the new rnl explain; package files and hardware-description files are known by their format; the solver tells supply, ground and port symbols by their drawing. 发布说明
- RNL 核心 0.5.5
Core 0.5.5: the Document carries the parameters of subcircuits, those a definition gives, those an instance writes and the numbers they come to, and a build can bind values to them; an instance of a subcircuit that Auto Include found defined several times lists the definitions. 发布说明
- 桌面版查看器 0.5.3
RNL Viewer 0.5.3: entering an instance of a subcircuit that Auto Include found defined several times asks which definition to open; a subcircuit shows its parameters in a bar under the path, and a dialog changes them; entering a subcircuit of another file takes the values its instance writes. 发布说明
- 完整时间线
- 接下来
- 语言标准 0.4
规划中:按端子数量选择符号;新增
@SOLVER-CONFIG。 - 求解器优化目标,第二版
规划中:将标准包中的名称从求解器的硬编码逻辑移至其配置中,使电流方向、接地方向与信号流向等目标在 0.3 文件上生效。
常见问题
加入 RNL 的网表会让仿真器报错吗?
不会。RNL 只写在宿主网表的合法注释中,仿真器无需预处理就会直接跳过。具体哪种注释标记在各家商用仿真器中都安全,仍在逐一验证。
RNL 会改变我的电路吗?
不会。器件、参数和连接关系完全由网表定义,RNL 只能引用它们。只修改 RNL 时,网表正文保持原样。
一定要手写坐标吗?
不必。“M1 和 M2 是差分对,关于中心线对称”本身就是合法且完整的描述;坐标可以交给求解器计算,也可以之后再补。
不同工具绘制同一份 RNL 的结果会一样吗?
写明精确几何坐标的部分会完全一致。只声明意图的部分,不同求解器在满足该意图的前提下可能画出不同布局;RNL 不承诺像素级一致。
这跟 Virtuoso 或 KiCad 的原理图文件有什么不同?
那些是各家工具私有的图形格式,与网表分开存放。RNL 直接写在网表里,任何支持 RNL 的工具都能读取,而且符号本身也是用 RNL 定义的。
为什么经常提到 AI?
大语言模型擅长读写网表这类文本。RNL 把电路的结构、意图和画法也变成文本,因此 Agent 可以在同一个文件里写出电路及其含义,人则在查看器里审查它声明的内容。语句之间的自由文本方便人阅读,但不会改变机器对语句的解析。
可以用其他语言编写 RNL 吗?
关键字与标准包中的名称都可以有另一种语言的代称。文件可在头段记录中用 @ALIAS 逐个声明代称,或用 @USE-ALIASES(name=…, version=…) 加载代称包(汇集某种语言代称的包文件;自定义文件则用 path=… 指定)。标准系列 0.3 目前随附一个代称包,即中文包 rnl-zh:在头段记录中写入 @USE-ALIASES(name="rnl-zh", version="0.3"),即可使用 #M1 @位于(10, 20) 这样的代称。代称只是另一种拼写方式:两种拼写可以自由混用,机器读到的语句相同;头段记录本身一律使用标准拼写。
现在就能用吗?
用于查看原理图和编辑网表文本已经可用:查看器可在浏览器中或 Windows、Linux、macOS 上打开带 RNL 的网表,绘制已放置的对象,并支持编辑文本后重新渲染。自动布局尚处早期:rnl solve 和桌面版查看器(预览功能)已内置初代求解器;网页版查看器暂未接入求解器,因此会把未放置的对象列在“未绘制”视图中。目前尚不支持直接拖动编辑。