EDA(Electronic design automation) 用于设计电子设备,电子设备可能包括集成电路(IC)、印制电路板(PCB)、现场可编程门阵列(FPGA)或它们的组合。
先简单搜集一下网络上的资料,简单整理一下。作为以后学习的基础。主要了解一下PCB设计软件,以及常见EDA软件用于原理图、PCB图、Gerber文件的后缀。
- Candence
- AD
- PADS
- KiCad
- EASYEDA/LCEDA
IC设计软件
三个巨头?
- Synopsys
- Cadence Design Systems
- Siemens EDA(原 Mentor Graphics)
Synopsys用于半导体设计、验证、IP集成等,没有适用于小公司的 PCB设计软件,其他两家有相应的产品。
Candence Design Systems
- Virtuoso Platform:专为模拟、混合信号和射频IC设计定制,提供从电路设计到版图编辑和验证的完整解决方案。
- Allegro PCB Designer:Allegro /əˈleɪɡroʊ/ 是一种高级的印制电路板(PCB)设计解决方案,用于复杂的PCB设计和生产准备。支持高速电路设计需求,包括信号完整性分析、热分析和电磁干扰分析。
- Incisive Functional Verification Platform:提供全面的功能验证解决方案,支持从单一IP到系统级芯片的验证需求。
- Tempus Timing Signoff Solution:一个时序签核工具,用于分析和优化IC设计的时序。
- Spectre Circuit Simulator:是一个高性能模拟和混合信号电路仿真器,适用于复杂模拟电路的精确分析。
- OrCAD:是针对较小规模设计项目的电路设计软件,提供电路图绘制、电路仿真和PCB设计工具。
Siemens EDA
- Calibre:业界领先的IC物理验证平台,用于检查IC设计的几何和电气规则一致性,确保它们符合制造工艺要求。
- Xpedition Enterprise:一个综合的PCB设计流程解决方案,提供从初始系统设计到最终生产的全过程支持。支持高级PCB设计功能,包括复杂的布局、布线、分析和协作工具。
- Tessent:提供一系列硅测试和产量分析工具,专注于增加复杂SoC设计的制造测试覆盖率和优化生产效率。
- Polarion:是一个企业级的应用生命周期管理(ALM)解决方案,支持需求管理、质量保证、项目管理和协作。
- HyperLynx:提供广泛的电子设计仿真工具,用于分析PCB设计中的信号完整性、电源完整性和电磁兼容性。
- Valor:是PCB制造解决方案,支持PCB设计验证、制造过程准备和管理。
- Capital:是针对汽车行业的电气系统和线束设计解决方案。
- PADS Standard:面向小到中等规模的企业和个人设计师,提供足够的功能来处理相对简单到中等复杂度的PCB设计。包括基本的电路设计、布局、布线和基本的仿真工具。它是为了提供一个相对经济、易于使用的解决方案,以满足较小规模设计需求。
Synopsys
- Design Compiler:是一款用于逻辑综合的工具,它将RTL(寄存器传输级)代码转换成门级网表。
- PrimeTime:是一个静态时序分析工具,用于验证集成电路设计的时序性能是否满足规格要求。
- IC Compiler II: 是一款高级的物理设计工具,用于处理从网表到最终版图的布局和布线。
- HSPICE:是一个行业标准的SPICE(Simulation Program with Integrated Circuit Emphasis)仿真器,用于模拟分析电子电路。
- Verdi:是一个综合的调试平台,提供自动化的调试环境来增强芯片设计和验证的效率。
- Fusion Compiler: 是一款综合工具,集成了逻辑综合和物理实现,旨在优化设计流程,减少迭代次数。
- Formality:是一款形式验证工具,用于验证RTL代码和生成的网表之间的功能一致性。
- ZeBu Server: 是一款高性能的仿真加速和仿真服务器,用于SoC设计的仿真和验证。
PCB 设计软件
- Altium Designer(原 Protel):一款全功能的PCB设计工具,提供从概念到生产的完整设计流程。它包括电路图绘制、3D PCB设计、高级布线技术,以及集成的BOM管理和设计审查功能。
- Cadence Allegro PCB Designer:Allegro /əˈleɪɡroʊ/是专业级的PCB设计工具,适用于高速和复杂的电路板设计。Allegro提供先进的布线技术,如高速信号完整性分析、热分析和电磁兼容性测试。
- Autodesk EAGLE/Fusion 360:EAGLE(Easily Applicable Graphical Layout Editor):是一款适用于小型团队和个人设计师的PCB设计软件。提供免费的基础版本,适合初学者和教育用途(限制: 2 张原理图、2 层信号层和 80 平方厘米(12.4 平方英寸)的电路板面积)。
- PADS:属于Siemens ,面向小到中等规模的企业和个人设计师,提供足够的功能来处理相对简单到中等复杂度的PCB设计。
- OrCAD:Cadence公司的一个产品,比Allegro弱,是针对较小规模设计项目的电路设计软件,提供电路图绘制、电路仿真和PCB设计工具。
- KiCad:一款开源的电子设计自动化软件,包括原理图设计、PCB设计、以及三维模型等功能,适用于学习和小型项目。
- EasyEDA/LCEDA:嘉立创EDA,是一个基于Web的应用程序,用户可以直接在浏览器中使用它,无需下载或安装任何软件。这款工具特别适合个人设计师、教育者、学生和小型工程团队。嘉立创EDA有标准版(std)和专业版(pro),这两个版本都有client桌面版本,都可以免费使用(专业版需要注册获取终身免费激活码),另外——前者支持spice仿真,后者不支持spice仿真;前者只支持在线和半离线模式,后者还支持全离线模式。
- ...
PCB设计阶段
PCB大概分成下面几个阶段。
- 原理图绘制 (Schematic Capture)
在这一阶段,电路设计师使用专用软件(如Altium Designer、OrCAD等)来绘制电路原理图。该图表显示了电子组件之间的所有电气连接。
注意:原理图绘制叫原理图捕获(Capture),据说,Capture 这个词强调了将初步的电路设计思想和理论转换成具体、详细的图形表达形式的过程。
- PCB布局 (PCB Layout)
根据原理图,设计师进行PCB布局,这包括组件的放置在PCB上的位置。在这个阶段,需要考虑多种因素,如组件的大小、相互间的电气兼容性、热管理需求等。
- PCB布线 (Routing)
布线是指在PCB布局中连接各个电子组件的电气路径。这需要考虑信号完整性、电源分配、噪声敏感线路的隔离、以及避免电磁干扰等因素。
- 设计检查和优化 (Design Review and Optimization)
使用自动化工具进行设计规则检查(DRC)来找出任何可能的问题,例如短路或未连接的路径。需要根据这些反馈进行设计的调整和优化。
- 生成Gerber文件
完成设计后,生成Gerber文件,这是一种标准的工业文件格式,用于指导PCB制造过程中的机器如何制造板。
各个工具 原理图和PCB后缀
简单列一下:
软件名称 | 原理图文件格式 | PCB设计文件格式 | 特点描述 |
---|---|---|---|
Altium Designer | .SchDoc |
.PcbDoc |
全功能PCB设计软件,支持复杂项目,提供高级仿真与数据管理功能。 |
EAGLE | .sch |
.brd |
适合初学者和业余爱好者,界面友好,功能适中。 |
KiCad | .sch (v5及之前),.kicad_sch (v6及更新) |
.kicad_pcb |
开源软件,没有布局和层数的限制,适合各种用户。 |
Cadence OrCAD | .DSN |
.BRD |
适合专业设计师,提供复杂的电路设计和分析工具。 |
PADS | .sch 或 .asc |
.pcb 或 .pcbdoc |
面向中小型企业,易于学习和使用,功能坚实。 |
Autodesk Fusion 360 | 集成在 .f3d 中 |
集成在 .f3d 中 |
集CAD/CAM/CAE/PCB于一体,适合需要机械和电子设计整合的项目。 |
Cadence Allegro | .brd (用于PCB设计) |
.brd |
高级PCB设计软件,专为高速、大规模电路板设计优化。 |
对于 KiCad
KiCad 原理图编辑器,支持导入如下格式:
- Altium:.schdoc
- CADStar:.csa
- Eagle: .sch
- EadyEDA(立创EDA)标准版:.json
- EadyEDA(立创EDA)专业版:.json
- LTspice:.asc
KiCad PCB编辑器,支持导入如下格式:
- Altium Circuit Maker PCB: .CMPcbDoc
- Altium circuit Studio PCB: .CSPcbDoc
- Altium Designer PCB:.PcbDoc
- CADStar PCB:.cpa
- Eagle ver 5.x XML PCB:.brd
- EadyEDA(立创EDA)标准版:.json, .zip
- EadyEDA(立创EDA)专业版:.epro, .zip
- Fabmaster PCB:.txt, .fab
- P-Cad 200x ASCII PCB:.pcb
- Solidworks PCB: .SWPcbDoc
- IPC-2581:.xml
符号库与封装库
在电子设计自动化(EDA)中,符号库和封装库是设计过程中不可或缺的组成部分。
- 符号库(Symbol Library)包括用于原理图设计的图形符号,这些符号代表实际的电子组件,如电阻器、电容器和集成电路等。
- 封装库(Footprint Library 或 Package Library)包含了这些组件在物理PCB上的封装信息,如封装的尺寸、引脚布局等。
EDA工具 | 符号库文件后缀 | 封装库文件后缀 |
---|---|---|
Altium Designer | .SchLib |
.PcbLib |
Cadence OrCAD/Allegro | .OLB |
.PADS |
KiCAD | .lib |
.kicad_mod |
Eagle (Autodesk) | .lbr |
.lbr |
EasyEDA | 在线符号库 | 在线封装库 |
SPICE
SPICE(Simulation Program with Integrated Circuit Emphasis)是一种广泛使用的电子电路模拟程序。它最初是在1970年代早期由美国加州大学伯克利分校的电子工程师团队开发的。SPICE允许工程师在物理制造之前模拟和分析电子电路的行为,是电子电路设计和测试的重要工具。
变体
SPICE变体 | 开发商 | 价格范围 | 特点 |
---|---|---|---|
HSPICE | Synopsys | 几万美元/年 | 高精度,适用于复杂的IC设计与验证,广泛应用于半导体行业 |
PSPICE | Cadence Design Systems | 数千至数万美元 | 强大的功能和图形用户界面,广泛用于学术和工业界 |
NI Multisim | Niagara Systems | 几百到几千美元 | 用户友好,集成电路设计与仿真,适合教育和初学者 |
LTspice | Analog Devices | 免费 | 高性能,为Analog Devices产品优化,适合电源电路和模拟电路设计 |
ngspice | 开源社区 | 免费 | 开源SPICE仿真器,支持模拟和数字混合信号仿真 |
XYCE | 美国桑迪亚国家实验室 | 免费 | 开源的SPICE兼容仿真器,特点,支持并行计算 |
TINA-TI | Texas Instruments | 免费 | 针对TI器件的设计和仿真,包括交互式模拟和自定义模型,适合教育用途 |
Multisim 有个在线版本,可以免费使用其受限版本,不过这个免费版越来越没意思,早期还支持25个器件,现在只支持最多5个。
- https://github.com/Xyce/Xyce
- https://ngspice.sourceforge.io/
ngspice
ngspice 本身是一个基于命令行的电路仿真器,但是它可以与其他图形界面工具集成,提供更友好的用户界面。以下是一些可以与 ngspice 集成,提供图形界面的工具:
- KiCad (使用 wxwidgets 这一跨平台 C++的 UI库)
- gEDA (使用GTK+ 这一个gnome的UI库)
- Qucs-S (使用 Qt 这一跨平台 C++的 UI库): 网址 https://ra3xdh.github.io/,派生自Qucs,但是使用Spice。
- EasyEDA(Web端)
- ...
另外,多个商业软件可以支持/使用 ngspice(当然他们支持更多的spice):
- Eagle 8.4
- Altium Designer 20
- Autodesk fusion
- https://ngspice.sourceforge.io/resources.html
网表(Netlist)
网表(Netlist)是电子设计自动化 (EDA) 领域中一个重要的概念。网表通常是以文本形式表示,描述电路中所有电子元件的连接方式,用于电路仿真、布局和制造等后续处理步骤。
比如 FreePCB 主要用于 PCB的布局,不直接原理图的设计。用户需要在其他EDA中设计电路原理图,而后将网表导入到FreePCB中进行PCB布局。
网表的基本内容
网表包含以下基本信息:
- 元件:列出电路中使用的所有电子元件,如电阻、电容、晶体管、集成电路等。
- 节点:电路中的连接点,每个节点代表电路中的一个电气连接点,元件之间的连接通过这些节点定义。
- 连接:描述哪些元件的哪些引脚连接到特定的节点,从而形成电路的完整电气结构。
网表的格式
网表可以有多种格式,具体取决于所使用的工具和流程,常见的格式包括:
- SPICE: 一种广泛使用的电路仿真程序的网表格式。SPICE网表详细描述了电路中的每个组件以及它们的连接方式。
- EDIF (Electronic Design Interchange Format): 一种用于电子设计数据交换的格式,也能以网表形式表述电路。
- Verilog 和 VHDL 网表: 在数字电路设计中,这些硬件描述语言(HDL)不仅用于描述硬件功能,也常用于生成反映电路结构的网表。
示例
SPICE网表
1 2 3 |
|
V1 是一个电压源,从节点 1 到节点 0(通常表示地),电压为 10 伏。R1 和 R2 是电阻,R1 连接节点 1 和 2,阻值为 1000 欧姆;R2 连接节点 2 和 0,阻值为 2000 欧姆。
1 2 3 4 5 6 7 |
|
两个正弦波源(V1 和 V2)分别产生不同频率的正弦信号。这些信号被输入到一个乘法器(XA1),在乘法器中,两个信号相乘,产生一个输出信号,该信号的频率和幅度是两个输入信号的函数。乘法输出连接到一个1kΩ的电阻R1,该电阻可以用于限制电流或测量电压。
.tran 1us 10ms 指令用于设置时间步长和总仿真时间,以便观察输出波形和行为。
Verilog网表?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
module simple_netlist
: 定义了一个模块,名为simple_netlis
t,有两个输入 A 和 B,以及一个输出 Y。not not_gate
: 创建了一个非门,输入为 A,输出连接到中间线not_output
。and and_gate
: 创建了一个与门,输入分别为not_output
和 B,输出为 Y。
VHDL网表?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
和上面同样功能
EDIF 网表
EDIF 文件通常具有复杂的结构,使用 S-表达式(类似于 Lisp 语言的结构)来描述数据层次和元素。
下面是一个简单的 EDIF 网表的例子,描述了一个只包含单个逻辑门(非门 NOT)的电路。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
这个网表对应的spice网表如下?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Gerber文件
Gerber文件格式是电子行业标准的文件格式之一,广泛用于印刷电路板(PCB)制造的数据交换。这种格式最初由Gerber Systems Corp开发,现在由美国印刷电路行业协会(IPC)管理。Gerber格式用于详细描述PCB的每层的图像,包括铜层、焊膏层、阻焊层、丝印层等。
- 铜层(Top/Bottom/Inner Layers):这些层包含导电路径,通常由铜制成,用于连接电路板上的各个组件。
- 阻焊层(Solder Mask Layers):这些层提供了一层保护膜,帮助防止意外的焊接和保护铜层不被氧化。
- 丝印层(Silkscreen Layers):常用于打印组件标识、标志和其他帮助组装和测试的信息。
- 焊膏层(Solder Paste Layers):这些文件用于指导SMT组装过程中,自动化设备放置焊膏的位置。
- 剖面层(Outline Layer):指定了PCB的外形及内部槽的位置,对于PCB切割和加工至关重要。
- 钻孔文件(Drill Files):钻孔文件是用于指导PCB制造中钻孔机的操作,非常重要,因为它决定了元件孔和安装孔的精确位置。
类型
- RS-274D:早期的Gerber格式,需要额外的“孔洞文件”(Drill File)来描述钻孔数据。
- RS-274X:也称为扩展Gerber格式或X-Gerber。这是现在最常用的格式,它包含更完整的信息,如孔径定义和图形填充信息,使得文件自包含,无需额外的孔洞文件。
后缀
各层的名字与一般后缀:
层的名称(英文名字) | 后缀 | 描述 |
---|---|---|
顶层铜 (Top Copper) | .gtl |
描述PCB最顶层的铜布局。 |
底层铜 (Bottom Copper) | .gbl |
描述PCB最底层的铜布局。 |
顶层阻焊 (Top Solder Mask) | .gts |
描述顶层元件不应被焊接的区域。 |
底层阻焊 (Bottom Solder Mask) | .gbs |
描述底层元件不应被焊接的区域。 |
顶层丝印 (Top Silkscreen) | .gto |
包含PCB顶面的标签和参考标记,如元件编号。 |
底层丝印 (Bottom Silkscreen) | .gbo |
包含PCB底面的标签和参考标记。 |
顶层焊膏 (Top Solder Paste) | .gtp |
用于SMT组装,描述顶层焊膏的应用位置。 |
底层焊膏 (Bottom Solder Paste) | .gbp |
用于SMT组装,描述底层焊膏的应用位置。 |
内层铜 (Inner Copper) | .g2l , .g3l 等 |
描述多层PCB中间的铜层。 |
剖面层(轮廓层) (Outline Layer) | .gko |
描述PCB的外形和内部剖面。 |
钻孔文件 (Drill Files) | .drl |
描述所有钻孔的位置、大小和属性。 |
几个EDA使用的后缀:
EDA软件 | 常用Gerber文件后缀 | 说明 |
---|---|---|
Altium Designer | .gtl , .gbl , .gts , .gbs , .gto , .gbo , .gtp , .gbp , .gko , .drl |
顶层铜层, 底层铜层, 顶层阻焊, 底层阻焊, 顶层丝印, 底层丝印, 顶层焊膏, 底层焊膏, 开槽文件, 钻孔文件 |
Cadence OrCAD/Allegro | .art , .brd |
特定层文件, 设计文件(需转换为Gerber) |
Eagle | .gtl , .gbl , .gts , .gbs , 等 |
同Altium Designer类似的层特定后缀 |
KiCad | .gtl , .gbl , .gts , .gbs , .drl |
同Altium Designer类似的层特定后缀和钻孔文件 |
Siemens EDA(Mentor Graphics ) | .gbr , .drd , .drl |
标准Gerber文件和钻孔文件 |
注:
- .gbr 和具体到各层的后缀(如 .gtl、.gbl 等)用于描述PCB的不同制造层。
- .drl 是钻孔文件,包含PCB上所有钻孔的位置和尺寸信息。
- 部分软件(如Cadence系列)可能使用非标凑后缀(如 .art)或设计文件(如 .brd),这些文件需转换成Gerber文件供制造使用。
其他
Fritzing
- https://github.com/fritzing
- https://fritzing.org/
Fritzing 是一个流行的开源硬件设计工具,专为非专业人士设计,以帮助他们轻松创建和分享电子项目。该软件提供了一个直观的用户界面,使用户可以在不同的视图之间切换,包括面包板视图、原理图视图和PCB布局视图。
该软件使用 Qt 编写。
参考
- https://en.wikipedia.org/wiki/Comparison_of_EDA_software
- https://en.wikipedia.org/wiki/List_of_free_electronics_circuit_simulators