0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

開源工具SkiDL - 用Python來描述電路

電子森林 ? 來源:電子森林 ? 作者: 蘇老師 ? 2021-10-30 10:07 ? 次閱讀

我們用Verilog、VHDL這種硬件描述語言來設計FPGA,是否有一種方式來描述電路?如果采用了這種方式,也會像HDL在FPGA、ASIC領域一樣成為一種主流的趨勢么?我們來看看SkiDL的嘗試。

SKiDL 是一個模塊,允許您使用 Python 緊湊地描述電子電路和組件的互連。 生成的 Python 程序執(zhí)行電氣規(guī)則檢查以查找常見錯誤并輸出用作 PCB 布局工具輸入的網表。

首先,讓我們看看 KiCad 中的“正常”設計流程:

在這里,您在原理圖編輯器(對于 KiCad,即 EESCHEMA)中開始并繪制原理圖。由此,EESCHEMA 生成一個網表文件,其中列出了使用的組件以及它們的引腳如何互連。然后,您將使用 PCB 布局工具(如 KiCad 的 PCBNEW)來排列零件封裝并繪制連接網表中指定的引腳的線跡。

完成后,PCBNEW 會輸出一組 Gerber 文件,這些文件將發(fā)送給 PCB 制造商,該制造商將創(chuàng)建物理 PCB 并將其運送給您。然后你會在 Twitter 上張貼他們的照片,然后因為你對這個項目感到厭煩而立即把它們扔進抽屜里幾年。

在基于 SKiDL 的設計流程中,您使用文本編輯器創(chuàng)建 Python 代碼文件,該文件使用 SKiDL 庫來描述組件的互連。該代碼文件由 Python 解釋器執(zhí)行,并輸出一個網表文件。從那里開始,設計流程與基于原理圖的流程相同(包括將 PCB 傾倒在抽屜中)。

那么,您為什么要使用 SKiDL?以下是 SKiDL 為電子設計帶來的一些功能:

只需要一個文本編輯器和 Python。

具有強大、靈活的語法(因為它是 Python)。

允許對電子電路進行簡潔的描述(考慮不要通過多頁原理圖跟蹤信號)。

允許電子電路的文本描述(考慮對電路使用 diff 和 git)。

對常見錯誤(例如,未連接的設備 I/O 引腳)執(zhí)行電氣規(guī)則檢查 (ERC)。

支持電子設計的線性/分層/混合描述。

促進設計重用(考慮使用 PyPi 和 Github 分發(fā)電子設計)。

可以創(chuàng)建其行為/結構以參數(shù)方式改變的智能電路模塊(考慮根據(jù)您所需的截止頻率自動調整組件值的濾波器)。

可以使用任何 ECAD 工具(只需要兩種方法:一種用于讀取零件庫,另一種用于輸出正確的網表格式)。

利用 Python 生態(tài)系統(tǒng)的所有優(yōu)勢(因為它是 Python)。

免費軟件:MIT 許可證。

開源:https://github.com/devbisme/skidl

生成原理圖:

盡管 SKiDL 可以讓您避免繁瑣的原理圖繪制,但有些人仍然希望看到他們電路的圖形描述。為此,SKiDL 可以使用 1) graphviz DOT 語言或 2) 作為使用 SVG 的更傳統(tǒng)的示意圖將部件的互連顯示為有向圖。

以下電路將用于說明這兩種方法:

The SKiDL script for this circuit is:

from skidl import *

# Create part templates.
q = Part(lib="Device.lib", name="Q_PNP_CBE", dest=TEMPLATE, symtx="V")
r = Part("Device", "R", dest=TEMPLATE)

# Create nets.
gnd, vcc = Net("GND"), Net("VCC")
a, b, a_and_b = Net("A"), Net("B"), Net("A_AND_B")

# Instantiate parts.
gndt = Part("power", "GND")  # Ground terminal.
vcct = Part("power", "VCC")  # Power terminal.
q1, q2 = q(2)
r1, r2, r3, r4, r5 = r(5, value="10K")

# Make connections between parts.
a & r1 & q1["B", "C"] & r4 & q2["B", "C"] & a_and_b & r5 & gnd
b & r2 & q1["B"]
q1["C"] & r3 & gnd
vcc += q1["E"], q2["E"], vcct
gnd += gndt

點圖

注意:查看 DOT 文件需要您在系統(tǒng)上安裝 graphviz。

要為電路生成 DOT 文件,只需將以下內容附加到腳本末尾:

generate_dot(file_='and_gate.dot')

運行腳本生成and_gate.dot文件后,您可以使用以下命令將其轉換為位圖文件:

$ dot -Tpng -Kneato -O and_gate.dot

生成的 and_gate.dot.png 文件如下所示:

e431cd4e-38e3-11ec-82a8-dac502259ad0.png

這張圖可以作為一個小電路的健全性檢查,但你可以想象如果它包括具有數(shù)百個引腳的微控制器或 FPGA 會是什么樣子!

另外你可以生成SVG格式的原理圖

e4673f9c-38e3-11ec-82a8-dac502259ad0.png

也可以將現(xiàn)有的KiCad設計轉換到SkiDL

也可以使用SkiDL來描述你的電路,并運行SPICE進行仿真。

我對這個了解得很少,只是覺得它值得關注,先分享出來,供有興趣的朋友參考。

編輯:jq
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1620

    文章

    21510

    瀏覽量

    598895
  • Verilog
    +關注

    關注

    28

    文章

    1333

    瀏覽量

    109713
  • vhdl
    +關注

    關注

    30

    文章

    816

    瀏覽量

    127951
  • python
    +關注

    關注

    53

    文章

    4753

    瀏覽量

    84073

原文標題:開源工具SkiDL - 用Python來描述電路

文章出處:【微信號:xiaojiaoyafpga,微信公眾號:電子森林】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    python寫驗證環(huán)境cocotb

    本文介紹了cocotb的安裝、python tb文件的寫法、xrun仿真cocotb的腳本等,我們來看看體驗如何。
    的頭像 發(fā)表于 07-24 09:38 ?294次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>python</b>寫驗證環(huán)境cocotb

    如何使用linux下gdb調試python程序

    如何使用linux下gdb調試python程序? 在Linux下,可以使用GDB(GNU調試器)調試Python程序。GDB是一個強大的調試工具
    的頭像 發(fā)表于 01-31 10:41 ?1956次閱讀

    python shell怎么

    Python Shell的使用方法、功能和一些常見的操作技巧。 Python Shell的啟動: Python Shell可以通過在命令行中輸入 python 命令
    的頭像 發(fā)表于 11-29 14:36 ?863次閱讀

    14行Python代碼創(chuàng)建Switch自制程序

    Python開發(fā)Switch程序,在你的Switch上運行Python代碼,你需要用到一個名為PyNX的開源工具,操作流程如下: 1.
    的頭像 發(fā)表于 11-02 14:41 ?443次閱讀

    Python的優(yōu)雅之處:Descriptor(描述符)

    語法糖的實現(xiàn)上也有使用到(在下面的文章會一一介紹)。 當你點進這篇文章時 你也許沒學過描述符,甚至沒聽過描述符。 或者你對描述符只是一知半解 無論你是哪種,本篇都將帶你全面的學習描述
    的頭像 發(fā)表于 11-02 10:52 ?891次閱讀
    <b class='flag-5'>Python</b>的優(yōu)雅之處:Descriptor(<b class='flag-5'>描述</b>符)

    Python 如何一鍵轉化代碼為流程圖

    Graphviz是一個可以對圖進行自動布局的繪圖工具,由貝爾實驗室開源。我們在上次 Python 快速繪制畫出漂亮的系統(tǒng)架構圖 提到的diagrams,其內部的編排邏輯就用到了這個開源
    的頭像 發(fā)表于 11-01 10:39 ?1930次閱讀
    <b class='flag-5'>Python</b> 如何一鍵轉化代碼為流程圖

    Kivy :開源跨平臺的Python 框架

    教你如何使用 Kivy 編寫一款乒乓球游戲。我們將從一個基本的應用程序開始,描述創(chuàng)建這個游戲的每個步驟。 Kivy 是 Python 和 Cython 編寫的,基于 OpenGL ES 2,支持各種輸入設備并擁有豐富的部件庫。
    的頭像 發(fā)表于 10-31 15:27 ?859次閱讀
    Kivy :<b class='flag-5'>開源</b>跨平臺的<b class='flag-5'>Python</b> 框架

    Pandas:Python中最好的數(shù)據(jù)分析工具

    Pandas絕對是Python中最好的數(shù)據(jù)分析工具,不接受反駁。 本文將展示如何美化 Pandas DataFrame 中的數(shù)字,并使用一些更高級的 Pandas 樣式可視化選項,提高您
    的頭像 發(fā)表于 10-31 10:47 ?389次閱讀
    Pandas:<b class='flag-5'>Python</b>中最好的數(shù)據(jù)分析<b class='flag-5'>工具</b>

    FoolNLTK:簡單好用的中文NLP工具

    FoolNLTK — 作者號稱“可能不是最快的開源中文分詞,但很可能是最準的開源中文分詞”。 這個開源工具包基于 BiLSTM模型 訓練而成,功能包含分詞,詞性標注,實體識別。并支持用
    的頭像 發(fā)表于 10-30 09:40 ?860次閱讀

    Python漢字拼音轉換工具

    將漢字轉為拼音,可以用于批量漢字注音、文字排序、拼音檢索文字等常見場景。 現(xiàn)在互聯(lián)網上有許多拼音轉換工具,基于Python開源模塊也不少,今天給大家介紹一個功能特性最多的模塊
    的頭像 發(fā)表于 10-17 17:18 ?486次閱讀

    關于兩個Python開源識別工具的效果

    回復希望出一篇 OCR 相關的文章,今天嘗試了一下 cnocr 和 tesseract 兩個 Python 開源識別工具的效果,給大家分別講講兩個工具的使用方法和對比效果。 1.準備
    的頭像 發(fā)表于 10-17 11:36 ?521次閱讀
    關于兩個<b class='flag-5'>Python</b><b class='flag-5'>開源</b>識別<b class='flag-5'>工具</b>的效果

    Python繪制世界地圖

    Python之所以這么流行,是因為它不僅能夠應用于科技領域,還能用來做許多其他學科的研究工具,繪制地圖便是其功能之一。 今天我們matplot工具包之一的 mpl_toolkits
    的頭像 發(fā)表于 10-17 11:18 ?725次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>Python</b><b class='flag-5'>來</b>繪制世界地圖

    抖音去水印工具的使用方法

    TikTokDownload 是由國人開源的抖音去水印視頻下載工具。開源地址是: https://github.com/Johnserf-Seed/TikTokDownload 對于某些做視頻分析
    的頭像 發(fā)表于 10-16 11:46 ?843次閱讀
    抖音去水印<b class='flag-5'>工具</b>的使用方法

    Python開發(fā)者必備工具

    這篇文章會提供一些優(yōu)化代碼的工具。會讓代碼變得更簡潔,或者更迅速。 當然這些并不能代替算法設計,但是還是能讓 Python 加速很多倍。 其實前面講算法的文章,也有提到過。比如適用于雙向隊列
    的頭像 發(fā)表于 10-16 11:14 ?385次閱讀

    什么是磁場?哪些物理量描述磁場?

    1、什么是磁場?哪些物理量描述磁場? 有磁力作用的空間叫做磁場。磁場由永久磁鐵產生,也可由電流通過導線產生。 磁場可以磁力線描繪,磁
    的頭像 發(fā)表于 09-24 16:23 ?3946次閱讀