## KiCad库的规范 参见其官方文档:[[https://klc.kicad.org/|Library Conventions - Library maintainer rules & guidelines]] [[KiCad]]官方有对其库的构成、管理以及用户提交的规范说明,通过这个说明文档,我们也可以快速了解[[KiCad]]对其库的通用规则,库的构成方式以及我们在使用中要注意到的一些问题。 [[KiCad]]官方提供[[https://gitlab.com/kicad/libraries/kicad-library-utils|专用的Python脚本]],来自动检测你的库是否满足其规范。 每种PCB设计工具对元器件库的管理是不同的。Altium Designer提供了集成化的原理图符号、PCB封装的管理平台,KiCad则将元器件原理图符号编辑、管理功能和封装的编辑、管理功能分别由独立的功能模块来实现,即便集成化的元器件库管理平台,其原理图符号和PCB封装也可以分时构建。 正如前面讲述过的,PCB从设计到安装主要有三个环节 - 原理图绘制、PCB布局布线、PCB上的元器件安装,在这三个环节中用到的元器件的信息也是不同的: * 原理图绘制中需要的元器件符号(Symbol); * PCB布局、布线中需要的元器件封装(Footprint),它是二维的,现在越来越多的工具支持三维的3D模型的导入以及查看; * PCB安装需要的元器件信息(Device information),在设计PCB的同时,你需要购买正确的元器件并在拿到PCB板以后把这些元器件安装到板子的正确位置上,因此需要元器件的基本信息(包括供应商信息)、在板子上的参考标号等。 在使用工具或查看器件的技术参数时通常会遇到以下的一些技术术语: * Symbol:原理图的基本构成单元,是代表元器件功能的抽象符号; * Footprint:PCB布局、布线中元器件的封装,它类似元器件在PCB上站立同PCB接触的脚印,准确来讲像“鞋”,能够通过焊接来稳定安放元器件的管脚(Pin); * STEP:Standard for the Exchange of Product model data,是3D模型的一种文件格式; * SPICE:Simulation Program with Integrated Circuit Emphasis,用于电路仿真分析; * IBIS:Input/output Buffer Information Specification,用于信号完整性分析等; ### 通用的规范 适用于原理图符号、PCB封装、3D模型、模板等。要点如下: * 只能使用标准的字符来命名库和元器件,中间不能有空格 * 每一个库不能超过250个条目,否则会影响加载速度和检索的效果 * 库和库之间主要以“功能”来区分 * 所有的库必须使用英文 * 避免使用复数来命名 * 大写字母的规则 - 专用词可以全部大写,比如MCU、FPGA;厂商的名字按照厂商要求的规范,比如ROHM、Texas;连接在一起的两个单词,每个首字母大写,比如TestPoint * 库文件名字使用Unix格式的行结尾,比如:*.kicad_mod text=auto ### 原理图符号规范 原理图符号分为没有指定封装的通用符号和已经限定封装的符号。 * 通用符号比如电阻、电容等可以对应多种封装,是在完成原理图设计最后阶段进行封装的关联,在原理图符号库中没有默认的封装。 * 完全限定的符号已经指定了封装,这些符号的名字也是按照生产厂商的型号(MPN)严格命名,这些原理图符号已经有默认的封装,但也是可以通过编辑窗口进行重新分配 下面是一些原理图符号的规范要点: * 按照功能进行划分不同的库 * 库的名字不能跟元器件符号的名字相同 * 不同的厂商有相同型号的器件,要在符号名称前加上厂商的名字 * 完全限定的符号命名要按照厂商的型号 * 通用符号要使用器件的类型,比如Resistor、LED、Conn(可以缩写)、Resistor_x8(使用数量) * 同一个型号如果有不同的封装,要针对不同的封装有不同的符号 * 符号的坐标原点在符号的正中间 * 所有的文本大小都为50mil(1.27mm) * 符号的轮廓线宽至少为10mil(0.254mm) * 黑盒符号用背景颜色填充 * 简单的符号不要用背景颜色填充 * 有复杂功能的符号,内部可以用简单的功能框图 * 管脚连接点必须在符号体的外部 * 管脚名字的位置偏移不能超过50mil(1.27mm), 不要低于20mil, 最好是20mil * 对于有特殊焊盘的器件,比如热焊盘,接地焊盘,其管脚的编号要超过器件管脚的总数,比如SOIC8的器件有散热焊盘,则这个散热焊盘的管脚编号为9 * 一个器件可以分为多个Unit绘制 管脚的规范: * 使用100mil作为网格间距,管脚的起始点在网格的节点上 * 管脚的长度至少为100mil,如果增长,则以50mil步长增加,不要超过300mil * 简单的器件,比如分立的电阻、电容,可以使用较短的管脚 * 同一个器件符号上的所有管脚的长度都要相同 * 管脚的编号必须是独一无二 管脚要按照功能进行分组,而不是按照实际器件上的管脚编号,以方便走线和原理图的直观阅读: * 有类似功能的管脚组合在一起,比如SPI、UART相关的管脚 * 端口的顺序从上到小 * 电源的正极性端口在上侧,负极性端口在下侧 * 输入/控制/逻辑端口放在符号的左侧 * 输出/被控制的/驱动端口放在符号的右侧 多个管脚有同一个功能,比如GND等,这些管脚放置在同一个位置: * 这些管脚不能是NC(无连接) * 相同功能的电源管脚要放在一起,除非数据手册上规定每一个管脚都有独立的去耦电容 * 这些管脚必须有相同的名字、相同的电气类型而且逻辑上是连接在一起的 * 其中的一个管脚必须是可见的 管脚的电气类型必须设置正确: * 电源和地管脚必须设定为Power Input或Power Output * 逻辑管脚要按照数据手册来设置 * 对于可以编程的管脚可以设置为Bidirectional 对于在封装上没有连接的管脚在原理图符号中可以忽略掉 尽可能不要隐藏管脚,以下情形除外: * 电源管脚采用了全局符号 * NC管脚 * 多个管脚有同一功能,放置在同一个位置,只有其中一个管脚显示,其它管脚隐藏 低电平有效的管脚要在符号的名字上面放置一个横线来做标记,比如~{RESET} 与封装的关联: * 对于有默认封装的原理图符号,要连接到有效的封装文件 * 对于通用的符号,其封装信息部分空着 * 封装筛选器要能够匹配所有适配的封装,不能对应出错误的封装 符号的数据组构成: 元器件的参考标号(RefDes) ^参考标号 ^ 器件类型 ^ |A |Sub-assembly or plug-in module| |AE |Antenna| |BT |Battery| |C |Capacitor| |D |Diode| |DS |Display| |F |Fuse| |FB |Ferrite bead| |FD |Fiducial| |FL |Filter| |H |Hardware (mounting screws, etc)| |J |Jack, fixed part of a connector pair| |JP |Jumper / link| |K |Relay| |L |Inductor, coil, ferrite bead| |LS |Loudspeaker or buzzer| |M |Motor| |MK |Microphone| |P |Plug, movable part of a connector pair| |Q |Transistor| |R |Resistor| |RN |Resistor network| |RT |Thermistor| |RV |Varistor| |SW |Switch| |T |Transformer| |TC |Thermocouple| |TP |Test point| |U |Integrated circuit (IC)| |Y |Crystal / oscillator| |Z |Zener diode| 符号的信息和数据组区域要按照需要填写 特殊的符号 * Power Flag符号 * 图形化符号,用以标记原理图,无封装相对应 ### PCB封装规范 封装库按照功能区分,名字以.pretty为扩展名 连接器比较特殊: * 先按照功能归类 - Conn_USB * 如果其功能很难归类,就按照机械类型 - Conn_DSUB 每一个封装都是一个.kicad_mod的文件(存在.pretty目录下),封装的名字主要取决于封装的类型: 专用的封装优先,比如QFN、C 封装的名字和管脚的数量中间用横线分割,比如QFN-48 带有特殊焊盘的封装在管脚数量后面添加特殊的标记,比如DFN-6-1EP_2x2mm_P0.5mm_EP0.61x1.42mm 封装的尺寸信息使用长x宽(高为可选)的方式表示:3.5x3.5x0.2mm 管脚的分布:2x15 管脚间距信息前面加一个P:P1.27mm 封装名字的前缀: 封装的名字必须直观、清晰地表达出该封装的作用和参数 厂商专用的封装前缀 - Texas_S-PVQFN-N48_ 专用的封装命名规范: SMD芯片命名 - LED_0805_2012Metric_ReverseMount ^英制代码 ^公制代码 ^英制尺寸 ^公制尺寸 ^ |01005 |0402 |0.0157 in × 0.0079 in |0.4 mm × 0.2 mm | |0201 |0603 |0.024 in × 0.012 in |0.6 mm × 0.3 mm | |0402 |1005 |0.039 in × 0.020 in |1.0 mm × 0.5 mm | |0603 |1608 |0.063 in × 0.031 in |1.6 mm × 0.8 mm | |0805 |2012 |0.079 in × 0.049 in |2.0 mm × 1.25 mm | |1008 |2520 |0.098 in × 0.079 in |2.5 mm × 2.0 mm | |1206 |3216 |0.126 in × 0.063 in |3.2 mm × 1.6 mm | |1210 |3225 |0.126 in × 0.098 in |3.2 mm × 2.5 mm | |1806 |4516 |0.177 in × 0.063 in |4.5 mm × 1.6 mm | |1812 |4532 |0.18 in × 0.13 in |4.5 mm × 3.2 mm | |1825 |4564 |0.18 in × 0.25 in |4.5 mm × 6.4 mm | |2010 |5025 |0.197 in × 0.098 in |5.0 mm × 2.5 mm | |2512 |6332 |0.25 in × 0.13 in |6.3 mm × 3.2 mm | |2920 |7451 |0.29 in × 0.20 in |7.4 mm × 5.1 mm | 通用封装要求: * 数据手册的推荐信息要优先考虑 * 管脚1在封装的左上角 * 连在一起的铜有同一个焊盘名 * 热焊盘要按照数据手册中规定的大小、位置以及是否需要热过孔 * 封装的禁止区处理 - 比如天线等,要参照数据手册的规定 丝印层的处理: * RefDes必须在顶层,文字大小为1mm,文字宽度为0.15mm,线宽在0.1 ~ 0.15mm之间 * 丝印不能放置在焊盘上或其它暴露在外的铜区域 * 对于SMD器件,安装器件以后,丝印必须能完整可见 * 对于穿孔器件,如有需要,可以在器件下面放置能够帮助组装的附加信息 * 器件的管脚1必须在丝印层标注出来,且在组装后能够看到 装配层(F.Fab, B.Fab) 的处理 * 元器件在PCB板上的简化的装配外形信息: * 必须在F.Fab层有简化的元器件外形信息,线宽0.1mm ~ 0.15mm * 对于有极性或有排列方向/顺序的器件封装,管脚1要清晰标记出来 * 器件的名字(封装的名字)要在F.Fab层显示出来,文字大小为0.5-1mm,推荐1mm,文字线宽为文字大小的15%,放置在器件轮廓的下面 * 在F.Fab层也放置一个RefDes的copy 外框层(F.CrtYd, B.CrtYd)的处理 在F.CrtYd层要有完整封闭的外框,采用0.05mm的线宽绘制,绘制时选择Grid为0.01mm,与器件实体之间的间隔设定规则为: * 间隔一般为0.25mm,小于0603封装的器件,间隔可以设定为0.15mm * 连接器的间隔一般设为0.5mm * 带壳的电容间隔一般设为0.5mm * 晶体的间隔一般设为0.5mm * BGA器件的间隔一般设为1mm 表面贴装的器件: 类型选定为SMD 锚点(给贴片机指定位置用)选定为器件的中心位置 SMD器件的焊盘出现在F.Cu、F.Mask、F.Paste层,如果SMD器件放置在底层,则焊盘出现在B.Cu、B.Mask、B.Paste层 穿孔器件: * 类型选择为Through Hole * 锚点放置在器件的第一个管脚位置 * 第一个管脚为长方形或长方圆头形,其它焊盘为圆孔或椭圆孔 * 穿孔器件的焊盘出现在所有的铜层、F.Mask, B.Mask层 * 丝印层关闭 * 圆环的最小宽度为0.15mm * 最小的孔径 = 最大管脚直径 + 0.2mm * 椭圆孔 - 在所有方向要保证离管脚有0.2mm的间距,只有在管脚的长宽比大于2的时候才允许使用椭圆孔 虚拟的器件: 有封装(也许有原理图符号),但没有实际的器件与之相对应: * 安装孔 * 焊接桥 * Net Ties * 测试点 * 框标 虚拟器件创建的时候需要在封装属性对话框中勾选“Virtual” 封装属性 封装元数据按照需要填写: 参考字段设置为REF** 值和封装名字字段与封装的文件名一致(忽略掉.kicad_mod扩展名) 描述字段包含了用逗号分隔的信息,如果需要的化可以通过URL指向该封装的规格书 关键词字段包含了用空格分隔的关键词 3D模型的要求: * 所有的非虚拟的器件都要有3D模型的参考,即便目前还没有3D模型数据, * 3D模型文件必须放置在一个库(目录)里,这个库与封装库有同样的名字,但以.3dshapes为扩展名:Capacitor_SMD.pretty → Capacitor_SMD.3dshapes * 3D模型文件要与封装命名一致(忽略掉文件扩展名): SOIC-8.kicad_mod → SOIC-8.wrl * 如果一个封装是一个简单的变形,不改变3D模型,可以使用一个通用的3D模型,不再需要复制这个模型: R0805_HandSoldering.kicad_mod → R0805.wrl * 模型的比例必须是1:1:1 * 旋转和偏移必须为0(在3D模型软件中该器件的模型必须与封装相对准) * 指向3D模型的数据必须有${KICAD6_3DMODEL_DIR}/ 前缀 * 文件类型一定是.wrl (KiCad在Step导出的时候会自动用.step来代替) ### 3D模型规范 * WRL:WRL文件包含了材料的属性,可以用来做实际的渲染,但不能导出为MCAD套件 * STEP:STEP文件用于和MCAD软件套件集成,但不包含材料属性,无法用于实际的渲染 对准和缩放: * 3D模型必须准确对准,并且通过适当缩放能够匹配器件的封装 * STEP文件包含了绝对的尺寸信息,不能再进行缩放 * WRL文件没有指定绝对的尺寸,只是相对的尺寸,可以进行缩放 * 3D模型的旋转方向必须正确 推荐使用[[https://www.freecad.org/|FreeCAD来创建和处理3D模型]],也可以选用OpenSCAD或[[https://gitlab.com/kicad/libraries/kicad-packages3D-generator|CadQuery]].