0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

开源工具SkiDL - 用Python来描述电路

电子森林 来源:电子森林 作者: 苏老师 2021-10-30 10:07 次阅读

我们用Verilog、VHDL这种硬件描述语言来设计FPGA,是否有一种方式来描述电路?如果采用了这种方式,也会像HDL在FPGA、ASIC领域一样成为一种主流的趋势么?我们来看看SkiDL的尝试。

SKiDL 是一个模块,允许您使用 Python 紧凑地描述电子电路和组件的互连。 生成的 Python 程序执行电气规则检查以查找常见错误并输出用作 PCB 布局工具输入的网表。

首先,让我们看看 KiCad 中的“正常”设计流程:

在这里,您在原理图编辑器(对于 KiCad,即 EESCHEMA)中开始并绘制原理图。由此,EESCHEMA 生成一个网表文件,其中列出了使用的组件以及它们的引脚如何互连。然后,您将使用 PCB 布局工具(如 KiCad 的 PCBNEW)来排列零件封装并绘制连接网表中指定的引脚的线迹。

完成后,PCBNEW 会输出一组 Gerber 文件,这些文件将发送给 PCB 制造商,该制造商将创建物理 PCB 并将其运送给您。然后你会在 Twitter 上张贴他们的照片,然后因为你对这个项目感到厌烦而立即把它们扔进抽屉里几年。

在基于 SKiDL 的设计流程中,您使用文本编辑器创建 Python 代码文件,该文件使用 SKiDL 库来描述组件的互连。该代码文件由 Python 解释器执行,并输出一个网表文件。从那里开始,设计流程与基于原理图的流程相同(包括将 PCB 倾倒在抽屉中)。

那么,您为什么要使用 SKiDL?以下是 SKiDL 为电子设计带来的一些功能:

只需要一个文本编辑器和 Python。

具有强大、灵活的语法(因为它是 Python)。

允许对电子电路进行简洁的描述(考虑不要通过多页原理图跟踪信号)。

允许电子电路的文本描述(考虑对电路使用 diff 和 git)。

对常见错误(例如,未连接的设备 I/O 引脚)执行电气规则检查 (ERC)。

支持电子设计的线性/分层/混合描述。

促进设计重用(考虑使用 PyPi 和 Github 分发电子设计)。

可以创建其行为/结构以参数方式改变的智能电路模块(考虑根据您所需的截止频率自动调整组件值的滤波器)。

可以使用任何 ECAD 工具(只需要两种方法:一种用于读取零件库,另一种用于输出正确的网表格式)。

利用 Python 生态系统的所有优势(因为它是 Python)。

免费软件:MIT 许可证。

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

生成原理图:

尽管 SKiDL 可以让您避免繁琐的原理图绘制,但有些人仍然希望看到他们电路的图形描述。为此,SKiDL 可以使用 1) graphviz DOT 语言或 2) 作为使用 SVG 的更传统的示意图将部件的互连显示为有向图。

以下电路将用于说明这两种方法:

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 文件需要您在系统上安装 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

这张图可以作为一个小电路的健全性检查,但你可以想象如果它包括具有数百个引脚的微控制器或 FPGA 会是什么样子!

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

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

也可以将现有的KiCad设计转换到SkiDL

也可以使用SkiDL来描述你的电路,并运行SPICE进行仿真

我对这个了解得很少,只是觉得它值得关注,先分享出来,供有兴趣的朋友参考。

编辑:jq
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593194
  • Verilog
    +关注

    关注

    28

    文章

    1326

    浏览量

    109302
  • vhdl
    +关注

    关注

    30

    文章

    815

    浏览量

    127684
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83466

原文标题:开源工具SkiDL - 用Python来描述电路

文章出处:【微信号:xiaojiaoyafpga,微信公众号:电子森林】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    泰克科技推出开源Python仪器驱动程序包

    泰克科技公司于今天宣布推出开源Python仪器驱动程序包。该软件包完全免费,可面向仪器自动化应用提供原生的Python用户体验。这款开源Python
    的头像 发表于 11-15 15:57 358次阅读

    Python的优雅之处:Descriptor(描述符)

    学习 Python 这么久了,说起 Python 的优雅之处,能让我脱口而出的, Descriptor(描述符)特性可以排得上号。 描述符 是Pyt
    的头像 发表于 11-02 10:52 679次阅读
    <b class='flag-5'>Python</b>的优雅之处:Descriptor(<b class='flag-5'>描述</b>符)

    Python 如何一键转化代码为流程图

    Graphviz是一个可以对图进行自动布局的绘图工具,由贝尔实验室开源。我们在上次 Python 快速绘制画出漂亮的系统架构图 提到的diagrams,其内部的编排逻辑就用到了这个开源
    的头像 发表于 11-01 10:39 1426次阅读
    <b class='flag-5'>Python</b> 如何一键转化代码为流程图

    Kivy :开源跨平台的Python 框架

    好久没有写游戏系列教程了,今天恰好浏览到了 Kivy 这个开源跨平台的Python 框架,它能用于开发多点触控的用户界面程序,允许快速简单的交互设计,非常方便,于是有了制作本教程的想法
    的头像 发表于 10-31 15:27 565次阅读
    Kivy :<b class='flag-5'>开源</b>跨平台的<b class='flag-5'>Python</b> 框架

    Python汉字拼音转换工具

    将汉字转为拼音,可以用于批量汉字注音、文字排序、拼音检索文字等常见场景。 现在互联网上有许多拼音转换工具,基于Python开源模块也不少,今天给大家介绍一个功能特性最多的模块
    的头像 发表于 10-17 17:18 291次阅读

    关于两个Python开源识别工具的效果

    回复希望出一篇 OCR 相关的文章,今天尝试了一下 cnocr 和 tesseract 两个 Python 开源识别工具的效果,给大家分别讲讲两个工具的使用方法和对比效果。 1.准备
    的头像 发表于 10-17 11:36 270次阅读
    关于两个<b class='flag-5'>Python</b><b class='flag-5'>开源</b>识别<b class='flag-5'>工具</b>的效果

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

    TikTokDownload 是由国人开源的抖音去水印视频下载工具开源地址是: https://github.com/Johnserf-Seed/TikTokDownload 对于某些做视频分析
    的头像 发表于 10-16 11:46 561次阅读
    抖音去水印<b class='flag-5'>工具</b>的使用方法

    K210的Micro-Python移植,有已经移植好的开源下载吗?

    K210的Micro-Python移植,有已经移植好的开源下载吗?谢谢。
    发表于 09-14 07:26

    如何使用Python包装器正确构建OpenVINO工具套件

    要将 Python* 与 Linux* 版开源 OpenVINO™工具套 件一同使用,您必须安装 Python* 3.5 或更高版本,然后再在 CMake 命令行中指定正确的
    发表于 08-15 07:13

    优化Python代码有哪些工具

    Python是一种强大的编程语言,但在面对复杂项目和紧迫的时间要求时,提高Python的使用效率变得至关重要。为此,以下是详细介绍十大工具,它们可以帮助您加速开发流程、提高编程体验并优化Pyt
    的头像 发表于 07-24 09:28 876次阅读

    关于Python 加速工具的选单

      这篇文章会提供一些 优化代码的工具 。会让代码变得更简洁,或者更迅速。 当然这些并不能代替算法设计,但是还是能让 Python 加速很多倍。 这篇文章主要讲 优化单处理器的代码 ,下面会介绍一些
    的头像 发表于 07-07 11:19 230次阅读

    Python命令补全工具argcomplete简介

    在使用Python 命令或者 Python的命令行工具的时候,一个痛点是没有补全。比如python -m后面输入包名字,就没有提示,每次想运行一个http server的时候,都需要搜
    发表于 07-04 10:19 354次阅读

    Modbus网关和工具开源分享

    电子发烧友网站提供《Modbus网关和工具开源分享.zip》资料免费下载
    发表于 06-13 11:06 3次下载
    Modbus网关和<b class='flag-5'>工具</b><b class='flag-5'>开源</b>分享

    如何把Python脚本集成到GUI工具包-Tkinter

    Tkinter(即 tk interface,简称“Tk”)本质上是对 Tcl/Tk 软件包的 Python 接口封装,它是 Python 官方推荐的 GUI 工具包,属于 Python
    的头像 发表于 05-05 15:02 392次阅读
    如何把<b class='flag-5'>Python</b>脚本集成到GUI<b class='flag-5'>工具</b>包-Tkinter

    网络工程师学Python-开源自动化部署工具Fabric

    Python Fabric是一个基于Python开源自动化部署工具,可以简化管理远程服务器的过程。
    的头像 发表于 04-28 09:54 495次阅读