tEDAx - PCB board

purpose

Focus is describing the metadata and block references for building a full Printed Circuit Board. The board block doesn't specify much geometry in itself but references other blocks within the same file. Thus for a full board description, a tEDAx file needs to contain several blocks, from which at least one is a board block.

Note: the order of blocks within the file is arbitrary. It is preferred to keep only one board block in a tEDAx file.

the board block

Block type is "board", version is "v1". The unique identifier should be the name of the board.

command parameter names explanation
description text optional board description
drawing_area x1 y1 x2 y2 optional drawing area specification - objects shall not extend beyond the drawing area
attr key value optional key=value attributes; interpretation is up to the PCB software producing or reading the file
stackup blockID mandatory reference to a board stackup block stored in the same file; only one instance permitted
netlist blockID optional reference to a netlist block stored in the same file; only one instance permitted
drc drcID optional reference to a drc block stored in the same file; only one instance permitted
etest blockID optional reference to an etest block stored in the same file; only one instance permitted
place compID blockID ox oy rot swapside role place a footprint as a global (non-layer) object. compID is an unique ID within the board block that will be used for referencing this placement (typically the "refdes"; same component id as used in the netlist); blockID is a reference to a footprint block.

Coords ox and oy are used as an offset to the placement then rotation is applied around the origin of the placed footprint. The rotation is given in angles, as a real number. Rotation takes place around the footprint origin where it is placed on the board. If swapside is "0", the footprint is instantiated with its primary side being the the top side of the board. If it is "1", it is mirrored over the x axis and placed on the bottom side.

The order of transformations is: offset, rotate, mirror.

role is one of comp, via or misc. Value comp means the footprint is placed for a component. In case of via, the footprint must contain at most one object per copper and mask layer and at most one hole. Value misc is for arbitrary non-comp, non-via grouping - the import code may split up the footprint into layer objects.

place_text compID layerID x1 y1 x2 y2 relsize rot textstring text object which is part of the placement of compID. The layerID must be a top or bottom silk layer. If bottom, the text is automatically mirrored. The text object is specified the same way as in layer blocks, except there's no clearance hint as this text object must be on a silk layer.
place_attr compID key val assign a key=value attribute to a placed component. The interpretation of key and value are up to the software.
place_fattr compID key val assign a key=value fixed attribute to a placed component. The interpretation of key and value are as specified in the back annotation block for components.

Minimum support required

Support for block references to stackup, layer and place. Place should support any angle rotation - if the CAD's internal data model doesn't support that, the tEDAx import layer should generate a new, rotated footprint and place that.

At least one place_text must be supported per component, for placing the refdes.

All place_fattrs need to be understood (worst case stored as a plain attribute).

Examples

Below is an example board that features a 0805 part rotated 15 degrees CCW. The placement text (refdes) is not rotated. There is a rectangle drawn on top copper around the part (aligned with the 15 degree rotation), a round via down right, and an axis aligned rectangular board outline on the unplated mech layer.

example board with a 15 degree rotated 0805

tEDAx v1

begin drc v1 board_drc
 rule all copper gap 0.3048 pcb_rnd_old_drc_from_conf
 rule all copper overlap 0.4826 pcb_rnd_old_drc_from_conf
 rule all copper min_size 0.254 pcb_rnd_old_drc_from_conf
 rule all silk min_size 0.1778 pcb_rnd_old_drc_from_conf
 rule all mech min_size 0.381 pcb_rnd_old_drc_from_conf
end drc

begin netlist v1 board_netlist
 value R2 0805
 footprint R2 Standard\ SMT\ resistor,\ capacitor\ etc
end netlist


begin footprint v1 sc_glob_249
 line primary silk - -0.0998 -0.6998 0.0998 -0.6998 0.2032 0.0000
 line primary silk - -0.0998 0.6998 0.0998 0.6998 0.2032 0.0000
 term 1 1 - 1
 polygon primary copper 1 0.254 4 -0.249936 -0.749808 -1.549908 -0.749808 -1.549908 0.749808 -0.249936 0.749808
 polygon primary mask 1 0.254 4 -0.173736 -0.826008 -1.626108 -0.826008 -1.626108 0.826008 -0.173736 0.826008
 polygon primary paste 1 0.254 4 -0.249936 -0.749808 -1.549908 -0.749808 -1.549908 0.749808 -0.249936 0.749808
 term 2 2 - 2
 polygon primary copper 2 0.254 4 1.549908 -0.749808 0.249936 -0.749808 0.249936 0.749808 1.549908 0.749808
 polygon primary mask 2 0.254 4 1.626108 -0.826008 0.173736 -0.826008 0.173736 0.826008 1.626108 0.826008
 polygon primary paste 2 0.254 4 1.549908 -0.749808 0.249936 -0.749808 0.249936 0.749808 1.549908 0.749808
end footprint

begin stackup v1 board_stackup
 layer top_paste top paste
  lprop top_paste display-color #cd00cd
 layer top_silk top silk
  lprop top_silk display-color #000000
 layer top_mask top mask
  lprop top_mask display-color #ff0000
 layer top_copper top copper
  lprop top_copper display-color #8b2323
 layer grp_4 inner insulator
 layer global_outline all umech
  lprop global_outline display-color #00868b
 layer bottom_copper bottom copper
  lprop bottom_copper display-color #3a5fcd
 layer bottom_mask bottom mask
  lprop bottom_mask display-color #ff0000
 layer bottom_silk bottom silk
  lprop bottom_silk display-color #000000
 layer bottom_paste bottom paste
  lprop bottom_paste display-color #cd00cd
end stackup

begin layer v1 top_paste
end layer

begin layer v1 top_silk
end layer

begin layer v1 top_mask
end layer

begin layer v1 top_copper
 line 2.276211 4.346324 2.933611 6.799776 0.254 0.0
 line 2.933611 6.799776 6.613789 5.813676 0.254 0.0
 line 6.613789 5.813676 5.956389 3.360224 0.254 0.0
 line 5.956389 3.360224 2.276211 4.346324 0.254 0.0
end layer

begin layer v1 grp_4
end layer

begin layer v1 global_outline
 line 1.905 1.905 1.905 8.89 0.254 0.0
 line 1.905 8.89 6.985 8.89 0.254 0.0
 line 6.985 1.905 6.985 8.89 0.254 0.0
 line 6.985 1.905 1.905 1.905 0.254 0.0
end layer

begin layer v1 bottom_copper
end layer

begin layer v1 bottom_mask
end layer

begin layer v1 bottom_silk
end layer

begin layer v1 bottom_paste
end layer


begin footprint v1 ps_glob_0
 hole - 0.0000 0.0000 0.8001 -
 fillcircle primary copper - 0.0000 0.0000 1.0000 0.5080
 fillcircle secondary copper - 0.0000 0.0000 1.0000 0.5080
 fillcircle inner copper - 0.0000 0.0000 1.0000 0.5080
end footprint

begin board v1 -
 drawing_area 0 0 8.89 10.795
 attr PCB::grid::unit mil
 stackup board_stackup
 netlist board_netlist
 drc board_drc
 place 218 ps_glob_0 5.715 7.62 0.000000 0 via
 place R2 sc_glob_249 4.445 5.08 15.000000 0 comp
 place_text R2 top_silk 2.680681 2.187792 4.509483 3.457793 100 0.000000 R2
 place_fattr R2 value 0805
 place_fattr R2 footprint Standard\ SMT\ resistor,\ capacitor\ etc
 place_attr R2 refdes R2
end board