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 中執行 diff 與合併;原理圖與網表絕不脫節。
AI 編寫,人工審閱
AI 在編寫電路的同時一併寫出結構與畫法;審閱者在檢視器中檢視所宣告的結構與意圖。
開放
公開的標準與符號庫、開放原始碼工具,以及可在瀏覽器中直接開啟的檢視器。
電路與樣式分離
網表定義電路的本質,套件決定它的外觀,就像 HTML 負責內容、CSS 負責樣式。只要引入公開套件 eda-symbol 與 eda-style,同一個檔案就能繪製成傳統 EDA 原理圖。在範例中切換樣式。
04 · 情境對比
同一項任務,兩種做法
常見情境:現在的做法,以及使用 RNL 的做法。
請幫我設計一個五電晶體 OTA。
網表有了,但裡面沒有任何內容說明這是什麼電路。
幾百行產生的網表無法讓審閱者看出這是什麼電路,而模型繪製原理圖也不可靠。
請幫我設計一個五電晶體 OTA。
Agent 在編寫電路的同時一併寫出結構與畫法;審閱者在檢視器中檢視它宣告的內容。
人工審閱的是結構與意圖,而不必逐行閱讀網表。
原理圖是二進位資料庫,因此版本控制只能告訴你「檔案變更了」。
一處修改就是清晰易讀的一行文字:M2 移至 x = 30。Git、pull request 與 CI 皆可像處理程式碼一樣運作於其上。
原理圖的修改同樣可以進行程式碼審查(code review)與還原。
原理圖與網表各自維護一份連接關係,兩者可能不一致。
連接關係完全由網表定義。線條交叉或端點剛好重疊,絕不會變成連接;繪製的連線唯有在共用同一個點或端子時才視為相接。
電路只有一個唯一真相來源:就是網表。
每款工具都有各自的專有原理圖格式與符號庫。
更換工具時,原理圖往往得重新繪製;更換模擬器時,網表方言也得重新改寫。
註解前綴隨網表格式改變;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") 即可使用其別名。別名只是另一種拼寫方式:兩者可自由混用,機器讀取到的是相同的敘述;檔頭記錄本身則一律使用標準拼寫。
現在就可以使用嗎?
若要檢視原理圖與編輯網表文字,現在就能使用:檢視器可在瀏覽器或 Windows、Linux 與 macOS 上開啟帶有 RNL 的網表、繪製已指定位置的物件,並讓你在編輯文字後重新渲染。自動佈局仍處於早期階段:第一版求解器已整合於 rnl solve 中,並以預覽方式提供於桌面版檢視器。網頁版檢視器目前尚不執行求解器,因此會將未指定位置的物件列在「未繪製」檢視中。目前尚不支援拖曳編輯。