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
    +关注

    关注

    1629

    文章

    21742

    浏览量

    603536
  • Verilog
    +关注

    关注

    28

    文章

    1351

    浏览量

    110113
  • vhdl
    +关注

    关注

    30

    文章

    817

    浏览量

    128144
  • python
    +关注

    关注

    56

    文章

    4797

    浏览量

    84711

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

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

收藏 人收藏

    评论

    相关推荐

    云端AI开发者工具怎么

    云端AI开发者工具通常包括代码编辑器、模型训练平台、自动化测试工具、代码管理工具等。这些工具不仅降低了AI开发的门槛,还极大地提高了开发效率和模型性能。下面,AI部落小编为您介绍云端A
    的头像 发表于 12-05 13:31 133次阅读

    如何帮助孩子高效学习Python:开源硬件实践是最优选择

    显著提升孩子的学习兴趣和对Python原理的理解。本文将探讨为何使用Raspberry Pi(树莓派)或Unihiker(行空板)等开源硬件是孩子们掌握Python的最佳途径。 让孩子们在Py
    的头像 发表于 09-06 09:49 325次阅读

    时序逻辑电路的五种描述方法

    时序逻辑电路是数字电路中的一种重要类型,它具有存储和处理信息的能力。时序逻辑电路描述方法有很多种,不同的方法适用于不同的设计和分析场景。以下是五种常见的时序逻辑
    的头像 发表于 08-28 11:39 1368次阅读

    时序逻辑电路描述方法有哪些

    时序逻辑电路是数字电路中的一种重要类型,它具有存储功能,能够根据输入信号和内部状态的变化改变其输出。时序逻辑电路广泛应用于计算机、通信、控制等领域。本文将介绍时序逻辑
    的头像 发表于 08-28 11:37 628次阅读

    Python建模算法与应用

    Python作为一种功能强大、免费、开源且面向对象的编程语言,在科学计算、数学建模、数据分析等领域展现出了卓越的性能。其简洁的语法、对动态输入的支持以及解释性语言的本质,使得Python在多个平台
    的头像 发表于 07-24 10:41 558次阅读

    python写验证环境cocotb

    本文介绍了cocotb的安装、python tb文件的写法、xrun仿真cocotb的脚本等,我们来看看体验如何。
    的头像 发表于 07-24 09:38 551次阅读
    <b class='flag-5'>用</b><b class='flag-5'>python</b>写验证环境cocotb

    如何实现Python复制文件操作

    Python 中有许多“开盖即食”的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在这篇文章中,你将会看到一些 Python 实现文件复制的特殊方法。下面我们开始学习这九种不同的方法
    的头像 发表于 07-18 14:53 426次阅读

    opencv-python和opencv一样吗

    不一样。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像和视频处理功能。OpenCV-Python
    的头像 发表于 07-16 10:38 1211次阅读

    pycharm进行python爬虫的步骤

    以下是使用PyCharm进行Python爬虫的步骤: 安装PyCharm和Python 首先,您需要安装PyCharm和Python。PyCharm是一个流行的Python集成开发环境
    的头像 发表于 07-11 10:11 853次阅读

    深度学习常用的Python

    深度学习作为人工智能的一个重要分支,通过模拟人类大脑中的神经网络解决复杂问题。Python作为一种流行的编程语言,凭借其简洁的语法和丰富的库支持,成为了深度学习研究和应用的首选工具。本文将深入探讨
    的头像 发表于 07-03 16:04 656次阅读

    请问如何修改工程对应的IDF工具的位置?

    之前esp-idf-v4.4.2建立过工程,编译都没问题。后来开发环境重装后,只要装的是非esp-idf-v4.4.2版本,就不能编译通过。提示错误信息如下: 看上去工程编译过程依然会去C
    发表于 06-06 08:17

    Pyserial库进行与stm32的串口通信,write方法给32发数据时会出现数据的错误和缺失怎么解决?

    我使用的是Pyserial库进行与stm32的串口通信,python可以很好地接收32发的数据,但是我write方法给32发数据时会出现数据的错误和缺失,同样的32程序我
    发表于 03-12 07:32

    proteus属性赋值工具怎么

    Proteus是一种电路设计和仿真软件,在进行电路设计和仿真时,属性赋值是非常重要的步骤。属性赋值工具可以帮助用户快速有效地配置电路元件的属性,从而实现
    的头像 发表于 02-23 17:19 4669次阅读

    如何使用linux下gdb调试python程序

    如何使用linux下gdb调试python程序  在Linux下,可以使用GDB(GNU调试器)调试Python程序。GDB是一个强大的调试工具
    的头像 发表于 01-31 10:41 2630次阅读

    eda工具软件有哪些 EDA工具有什么优势

    和预测提供基础。在进行EDA过程中,使用合适的工具软件可以显著提升效率和准确性。本文将介绍几种常见的EDA工具软件。 Python和其相关的库 Python是一种广泛使用的编程语言,拥
    的头像 发表于 01-30 13:57 1170次阅读