1+1=10

记记笔记,放松一下...

EDA软件小记

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

  1. Virtuoso Platform:专为模拟、混合信号和射频IC设计定制,提供从电路设计到版图编辑和验证的完整解决方案。
  2. Allegro PCB Designer:Allegro /əˈleɪɡroʊ/ 是一种高级的印制电路板(PCB)设计解决方案,用于复杂的PCB设计和生产准备。支持高速电路设计需求,包括信号完整性分析、热分析和电磁干扰分析。
  3. Incisive Functional Verification Platform:提供全面的功能验证解决方案,支持从单一IP到系统级芯片的验证需求。
  4. Tempus Timing Signoff Solution:一个时序签核工具,用于分析和优化IC设计的时序。
  5. Spectre Circuit Simulator:是一个高性能模拟和混合信号电路仿真器,适用于复杂模拟电路的精确分析。
  6. OrCAD:是针对较小规模设计项目的电路设计软件,提供电路图绘制、电路仿真和PCB设计工具。

Siemens EDA

  1. Calibre:业界领先的IC物理验证平台,用于检查IC设计的几何和电气规则一致性,确保它们符合制造工艺要求。
  2. Xpedition Enterprise:一个综合的PCB设计流程解决方案,提供从初始系统设计到最终生产的全过程支持。支持高级PCB设计功能,包括复杂的布局、布线、分析和协作工具。
  3. Tessent:提供一系列硅测试和产量分析工具,专注于增加复杂SoC设计的制造测试覆盖率和优化生产效率。
  4. Polarion:是一个企业级的应用生命周期管理(ALM)解决方案,支持需求管理、质量保证、项目管理和协作。
  5. HyperLynx:提供广泛的电子设计仿真工具,用于分析PCB设计中的信号完整性、电源完整性和电磁兼容性。
  6. Valor:是PCB制造解决方案,支持PCB设计验证、制造过程准备和管理。
  7. Capital:是针对汽车行业的电气系统和线束设计解决方案。
  8. PADS Standard:面向小到中等规模的企业和个人设计师,提供足够的功能来处理相对简单到中等复杂度的PCB设计。包括基本的电路设计、布局、布线和基本的仿真工具。它是为了提供一个相对经济、易于使用的解决方案,以满足较小规模设计需求。

Synopsys

  1. Design Compiler:是一款用于逻辑综合的工具,它将RTL(寄存器传输级)代码转换成门级网表。
  2. PrimeTime:是一个静态时序分析工具,用于验证集成电路设计的时序性能是否满足规格要求。
  3. IC Compiler II: 是一款高级的物理设计工具,用于处理从网表到最终版图的布局和布线。
  4. HSPICE:是一个行业标准的SPICE(Simulation Program with Integrated Circuit Emphasis)仿真器,用于模拟分析电子电路。
  5. Verdi:是一个综合的调试平台,提供自动化的调试环境来增强芯片设计和验证的效率。
  6. Fusion Compiler: 是一款综合工具,集成了逻辑综合和物理实现,旨在优化设计流程,减少迭代次数。
  7. Formality:是一款形式验证工具,用于验证RTL代码和生成的网表之间的功能一致性。
  8. 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 DC 10
R1 1 2 1000
R2 2 0 2000

V1 是一个电压源,从节点 1 到节点 0(通常表示地),电压为 10 伏。R1 和 R2 是电阻,R1 连接节点 1 和 2,阻值为 1000 欧姆;R2 连接节点 2 和 0,阻值为 2000 欧姆。

1
2
3
4
5
6
7
XA1 /in1 /in2 /out mult
R1 /out GND 1k
V2 /in1 GND DC 0 SIN( 0 1 2k )
V1 /in2 GND DC 0 SIN( 0 1 100 )

.tran 1us 10ms
.end

两个正弦波源(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(
    input wire A,
    input wire B,
    output wire Y
);

// 实例化一个非门
wire not_output;
not not_gate(not_output, A);

// 实例化一个与门
and and_gate(Y, not_output, B);

endmodule
  • module simple_netlist: 定义了一个模块,名为 simple_netlist,有两个输入 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
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity simple_netlist is
    port (
        A : in STD_LOGIC;
        B : in STD_LOGIC;
        Y : out STD_LOGIC
    );
end simple_netlist;

architecture Netlist of simple_netlist is
    signal not_output: STD_LOGIC;
begin
    -- 实例化一个非门
    NOT_GATE: not port map(A, not_output);

    -- 实例化一个与门
    AND_GATE: and port map(not_output, B, Y);
end Netlist;

和上面同样功能

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
(edif SimpleNotGateExample
  (edifVersion 2 0 0)
  (edifLevel 0)
  (keywordMap (keywordLevel 0))
  (library MyLibrary
    (edifLevel 0)
    (technology (numberDefinition))
    (cell NOT_GATE
      (cellType GENERIC)
      (view LOGIC_VIEW
        (viewType NETLIST)
        (interface
          (port I (direction INPUT))
          (port O (direction OUTPUT))
        )
        (contents
          (instance U1 (viewRef LOGIC_VIEW (cellRef NOT_GATE)))
          (net INPUT_NET (joined (portRef I (instanceRef U1))))
          (net OUTPUT_NET (joined (portRef O (instanceRef U1))))
        )
      )
    )
  )
  (design MyDesign
    (cellRef NOT_GATE (libraryRef MyLibrary))
    (viewRef LOGIC_VIEW)
  )
)

这个网表对应的spice网表如下?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
* Simple NOT Gate Circuit
.SUBCKT NOT_GATE IN OUT VDD VSS
M1 OUT IN VSS VSS NMOS L=1u W=2u
M2 OUT IN VDD VDD PMOS L=1u W=4u
.ENDS NOT_GATE

* Main circuit
VDD VDD 0 5
VSS VSS 0 0
VIN IN 0 PULSE(0 5 10n 1n 1n 20n 40n)
X1 IN OUT VDD VSS NOT_GATE

* Analysis commands
.TRAN 1n 100n
.PLOT TRAN V(IN) V(OUT)

.END

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

CAx EDA