安装

SKiDL可以用python代码来描述电子电路的连接逻辑,并无缝导入到KiCAD、AD或Eagle 等传统 EDA 软件中进行后续的物理布局和布线。

用pip安装即可

pip install skidl -i https://pypi.tuna.tsinghua.edu.cn/simple

SkiDL是围绕KiCAD设计的,诸多功能需要依赖KiCAD的库文件。为此,需要安装KiCAD,并设置环境变量。

set KICAD9_SYMBOL_DIR=D:\Libre\KiCad\9.0\share\kicad\symbols
set KICAD9_FOOTPRINT_DIR=D:\Libre\KiCad\9.0\share\kicad\footprints

在命令行中用set设置环境变量是临时的,仅在当前命令行有效。进入python后,引入skidl,仍会弹出一些警告。这是因为skidl会检查从KiCAD6到KiCAD9的所有库文件,但只需设置一个就可以。

示例

官网给出的一个简单的示例如下

from skidl import *

vin, vout, gnd = Net('VI'), Net('VO'), Net('GND')

r1, r2 = 2 * Part("Device", 'R', TEMPLATE, footprint='Resistor_SMD:R_0805_2012Metric')
r1.value = '1K'
r2.value = '500'

vin += r1[1]
gnd += r2[2]
vout += r1[2], r2[1]

generate_netlist(tool=KICAD9)

【Net】用于创建网络,相当于原理图中的导线。上例中,创建了 V i n , V o u t V_{in}, V_{out} Vin,Vout g n d gnd gnd三个网络标号。

【Part】用于实例化元件,其输入参数中,Device是KiCad的默认库名,‘R’ 是电阻。TEMPLATE 表示这是一个模板,允许后续修改其属性;footprint 指定了该元件在 PCB 上的物理封装为 0805 (公制 2012) 贴片电阻。

Part类型重载了乘法,前面乘以2表示返回两个相同的电阻。

设置电阻的阻值没什么好说的,接下来通过【+=】对网络和元器件进行连接。

【generate_netlist】用于生成网表文件,默认文件名skidl.net,同时生成一个skidl_sklib.py脚本。前者可用KiCAD打开,后者则方便后续调用。

用KiCAD验证

打开KiCAD后,直接进入PCB编辑器,点击【文件】->【导入】->【网表…】,选中刚刚生成的.net文件,点击【加载并测试网表】,然后【更新PCB】,结果如下图所示。

在这里插入图片描述

从中可见,我们创建的两个电阻的名字分别是R1和R2,这是自动命名的。如果重新执行下列操作,尽管r1和r2被重新赋值,但此前生成的两个电阻并不会立即消失,而会变成幽灵器件,这是skidl的一个巨大的坑。

r1, r2 = 2 * Part("Device", 'R', TEMPLATE, footprint='Resistor_SMD:R_0805_2012Metric')
print(default_circuit.parts)

'''
[
 R (R): Resistor
    Pin R1/1/~,p8366816745729517227,~,p1/PASSIVE
    Pin R1/2/~,p7203142070438252902,~,p2/PASSIVE,
 R (R): Resistor
    Pin R2/1/~,p8366816745729517227,~,p1/PASSIVE
    Pin R2/2/~,p7203142070438252902,~,p2/PASSIVE,
 R (R): Resistor
    Pin R3/1/~,p8366816745729517227,~,p1/PASSIVE
    Pin R3/2/~,p7203142070438252902,~,p2/PASSIVE,
 R (R): Resistor
    Pin R4/1/~,p8366816745729517227,~,p1/PASSIVE
    Pin R4/2/~,p7203142070438252902,~,p2/PASSIVE]
'''

default_circuit是skidl的全局变量,用于存储当前设计的电路,也是generate_netlist的作用对象。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐