加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 1、簡(jiǎn)介
    • 2、MOSFET
    • 3、Open-Source EDA Tool
    • 4、反相器
    • 5、結(jié)論
  • 相關(guān)文件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

模擬電路與開源EDA工具簡(jiǎn)介 - Xschem, Netgen, Ngspice, Magic

08/26 10:02
3903
閱讀需 43 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

本文討論了模擬電路設(shè)計(jì)與開源電子設(shè)計(jì)自動(dòng)化(EDA)工具的結(jié)合,強(qiáng)調(diào)了它們?cè)谠O(shè)計(jì)和仿真過程中的重要作用。模擬電路,如CMOS反相器,是電子學(xué)的基礎(chǔ),需要精確的布局和驗(yàn)證。像Magic VLSI、Xschem和KLayout這樣的工具為創(chuàng)建和驗(yàn)證這些電路提供了便捷的解決方案。例如,由PMOS和NMOS晶體管組成的CMOS反相器展示了如何使用這些工具來確保設(shè)計(jì)的準(zhǔn)確性和功能性。這些開源工具的集成提升了模擬電路開發(fā)的效率和精度。

1、簡(jiǎn)介

模擬電路簡(jiǎn)介

模擬電路處理幅度連續(xù)變化的信號(hào),如電壓或壓力,這些信號(hào)與其他時(shí)間相關(guān)變量相對(duì)應(yīng)。與處理離散二進(jìn)制信號(hào)的數(shù)字電路不同,模擬電路處理信號(hào)的全范圍值,從而實(shí)現(xiàn)放大、濾波和調(diào)制等功能。它們?cè)谛枰_且高效的信號(hào)處理應(yīng)用中至關(guān)重要,包括音頻、溫度、光和電壓調(diào)節(jié)。模擬集成電路(IC)的示例包括電壓和電流調(diào)節(jié)器、運(yùn)算放大器、數(shù)據(jù)轉(zhuǎn)換器音頻放大器。每種電路在各種電子設(shè)備中都扮演著關(guān)鍵角色,確保信號(hào)處理的準(zhǔn)確性和性能。

模擬電路的重要性

模擬電路因其處理連續(xù)信號(hào)的能力而至關(guān)重要,可以處理廣泛的數(shù)值,使其在許多電子應(yīng)用中不可或缺。它們執(zhí)行關(guān)鍵功能,如放大微弱信號(hào)、調(diào)節(jié)電源以及在模擬和數(shù)字格式之間轉(zhuǎn)換信號(hào)。模擬電路設(shè)計(jì)所需的復(fù)雜性和精度要求采用先進(jìn)技術(shù)以確??煽啃院托阅?。由于模擬電路在眾多設(shè)備中起著關(guān)鍵作用,設(shè)計(jì)和實(shí)施得當(dāng)對(duì)于實(shí)現(xiàn)高功能性和效率至關(guān)重要。

EDA工具簡(jiǎn)介

電子設(shè)計(jì)自動(dòng)化(EDA)工具包括用于設(shè)計(jì)和制造半導(dǎo)體器件芯片軟件、硬件和服務(wù)。這些工具支持設(shè)計(jì)過程的各個(gè)階段,包括定義、規(guī)劃、設(shè)計(jì)、實(shí)施、驗(yàn)證和制造半導(dǎo)體器件。EDA涵蓋了幾個(gè)關(guān)鍵領(lǐng)域:技術(shù)計(jì)算機(jī)輔助設(shè)計(jì)(TCAD)用于工藝設(shè)計(jì),制造可制造性設(shè)計(jì)(DFM)確保設(shè)計(jì)符合制造要求,硅生命周期管理(SLM)用于監(jiān)控制造后設(shè)備性能。EDA工具包括仿真、設(shè)計(jì)和驗(yàn)證工具,每種工具在預(yù)測(cè)電路行為、組裝電路元件和確認(rèn)設(shè)計(jì)性能方面發(fā)揮獨(dú)特作用。它們對(duì)于管理當(dāng)代半導(dǎo)體設(shè)計(jì)的復(fù)雜性至關(guān)重要,確保設(shè)備按預(yù)期運(yùn)行,并降低昂貴錯(cuò)誤的風(fēng)險(xiǎn)。

在模擬集成電路(IC)設(shè)計(jì)領(lǐng)域,EDA工具的重要性不言而喻。行業(yè)中著名的EDA工具包括Calibre和Virtuoso。在開源EDA工具領(lǐng)域,Efabless主辦的開放電路設(shè)計(jì)計(jì)劃是一個(gè)重要的發(fā)展。這個(gè)計(jì)劃受到Google/SkyWater公共開源工藝設(shè)計(jì)套件(PDK)計(jì)劃的重大影響,這代表了開源EDA工具的變革性進(jìn)展。歷史上,開源EDA工具不得不依賴專有或?qū)W術(shù)進(jìn)程,沒有真實(shí)目標(biāo)代工廠流程的支持,限制了它們的適用性和實(shí)用性。而這個(gè)開源PDK計(jì)劃的引入,通過提供對(duì)現(xiàn)實(shí)世界代工廠流程的訪問,擴(kuò)展了開源EDA工具的覆蓋范圍和有效性。

模擬電路設(shè)計(jì)流程

模擬設(shè)計(jì)流程本質(zhì)上非常復(fù)雜,涉及廣泛的手工設(shè)計(jì)工作和與工具的反復(fù)迭代過程,并且相比于數(shù)字設(shè)計(jì)流程,更加注重與物理設(shè)計(jì)和器件模型的緊密結(jié)合。盡管商業(yè)工具主要用于高級(jí)模擬設(shè)計(jì),但許多模擬設(shè)計(jì)中的基本任務(wù)可以通過開源工具有效地管理。以下概述了從概念化到布局的推薦開源模擬設(shè)計(jì)流程:

  1. 設(shè)計(jì)概念: 使用 Octave 或 Python。Python 提供了多種用于模擬設(shè)計(jì)的包,包括 numpy 和 scipy,它們的功能與 Octave 腳本相當(dāng)。
  2. 設(shè)計(jì)規(guī)范: 使用 CACE 和 CICsim 等工具來指定設(shè)計(jì)參數(shù)。
  3. 原理圖輸入: 使用 Xschem 或 Xcircuit。Xschem 尤其受歡迎,并且具有類似于商業(yè)工具的界面。
  4. 原理圖捕獲(網(wǎng)表生成): Xschem 和 Xcircuit 都能生成適用于布局與原理圖對(duì)比(LVS)檢查和仿真的分層網(wǎng)表。
  5. 仿真: 使用 ngspice 或 Xyce 進(jìn)行仿真任務(wù)。Ngspice 提供了強(qiáng)大的交互式命令接口,而 Xyce 在多處理能力方面表現(xiàn)出色。兩者都兼容 Verilog-A 模型。
  6. 布局: 選擇 Magic 或 KLayout。KLayout 提供了類似于商業(yè)工具的用戶界面,并有效地表示布局對(duì)象。Magic 則以其高級(jí)提取、連通性檢查、布線功能和交互式 DRC 檢查器而聞名。KLayout 支持 Ruby 或 Python 腳本,而 Magic 可以用 Tcl/Tk 腳本編寫。Magic 還支持 SPICE 網(wǎng)表的導(dǎo)入以及器件和子單元的生成。兩者都通過腳本提供參數(shù)化器件生成器。
  7. 器件和寄生提取: 使用 Magic 執(zhí)行這些任務(wù)。
  8. 物理驗(yàn)證:
  • 設(shè)計(jì)規(guī)則檢查(DRC): 使用 Magic 進(jìn)行交互式 DRC,使用 KLayout 進(jìn)行非交互式 DRC。
  • 布局與原理圖對(duì)比(LVS): 推薦使用 Netgen 進(jìn)行 LVS 任務(wù)。
  • 電氣規(guī)則檢查(ERC): 使用 Circuit Validity Checker (CVC) 進(jìn)行可靠性驗(yàn)證。
  1. 特性化: 使用 CACE 和 CICsim 在不同工藝角落下進(jìn)行仿真。
  2. 數(shù)據(jù)表生成: CACE 和 CICsim 也推薦用于生成數(shù)據(jù)表。

圖一 模擬電路設(shè)計(jì)流程

該工作流程展示了一種全面的模擬電路設(shè)計(jì)方法,利用開源工具有效地完成各種設(shè)計(jì)和驗(yàn)證任務(wù)。

2、MOSFET

金屬氧化物半導(dǎo)體場(chǎng)效應(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)換為輸出電流,或反之,從而實(shí)現(xiàn)模擬集成電路設(shè)計(jì)。本文介紹了MOSFET的物理結(jié)構(gòu)及其工作原理。

MOSFET 結(jié)構(gòu)

MOS晶體管是一個(gè)具有四個(gè)端子的器件,包括柵極(G)、漏極(D)、源極(S)和體極(B)。MOS晶體管主要有兩種類型:N溝道MOSFET(NMOS)和P溝道MOSFET(PMOS),它們具有互補(bǔ)的特性。圖2(a)和(b)展示了NMOS和PMOS晶體管的電路符號(hào),其中柵極控制著漏極和源極之間的電流流動(dòng)。

在NMOS晶體管中,漏極的電勢(shì)通常高于源極,而PMOS晶體管則是源極的電勢(shì)高于漏極。體極連接到構(gòu)建晶體管的基底,在單電源系統(tǒng)中,NMOS的體極通常接地,而PMOS的體極則連接到最高電壓水平,通常是VDD

在許多數(shù)字電路中,源極和體極常常連接在一起,使MOSFET看起來像是一個(gè)三端器件。然而,在模擬設(shè)計(jì)中,所有四個(gè)端子都可能對(duì)器件的行為至關(guān)重要。

MOSFET的物理結(jié)構(gòu)

NMOS和PMOS晶體管在結(jié)構(gòu)基礎(chǔ)上相似,如圖2(c)所示。這些晶體管都在輕摻P型的硅基底上制造,這是集成電路晶體管的一個(gè)典型特征。

柵極端子與基底之間有一層絕緣層,通常由二氧化硅構(gòu)成。這層絕緣層防止柵極與其他端子(源極、漏極或體極)之間的漏電流。柵極材料通常由多晶硅或金屬構(gòu)成。

對(duì)于NMOS晶體管,源極和漏極區(qū)域通過在基底上摻入高濃度的N型雜質(zhì)形成,從而形成高度導(dǎo)電的N型摻雜區(qū)域。這些區(qū)域由于其相同的物理性質(zhì)是可以互換的。為了確保有效的電氣連接,體極也會(huì)摻入與基底相同極性的雜質(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 符號(hào) (b)PMOS 符號(hào)
(c)物理結(jié)構(gòu)
圖二 NMOS and PMOS?符號(hào)與物理結(jié)構(gòu)

3、Open-Source EDA Tool

Open Circuit Design 是一個(gè)全面的開源電子設(shè)計(jì)自動(dòng)化(EDA)工具庫(kù),這些工具在現(xiàn)代電路設(shè)計(jì)中至關(guān)重要。這些工具根據(jù) GNU 公共許可證(GPL)或類似的開源許可證免費(fèi)提供,旨在與商業(yè) EDA 解決方案保持競(jìng)爭(zhēng)力。該平臺(tái)托管了一系列軟件,支持電路設(shè)計(jì)過程的各個(gè)方面,從布局編輯和原理圖捕捉到數(shù)字合成和驗(yàn)證。

Open Circuit Design 提供的工具包括:

Open_PDKs: 為開源 EDA 工具量身定制的工藝設(shè)計(jì)套件(PDK)安裝程序。

Magic: VLSI 布局編輯器,支持提取和設(shè)計(jì)規(guī)則檢查(DRC)。

XCircuit: 用于電路繪圖和原理圖捕捉的工具。

IRSIM: 開關(guān)級(jí)數(shù)字電路仿真器。

Netgen: 電路網(wǎng)表比較工具,執(zhí)行布局與原理圖(LVS)檢查并支持網(wǎng)表轉(zhuǎn)換。

Qrouter: 適用于海量門設(shè)計(jì)的單元細(xì)節(jié)路由器。

Qflow: 完整的數(shù)字合成設(shè)計(jì)流程,利用開源軟件和標(biāo)準(zhǔn)單元庫(kù)。

Open Circuit Design 與 eFabless 合作,eFabless 是一個(gè)將社區(qū)驅(qū)動(dòng)的協(xié)作帶入電路設(shè)計(jì)的平臺(tái)。eFabless 平臺(tái)集成了 Open Circuit Design 工具,提供了如 CACE(電路自動(dòng)表征引擎)這樣的功能,用于嚴(yán)格的電路測(cè)試和表征,并通過 cloudv 提供基于云的合成和驗(yàn)證,使用工具如 Qflow 和 Qrouter。

Open Circuit Design 的一個(gè)重要里程碑是其參與了 2020 年啟動(dòng)的 Google / SkyWater 公共開源 PDK 計(jì)劃。這個(gè)計(jì)劃標(biāo)志著開源 EDA 工具的突破,提供了對(duì)實(shí)際鑄造工藝的訪問,這在以前是有限的。該平臺(tái)確保與 Google / SkyWater 開放 PDK 的兼容性,從而擴(kuò)展了開源工具在實(shí)際應(yīng)用中的可用性。

通過持續(xù)更新和與 GitHub 倉(cāng)庫(kù)的每日同步,Open Circuit Design 仍然是工程師、研究人員和開發(fā)者尋求開源 EDA 替代方案的重要資源。

開源EDA工具

Linux對(duì)EDA工具的好處

Linux長(zhǎng)期以來一直是電子設(shè)計(jì)自動(dòng)化(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)定性著稱,可以長(zhǎng)時(shí)間運(yùn)行而無需重啟。這對(duì)于需要長(zhǎng)時(shí)間模擬或設(shè)計(jì)過程的情況尤為重要,因?yàn)橹袛嗫赡軙?huì)導(dǎo)致顯著的延遲。

開源生態(tài)系統(tǒng):Linux是開源社區(qū)的基石,這與許多EDA工具的理念相契合。開源EDA工具經(jīng)常在Linux上開發(fā)、測(cè)試和優(yōu)化,確保了無縫的兼容性和最新更新的訪問。

性能:Linux因其高效的系統(tǒng)資源利用而提供卓越的性能。它提供了更好的內(nèi)存管理、更快的I/O操作,并且相比其他操作系統(tǒng)更節(jié)省資源,使你能夠最大化硬件的性能。

可定制性:Linux允許用戶根據(jù)特定需求自定義環(huán)境,無論是調(diào)整內(nèi)核設(shè)置還是選擇各種桌面環(huán)境。這種靈活性對(duì)需要優(yōu)化系統(tǒng)以適應(yīng)特定任務(wù)的EDA專業(yè)人員尤為有利。

安全性:由于其用戶權(quán)限結(jié)構(gòu)和開源特性,Linux固有的安全性優(yōu)于許多其他操作系統(tǒng),這使得能夠快速識(shí)別和修復(fù)漏洞。這對(duì)于保護(hù)敏感設(shè)計(jì)數(shù)據(jù)和知識(shí)產(chǎn)權(quán)至關(guān)重要。

支持工具廣泛:許多開源EDA工具,包括Magic、Netgen、OpenROAD等,都設(shè)計(jì)為在Linux上原生運(yùn)行。這確保了更好的支持、更流暢的操作,以及訪問大量工具和庫(kù)。

為什么選擇Ubuntu或POP!OS?

在眾多Linux發(fā)行版中,Ubuntu和POP!OS作為EDA工作的優(yōu)秀選擇脫穎而出:

Ubuntu:Ubuntu是最受歡迎的Linux發(fā)行版之一,以其用戶友好的界面、廣泛的社區(qū)支持和豐富的軟件包庫(kù)而聞名。它提供了一個(gè)穩(wěn)定的環(huán)境和頻繁的更新,使其成為EDA新手和經(jīng)驗(yàn)豐富的用戶都可靠的選擇。

POP!OS:基于Ubuntu,POP!OS由System76設(shè)計(jì),特別注重易用性,尤其適合開發(fā)人員和工程師。它提供了對(duì)廣泛硬件的開箱即用支持,并具有如平鋪窗口管理等功能,這可以顯著提高在復(fù)雜設(shè)計(jì)任務(wù)中的生產(chǎn)力。POP!OS還強(qiáng)調(diào)安全性和性能,是EDA專業(yè)人員的理想選擇。

安裝命令

  1. cd ~
  2. mkdir -p gits
  3. cd ~/gits
  4. sudo apt install python3 build-essential gcc
  5. sudo apt install m4 tcsh csh libx11-dev tcl-dev tk-dev libcairo2-dev
  6. sudo apt install mesa-common-dev libglu1-mesa-dev

Open_PDK

Open_PDKs 解決了與硅晶圓廠工藝設(shè)計(jì)包(PDK)非標(biāo)準(zhǔn)化相關(guān)的挑戰(zhàn)。硅晶圓廠提供的PDK通常以多樣化且不可預(yù)測(cè)的文件配置形式交付,這使得它們與開源電子設(shè)計(jì)自動(dòng)化(EDA)工具的集成變得復(fù)雜。此外,這些PDK通常針對(duì)商業(yè)EDA工具進(jìn)行定制,往往忽視了開源工具的需求。

Open_PDKs通過標(biāo)準(zhǔn)化文件和目錄的組織,解決了這些問題。它針對(duì)常用的開放標(biāo)準(zhǔn)格式,如SPICE、Verilog、Liberty和LEF,提供了一致的組織結(jié)構(gòu)。該工具還支持一系列開源EDA工具,包括Magic、Netgen、OpenROAD和KLayout。其安裝程序使用Makefile系統(tǒng)和轉(zhuǎn)換腳本,確保所有所需的工藝文件都放在一致且可預(yù)測(cè)的目錄中。

Open_PDKs 的核心目標(biāo)包括:

  • 標(biāo)準(zhǔn)化:為各種EDA工具和格式建立統(tǒng)一的文件結(jié)構(gòu)。
  • 靈活性:通過通用腳本支持對(duì)新工具、格式和晶圓廠的適應(yīng)性。
  • 定制化:允許添加自定義安裝文件,以根據(jù)需要修改或注釋供應(yīng)商提供的數(shù)據(jù)。

Open_PDKs預(yù)配置了支持Google/SkyWater SKY130開放工藝的文件。它有助于設(shè)置與SKY130工藝兼容的環(huán)境,支持開源EDA工具和工具流程,如Magic、Qflow、OpenLane、Netgen和KLayout。

安裝命令

  1. git clone https://github.com/RTimothyEdwards/open_pdks
  2. cd open_pdks
  3. ./configure --enable-sky130-pdk --enable-sram-sky130
  4. make
  5. sudo make install
  6. make veryclean
  7. ./configure --enable-gf180mcu-pdk --enable-osu-sc-gf180mcu
  8. make
  9. sudo make install
  10. make veryclean
  11. make distclean
  12. cd ~/gits

Magic

Magic 是一款杰出的 VLSI(超大規(guī)模集成電路)布局工具,最初由加州大學(xué)伯克利分校的 John Ousterhout 在 1980 年代開發(fā),他還因創(chuàng)造了 Tcl 腳本語言而聞名。得益于其寬松的伯克利開源許可證,Magic 保持了持久的受歡迎程度,特別是在學(xué)術(shù)機(jī)構(gòu)和小型企業(yè)中。這種許可證使得具有編程傾向的 VLSI 工程師能夠?yàn)楣ぞ咴鎏韯?chuàng)新功能,確保 Magic 隨著制造技術(shù)的進(jìn)步不斷演變。

Magic 的持續(xù)相關(guān)性主要?dú)w功于其強(qiáng)大的核心算法,這些算法支撐了其用戶友好的界面和功能。該工具因其在電路布局方面的易用性而受到高度評(píng)價(jià),這一特點(diǎn)使得它即使在最終設(shè)計(jì)階段仍然是許多專業(yè)人士的首選,盡管他們最終使用的是商業(yè)工具。

? 主要特點(diǎn):

  • 開源許可證: 其寬松的許可證促進(jìn)了廣泛的采用和社區(qū)的持續(xù)改進(jìn)。
  • 用戶友好設(shè)計(jì): Magic 以其直觀的界面和電路布局任務(wù)的易用性而聞名。
  • 先進(jìn)算法: 該工具的成熟算法在管理 VLSI 設(shè)計(jì)方面貢獻(xiàn)巨大,顯著提升了其受歡迎程度和有效性。

? 安裝命令

  1. git clone https://github.com/RTimothyEdwards/magic
  2. cd magic
  3. ./configure --enable-cairo-offscreen
  4. make
  5. sudo make install
  6. make clean
  7. cd ~/gits

Netgen

Netgen 是一款專門用于比較電路網(wǎng)表的工具,稱為布局與原理圖對(duì)比(LVS)。這一關(guān)鍵步驟在集成電路(IC)設(shè)計(jì)流程中至關(guān)重要,確保電路的實(shí)際布局與預(yù)期原理圖一致。通過驗(yàn)證布局的幾何形狀是否與期望的電路匹配,LVS 有助于在設(shè)計(jì)過程的早期捕捉錯(cuò)誤。

對(duì)于非常小的電路,這一步驟通常可以跳過,因?yàn)殡娐凡僮骺梢酝ㄟ^直接提取和模擬來確認(rèn)。然而,對(duì)于非常大的數(shù)字電路,其中布局通常由自動(dòng)化工具從高層描述生成,LVS 變得尤為重要,以確保布局幾何的準(zhǔn)確性和正確性。

LVS 在設(shè)計(jì)大型模擬或混合信號(hào)電路時(shí)需求最大。這些類型的電路通常過于復(fù)雜,難以在合理的時(shí)間內(nèi)進(jìn)行全面模擬,因此 LVS 成為一種更快、更高效的替代方案。即使是較小的電路,LVS 也可以比全面模擬完成得更快,并提供有針對(duì)性的反饋,便于識(shí)別和糾正錯(cuò)誤。

? 主要特點(diǎn):

  • 確保布局準(zhǔn)確性:驗(yàn)證實(shí)際布局是否與預(yù)期原理圖相匹配。
  • 對(duì)大型電路至關(guān)重要:尤其適用于那些難以模擬的大型模擬和混合信號(hào)電路。
  • 更快的反饋:比全面電路模擬提供更快的結(jié)果和錯(cuò)誤檢測(cè)。
  • 對(duì)設(shè)計(jì)流程至關(guān)重要:在確保集成電路設(shè)計(jì)的可靠性和正確性方面發(fā)揮關(guān)鍵作用。

? ?安裝命令

  1. git clone https://github.com/RTimothyEdwards/netgen
  2. cd netgen
  3. ./configure
  4. make
  5. sudo make install
  6. make clean
  7. cd ~/gits

Xschem

Xschem 是一款強(qiáng)大的原理圖捕獲程序,旨在創(chuàng)建層次化的電路表示。通過采用自頂向下的設(shè)計(jì)方法,Xschem 使設(shè)計(jì)師能夠通過更簡(jiǎn)單的構(gòu)建塊來描述復(fù)雜的系統(tǒng),專注于接口、層次結(jié)構(gòu)和實(shí)例屬性。這種模塊化的方法簡(jiǎn)化了復(fù)雜電路的設(shè)計(jì)和驗(yàn)證。

Xschem 支持直接從繪制的原理圖生成 VHDL、Verilog 或 Spice 網(wǎng)表,使得使用各種工具模擬電路變得更加容易。Xschem 的一個(gè)關(guān)鍵特點(diǎn)是其高性能的繪圖引擎,該引擎用 C 語言編寫,并利用 Xlib 繪圖原語。這種架構(gòu)提供了卓越的速度和響應(yīng)能力,即使對(duì)于非常大的電路也能保持高效。

用戶界面使用 Tcl-Tk 工具包構(gòu)建,Tcl 也作為擴(kuò)展語言使用,允許進(jìn)行可定制的腳本編寫。繪圖窗口中的任何用戶命令都對(duì)應(yīng)一個(gè) Tcl 命令,從而可以創(chuàng)建定制的腳本來增強(qiáng)設(shè)計(jì)工作流程。

?主要特點(diǎn):

  • 層次化原理圖設(shè)計(jì): Xschem 支持無限層次的原理圖繪制,使電路設(shè)計(jì)具有可擴(kuò)展性。
  • 靈活的對(duì)象屬性: 原理圖中的任何對(duì)象都可以分配屬性,如 VHDL 泛型或 Spice/Verilog 參數(shù),為設(shè)計(jì)規(guī)范提供了多樣性。
  • 可定制的原語和網(wǎng)表: 用戶可以創(chuàng)建新的 Spice/Verilog 原語并定義自定義網(wǎng)表格式,以滿足特定需求。
  • 可腳本化環(huán)境: Tcl 擴(kuò)展語言允許創(chuàng)建腳本,增強(qiáng)了設(shè)計(jì)過程的自動(dòng)化和定制化。
  • 模擬就緒網(wǎng)表: Xschem 生成 VHDL、Verilog 和 Spice 網(wǎng)表,準(zhǔn)備好進(jìn)行電路模擬。
  • 行為代碼嵌入: 設(shè)計(jì)師可以將行為 VHDL/Verilog 代碼嵌入到原理圖塊的屬性中,將高層次描述與詳細(xì)電路設(shè)計(jì)集成。

? 安裝命令

  1. git clone https://github.com/stefanschippers/xschem.git
  2. cd xschem
  3. ./configure
  4. make
  5. sudo make install
  6. make clean
  7. cd ~/gits

Ngspice

Ngspice 是一個(gè)功能強(qiáng)大的開源 SPICE 模擬器,專為電氣和電子電路的分析與模擬設(shè)計(jì)。它支持各種電路組件,包括 JFET、雙極型和 MOS 晶體管、被動(dòng)元件(電阻、電感、電容)、二極管、傳輸線及其他設(shè)備,這些組件通過網(wǎng)表進(jìn)行互連。

Ngspice 還支持?jǐn)?shù)字電路的模擬,提供事件驅(qū)動(dòng)的高速模擬能力。這使得模擬電路范圍從單個(gè)邏輯門到復(fù)雜的數(shù)字系統(tǒng)都可以實(shí)現(xiàn)。此外,Ngspice 能夠模擬混合信號(hào)電路,將模擬和數(shù)字組件無縫集成在一個(gè)框架內(nèi)。

該模擬器配備了一個(gè)全面的設(shè)備模型庫(kù),涵蓋了主動(dòng)、被動(dòng)、模擬和數(shù)字元件。這些模型來自行業(yè)標(biāo)準(zhǔn)集合、半導(dǎo)體制造商和半導(dǎo)體鑄造廠。用戶通過網(wǎng)表定義電路,Ngspice 生成以電流、電壓和其他電氣量表示的圖形輸出,這些輸出也可以保存為數(shù)據(jù)文件以便進(jìn)一步分析。

雖然 Ngspice 主要通過命令行或文件輸入操作,但它沒有內(nèi)置的原理圖錄入工具。然而,有多個(gè)第三方接口可用,這些接口可以提供原理圖捕獲功能,填補(bǔ)電路設(shè)計(jì)與模擬之間的空白。

主要特點(diǎn):

  • 全面的設(shè)備建模:支持多種主動(dòng)、被動(dòng)、模擬和數(shù)字組件。
  • 混合信號(hào)模擬:能夠模擬包含模擬和數(shù)字元素的電路。
  • 高速數(shù)字模擬:事件驅(qū)動(dòng)的模擬,高效處理復(fù)雜的數(shù)字電路。
  • 靈活的輸出選項(xiàng):生成詳細(xì)的電氣量圖形,并支持?jǐn)?shù)據(jù)導(dǎo)出以進(jìn)行進(jìn)一步分析。
  • 第三方接口支持:雖然沒有內(nèi)置的原理圖錄入功能,但與外部原理圖捕獲工具兼容良好。

安裝命令

  1. git clone git://git.code.sf.net/p/ngspice/ngspice
  2. cd ngspice
  3. ./autogen.sh
  4. mkdir release
  5. cd release
  6. ../configure --with-x --enable-xspice --disable-debug --enable-cider --with-readline=yes --enable-openmp --enable-klu --enable-osdi
  7. make 2>&1 | tee make.log
  8. sudo make install
  9. cd ~gits

KLayout

KLayout 是一款強(qiáng)大的工具,用于查看和編輯 GDS 和 OASIS 布局文件,對(duì)于 VLSI 設(shè)計(jì)至關(guān)重要。它在模擬設(shè)計(jì)和其他復(fù)雜布局任務(wù)中發(fā)揮著關(guān)鍵作用,提供了可視化和編輯功能。KLayout 以其性能和多功能性脫穎而出,使其成為需要精確和高效布局管理的工程師不可或缺的工具。KLayout 不僅是一個(gè)查看器,還是一個(gè)編輯器,能夠全面操作布局文件。憑借其速度、靈活性和強(qiáng)大的功能,KLayout 是從事 VLSI 設(shè)計(jì),特別是模擬和混合信號(hào)電路設(shè)計(jì)的人員的必備工具。

主要特點(diǎn):

  • 快速而準(zhǔn)確的性能:KLayout 以快速加載和渲染布局文件而聞名。它在處理大型設(shè)計(jì)和提供準(zhǔn)確的可視化表現(xiàn)方面效率極高,使其在詳細(xì)分析和編輯中非常有價(jià)值。
  • 高級(jí)層管理:該工具支持復(fù)雜的層配置,包括多層疊加能力、靈活的層顯示屬性和高級(jí)分組選項(xiàng)。用戶可以輕松管理和可視化復(fù)雜設(shè)計(jì),包括設(shè)置透明度和動(dòng)畫以便更好地分析層。
  • 智能編輯功能:KLayout 提供了廣泛的編輯功能,包括智能繪圖功能、真實(shí)就地編輯和無限撤銷/重做能力。用戶可以進(jìn)行精確修改、拉伸形狀以及輕松管理層次操作。
  • 廣泛的腳本和自動(dòng)化:該工具包括一個(gè)強(qiáng)大的腳本環(huán)境,支持 Ruby 和 Python。用戶可以自動(dòng)化任務(wù)、自定義功能以及開發(fā)宏來處理重復(fù)的過程,從而提高生產(chǎn)力和布局管理的靈活性。

安裝命令

  1. sudo apt install qtcreator qtbase5-dev qt5-qmake
  2. sudo apt install qtmultimedia5-dev libqt5xmlpatterns5-dev
  3. sudo apt install libqt5svg5-dev qttools5-dev-tools qttools5-dev
  4. sudo apt install python3-dev
  5. git clone https://github.com/KLayout/klayout
  6. ./build.sh
  7. sudo mv bin-release /usr/local/share/klayout
  8. sudo ln -s /usr/local/share/klayout/klayout /usr/local/bin/klayout
  9. sudo cat > /etc/ld.so.conf.d/klayout-x86_64.conf << EOF
  10. /usr/local/share/klayout
  11. EOF
  12. sudo ldconfig

4、反相器

反相器是數(shù)字電子學(xué)中的一個(gè)基本組件,主要用于反轉(zhuǎn)信號(hào)的邏輯狀態(tài)。它也被稱為 NOT 門。反相器由一對(duì)互補(bǔ)的 MOS 晶體管組成——一個(gè) NMOS 和一個(gè) PMOS,它們以一種配置排列,其中輸入信號(hào)控制這兩個(gè)晶體管。當(dāng)輸入為高電平(邏輯 1)時(shí),NMOS 晶體管導(dǎo)通,將輸出拉低(邏輯 0),而 PMOS 晶體管則關(guān)閉。相反,當(dāng)輸入為低電平(邏輯 0)時(shí),PMOS 晶體管導(dǎo)通,將輸出拉高(邏輯 1),而 NMOS 晶體管則關(guān)閉。這種開關(guān)行為確保了輸出始終與輸入相反。在 Skywater 130nm 工藝的背景下,設(shè)計(jì)和模擬一個(gè)反相器涉及將該工藝特定的技術(shù)文件集成到 Magic VLSI 中,從而實(shí)現(xiàn)準(zhǔn)確的布局創(chuàng)建,并隨后進(jìn)行模擬以驗(yàn)證該反相器在此特定技術(shù)節(jié)點(diǎn)中的性能。

將 SkyWater PDK 集成到 Magic VLSI

要將 SkyWater 130nm PDK(工藝設(shè)計(jì)套件)集成到 Magic VLSI 中,需要將相關(guān)的技術(shù)文件鏈接到 Magic 的庫(kù)中,因?yàn)檫@些文件并未預(yù)安裝。以下命令創(chuàng)建一個(gè)符號(hào)鏈接,允許 Magic 訪問繪制布局所需的 SkyWater 技術(shù)文件。

在 Xschem 中創(chuàng)建 CMOS 反相器的原理圖和符號(hào)

要在 Xschem 中設(shè)計(jì) CMOS 反相器,您需要通過添加必要的組件來創(chuàng)建原理圖,包括 NMOS 和 PMOS 晶體管、電源(VDD)、地(GND)以及用于測(cè)試反相器功能的脈沖源。以下是如何操作的步驟:

  1. 添加 NMOS 和 PMOS 晶體管:
  • 首先,將 SkyWater PDK 庫(kù)中的 NMOS 晶體管(nfet_01v8)和 PMOS 晶體管(pfet_01v8)放置到原理圖畫布上。
  • 將 PMOS 晶體管放置在頂部,它將連接到 VDD,將 NMOS 晶體管放置在底部,連接到 GND。
  1. 電源(VDD)和地(GND):
  • 在 PMOS 晶體管的源極位置放置一個(gè) VDD 符號(hào)。
  • 在 NMOS 晶體管的源極位置放置一個(gè) GND 符號(hào)。
  • 這種設(shè)置確保 PMOS 晶體管連接到正電源,而 NMOS 晶體管連接到地,從而形成 CMOS 反相器的基本結(jié)構(gòu)。
  1. 連接?xùn)艠O:
  • 將 NMOS 和 PMOS 晶體管的柵極連接在一起。這個(gè)連接將作為反相器的輸入(Vin)。
  1. 連接漏極:
  • 將兩個(gè)晶體管的漏極連接在一起。這個(gè)節(jié)點(diǎn)將作為反相器的輸出(Vout)。
  1. 添加脈沖源:
  • 為了測(cè)試反相器,添加一個(gè)脈沖電壓源到輸入(Vin)。這個(gè)脈沖將交替變化高電平和低電平,模擬數(shù)字信號(hào)
  • 將脈沖源的正端連接到 NMOS 和 PMOS 晶體管的公共柵極連接處。
  • 將脈沖源的負(fù)端連接到 GND。
  1. 完成連接:
  • 確保所有節(jié)點(diǎn)正確連接:VDD 連接到 PMOS 的源極,GND 連接到 NMOS 的源極,脈沖源連接到輸入,公共漏極連接作為輸出。

圖三. 反相器原理圖在 Xschem 中

  1. 為反相器創(chuàng)建符號(hào):
  • 完成原理圖后,可以生成一個(gè)反相器的符號(hào)。這個(gè)符號(hào)將在更高層級(jí)的原理圖中作為一個(gè)單一組件來表示整個(gè)反相器電路。
  • 該符號(hào)通常包括輸入(vin)、輸出(vout)、VDD 和 GND 連接。

圖四. 反相器符號(hào)在 Xschem 中

  1. 通過測(cè)試平臺(tái)運(yùn)行仿真:
  • 運(yùn)行仿真的最模塊化方法是通過測(cè)試平臺(tái)。你可以直接創(chuàng)建一個(gè) SPICE netlist 或通過 Xschem 創(chuàng)建測(cè)試平臺(tái)。
  • 在 Xschem 中,設(shè)置以下屬性:
  1. name=SPICE only_toplevel=false
  2. value="
  3. .tran 0.01n 1u
  4. .save all"

此 SPICE 指令將運(yùn)行一個(gè)瞬態(tài)分析 (.tran),時(shí)間步長(zhǎng)為 0.01 納秒,總仿真時(shí)間為 1 微秒。.save all 命令確保所有節(jié)點(diǎn)電壓和電流在仿真后被保存,以便進(jìn)行后續(xù)分析。

圖五.仿真中的反相器

反相器布局

要使用 SkyWater 130nm 工藝在 Magic VLSI 中創(chuàng)建 CMOS 反相器布局,請(qǐng)按照以下詳細(xì)步驟操作。每個(gè)命令都進(jìn)行了解釋,以幫助您理解布局創(chuàng)建過程:

  1. 啟動(dòng) Magic 并加載 SkyWater 配置:
  2. magic -rcfile sky130A.magicrc
  • 這個(gè)命令啟動(dòng) Magic VLSI 加載用于 SkyWater 130nm 工藝技術(shù)的配置文件。
  1. Adjust the Grid: 調(diào)整網(wǎng)格:
  2. % grid 50nm 50nm
  • 默認(rèn)網(wǎng)格可能對(duì)于 SkyWater 130nm 工藝的 150nm 通道長(zhǎng)度來說過于精細(xì)。此命令將網(wǎng)格設(shè)置為 50nm x 50nm,更適合涉及的尺寸。
  1. 設(shè)置光標(biāo)對(duì)齊到用戶網(wǎng)格:
  2. % snap user
  • 此命令使光標(biāo)對(duì)齊到前面設(shè)置的網(wǎng)格上,確保布局元素的精確放置。
  1. 繪制晶體管的柵極(多晶硅):
  • 使用 poly 命令繪制 NMOS 和 PMOS 晶體管的柵極區(qū)域。這是形成柵極電極的多晶硅層。
  1. 繪制 NMOS 晶體管的漏極和源極(n-擴(kuò)散):
  • 使用 ndiff 命令創(chuàng)建 NMOS 晶體管的 n-擴(kuò)散區(qū)域。這些區(qū)域?qū)⒆鳛?NMOS 晶體管的漏極和源極端子。
  1. 擴(kuò)展多晶硅超出 n-擴(kuò)散區(qū)域:
  • 將多晶硅柵極區(qū)域(poly)擴(kuò)展到 n-擴(kuò)散(ndiff)上,以解決與柵極重疊相關(guān)的設(shè)計(jì)規(guī)則檢查(DRC)錯(cuò)誤。這確保了正確的連通性,并避免了 DRC 問題。
  1. 創(chuàng)建 NMOS 晶體管的漏極和源極端子:
  • 在 n-擴(kuò)散區(qū)域(ndiff)中放置局部互連(li),并使用 ndc 命令將其與局部互連連接。此步驟完成漏極和源極端子的創(chuàng)建。
  1. 創(chuàng)建 NMOS 晶體管的體注入:
  • 在 NMOS 晶體管的源極旁邊放置 p-基片擴(kuò)散(psd)和局部互連(li)。使用 psc 命令將 p-基片擴(kuò)散與局部互連連接,形成體注入連接。
  1. 繪制 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)。
  1. 創(chuàng)建接地和電源軌:
  • 使用 metal1 命令繪制接地和電源軌,確保 NMOS 和 PMOS 晶體管正確連接到電源(VDD)和接地(GND)供應(yīng)。

圖六.反向器在Magic中的布局

  1. 運(yùn)行 .tcl 腳本以提高便利性:
  • 為了方便起見,可以將構(gòu)建布局所需的所有命令收集到一個(gè)名為tcl 的 .tcl 腳本中。這個(gè)腳本可以自動(dòng)化布局創(chuàng)建過程,并確保一致性。

圖七. 反向器在Magic中的仿真

5、結(jié)論

在模擬電路設(shè)計(jì)中,確保準(zhǔn)確性和功能性的細(xì)致過程至關(guān)重要。模擬電路,如 CMOS 反相器,需要精確的布局和仿真,以驗(yàn)證設(shè)計(jì)是否符合預(yù)期的性能。開源 EDA 工具,如 Magic VLSI、Xschem 和 KLayout,為實(shí)現(xiàn)這一目標(biāo)提供了強(qiáng)大且經(jīng)濟(jì)有效的手段。例如,Magic VLSI 支持多種工藝的布局設(shè)計(jì),包括 SkyWater 130nm 工藝,而 Xschem 則便于原理圖創(chuàng)建和仿真。KLayout 通過提供先進(jìn)的布局查看和編輯功能,增強(qiáng)了這些工具的能力,使工程師能夠疊加、編輯和驗(yàn)證設(shè)計(jì)。CMOS 反相器作為模擬電路設(shè)計(jì)中的經(jīng)典例子,由一個(gè) PMOS 和一個(gè) NMOS 晶體管組成,分別連接到電源(VDD)和地(GND)。反相器的功能是將邏輯低輸入轉(zhuǎn)換為邏輯高輸出,反之亦然。使用 Magic VLSI 和 Xschem 等工具,工程師可以高效地創(chuàng)建、仿真和驗(yàn)證這樣的設(shè)計(jì)。將這些工具集成到設(shè)計(jì)流程中,可以確保模擬電路滿足性能規(guī)格和設(shè)計(jì)規(guī)則,促進(jìn)健壯可靠的電子系統(tǒng)的實(shí)現(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

  • 集成電路-開源軟件-公開版.pdf

相關(guān)推薦

電子產(chǎn)業(yè)圖譜