gschem -> gsch2pcb -> PCB

(gsch2pcb 教程)

作者: Bill Wilson 翻译:Atommann

原文地址:http://geda.seul.org/wiki/geda:gsch2pcb_tutorial

  • 术语
  • 设置
  • 一个简单的例子
      • 创建原理图:one.sch
      • 编辑原理图中器件的属性
      • 创建原理图:two.sch
      • 从原理图生成 PCB 文件
      • PCB 布板
  • 修改原理图
  • 自定义 gschem 符号
  • 自定义文件元素
  • 自定义 M4 元素 (要求gsch2pcb >= 1.0)
  • 多用户设置 (要求 gsch2pcb >= 1.0)
  • 制造 PCB

这是一个关于如何使用 gsch2pcb 作为 gschem 和 PCB 的接口的教程。本文假设 gEDA, PCB 和 gsch2pcb 都已经安装好并可以使用。从 gEDA 20030901 开始,gsch2pcb 就和 gEDA 打包在一起了,因此不需要再分别安装。这是一个实用的教程并且倾向于尽快地生成一个结果。本教程不是一个完整的 gschem 或 PCB 参考资料,但是它展示了一个简单的例子的每一个需要执行的步骤。

目标是用 gsch2pcb 作为一个 gschem 和 PCB 之间的桥梁,让 PCB 布线能够始终和原理图保持同步,因为布板中每个元素的增减都将自动由原理图的改变来驱动。反过来,PCB 改变原理图目前还不支持。

要了解本教程的历史,请查阅发行说明

术语

在 gschem 中,你把表示电子原器件的符号添加到原理图中。符号是一组针脚,属性和线,它们是电子原器件的抽象表示。符号里的针脚可以通过画一条 “连接”(net) 把它和别一个针脚连接起来。属性实际上是一些附加到符号上用来提供一些信息的标签。和 PCB 协同使用的原理图,有三个重要属性必须定义。每个符号都必须有 footprint, value refdes 属性。

The schematic footprint attribute value of a symbol is the name of the PCB element to be placed on the layout for that instance of the symbol. A PCB element is a group of pins, pads, and silk layer outlines physically corresponding to electronic components. It is probably a source of confusion for newcomers to PCB that elements are of two different types. There are the original m4 macro generated PCB elements and since PCB version 1.7 there are also the newlib style file elements. A file element is a single fixed element in a single file. However, many m4 macro element definitions may exist in a single m4 element file. The macros can be given arguments to provide programmable elements of variable number of pins or spacings. Using these two types will be covered in this tutorial and I will be referring to these distinct element types as m4 elements and file elements. When you run PCB, the gschem footprint attribute value will appear as the displayed element name when you select Description from the Screen→Displayed Element Name menu because gsch2pcb uses this field to keep track of which footprint corresponds to a particular PCB element.

原理图中一个符号的 footprint 属性值就是要放置到电路板上元素的名字,它表示符号物理形状。PCB 元素是一组针脚,焊盘和标出电子元器件物理轮廓的丝印层。对 PCB 初学者来说,这可能会引起混肴,认为元素是两种不同的类型。有最初 m4 宏生成的 PCB 元素,从 PCB 1.7 版本开始,出现了 newlib 风格的元素。一个文件元素是一单个固定元素在独立的文件里。可是,许多 m4 宏在一个m4 元素文件中定义多个元素。可以把参数传给宏,给它提供可变针脚数和尺寸可编程元素。在本教程里,两种元素都会用到,我将把它们叫做 m4 elements file elements。在用 PCB 时,gschem footprint 属性值将显示,当你选择 Screen→Displayed Element Name 把 PCB 用这个字段来追踪哪个 footprint 对应于哪个实际的 PCB 元素。

The gschem refdes attribute value is the reference designator on the schematic such as Q1, U1, R1, etc. When you run PCB, this refdes will appear as the displayed element name when you select Reference Designator from the Screen→Displayed Element Name menu.

The gschem value attribute value is the particular component value such as BC546, 7400, 1K, etc. When you run PCB, this value will appear as the displayed element name when you select Value from the Screen→Displayed Element Name menu.

gschem 的 refdes(引用代号或元件标号) 属性值

value 属性值是器件的值,比如 BC546, 7400, 1K, 等等。当你用 PCB 时,从菜单 Screen→Displayed Element Name 选择 Value,该值将会显示。

设置

你应该用一个目录结构来组织你的设计项目。gEDA 和 PCB 安装时已经为你准备了一套默认的 gschem 符号和 PCB 元素,但是你也可以建立自己的 gschem 符号库和 PCB 元素。

在某个地方,比如你的 home 目录中,为你的项目建立一个目录结构。取个你喜欢的名字,本教程会参考我用的目录名称结构:

gaf/

gaf/gschem-sym/ 我把自定义的 gschem 符号放在这里

gaf/gschem-sym/transistors/ 可以把符号组织到子目录里

gaf/pcb-elements/ 我把自定义的 PCB 元素放在这里,元素也可以组织进子目录

gaf/myprojects1/ 最后,每个项目放在一个独立的目录里

gaf/myprojects2/

...

采用这种结构,任何你自定义的 gschem 符号和 PCB 元素都可以被你所有的项目共用,这是一个好的开始。不过,还有别的可能方法:可以有具体项目的PCB文件元素子目录,或M4的元素文件。或者,CAD管理员可以设置全局自定义 PCB文 件元件目录和 M4 元件文件。

设置 gEDA (针对新发行版 >= 2005): gschem, gnetlist, 和你会用到的其它程序,比如 gattrib 等,所有这些程序都需要能够找到你的自定义符号,因此,你必须使你自定义的 gschem 符号目录可以被这些程序知道,在 gEDA gafrc 文件里通过添加 component-library 行到一个用户 ${HOME}/gafrc 文件或者是一个具体项目的 gafrc 文件,在项目目录里。此外,还有一个 全系统的 ${GEDADATA}/system-gafrc 文件,管理员可以设置它。HOMEGEDADATA 环境变量必须分别设置,让gafrc 文件可以被找到。对于我们上面的的目录结构设置,我们可以把这些行加到 ${HOME}/gafrc (为每增加的 gschem-sym 子目录另加一行)

(component-library "${HOME}/gaf/gschem-sym")

(component-library "${HOME}/gaf/gschem-sym/transistors")

或者,在每个项目目录里都设一个 gafrc 文件,文件里有下面这几行:

(component-library "../gaf/gschem-sym")

(component-library "../gaf/gschem-sym/transistors")

    • gEDA 设置 (针对旧版本 >= 2004): 不支持 gafrc 文件。这个功能实际上是在 2004 年年中引入的,但要获得这儿描述的完整功能(相对路径) ,你需要一个2005年的 gEDA。 不管怎样,在用老版本的 gEDA 时,有必要复制component-library 设置行在多个 rc 文件里,应用到多个 gEDA 程序中:
      • gschem program setup: 用下面的内容创建 ~/.gEDA/gschemrc 文件:
          • (component-library "${HOME}/gaf/gschem-sym")
          • (component-library "${HOME}/gaf/gschem-sym/transistors")

设置 gnetlist: gnetlist 同样需要查找这些符号,因此把这几行复制到 ~/.gEDA/gnetlistrc 中。

如果你需要一个更详细的 gschem 和 gnetlist 定制,你可以覆盖设置在全局 rc 文件中的其它的初始化。在 Debian 中,look at rc files in /etc/gEDA/ for settings you can make. 例如,我喜欢淡色的 gschem 背景色,我就在 ~/.gEDA/gschemrc 文件里加上下面这行:

(load (string-append gedadatarc "/gschem-lightbg")) ; light background

设置 PCB:PCB 通常被设置为在工作目录中自动寻找 packages 子目录。困此,要让 PCB 能找到所有我放在 gaf/pcb-elements 里的自定义元素,我在每个项目目录中建立了一个链接。注意,这个连接实际上l在使用 gsch2pcb 时并不需要,因为像下面讲到的那样,你可以选择 pcb-elements 目录在 project 文件里。但是如果你真想要建立连接,在gaf/myproject1 路径中输入命令:

ln -s ../pcb-elements packages

    • gsch2pcb 设置: 在你的每个项目目录中, 建立一个 gsch2pcb 工程文件,可以取任何名字,不要以 .sch 结尾。工程文件将被建立,像下面这个例子。ll be created in the example below.

这些是装好 gschem, gsch2pcb 和 PCB 后,最初的设置。

一个简单的例子

我们先做一个从原理图到 PCB 布线的快速试验性设计,然后我们可以以此为基础做一些更高级的东西。我会把它弄得稍微复杂一点:设计采用两个原理图。

假设你已经像上面讲的那样设置好了目录结构,转到 gaf/myproject1 目录并创建一个文件,命名为 project ,文件内容如下:

schematics one.sch two.sch

output-name board

创建原理图: one.sch

如果你是第一次使用(初学)gschem,一步一步学习这个简单的gschem热身.

执行 gschem one.sch 创建这个原理图(第二个运放是多余的,不过这只是一个教程):

    • 添加器件:
        • analog 库添加 3 个 resistor-1.sym 和 2 个 dual-opamp-1.sym
        • io 库添加 1 个 output-2.sym
        • power 库添加 1 个 gnd-1.sym, 2 个 vcc-1.sym 和 2 个 vee-1.sym
    • 用鼠标左键移动器件,从键盘输入 er 旋转选中的器件,直到所有的器件都适当地放置好为止。旋转底部的运放并用 ei 命令镜像它。
    • n 键和鼠标来画连接线。

标题框也是一个器件。它已经被锁定了,否则用鼠标选择的时候总是会选到它。要给它解锁,用鼠标左键拖选它,按 [e - shift-L]。你可以在默认的库里找到各种不同大小的标题框。记住,当新标题框被选中后,用 [el] 命令锁定它。

编辑原理图器件属性

对于每个器件,选中它,输入 ee 调出它的属性窗口。现在不要编辑 refdes 属性,只是做下面这些编辑:

    • 电阻和运放, 增加可见的 value 属性并为其指定一个适当的值(10K, TL072)。用鼠标左键把新的可见属性移动适当的位置。如果不好选择,放大并重复点击左键。
    • 电阻,增加 footprint 属性并把值设为 R025 它1/4瓦电阻的 PCB m4 元素。让此属性不可见。
    • 运放,把已有的 footprint 属性改成 DIL 8 300。是的,包括这些空格是因为 DIL 是一个 m4 element t带两个参数。我们告诉它生成一个 8 针 300 mil 的双列直插封装。把第二个运放的 slot 属性修改成 2。 它的 I/O 引脚编号会从(1,2,3) 变成 (5,6,7)。
    • 输出模块端口,把它的 net 属性修改成 vmixer:1 并让它不可见。把它的 value 属性改成 Vmixer

可能对你来讲,对于一个有大量器件,又没有合理的初始属性值的原理图来讲,这种编辑会是很痛苦的。至少对封装,有几个事情,能提供协助。你可以创建自己的库,有 一个初步的封装(甚至值)的默认属性涵盖你大多数的用途。或者,当你添加你的第一个器件时,编辑它,让其有一个好的默认封装,然后复制它(选择它并输入 ec 键) ,为所有剩余的部件而不是再从库里添加。

现在,我们画好了 one.sch ,因此从单菜选择 File→Save Page 保存文件并退出 gschem。

创建原理图: two.sch

这非常初级而且显示得很傻,因为我们这样做只是为了演示多个原理图的能力。 执行 gschem two.sch:

    • 像在 one.sch 里做的那样,添加 title-B.sym
    • 添加器件:
        • io 库,添加 1 个 input-2.sym
        • analog 库,添加 1 个 resistor-1.sym
        • transistor 库,添加 1 个 2N3904-1.sym
        • power 库,添加 1 个 gnd-1.sym, 1 个 vcc-1.sym 和 1 个 vee-1.sym
        • connector 库,添加 1 个 BNC-1.sym
    • 采用前面的方法移动器件并画好连接。
    • 编辑器件属性:
        • 输入模块端口:把 net 属性改成可视,并把值改为 vmixer:1 使得这个连接会和 one.sch 中的 vmixer 连在一起。把 value 属性改成 Vmixer
        • 电阻:footprint 属性不可见,值 R025value 属性可视,值 10K。
        • 晶体管(三极管):增加 value 属性 2N3904 和不可见的 footprint 属性 TO92
        • BNC 连接件:增加不可见的 footprint 属性 CONNECTOR 2 1。 它是一个 m4 element 带参数,我们让它生成一个连接件,带 2 行 1 列。我们在原理图里放一个 BNC 连接件,但是我假装我们将从这块板跳线到一个面板安装的连接件上。

很不幸,我们添加的 2N3904 符号有文字“2N3904” 和符号集成在一起。因此,当我们增加 value 属性时(我们想让 PCB 布线显示适当的值),原理图上有两个“2N3904” ,除非我们让 value 属性不可见。这样做不好,并且在这个例子中我们不得不让它存在,但是注意,在大多数情况下像这样所信息强加在符号里并不是一个好主意。同样,默认的 device 属性是错误的,它应该是 NPN_TRANSISTOR ,不过这并不影响这个教程。这只是告诉你目前 gschem 里一些符号从老版本的 gschem 里带来一些过时的属性。如果你用原理图运行 spice,你的符号必须需要适当的 device 属性。

现在我们已经把原理图画好了,除了指定 refdes 属性,我们可以用 refdes_renum 命令来一次性处理两个原理图。好,保存 two.sch,退出 gschem 并执行:

$ refdes_renum --pgskip one.sch two.sch

执行 gschem 再次打开原理图,看看器件都已经指定了 refdes 属性。选项 –pgksip 使得对 one.sch 从 101 开始编号,对 two.sch 从 201 开始编号。但是你得知道,用 refdes_renum 仅仅对最初的编号很有用。如果稍后你修改了原理图,添加或删除了器件,当再执行 refdes_renum 后不保证器件还能保持以前的 refdes 值。如果在此期间你用 gsch2pcb 成生了 PCB 文件,该参考编号混合将会使你的原理图和 PCB 布线不同步。因此,当你第一次执行 refdes_renum 后并开始 PCB 布线,为了安全起见,你需要为所增加的任何一下器件手动添加(唯一的) refdes 属性。同样,refdes_renum 会为你的电阻以不同的方法编号,不像我这个例子一样,取决于电阻添加的顺序。记住把你的 PCB 和下面的图作比较。

从原理图生成 PCB 文件

在进入下一步之前,我们必须解决 one.sch 里的一个问题。执行 gschem one.sch 会发现 refdes_renum 使运放 refdes 值变成 u101 和 u102。它不知道我们是否真的想用两个 opamps出自一个单独的 TL072 封装。这也就是为什么我们要修改第二个运放的 slot 属性。返回,并把第二个运放的 refdes 属性改成 u101 使两个运放都会有相同的 refdes,这样我们的 PCB 上就只有一个 TLl072 封装了。

现在,由于我们已经设置了一个 gsch2pcb 工程文件,我们只需要执行 gsch2pcb 就可以创建一套初始的 PCB 文件:

~/gaf/myproject1$ gsch2pcb project

0 file elements and 7 m4 elements added to board.pcb.

由于工程文件定义了 board 作为输出的名字,生成的 PCB 文件被命名为 board.pcbboard.net

如果你从 gsch2pcb 得到这样的输出输出: 2 个未知元素被添加到 board.pcb。那么,带 -v 参数执行: gsch2pcb -v project,这样 gsch2pcb 的输出将会告诉你哪个原理图器件没有一个已知的 footprint。也许是你忘了增加属性,属性有错误的值,或者是它的 PCB 元素丢失了,在你安装中。但是如果 gsch2pcb 不能找到任何元素并且所有的 7 个未知,那么也许 gsch2pcb 找不到你的 PCB m4 安装目录。在这种情况下,看看Custom M4 Elements 小节的第一部分。

PCB 布线

默认设置

执行 pcb board.pcb。这是正常的,我们稍后会清理它的。你会看到分成一个大桩PCB上的内容全部示意图组成的footprint。这是正常的,我们稍后将清理它。

当你第一次运行 PCB 打开一个 .pcb 文件的时候,你应该设置各个初始化值。我通常设置 25 mil 网格间距: Screen→Grid Setting→25 mil,为我的大部分布线工作。在需要紧凑布线的情况下,把网格间距改成小一些的值。注意,如果你用 Screen→Enable millimeter grid units 开启了毫米单位,你会看到以 mm 单位选项,而不是 mil,在 Screen→Grid Setting 菜单里。布线时,你可以任何时候在 mm 和 mil 网格单位之间切换。

你同样也可以设置默认的线和过孔的尺寸,用来Singal(信号), Power(电源), Fat 和 Skinny 布线风格。 简单地选择 4 个样式中的一种样式,在 PCB 窗口的左下角,然后点 Route Style 按钮修改尺寸。你现在就可以设置板的大小或者稍后再设置。要修改电路板的尺寸,调出 File→Preferences 窗口并选择 Sizes 页。其它的设计规则检查和递增尺寸也能在 Preferences 窗口里修改。你应该检查 PCB 文档为这些项目定义。选择Screen→Enable visible grid,你会发现这非常有用。

分散器件

用鼠标中键每次抓取并移动一个元件,直到你把所有的元件全部分开。

Or, you can let PCB spread out the elements with before you fine tune the positions with the middle mouse button.

或者,你也可以让 PCB 使用 Select→Disperse all elements 来分开元件,然后用鼠标中键进一步放置器件。

载入网表

o 执行 File→load netlist file 并选择 board.net

o 执行 Connects→optimize rats-nest。现在,元器件的引脚和焊盘会根据原理图用直线连接起来。这叫做 "rats"。

为了尽量不引起混淆,PCB 试图画复杂 rats 的连接等的总和,所有 rats 越短越好。尝试拖动元素到别的工作区。rats 会跟进就像一个橡皮筋,但最后 rats 不会跳转到不同的节点,虽然由此产生的长度可能会更短。optimize rats-nest 使 rats 跳转到这个"更好"的几何形状。这一动作可以方便地随时按 o 键。

放置器件

你得用铜刻蚀线路取代 rats。之后, "分散所有器件"后,rats 通常随机地连在一起。你应该移动,旋转器件,并设法尽量减少 rats。一个布得好的板的关键在于器件的妥善放置。虽然 PCB 试图清理 rats,在你到处移动器件的时候,间或性地 用 o 键优化 rats 是个好办法。

选择 ROT 工具(F-9),用鼠标中键移动元素,用鼠标左键旋转它们。放大时,鼠标右键会移动视图到画布上。用鼠 标滚轮放大和缩小或者也可以用 z 和 Shift z。当光标处于一个引脚上方时,按 f 键高亮显示,以帮助查看布线的连接关系。用 Shift f 取消高亮显示。任何时候,你都可以用 u 键撤消操作。

注意: 你可以使用 PCB 自动放置功能代替手工放置器件(或者用 Select→Disperse 命令进行分散)如前所述。要这样做,你应该载入网表,选择你想自动放置的器件(如果刚刚启动 PCB, 只需要 Select→Select all objects) 然后执行 Select→Auto place selected elements。然后你可以手工调节 PCB 生成的器件旋转。自动放置功能可以比分散功能更智能地放置元素,不过它也比较慢,板也比较大。

从“鼠巢”到线路

现在你就可以在由 “鼠巢” 连接起来的引脚上开始布线了。在左侧工具栏上选择 LINE 工具,选择工作图层(solder[焊接层], component[器件层], 等等),用鼠标左键选择端点开始画线。同样地,用 f 键可以让要布的线高亮显示,有帮助。如果你想停止当前的布线转而去布别的线,点鼠标中键完成当前的布线。或者,你也可以用自动布线。

用 SEL 工具的一个非常有用的操作是选择多个对象并用 Buffer→Cut selection to buffer (或 copy) 把它们剪切或复制到缓冲区里。你可以立即粘贴缓冲区里的内容或者通过选择另一个工具取消当前的粘贴操作。缓冲区里的内容可以在以后的任何时候通过 Buffer→Paste buffer to layout 来粘贴。用这个方法,你可以到处移动布线区域或者单步并重复通常的路线图案。要用 SEL 工具选择多个对象, 方法是点击并拖出一个矩形区域,用 SHIFT 键增减当前选择集。

当你完成布线后(如果所有的线都布好了,当优化 rats 时 PCB 祝贺你)电路板看起来像这个样子。在这个视图里,我选择了 Screen→Displayed element name→Value

你需要更多关于如何使用 PCB 的资料,在 PCB 源程序的 tarball 里有一整套 html 文件。我不知道把哪个链接放在这里,你可以从 PCB development 站点得到最新的 tarball。或者文件已被安装在你系统的某处了。Debian 包文件把它们安装在 /usr/share/doc/pcb/html/。PCB 还有一些方便的 “live” 文档,可以帮助你熟悉快捷键和键盘命令。通过菜单 Window→Key Reference 调出快捷键窗口,你会大概发觉只要读一遍可用的快捷键将会教会你许多关于你可以用 PCB 进行的操作。如果你在 File→Preferences 对话框选择了 Use separate window for command entry 选项,那么,当你用 Window→Command Entry (或者用:)调出命令提示窗时,你会看到一个 Command Reference 扩展器箭头。在箭头上点一下,命令参考将会出现,它列出了一些你能输入的菜单和快捷键没有的命令。

比如,假设你正在 Preferences→Increments 页面配置 5 mil 递增尺寸。用这个,你可以选择某些线然后通过菜单 Select→Change size of selected objects→Increment lines by 5 mils 来增加线宽。然而,假设你想用任意值来增加线宽,每次都修改 Preferences 会很不方便。这个时候,你就可以选中某些线,调出命令窗口(按 ‘:’ 键)并输入下面的命令:

changesize(selectedlines, +3, mils)

被选中的线会增大 3 mil。现在,这个命令存在历史记录列表里了,你可以重新调用它并快速修改其它的大小值。

修改原理图

使用 gsch2pcb 把原理图的修改传递到 PCB 布线的过程非常简单。当你最初执行 gsch2pcb 创建第一个 board.pcb,每次你用 gschem 打开原理图并修改,执行 gsch2pcb project。然后执行 pcb board.pcb,根据 gsch2pcb 做的操作执行。每次运行 gsch2pcb,将会发生:

    • gsch2pcb 总是会生成一个新的 board.net文件。如果网表被改变了,运行 PCB 的时候要载入新的网表。*

如果你往原理图中新增了器件(带 footprint 属性),gsch2pcb 会生成一个 board.new.pcb 文件,包含所有的新 PCB 元素,对应于相应的 footprints。然后你执行 pcb board.pcb 并载入带有新元素的 board.new.pcb 到现有的图线中:File→load layout data to paste-buffer。放置新元素,载入新的网表,然后布新的线。

    • 如果你从原理图里删除了器件,gsch2pcb 会从 board.pcb 中删除相应的 PCB 元素。你只需要执行 pcb board.pcb 并清理被删除器件周围无用的布线就行了。
    • 如果你改变了某个现有器件的 footprint, gsch2pcb 会从 board.pcb 中删除相应的旧元素并把新元素添加到 board.new.pcb 中。
    • 如果你改变了原理图器件 value 属性,改变的值会被转到 board.pcb 中。

因此,通过使用 gsch2pcb, 所有 PCB 元素的修改都由原理图驱动,并且你永远无需手工添加或删除器件。

然而,你需要手工添加 PCB 元素,如果它不是原理图的一部分,比如 PcB 的安装孔。对于这些手工添加的 PCB 元素,务必保证你从未潍它们一个 name on PCB 名字,因为它是为原理图器件 refdes 属性保留的,并且 gsch2pcb 将要删除有一个非空 name on PCB 元素沦 一和原理图器件 refdes 不匹配。

到现在为止,我们的布线里只用到了 m4 elements,因此我们编辑原理它来使用 file element。不过首先,了解 PCB 提供的默认的元素是有帮助的。依赖于你的 PCB 安装位置,有一个目录 /usr/local/share/pcb/newlib, /usr/share/pcb/newlib, 也有可能在别的地方。(依赖于安装 PCB 时指定的 prefix 参数)。PCB 20031113 版以前是 pcb_lib 而不是 newlib 在位置 /usr/local/pcb_lib, 或者 /usr/lib/pcb_lib。一旦找到了你的 newlib 目录,查看每个子目录里的文件名。每个文件名都可以作为一个原理图器件的 footprint 属性名字。例如,有一个文件 xxx/newlib/2_pin_thru-hole_packages/0.125W_Carbon_Resistor,困此如果我们要在板上用一个 1/8 watt 的电阻,我们应该使用 0.125W_Carbon_Resistor 作为电阻的 footprint 属性,而不是 R025。试试修改,比如电阻 R101,让它使用 0.125W_Carbon_Resistorone.sch 中,然后执行 gsch2pcb project。如果 gsch2pcb 没有找到这个元素,你需要添加你的 newlib 目录到你的 project 文件中,像下面这一行:

elements-dir /usr/lib/newlib

如果 gsch2pcb 找到了它,你会得到:

~/gaf/myproject1$ gsch2pcb project

board.pcb is backed up as board.pcb.bak1.

1 elements deleted from board.pcb.

1 file elements and 0 m4 elements added to board.new.pcb.

现在你需要执行 pcb board.pcb。你会看到电阻 R101 的元素不见了并且用 File→load layout data to paste-buffer 载入 board.new.pcb 后你会看到新的元素。

自定义 gschem 符号

生成自定义符号的一个常用方法是以一个现有的符号进行编辑。我们用到的 dual-opamp-1.sym 有个我不喜欢的地方:电源引脚重复出现在每个器件上。虽然有人喜欢这样,我认为这让有很多运放的页面看起来很乱,这给我们提供了一个在本教程中学习 net 属性的好机会。gschem 中的符号可以带 net 属性,net 属性可将引脚指派到一个特定的 net 上。在原理图上,我们勿需将每个运放的引脚7连接Vcc, 引脚4到 Vee,我们可以让它自动完成并从原理图里去掉这些引脚。怎么做呢?把原始的符号复制到我们的自定义符号目录,给它取个新名字并编辑它。按下面的描述执行。(你的 gEDA 符号安装路径与 /usr/local/share/gEDA/sym/ 有可能不同):

显示属性

cd /usr/share/gEDA/sym/analog/

cp dual-opamp-1.sym ~/gaf/gschem-sym/opamp-dual.sym

cd ~/gaf/gschem-sym

gschem opamp-dual.sym

    • 输入 en 让属性可见。
    • 输入 ve 全局显示。
    • 左击引脚8选中它。

去掉可见的电源引脚

* 按 Delete 键删除引脚8。

    • 用同样的方法选择并删除引脚4。
    • 双击选择并编辑 slotdef 行,去掉引脚4和引脚8。

添加全局Nets

菜单项 Add→Attribute

增加一个 net 属性,值为 Vcc:8 选择 Show Name & Value 并让它不可见。

增加一个 net 属性,值为 Vee:4 选择 Show Name &a Value 并让它不可见。

把 device 属性改成 OPAMP。

如图所示,移动新属性进行整理。

可按你的希望修改 footprint 默认值。当所有的编辑都完成后,在保存之前执行 Edit→Symbol Translate 变换到0点,这非常重要。执行并用 File→Save 保存符号。由于我把它作为一个自定义的元件,我把 footprint 默认值设为 DIP8。

在 gschem 中使用新符号

执行 gschem one.sch。选择并用 Delete 键把两个运放都删除。把连接到其上的 Vcc 和 Vee 符号也删掉。调出添加器件窗口,从已存放有你的新的自定义器件的 gschem-sym 库选择放置两个 opamp-dual.sym。把它们移到图纸右边,像先前一样,别忘记镜像,旋转底部的运放。把两个运放的属性都编辑为相同的值,也就是把 footprint 设为 DIL 8 300,增加 value 属性,值为 TL072,把两个运放的 refdes 都设为 U101。把第2个运放的 slot 属性设为 2。如果不把它们的属性改成以前那样,gsch2pcb会认为它们不是一个嚣件并从布线上删除已有的 DIL。如果每个步骤都做正确了,执行 gsch2pcb 会给出:

~/gaf/myproject1$ gsch2pcb project

Found a cpinlist head with a netname! [Vcc]

Found a cpinlist head with a netname! [Vee]

Found a cpinlist head with a netname! [Vcc]

Found a cpinlist head with a netname! [Vee]

Found a cpinlist head with a netname! [Vcc]

Found a cpinlist head with a netname! [Vee]

Found a cpinlist head with a netname! [Vcc]

Found a cpinlist head with a netname! [Vee]

No elements to add so not creating board.new.pcb

gEDA 的 gnetlist 程序发现我们刚才增加的 Vcc 和 Vee net 属性时看起来有点“激动”,同时生成了一个新的网表。现在,我认为原理图看起来干净多了。如果你这时执行 pcb board.pcb 并载入新的网表,然后优化 rats nest, PCB 会告诉你电路板是完整的,这意味着用 net 属性来连接的运放电源引脚可以正常工作。

关于制作符号的完整细节,请阅读 gEDA 文档页面Symbol Creation Document

自定义文件元素

你可以创建自定义的 file elements 在运行 PCB 过程中,在任意布线上,或者也可以运行 PCB 只为创建元素。作为一个演示,我们来为 1N4004 做一个自定义的元素。有PCB提供的 axial packages,但是我们想确认钻孔尺寸将是合适的为 1 amp 二极管,带稍徽肥一点的引线。这大概需要一个 42 mil (#58) 的钻孔。

执行 pcb,最初要做的就是选择 Signal 布线样式和编辑它的大小(按 Route Style 按钮) 设置 Via hole 尺寸到 42 ,via size 为 70 或者依你喜好,更大一点也行。选择 Screen→Grid setting→25 milScreen→Enable visible grid。放大几次,然后制作元素:

    • 选择 VIA 工具,放置两个相距 400 mil 的过孔。
    • 把光标放在左边过孔上,按 n 键,把过孔命名为 1。把右边的过孔命名为 2。
    • 引脚 1 做为阴极,这必须和 gschem 里二极管符号的引脚号码一致。
    • 选择 Silk 层并选择 LINE 工具。
    • 绘制器件的外形轮廓,线宽设置为 10 mil,网格设置到 10 mils。
    • 用三根线绘制左边的大阴极标志,线宽要设为 20 mils。
    • 别让丝印层的线盖住焊盘。

SEL 工具拖选过孔和外形并完成元素的制作:

    • Buffer→Cut selection to buffer 并把光标移到左边过孔中心,单击。
    • Buffer→Convert buffer to element
    • Buffer→Save buffer elements to file 并浏览到 ~/gaf/pcb-elements,把元素保存为 D400-1A 因为它是一个 1A二极管, 400 mil 间距的封装。或者随意取一个你喜欢的描述性的名字。

提示: 如果你保存的元素名字和某个 m4 element 一样的话,gsch2pcb将优先使用M4的元素,除非你给gsch2pcb的用途-档案(或- f )选项。你可以把利用档案中的一个项目文件,如果你不想总是优先考虑使用文件内容。该元素M4的名字出现使用上的情况,所以你也可避免的问题,利用较低的 情况下,在你的文件元素的名称。此外,唯一的出路,我知道,使第一脚的象征,广场,是要编辑d400 - 1A型手动档,改变广场国旗在Pin " 1 "路线。举例来说,改变路线:gsch2pcb will preferentially use the m4 element unless you give gsch2pcb the –use-files (or -f) option. You may put use-files in a project file if you want to always give priority to using file elements. The m4 element names appear to use upper case, so you could also avoid the problem by using lower case in your file element names. Also, the only way I know to make the pin 1 of the symbol square is to edit the D400-1A file manually and change the square flag in the Pin “1” line. For example, change the line:

自定义 m4 元素(要求 gsch2pcb 版本 >= 1.0)

First, some words about how to find out about the default m4 elements available in PCB. I think there is some documention forthcoming in the PCB project, but at this point I don’t know of anything to refer you to and you can’t just look at filenames as you can for the file elements. Not only that, but many of these elements require arguments and you need to determine what they are. So for now all I can say is that the best way to find out what’s available is to read the m4 element files and for this you need to know where the PCB m4 files install location is. As of PCB 20031113 this install directory will most likely be /usr/share/pcb/m4 or /usr/local/share/pcb/m4, while on earlier PCB versions it could be /usr/X11R6/lib/X11/pcb/m4 (run gsch2pcb –help or gsch2pcb -v project to see which of these directories gsch2pcb is using). But if your install is somewhere else you will have to track it down. By the way, if the m4 directory is somewhere different from the above three, then gsch2pcb won’t be finding your m4 elements in the above examples and you will need to add the correct m4 directory to your project file with a line like:

多用户设置(要求 gsch2pcb 版本 >= 1.0)

上面的例子The above examples are oriented towards a single user with projects and custom gschem and PCB libraries under his home directory. 下面的设置方法可以让多个用户共享资源:

制造 PCB

英汉术语对照

有些术语我觉得不够准确,因此列出,以便进一步修正。

1. net rats

2. net

3. footprint

返回

创建日期:2007年12月9日 最后编辑: 2007年12月25日 Atommann