tEDAx - PCB router

This document is being tested, and is not finalized yet.

Purpose

Focus is describing the metadata and block references for an autorouter request on a Printed Circuit Board. The route_req 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 route_req block.

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

The route_req block

Block type is "route_req", version is "v1". The unique identifier should be the name of the board. This block specifies a simplified model of the board for autorouting.

command parameter names explanation
via OID netname constr x y dia clearance [from_layer to_layer] the plated hole of a via (or pin); OID, netname and constr are as documented for the layernet block. Optional from_layer and to_layer are start and end layer names for vias that do not necessary cross all layers (when not specified, the via crosses all layers).
stackup blockID mandatory reference to a board stackup block stored in the same file; only one instance permitted; any layer other than copper is ignored.
route_all   route all remaining nets
conf key value set a config key to value. Key must be one of the keys returned in confkey by the router when quieried for the conf settings.

The layernet block

Instead of the conventional layer blocks, the stackup needs to reference layernet blocks. The structure of a layernet block is identical to the corresponding version of a plain layer block, except that:

The OID field is a unique object identifier expressed as an arbitrary text string. This field is used when the router answer needs to reference objects. The OID needs to be unique within the board, not only within the layernet.

The netname field is an unique network name. If the object is connected to a network, this field must contain the netname, else it should contain a dash ('-').

The constr field is either a dash ('-') for no constraint or a combination of characters:

The route_res block

Block type is "route_res", version is "v1". The unique identifier should match the identifier of the corresponding route_req. This block specifies the result of an autorouting session.

command parameter names explanation
del OID object referenced by OID needs to be removed
add layer obj... an object (one of via, line or arc) drawn by the router for a net; after the add command a layer name follows then the rest of the line has the same format as the corresponding route_req would have, except that dash ('-') is a valid OID meaning "new, unique object" but netname can not be dash. The layer is a dash for vias.
log level message Log a single line of human readable message; level is the character I for info, W for warning and E for error. Message is one field.
stat key value Statistics about the routing result.
confkey key type defval:min:max description When the router is called with an extra flag for returning config items, each possible config key is described using a confkey line. Key is the name of the config key; type is one of boolean, integer, double, coord (in mm, without unit) or string; defval is the default value, which is optionally followed by minimum and maximum values for numeric types. Description is a single field.

Minimum support required

The above description covers minimum support, except for:

Examples

The following example is a route request for a simple 7805 based linear stabilizer:

tEDAx route_req document

route request: input drawing

An inelegant but complete solution by an autorouter is:

tEDAx route_res document

route request: result drawn on PCB