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

描述

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

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

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

  

FPGA

  在这里,您在原理图编辑器(对于 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 的更传统的示意图将部件的互连显示为有向图。

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

  

FPGA

  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 文件如下所示:

FPGA

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

 

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

FPGA

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

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

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

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分