本文討論了模擬電路設(shè)計與開源電子設(shè)計自動化(EDA)工具的結(jié)合,強(qiáng)調(diào)了它們在設(shè)計和仿真過程中的重要作用。模擬電路,如CMOS反相器,是電子學(xué)的基礎(chǔ),需要精確的布局和驗證。像Magic VLSI、Xschem和KLayout這樣的工具為創(chuàng)建和驗證這些電路提供了便捷的解決方案。例如,由PMOS和NMOS晶體管組成的CMOS反相器展示了如何使用這些工具來確保設(shè)計的準(zhǔn)確性和功能性。這些開源工具的集成提升了模擬電路開發(fā)的效率和精度。
1、簡介
模擬電路簡介
模擬電路處理幅度連續(xù)變化的信號,如電壓或壓力,這些信號與其他時間相關(guān)變量相對應(yīng)。與處理離散二進(jìn)制信號的數(shù)字電路不同,模擬電路處理信號的全范圍值,從而實現(xiàn)放大、濾波和調(diào)制等功能。它們在需要精確且高效的信號處理應(yīng)用中至關(guān)重要,包括音頻、溫度、光和電壓調(diào)節(jié)。模擬集成電路(IC)的示例包括電壓和電流調(diào)節(jié)器、運算放大器、數(shù)據(jù)轉(zhuǎn)換器和音頻放大器。每種電路在各種電子設(shè)備中都扮演著關(guān)鍵角色,確保信號處理的準(zhǔn)確性和性能。
模擬電路的重要性
模擬電路因其處理連續(xù)信號的能力而至關(guān)重要,可以處理廣泛的數(shù)值,使其在許多電子應(yīng)用中不可或缺。它們執(zhí)行關(guān)鍵功能,如放大微弱信號、調(diào)節(jié)電源以及在模擬和數(shù)字格式之間轉(zhuǎn)換信號。模擬電路設(shè)計所需的復(fù)雜性和精度要求采用先進(jìn)技術(shù)以確保可靠性和性能。由于模擬電路在眾多設(shè)備中起著關(guān)鍵作用,設(shè)計和實施得當(dāng)對于實現(xiàn)高功能性和效率至關(guān)重要。
EDA工具簡介
電子設(shè)計自動化(EDA)工具包括用于設(shè)計和制造半導(dǎo)體器件或芯片的軟件、硬件和服務(wù)。這些工具支持設(shè)計過程的各個階段,包括定義、規(guī)劃、設(shè)計、實施、驗證和制造半導(dǎo)體器件。EDA涵蓋了幾個關(guān)鍵領(lǐng)域:技術(shù)計算機(jī)輔助設(shè)計(TCAD)用于工藝設(shè)計,制造可制造性設(shè)計(DFM)確保設(shè)計符合制造要求,硅生命周期管理(SLM)用于監(jiān)控制造后設(shè)備性能。EDA工具包括仿真、設(shè)計和驗證工具,每種工具在預(yù)測電路行為、組裝電路元件和確認(rèn)設(shè)計性能方面發(fā)揮獨特作用。它們對于管理當(dāng)代半導(dǎo)體設(shè)計的復(fù)雜性至關(guān)重要,確保設(shè)備按預(yù)期運行,并降低昂貴錯誤的風(fēng)險。
在模擬集成電路(IC)設(shè)計領(lǐng)域,EDA工具的重要性不言而喻。行業(yè)中著名的EDA工具包括Calibre和Virtuoso。在開源EDA工具領(lǐng)域,Efabless主辦的開放電路設(shè)計計劃是一個重要的發(fā)展。這個計劃受到Google/SkyWater公共開源工藝設(shè)計套件(PDK)計劃的重大影響,這代表了開源EDA工具的變革性進(jìn)展。歷史上,開源EDA工具不得不依賴專有或?qū)W術(shù)進(jìn)程,沒有真實目標(biāo)代工廠流程的支持,限制了它們的適用性和實用性。而這個開源PDK計劃的引入,通過提供對現(xiàn)實世界代工廠流程的訪問,擴(kuò)展了開源EDA工具的覆蓋范圍和有效性。
模擬電路設(shè)計流程
模擬設(shè)計流程本質(zhì)上非常復(fù)雜,涉及廣泛的手工設(shè)計工作和與工具的反復(fù)迭代過程,并且相比于數(shù)字設(shè)計流程,更加注重與物理設(shè)計和器件模型的緊密結(jié)合。盡管商業(yè)工具主要用于高級模擬設(shè)計,但許多模擬設(shè)計中的基本任務(wù)可以通過開源工具有效地管理。以下概述了從概念化到布局的推薦開源模擬設(shè)計流程:
- 設(shè)計概念: 使用 Octave 或 Python。Python 提供了多種用于模擬設(shè)計的包,包括 numpy 和 scipy,它們的功能與 Octave 腳本相當(dāng)。
- 設(shè)計規(guī)范: 使用 CACE 和 CICsim 等工具來指定設(shè)計參數(shù)。
- 原理圖輸入: 使用 Xschem 或 Xcircuit。Xschem 尤其受歡迎,并且具有類似于商業(yè)工具的界面。
- 原理圖捕獲(網(wǎng)表生成): Xschem 和 Xcircuit 都能生成適用于布局與原理圖對比(LVS)檢查和仿真的分層網(wǎng)表。
- 仿真: 使用 ngspice 或 Xyce 進(jìn)行仿真任務(wù)。Ngspice 提供了強(qiáng)大的交互式命令接口,而 Xyce 在多處理能力方面表現(xiàn)出色。兩者都兼容 Verilog-A 模型。
- 布局: 選擇 Magic 或 KLayout。KLayout 提供了類似于商業(yè)工具的用戶界面,并有效地表示布局對象。Magic 則以其高級提取、連通性檢查、布線功能和交互式 DRC 檢查器而聞名。KLayout 支持 Ruby 或 Python 腳本,而 Magic 可以用 Tcl/Tk 腳本編寫。Magic 還支持 SPICE 網(wǎng)表的導(dǎo)入以及器件和子單元的生成。兩者都通過腳本提供參數(shù)化器件生成器。
- 器件和寄生提取: 使用 Magic 執(zhí)行這些任務(wù)。
- 物理驗證:
- 設(shè)計規(guī)則檢查(DRC): 使用 Magic 進(jìn)行交互式 DRC,使用 KLayout 進(jìn)行非交互式 DRC。
- 布局與原理圖對比(LVS): 推薦使用 Netgen 進(jìn)行 LVS 任務(wù)。
- 電氣規(guī)則檢查(ERC): 使用 Circuit Validity Checker (CVC) 進(jìn)行可靠性驗證。
- 特性化: 使用 CACE 和 CICsim 在不同工藝角落下進(jìn)行仿真。
- 數(shù)據(jù)表生成: CACE 和 CICsim 也推薦用于生成數(shù)據(jù)表。
圖一 模擬電路設(shè)計流程
該工作流程展示了一種全面的模擬電路設(shè)計方法,利用開源工具有效地完成各種設(shè)計和驗證任務(wù)。
2、MOSFET
金屬氧化物半導(dǎo)體場效應(yīng)晶體管(MOSFETs)是現(xiàn)代模擬集成電路(ICs)中的基本組件。MOSFET是一種晶體管,能夠?qū)?a class="article-link" target="_blank" href="/tag/%E8%BE%93%E5%85%A5%E7%94%B5%E5%8E%8B/">輸入電壓轉(zhuǎn)換為輸出電流,或反之,從而實現(xiàn)模擬集成電路設(shè)計。本文介紹了MOSFET的物理結(jié)構(gòu)及其工作原理。
MOSFET 結(jié)構(gòu)
MOS晶體管是一個具有四個端子的器件,包括柵極(G)、漏極(D)、源極(S)和體極(B)。MOS晶體管主要有兩種類型:N溝道MOSFET(NMOS)和P溝道MOSFET(PMOS),它們具有互補(bǔ)的特性。圖2(a)和(b)展示了NMOS和PMOS晶體管的電路符號,其中柵極控制著漏極和源極之間的電流流動。
在NMOS晶體管中,漏極的電勢通常高于源極,而PMOS晶體管則是源極的電勢高于漏極。體極連接到構(gòu)建晶體管的基底,在單電源系統(tǒng)中,NMOS的體極通常接地,而PMOS的體極則連接到最高電壓水平,通常是VDD。
在許多數(shù)字電路中,源極和體極常常連接在一起,使MOSFET看起來像是一個三端器件。然而,在模擬設(shè)計中,所有四個端子都可能對器件的行為至關(guān)重要。
MOSFET的物理結(jié)構(gòu)
NMOS和PMOS晶體管在結(jié)構(gòu)基礎(chǔ)上相似,如圖2(c)所示。這些晶體管都在輕摻P型的硅基底上制造,這是集成電路晶體管的一個典型特征。
柵極端子與基底之間有一層絕緣層,通常由二氧化硅構(gòu)成。這層絕緣層防止柵極與其他端子(源極、漏極或體極)之間的漏電流。柵極材料通常由多晶硅或金屬構(gòu)成。
對于NMOS晶體管,源極和漏極區(qū)域通過在基底上摻入高濃度的N型雜質(zhì)形成,從而形成高度導(dǎo)電的N型摻雜區(qū)域。這些區(qū)域由于其相同的物理性質(zhì)是可以互換的。為了確保有效的電氣連接,體極也會摻入與基底相同極性的雜質(zhì)。
PMOS晶體管具有與NMOS相同的結(jié)構(gòu)元素,主要區(qū)別在于摻雜極性相反。在PMOS器件中,體極由主要是P型基底中的輕摻N型區(qū)域組成,形成所謂的N井。
這一概述提供了MOSFET結(jié)構(gòu)和操作的基礎(chǔ),為進(jìn)一步深入了解這些晶體管在模擬IC中的布局構(gòu)造奠定了基礎(chǔ)。
(a)NMOS 符號 | (b)PMOS 符號 |
(c)物理結(jié)構(gòu) | |
圖二 NMOS and PMOS?符號與物理結(jié)構(gòu) |
3、Open-Source EDA Tool
Open Circuit Design 是一個全面的開源電子設(shè)計自動化(EDA)工具庫,這些工具在現(xiàn)代電路設(shè)計中至關(guān)重要。這些工具根據(jù) GNU 公共許可證(GPL)或類似的開源許可證免費提供,旨在與商業(yè) EDA 解決方案保持競爭力。該平臺托管了一系列軟件,支持電路設(shè)計過程的各個方面,從布局編輯和原理圖捕捉到數(shù)字合成和驗證。
Open Circuit Design 提供的工具包括:
Open_PDKs: 為開源 EDA 工具量身定制的工藝設(shè)計套件(PDK)安裝程序。
Magic: VLSI 布局編輯器,支持提取和設(shè)計規(guī)則檢查(DRC)。
XCircuit: 用于電路繪圖和原理圖捕捉的工具。
Netgen: 電路網(wǎng)表比較工具,執(zhí)行布局與原理圖(LVS)檢查并支持網(wǎng)表轉(zhuǎn)換。
Qrouter: 適用于海量門設(shè)計的單元細(xì)節(jié)路由器。
Qflow: 完整的數(shù)字合成設(shè)計流程,利用開源軟件和標(biāo)準(zhǔn)單元庫。
Open Circuit Design 與 eFabless 合作,eFabless 是一個將社區(qū)驅(qū)動的協(xié)作帶入電路設(shè)計的平臺。eFabless 平臺集成了 Open Circuit Design 工具,提供了如 CACE(電路自動表征引擎)這樣的功能,用于嚴(yán)格的電路測試和表征,并通過 cloudv 提供基于云的合成和驗證,使用工具如 Qflow 和 Qrouter。
Open Circuit Design 的一個重要里程碑是其參與了 2020 年啟動的 Google / SkyWater 公共開源 PDK 計劃。這個計劃標(biāo)志著開源 EDA 工具的突破,提供了對實際鑄造工藝的訪問,這在以前是有限的。該平臺確保與 Google / SkyWater 開放 PDK 的兼容性,從而擴(kuò)展了開源工具在實際應(yīng)用中的可用性。
通過持續(xù)更新和與 GitHub 倉庫的每日同步,Open Circuit Design 仍然是工程師、研究人員和開發(fā)者尋求開源 EDA 替代方案的重要資源。
開源EDA工具
Linux對EDA工具的好處
Linux長期以來一直是電子設(shè)計自動化(EDA)工具的首選操作系統(tǒng),特別是在開源社區(qū)中。Linux的強(qiáng)大、穩(wěn)定和可定制的特性使其非常適合處理與EDA工作流程相關(guān)的復(fù)雜和資源密集型任務(wù)。以下是使用Linux,特別是Ubuntu或POP!OS,進(jìn)行EDA工具開發(fā)和使用的一些關(guān)鍵好處:
穩(wěn)定性和可靠性:Linux系統(tǒng)以其穩(wěn)定性著稱,可以長時間運行而無需重啟。這對于需要長時間模擬或設(shè)計過程的情況尤為重要,因為中斷可能會導(dǎo)致顯著的延遲。
開源生態(tài)系統(tǒng):Linux是開源社區(qū)的基石,這與許多EDA工具的理念相契合。開源EDA工具經(jīng)常在Linux上開發(fā)、測試和優(yōu)化,確保了無縫的兼容性和最新更新的訪問。
性能:Linux因其高效的系統(tǒng)資源利用而提供卓越的性能。它提供了更好的內(nèi)存管理、更快的I/O操作,并且相比其他操作系統(tǒng)更節(jié)省資源,使你能夠最大化硬件的性能。
可定制性:Linux允許用戶根據(jù)特定需求自定義環(huán)境,無論是調(diào)整內(nèi)核設(shè)置還是選擇各種桌面環(huán)境。這種靈活性對需要優(yōu)化系統(tǒng)以適應(yīng)特定任務(wù)的EDA專業(yè)人員尤為有利。
安全性:由于其用戶權(quán)限結(jié)構(gòu)和開源特性,Linux固有的安全性優(yōu)于許多其他操作系統(tǒng),這使得能夠快速識別和修復(fù)漏洞。這對于保護(hù)敏感設(shè)計數(shù)據(jù)和知識產(chǎn)權(quán)至關(guān)重要。
支持工具廣泛:許多開源EDA工具,包括Magic、Netgen、OpenROAD等,都設(shè)計為在Linux上原生運行。這確保了更好的支持、更流暢的操作,以及訪問大量工具和庫。
為什么選擇Ubuntu或POP!OS?
在眾多Linux發(fā)行版中,Ubuntu和POP!OS作為EDA工作的優(yōu)秀選擇脫穎而出:
Ubuntu:Ubuntu是最受歡迎的Linux發(fā)行版之一,以其用戶友好的界面、廣泛的社區(qū)支持和豐富的軟件包庫而聞名。它提供了一個穩(wěn)定的環(huán)境和頻繁的更新,使其成為EDA新手和經(jīng)驗豐富的用戶都可靠的選擇。
POP!OS:基于Ubuntu,POP!OS由System76設(shè)計,特別注重易用性,尤其適合開發(fā)人員和工程師。它提供了對廣泛硬件的開箱即用支持,并具有如平鋪窗口管理等功能,這可以顯著提高在復(fù)雜設(shè)計任務(wù)中的生產(chǎn)力。POP!OS還強(qiáng)調(diào)安全性和性能,是EDA專業(yè)人員的理想選擇。
安裝命令
- cd ~
- mkdir -p gits
- cd ~/gits
- sudo apt install python3 build-essential gcc
- sudo apt install m4 tcsh csh libx11-dev tcl-dev tk-dev libcairo2-dev
- sudo apt install mesa-common-dev libglu1-mesa-dev
Open_PDK
Open_PDKs 解決了與硅晶圓廠工藝設(shè)計包(PDK)非標(biāo)準(zhǔn)化相關(guān)的挑戰(zhàn)。硅晶圓廠提供的PDK通常以多樣化且不可預(yù)測的文件配置形式交付,這使得它們與開源電子設(shè)計自動化(EDA)工具的集成變得復(fù)雜。此外,這些PDK通常針對商業(yè)EDA工具進(jìn)行定制,往往忽視了開源工具的需求。
Open_PDKs通過標(biāo)準(zhǔn)化文件和目錄的組織,解決了這些問題。它針對常用的開放標(biāo)準(zhǔn)格式,如SPICE、Verilog、Liberty和LEF,提供了一致的組織結(jié)構(gòu)。該工具還支持一系列開源EDA工具,包括Magic、Netgen、OpenROAD和KLayout。其安裝程序使用Makefile系統(tǒng)和轉(zhuǎn)換腳本,確保所有所需的工藝文件都放在一致且可預(yù)測的目錄中。
Open_PDKs 的核心目標(biāo)包括:
- 標(biāo)準(zhǔn)化:為各種EDA工具和格式建立統(tǒng)一的文件結(jié)構(gòu)。
- 靈活性:通過通用腳本支持對新工具、格式和晶圓廠的適應(yīng)性。
- 定制化:允許添加自定義安裝文件,以根據(jù)需要修改或注釋供應(yīng)商提供的數(shù)據(jù)。
Open_PDKs預(yù)配置了支持Google/SkyWater SKY130開放工藝的文件。它有助于設(shè)置與SKY130工藝兼容的環(huán)境,支持開源EDA工具和工具流程,如Magic、Qflow、OpenLane、Netgen和KLayout。
安裝命令
- git clone https://github.com/RTimothyEdwards/open_pdks
- cd open_pdks
- ./configure --enable-sky130-pdk --enable-sram-sky130
- make
- sudo make install
- make veryclean
- ./configure --enable-gf180mcu-pdk --enable-osu-sc-gf180mcu
- make
- sudo make install
- make veryclean
- make distclean
- cd ~/gits
Magic
Magic 是一款杰出的 VLSI(超大規(guī)模集成電路)布局工具,最初由加州大學(xué)伯克利分校的 John Ousterhout 在 1980 年代開發(fā),他還因創(chuàng)造了 Tcl 腳本語言而聞名。得益于其寬松的伯克利開源許可證,Magic 保持了持久的受歡迎程度,特別是在學(xué)術(shù)機(jī)構(gòu)和小型企業(yè)中。這種許可證使得具有編程傾向的 VLSI 工程師能夠為工具增添創(chuàng)新功能,確保 Magic 隨著制造技術(shù)的進(jìn)步不斷演變。
Magic 的持續(xù)相關(guān)性主要歸功于其強(qiáng)大的核心算法,這些算法支撐了其用戶友好的界面和功能。該工具因其在電路布局方面的易用性而受到高度評價,這一特點使得它即使在最終設(shè)計階段仍然是許多專業(yè)人士的首選,盡管他們最終使用的是商業(yè)工具。
? 主要特點:
- 開源許可證: 其寬松的許可證促進(jìn)了廣泛的采用和社區(qū)的持續(xù)改進(jìn)。
- 用戶友好設(shè)計: Magic 以其直觀的界面和電路布局任務(wù)的易用性而聞名。
- 先進(jìn)算法: 該工具的成熟算法在管理 VLSI 設(shè)計方面貢獻(xiàn)巨大,顯著提升了其受歡迎程度和有效性。
? 安裝命令
- git clone https://github.com/RTimothyEdwards/magic
- cd magic
- ./configure --enable-cairo-offscreen
- make
- sudo make install
- make clean
- cd ~/gits
Netgen
Netgen 是一款專門用于比較電路網(wǎng)表的工具,稱為布局與原理圖對比(LVS)。這一關(guān)鍵步驟在集成電路(IC)設(shè)計流程中至關(guān)重要,確保電路的實際布局與預(yù)期原理圖一致。通過驗證布局的幾何形狀是否與期望的電路匹配,LVS 有助于在設(shè)計過程的早期捕捉錯誤。
對于非常小的電路,這一步驟通??梢蕴^,因為電路操作可以通過直接提取和模擬來確認(rèn)。然而,對于非常大的數(shù)字電路,其中布局通常由自動化工具從高層描述生成,LVS 變得尤為重要,以確保布局幾何的準(zhǔn)確性和正確性。
LVS 在設(shè)計大型模擬或混合信號電路時需求最大。這些類型的電路通常過于復(fù)雜,難以在合理的時間內(nèi)進(jìn)行全面模擬,因此 LVS 成為一種更快、更高效的替代方案。即使是較小的電路,LVS 也可以比全面模擬完成得更快,并提供有針對性的反饋,便于識別和糾正錯誤。
? 主要特點:
- 確保布局準(zhǔn)確性:驗證實際布局是否與預(yù)期原理圖相匹配。
- 對大型電路至關(guān)重要:尤其適用于那些難以模擬的大型模擬和混合信號電路。
- 更快的反饋:比全面電路模擬提供更快的結(jié)果和錯誤檢測。
- 對設(shè)計流程至關(guān)重要:在確保集成電路設(shè)計的可靠性和正確性方面發(fā)揮關(guān)鍵作用。
? ?安裝命令
- git clone https://github.com/RTimothyEdwards/netgen
- cd netgen
- ./configure
- make
- sudo make install
- make clean
- cd ~/gits
Xschem
Xschem 是一款強(qiáng)大的原理圖捕獲程序,旨在創(chuàng)建層次化的電路表示。通過采用自頂向下的設(shè)計方法,Xschem 使設(shè)計師能夠通過更簡單的構(gòu)建塊來描述復(fù)雜的系統(tǒng),專注于接口、層次結(jié)構(gòu)和實例屬性。這種模塊化的方法簡化了復(fù)雜電路的設(shè)計和驗證。
Xschem 支持直接從繪制的原理圖生成 VHDL、Verilog 或 Spice 網(wǎng)表,使得使用各種工具模擬電路變得更加容易。Xschem 的一個關(guān)鍵特點是其高性能的繪圖引擎,該引擎用 C 語言編寫,并利用 Xlib 繪圖原語。這種架構(gòu)提供了卓越的速度和響應(yīng)能力,即使對于非常大的電路也能保持高效。
用戶界面使用 Tcl-Tk 工具包構(gòu)建,Tcl 也作為擴(kuò)展語言使用,允許進(jìn)行可定制的腳本編寫。繪圖窗口中的任何用戶命令都對應(yīng)一個 Tcl 命令,從而可以創(chuàng)建定制的腳本來增強(qiáng)設(shè)計工作流程。
?主要特點:
- 層次化原理圖設(shè)計: Xschem 支持無限層次的原理圖繪制,使電路設(shè)計具有可擴(kuò)展性。
- 靈活的對象屬性: 原理圖中的任何對象都可以分配屬性,如 VHDL 泛型或 Spice/Verilog 參數(shù),為設(shè)計規(guī)范提供了多樣性。
- 可定制的原語和網(wǎng)表: 用戶可以創(chuàng)建新的 Spice/Verilog 原語并定義自定義網(wǎng)表格式,以滿足特定需求。
- 可腳本化環(huán)境: Tcl 擴(kuò)展語言允許創(chuàng)建腳本,增強(qiáng)了設(shè)計過程的自動化和定制化。
- 模擬就緒網(wǎng)表: Xschem 生成 VHDL、Verilog 和 Spice 網(wǎng)表,準(zhǔn)備好進(jìn)行電路模擬。
- 行為代碼嵌入: 設(shè)計師可以將行為 VHDL/Verilog 代碼嵌入到原理圖塊的屬性中,將高層次描述與詳細(xì)電路設(shè)計集成。
? 安裝命令
- git clone https://github.com/stefanschippers/xschem.git
- cd xschem
- ./configure
- make
- sudo make install
- make clean
- cd ~/gits
Ngspice
Ngspice 是一個功能強(qiáng)大的開源 SPICE 模擬器,專為電氣和電子電路的分析與模擬設(shè)計。它支持各種電路組件,包括 JFET、雙極型和 MOS 晶體管、被動元件(電阻、電感、電容)、二極管、傳輸線及其他設(shè)備,這些組件通過網(wǎng)表進(jìn)行互連。
Ngspice 還支持?jǐn)?shù)字電路的模擬,提供事件驅(qū)動的高速模擬能力。這使得模擬電路范圍從單個邏輯門到復(fù)雜的數(shù)字系統(tǒng)都可以實現(xiàn)。此外,Ngspice 能夠模擬混合信號電路,將模擬和數(shù)字組件無縫集成在一個框架內(nèi)。
該模擬器配備了一個全面的設(shè)備模型庫,涵蓋了主動、被動、模擬和數(shù)字元件。這些模型來自行業(yè)標(biāo)準(zhǔn)集合、半導(dǎo)體制造商和半導(dǎo)體鑄造廠。用戶通過網(wǎng)表定義電路,Ngspice 生成以電流、電壓和其他電氣量表示的圖形輸出,這些輸出也可以保存為數(shù)據(jù)文件以便進(jìn)一步分析。
雖然 Ngspice 主要通過命令行或文件輸入操作,但它沒有內(nèi)置的原理圖錄入工具。然而,有多個第三方接口可用,這些接口可以提供原理圖捕獲功能,填補(bǔ)電路設(shè)計與模擬之間的空白。
主要特點:
- 全面的設(shè)備建模:支持多種主動、被動、模擬和數(shù)字組件。
- 混合信號模擬:能夠模擬包含模擬和數(shù)字元素的電路。
- 高速數(shù)字模擬:事件驅(qū)動的模擬,高效處理復(fù)雜的數(shù)字電路。
- 靈活的輸出選項:生成詳細(xì)的電氣量圖形,并支持?jǐn)?shù)據(jù)導(dǎo)出以進(jìn)行進(jìn)一步分析。
- 第三方接口支持:雖然沒有內(nèi)置的原理圖錄入功能,但與外部原理圖捕獲工具兼容良好。
安裝命令
- git clone git://git.code.sf.net/p/ngspice/ngspice
- cd ngspice
- ./autogen.sh
- mkdir release
- cd release
- ../configure --with-x --enable-xspice --disable-debug --enable-cider --with-readline=yes --enable-openmp --enable-klu --enable-osdi
- make 2>&1 | tee make.log
- sudo make install
- cd ~gits
KLayout
KLayout 是一款強(qiáng)大的工具,用于查看和編輯 GDS 和 OASIS 布局文件,對于 VLSI 設(shè)計至關(guān)重要。它在模擬設(shè)計和其他復(fù)雜布局任務(wù)中發(fā)揮著關(guān)鍵作用,提供了可視化和編輯功能。KLayout 以其性能和多功能性脫穎而出,使其成為需要精確和高效布局管理的工程師不可或缺的工具。KLayout 不僅是一個查看器,還是一個編輯器,能夠全面操作布局文件。憑借其速度、靈活性和強(qiáng)大的功能,KLayout 是從事 VLSI 設(shè)計,特別是模擬和混合信號電路設(shè)計的人員的必備工具。
主要特點:
- 快速而準(zhǔn)確的性能:KLayout 以快速加載和渲染布局文件而聞名。它在處理大型設(shè)計和提供準(zhǔn)確的可視化表現(xiàn)方面效率極高,使其在詳細(xì)分析和編輯中非常有價值。
- 高級層管理:該工具支持復(fù)雜的層配置,包括多層疊加能力、靈活的層顯示屬性和高級分組選項。用戶可以輕松管理和可視化復(fù)雜設(shè)計,包括設(shè)置透明度和動畫以便更好地分析層。
- 智能編輯功能:KLayout 提供了廣泛的編輯功能,包括智能繪圖功能、真實就地編輯和無限撤銷/重做能力。用戶可以進(jìn)行精確修改、拉伸形狀以及輕松管理層次操作。
- 廣泛的腳本和自動化:該工具包括一個強(qiáng)大的腳本環(huán)境,支持 Ruby 和 Python。用戶可以自動化任務(wù)、自定義功能以及開發(fā)宏來處理重復(fù)的過程,從而提高生產(chǎn)力和布局管理的靈活性。
安裝命令
- sudo apt install qtcreator qtbase5-dev qt5-qmake
- sudo apt install qtmultimedia5-dev libqt5xmlpatterns5-dev
- sudo apt install libqt5svg5-dev qttools5-dev-tools qttools5-dev
- sudo apt install python3-dev
- git clone https://github.com/KLayout/klayout
- ./build.sh
- sudo mv bin-release /usr/local/share/klayout
- sudo ln -s /usr/local/share/klayout/klayout /usr/local/bin/klayout
- sudo cat > /etc/ld.so.conf.d/klayout-x86_64.conf << EOF
- /usr/local/share/klayout
- EOF
- sudo ldconfig
4、反相器
反相器是數(shù)字電子學(xué)中的一個基本組件,主要用于反轉(zhuǎn)信號的邏輯狀態(tài)。它也被稱為 NOT 門。反相器由一對互補(bǔ)的 MOS 晶體管組成——一個 NMOS 和一個 PMOS,它們以一種配置排列,其中輸入信號控制這兩個晶體管。當(dāng)輸入為高電平(邏輯 1)時,NMOS 晶體管導(dǎo)通,將輸出拉低(邏輯 0),而 PMOS 晶體管則關(guān)閉。相反,當(dāng)輸入為低電平(邏輯 0)時,PMOS 晶體管導(dǎo)通,將輸出拉高(邏輯 1),而 NMOS 晶體管則關(guān)閉。這種開關(guān)行為確保了輸出始終與輸入相反。在 Skywater 130nm 工藝的背景下,設(shè)計和模擬一個反相器涉及將該工藝特定的技術(shù)文件集成到 Magic VLSI 中,從而實現(xiàn)準(zhǔn)確的布局創(chuàng)建,并隨后進(jìn)行模擬以驗證該反相器在此特定技術(shù)節(jié)點中的性能。
將 SkyWater PDK 集成到 Magic VLSI
要將 SkyWater 130nm PDK(工藝設(shè)計套件)集成到 Magic VLSI 中,需要將相關(guān)的技術(shù)文件鏈接到 Magic 的庫中,因為這些文件并未預(yù)安裝。以下命令創(chuàng)建一個符號鏈接,允許 Magic 訪問繪制布局所需的 SkyWater 技術(shù)文件。
在 Xschem 中創(chuàng)建 CMOS 反相器的原理圖和符號
要在 Xschem 中設(shè)計 CMOS 反相器,您需要通過添加必要的組件來創(chuàng)建原理圖,包括 NMOS 和 PMOS 晶體管、電源(VDD)、地(GND)以及用于測試反相器功能的脈沖源。以下是如何操作的步驟:
- 添加 NMOS 和 PMOS 晶體管:
- 首先,將 SkyWater PDK 庫中的 NMOS 晶體管(nfet_01v8)和 PMOS 晶體管(pfet_01v8)放置到原理圖畫布上。
- 將 PMOS 晶體管放置在頂部,它將連接到 VDD,將 NMOS 晶體管放置在底部,連接到 GND。
- 電源(VDD)和地(GND):
- 在 PMOS 晶體管的源極位置放置一個 VDD 符號。
- 在 NMOS 晶體管的源極位置放置一個 GND 符號。
- 這種設(shè)置確保 PMOS 晶體管連接到正電源,而 NMOS 晶體管連接到地,從而形成 CMOS 反相器的基本結(jié)構(gòu)。
- 連接?xùn)艠O:
- 將 NMOS 和 PMOS 晶體管的柵極連接在一起。這個連接將作為反相器的輸入(Vin)。
- 連接漏極:
- 將兩個晶體管的漏極連接在一起。這個節(jié)點將作為反相器的輸出(Vout)。
- 添加脈沖源:
- 為了測試反相器,添加一個脈沖電壓源到輸入(Vin)。這個脈沖將交替變化高電平和低電平,模擬數(shù)字信號。
- 將脈沖源的正端連接到 NMOS 和 PMOS 晶體管的公共柵極連接處。
- 將脈沖源的負(fù)端連接到 GND。
- 完成連接:
- 確保所有節(jié)點正確連接:VDD 連接到 PMOS 的源極,GND 連接到 NMOS 的源極,脈沖源連接到輸入,公共漏極連接作為輸出。
圖三. 反相器原理圖在 Xschem 中
- 為反相器創(chuàng)建符號:
- 完成原理圖后,可以生成一個反相器的符號。這個符號將在更高層級的原理圖中作為一個單一組件來表示整個反相器電路。
- 該符號通常包括輸入(vin)、輸出(vout)、VDD 和 GND 連接。
圖四. 反相器符號在 Xschem 中
- 通過測試平臺運行仿真:
- 運行仿真的最模塊化方法是通過測試平臺。你可以直接創(chuàng)建一個 SPICE netlist 或通過 Xschem 創(chuàng)建測試平臺。
- 在 Xschem 中,設(shè)置以下屬性:
- name=SPICE only_toplevel=false
- value="
- .tran 0.01n 1u
- .save all"
此 SPICE 指令將運行一個瞬態(tài)分析 (.tran),時間步長為 0.01 納秒,總仿真時間為 1 微秒。.save all 命令確保所有節(jié)點電壓和電流在仿真后被保存,以便進(jìn)行后續(xù)分析。
圖五.仿真中的反相器
反相器布局
要使用 SkyWater 130nm 工藝在 Magic VLSI 中創(chuàng)建 CMOS 反相器布局,請按照以下詳細(xì)步驟操作。每個命令都進(jìn)行了解釋,以幫助您理解布局創(chuàng)建過程:
- 啟動 Magic 并加載 SkyWater 配置:
- magic -rcfile sky130A.magicrc
- 這個命令啟動 Magic VLSI 加載用于 SkyWater 130nm 工藝技術(shù)的配置文件。
- Adjust the Grid: 調(diào)整網(wǎng)格:
- % grid 50nm 50nm
- 默認(rèn)網(wǎng)格可能對于 SkyWater 130nm 工藝的 150nm 通道長度來說過于精細(xì)。此命令將網(wǎng)格設(shè)置為 50nm x 50nm,更適合涉及的尺寸。
- 設(shè)置光標(biāo)對齊到用戶網(wǎng)格:
- % snap user
- 此命令使光標(biāo)對齊到前面設(shè)置的網(wǎng)格上,確保布局元素的精確放置。
- 繪制晶體管的柵極(多晶硅):
- 使用 poly 命令繪制 NMOS 和 PMOS 晶體管的柵極區(qū)域。這是形成柵極電極的多晶硅層。
- 繪制 NMOS 晶體管的漏極和源極(n-擴(kuò)散):
- 使用 ndiff 命令創(chuàng)建 NMOS 晶體管的 n-擴(kuò)散區(qū)域。這些區(qū)域?qū)⒆鳛?NMOS 晶體管的漏極和源極端子。
- 擴(kuò)展多晶硅超出 n-擴(kuò)散區(qū)域:
- 將多晶硅柵極區(qū)域(poly)擴(kuò)展到 n-擴(kuò)散(ndiff)上,以解決與柵極重疊相關(guān)的設(shè)計規(guī)則檢查(DRC)錯誤。這確保了正確的連通性,并避免了 DRC 問題。
- 創(chuàng)建 NMOS 晶體管的漏極和源極端子:
- 在 n-擴(kuò)散區(qū)域(ndiff)中放置局部互連(li),并使用 ndc 命令將其與局部互連連接。此步驟完成漏極和源極端子的創(chuàng)建。
- 創(chuàng)建 NMOS 晶體管的體注入:
- 在 NMOS 晶體管的源極旁邊放置 p-基片擴(kuò)散(psd)和局部互連(li)。使用 psc 命令將 p-基片擴(kuò)散與局部互連連接,形成體注入連接。
- 繪制 PMOS 晶體管:
- 復(fù)制 NMOS 晶體管布局(包括體注入)并將其轉(zhuǎn)換為 PMOS 晶體管。使用 nwell 命令將復(fù)制品包圍在 n-well 中。這將把 n-擴(kuò)散(ndiff)轉(zhuǎn)換為 p-擴(kuò)散(pdiff),n-局部互連(ndc)轉(zhuǎn)換為 p-局部互連(pdc),p-基片擴(kuò)散(psd)轉(zhuǎn)換為 n-基片擴(kuò)散(nsd),p-局部互連(psc)轉(zhuǎn)換為 n-局部互連(nsc)。
- 創(chuàng)建接地和電源軌:
- 使用 metal1 命令繪制接地和電源軌,確保 NMOS 和 PMOS 晶體管正確連接到電源(VDD)和接地(GND)供應(yīng)。
圖六.反向器在Magic中的布局
- 運行 .tcl 腳本以提高便利性:
- 為了方便起見,可以將構(gòu)建布局所需的所有命令收集到一個名為tcl 的 .tcl 腳本中。這個腳本可以自動化布局創(chuàng)建過程,并確保一致性。
圖七. 反向器在Magic中的仿真
5、結(jié)論
在模擬電路設(shè)計中,確保準(zhǔn)確性和功能性的細(xì)致過程至關(guān)重要。模擬電路,如 CMOS 反相器,需要精確的布局和仿真,以驗證設(shè)計是否符合預(yù)期的性能。開源 EDA 工具,如 Magic VLSI、Xschem 和 KLayout,為實現(xiàn)這一目標(biāo)提供了強(qiáng)大且經(jīng)濟(jì)有效的手段。例如,Magic VLSI 支持多種工藝的布局設(shè)計,包括 SkyWater 130nm 工藝,而 Xschem 則便于原理圖創(chuàng)建和仿真。KLayout 通過提供先進(jìn)的布局查看和編輯功能,增強(qiáng)了這些工具的能力,使工程師能夠疊加、編輯和驗證設(shè)計。CMOS 反相器作為模擬電路設(shè)計中的經(jīng)典例子,由一個 PMOS 和一個 NMOS 晶體管組成,分別連接到電源(VDD)和地(GND)。反相器的功能是將邏輯低輸入轉(zhuǎn)換為邏輯高輸出,反之亦然。使用 Magic VLSI 和 Xschem 等工具,工程師可以高效地創(chuàng)建、仿真和驗證這樣的設(shè)計。將這些工具集成到設(shè)計流程中,可以確保模擬電路滿足性能規(guī)格和設(shè)計規(guī)則,促進(jìn)健壯可靠的電子系統(tǒng)的實現(xiàn)。
參考文獻(xiàn)
[1] https://github.com/efabless/openlane/#setting-up-the-pdk-skywater-pdk
[2] http://opencircuitdesign.com/
[3] https://www.youtube.com/watch?v=IQ_DcWT_cbc
推薦教學(xué)視頻
[1] https://www.youtube.com/watch?v=bm3l21ExLOY&list=PLgsDG5BJZpBTEUaxjfvYUiMPpUPU_vQpr&index=1
[2] https://www.youtube.com/watch?v=mpF2o2uTbC8&t=4s
[3] https://www.youtube.com/watch?v=3xHnzdCIvSY
[4] https://www.youtube.com/watch?v=Li2ZdC3MwA0&list=PLEAC5YKV9X4tbrpQFZuSkuKagIMlaszjM
[5] https://www.youtube.com/watch?v=XvBpqKwzrFY&t=744s