FAB 3000 Matrix File Description

The FAB 3000 Matrix File allows people to easily automate their Gerber/CAM tasks.  Teamed with the FAB 3000 Command Line capabilities and you've got a power-packed solution to quickly verify & prepare designs for PCB manufacturing.

The matrix file very customizable and you can make it do just about any Gerber/CAM related task including: loading Gerber & Drill files, assigning layer colors & types, defining layer stack ups, defining blind/buried drill layers (if required), Panelization, Merge Jobs, DFM Checks, and much more.

Note: All FAB 3000 Matrix Files must end with *.fm6

Note: Matrix files are read & processed in sequence from Top-to-Bottom.  Thus Layers must be defined before Jobs, Jobs must be defined before Panel, etc.

A matrix file is simple text and can be opened by any text editor.  A matrix file consists of ordered Arrays.  Here's a sample Matrix file.   For more examples of matrix files checkout the FAB 3000 example folder (located in the FAB 3000 installation folder  ...\FAB3000V8\examples).

 

# - Comment Line (Ignored by FAB 3000).

Any line that begins with the hash character (#) will be ignored by FAB 3000.

 

LAYER array

The Layer array describes the layers that will be created.  Typically this is only required when importing Gerber and NC files.    Must be called before the JOB array.

TYPE

Describes the purpose of the layer and must be one of these defined Layer Types

NAME

The name of the layer.  This will be directly referenced in the JOB array.

START_DRILL

END_DRILL

These fields are only used for drill layers. They specify the span of the drill, in case it is a blind or buried via layers. Each field must be a valid layer name. When the fields are empty, the drill is assumed to be thru hole (i.e START_DRILL is assumed to be the first board layer and END_DRILL is assumed to be the last board layer).

DRAW_COLOR

The RGB representation of the draw color for display of the layer. Note: RGB values are separated by commas.

FLASH_COLOR

The RGB representation of the flash color for display of the layer. Note: RGB values are separated by commas.

POLARITY Determine if Layer will be Negative or Positive. Choose either:  Positive | Negative   Positive is the default. This is optional. 
MIRROR Determine if Layer will be Mirrored horizontally. Choose either:  Yes | No    No is the default. This is optional. 

 

JOB array

The Job array describes the relationship between the Layer and Gerber file that will be imported.  Typically this is only required when importing Gerber and NC files.

NAME

The name of the job to create.  This will be directly referenced in other arrays such as PANEL and ADD.

LAYER

This field contains the layer name and Gerber file location, separated by a comma.

Note: The Gerber file location must be an actual location on your system and not localized path (i.e .../gerbers/top.gbr)

Note: For DRILL and ROUT layer types, the file location must point to a NC file (not Gerber).  The NC file must contain tool number, sizes in the header.  If not, we recommend that you define a NCTOOLS array in the FAB 3000 Matrix before the JOB array (see below). 

 

NCTOOLS array

NCTOOLS array is optional.  It is only intended for NC files that don't include tool definitions in the header.  Must be called before the JOB array.

UNITS

Units to use for this nctools array.  Must be either:  INCH or MM

INTEGER

DECIMAL

Integer digits for drill or rout file between (0-6).

Decimal digits for drill or rout file between (0-6).

TYPE

Drill or rout file type.

ABSOLUTE                -- Use Absolute coordinates during NC Import

INCREMENTAL                -- Use Incremental coordinates during NC Import

SUPPRESSION

Drill or rout file zero suppression.

LEADING                -- Suppress Leading Zeros during NC Import

TRAILING                -- Suppress Trailing Zeros during NC Import

NONE                        -- No Zero Suppression during NC Import

TOOL

This field contains the Tool # (between 1 to 1000), Diameter (in Tool Units), and Plated (either: YES or NO); all separated by a commas.

 

PANEL array

The PANEL array is used to create and build a complete panel.  It's used to merge jobs, create fiducials, tooling holes, perform venting, and more.  Job array must be created before Panel.  PANEL array is optional.

NAME

The name of the panel.  This will be the name FAB 3000 uses when it creates the panel.

UNITS

Units to use for this panel array.  Must be either:  INCH or MM

WIDTH

Panel Width.  Note: The value is defined in the panel units.

HEIGHT

Panel Height.  Note: The value is defined in the panel units.

BORDERSPACING

Defines the panel margins between edge of panel and inserted PCB's. Border spacing is defined as either: 

BORDERSPACING=LEFT,RIGHT,TOP,BOTTOM

or if all spacing is the same for all sides use one value.

BORDERSPACING=MARGIN

STEPREPEAT

This field contains the Job Name, X and Y Origin, X and Y Spacing, X and Y Count, Job Angle (must be 090180270), Mirror (must be either: YES or NO), and the optional Job Orientation to use (Lower-Left, Center, Origin) all separated by a commas.

Note: Origin and Spacing values are defined in the panel units.

Note: If you only require a 1 up (no array) use INSERT (see below).

Note: By default FAB 3000 will use the Lower-Left of each Job as the insert point.  If you wish to use the Insert Point to be the Job Center use Center.  If you wish to insert by the actual 0,0 origin of the Job use Origin.

Example:  

STEPREPEAT=board1,17.0,4,3.8,3.4,2,5,90,No,Origin

INSERT

This field contains the Job Name, X and Y Origin, Job Angle (must be 090180270), Mirror (must be either: YES or NO), and the optional Job Orientation to use (Lower-Left, Center, Origin) all separated by a commas.

Note: Origin values are defined in the panel units.

Note: If you only require an array use STEPREPEAT above

Note: By default FAB 3000 will use the Lower-Left of each Job as the insert point.  If you wish to use the Insert Point to be the Job Center use Center.  If you wish to insert by the actual 0,0 origin of the Job use Origin.

Example:

INSERT=Board4,17.5,15.35,180,No

FIDUCIAL

 

Add Fiducials to the Panel.  Define Fiducial Shape and then enter Width, Height, X/Y Coordinates, Rotation, and layer(s).  FIDUCIAL=shape,width,height,x,y,rotation,clearance,layer(s)
shape=[circle hash target cross octagon butterfly rectrounded donut oblong rectangle diamond]  
https://support.numericalinnovations.com/support/discussions/topics/14000002407

Example:

FIDUCIAL=circle,0.05,0.05,0.5,0.5,0,0.05,top,bottom

TEXTLABEL
TOOLINGHOLE

TOOLINGHOLE=shape,width,height,x,y,rotation,clearance,layer(s)
shape=[circle slot]

 

SYMBOL
VENT VENT=pattern,width,height,x,y,rotation,clearance,layer(s)
pattern=[rail vrail hrail solid dot hatch]
vent=rail,panel_clearance,symbol_clearance,width,layer(s)
vent=vrail,panel_clearance,symbol_clearance,width,layer(s)
vent=hrail,panel_clearance,symbol_clearance,width,layer(s)
vent=solid,panel_clearance,job_clearance,symbol_clearance,layer(s)
vent=dot,panel_clearance,job_clearance,symbol_clearance,patternX,patternY,dy,shape1,width1,x1,dx1,shape2,width2,x2,dx2,layer(s)
vent=hatch,panel_clearance,job_clearance,symbol_clearance,patternX,patternY,width1,offset1,angle1,width2,offset2,angle2,width3,offset3,angle3,layer(s)
PANELFILE Provide name of an existing FAB 3000 Panel file (*.pan).  All parameters will be used from that file.

Important:  PANEL array variables - FIDUCIAL, TEXTLABEL, TOOLINGHOLE, SYMBOL, VENT, use the same format parameters as a FAB 3000 Panel file (*.pan).  Thus if you already have a panel defined in FAB 3000, you can simply copy/paste in the matrix file.  To save time, simply use a predefined FAB 3000 Panel File (*.pan).

 

DFMCHECKER array

Introducing a new feature to the FAB 3000 import matrix called DFMCHECKER which will let you automatically run DFM Checker.  Without even clicking a button you can verify if your design ready for manufacturing.  DFMCHECKER array is optional. It is used to run the DFM Checker on an imported job.  Must be called after JOB array and will only run on the previous job loaded.  

UNITS

MIL or MM

Units to use for this dfmchecker array. 

minimum_padsize

positive number

Minimum Pad size allowed.

minimum_smtpadwidth

positive number

Minimum SMT pad width allowed.

minimum_tracewidth

positive number

Minimum trace width allowed.

minimum_outer_tracespacing

positive number

Minimum spacing on top or bottom layers

minimum_inner_tracespacing

positive number

Minimum spacing for innerlayers

minimum_drill_pad_annularring

positive number

Minimum drill to pad annular ring

minimum_border_clearance

positive number

Minimum clearance from board edge.

find_acidtraps

positive number

Locate Acid Traps

find_nonfunctional_internalpads

 

Find non functional pads on internal layers

minimum_drillsize

positive number

Minimum drill hole diameter

find_drill_doublehits

 

Find drill double hits.

find_drill_missinghits

 

Find missing drill hits

find_missingpads

 

Find missing pads

find_touchingholes

 

Find drill holes that touch

minimum_silkscreen_linewidth

positive number

Find minimum silkscreen line width

find_silkscreen_overmask

positive number

Locate silkscreen over soldermask

silkscreen_border_clearance

positive number

Minimum clearance allowed from Silkscreen to board edge

undersize_mask_clearance

positive number

Locate small mask openings

missing_mask_clearances

 

Find missing mask clearances

find_mask_slivers

 

Find mask slivers

find_solder_bridges

positive number

Find solder bridges

inner_clearance

positive number

Inner clearance on plane layers

power_ground_minimum_annularring

positive number

Minimum annular ring on plane layers

find_starved_thermals

positive number

Locate starved thermals

find_power_ground_shorts

 

Find power/ground shorts

check_negplane_thermal_conflicts

 

Find thermal conflicts on neg. planes

find_isolated_connections

 

Find isolated connections

Note: If you do not wish to check for all of the above violations, simply omit them in the import matrix file.

 

ADD array

The ADD array allows users to add objects into FAB 3000.  Both CELL and UNITS are required for each ADD array.

CELL

The name of the Job or Panel to add objects.  If the cell is not defined it will be created. Required.

Note:  If you wish to edit the active cell, use CELL=ACTIVE

Example:

CELL=MyBoard1Panel

UNITS

Units to use for this ADD array only.  Choose from:  mil   mm   cm   inch   um

Example:

UNITS=MM

UNITS=INCH

TEXTSTYLE

Assign the font file (*.fnt) for a FAB 3000 Text Style.  This Text style will be used for all following Text objects in this array unless it is changed.   Do not include the font file path when defining the Text Style only the file name. 

Note:  All available font files can be found in the FAB 3000 installation folder   .../FAB3000V8/fonts      

Example:

TEXTSTYLE=arial.fnt

TEXTALIGN

Determine the alignment for TEXT.  Choose from:  upperLeft, centerLeft, bottomLeft, upperCenter, centerCenter, bottomCenter, upperRight, centerRight, bottomRight

Example:

TEXTALIGN=centerCenter

COMPOSITE

 

Determine whether all following objects will be added as either: Dark or Clear.  The default is Dark.  For more information about composites, please view Help Center: About Composites

Example:

COMPOSITE=DARK

COMPOSITE=CLEAR

COMPOSITE=51

Using a Number will allow you to directly assign a composite level number.

CIRCLE

Add a Circle using Center, OD, and optional ID.  

CIRCLE=LAYER, X, Y, OD, ID

LAYER name.

X, Y are the Circle Center coordinate.

OD is the Circle Outer diameter

ID is the Circle inside diameter. This is optional, and the default is 0.

Example:

CIRCLE=mylayer,0.25,0.25,0.1,0.05

RECTANGLE

Add a Rectangle using Center, Width, and Height.  

RECTANGLE=LAYER, X, Y, WIDTH, HEIGHT, CORNER RADIUS, ROTATE

LAYER name.

X, Y are the Rectangle Center coordinate.

WIDTH is the Rectangle Width (horizontal)

HEIGHT is the Rectangle Height (vertical)

CORNER RADIUS. Radius to use at corners to appear as a rounded rectangle. This is optional, and the default is 0.

ROTATE is the angle to Rotate the rectangle.  This is optional and the default is 0.

Example:

RECTANGLE=mylayer,0.25,0.25,0.1,0.05

RECTANGLE2PT

Add a Rectangle using 2 points.  

RECTANGLE=LAYER, X1, Y1, X2, Y2

LAYER name.

X1, Y1 are the Rectangle corner coordinate.

X2, Y2 are the Rectangle opposite corner coordinate.

Example:

RECTANGLE=mylayer,0.25,0.25,1,2

ARC

Add an ARC using Start, End, and Center points.  

ARC=LAYER, SX, SY, EX,EY,CX,CY,COUNTER-CLOCKWISE DIRECTION,LINEWIDTH

LAYER name.

SX, SY are the Arc start coordinate.

EX, EY are the Arc end coordinate.

CX, CY are the Arc center coordinate.

COUNTER-CLOCKWISE DIRECTION is Y for Counter-Clockwise, or N for Clockwise.

LINEWIDTH is the line width for the Arc

Example:

ARC=mylayer,1,0,0,1,0,0,Y,0.1

TEXT

Add Text using Insert Point, Height, Angle, and Mirror.  If TEXTALIGN or TEXTSTYLE is defined they will be used.

TEXT=LAYER,X,Y,HEIGHT,ANGLE,MIRROR,TEXT STRING

LAYER name.

X, are the Text insert coordinate.

HEIGHT is the Text height.

ANGLE is the Text rotation.

MIRROR is Text mirror in horizontal direction. Use True for mirror or False for none.

TEXT STRING is the message you wish to create.

Example:

TEXTSTYLE=arial.fnt
TEXT=top,8,0.45,0.2,0,FALSE,My Automated Panel Design using Matrix

POLYGON Adds a Polygon to the active cell.
POLYGON=[Layer Name],[POINT_COUNT][X],[Y],[...]

Example:
POLYGON=layer_1,7,-9,-9,-9,-8,-8.25,-8,-8.25,-6,-2,-6,-2,-9,-9,-9
LINE Adds a Line to the active cell.
LINE=[Layer Name],[POINT_COUNT][X],[Y],[...]

Example:
LINE=layer_1,7,-9,-9,-9,-8,-8.25,-8,-8.25,-6,-2,-6,-2,-9,-9,-9
PATH Adds a rounded Path to the active cell.
PATH=[Layer Name],[WIDTH],[POINT_COUNT][X],[Y],[...]

Example:
PATH=layer_1,0.025,7,-9,-9,-9,-8,-8.25,-8,-8.25,-6,-2,-6,-2,-9,-9,-9
DRILL Add NC drill hit to the active cell.
DRILL=[Layer Name],[X],[Y],[DIAMETER],[PLATED]

Example:
DRILL=drill,4.0,4.2,0.1,TRUE

ROUT

or

NCPATH

Adds a Rout Path to the active cell.  For compatibility purposes you may use either ROUT or NCPATH
ROUT=[Layer Name],[WIDTH],[POINT_COUNT][X],[Y],[...]
NCPATH=[Layer Name],[WIDTH],[POINT_COUNT][X],[Y],[...]

Example: 
ROUT=layer_1,0.025,7,-9,-9,-9,-8,-8.25,-8,-8.25,-6,-2,-6,-2,-9,-9,-9

NCPATH=layer_1,0.025,7,-9,-9,-9,-8,-8.25,-8,-8.25,-6,-2,-6,-2,-9,-9,-9

INSERT Add an insert to active cell.
INSERT=[Cell Name],[X],[Y],[ANGLE],[MIRROR]

Example:
INSERT=myCell,1.5,4,0,FALSE
INSERT=pcb2232,0,0,90,TRUE
STEPREPEAT Add an arrayed insert to active cell.
STEPREPEAT=[Cell Name],[X],[Y],[ROWS],[COLS],[ROW_DIST],[COLUMN_DIST],[ANGLE],[MIRROR]

Example:
STEPREPEAT=myCell,1.5,4,0,0,0,0,0,FALSE
STEPREPEAT=pcb2232,0,0,2,2,5.0,4.0,90,TRUE
INSERT_MATRIX

Insert an existing matrix file the active cell.  When inserting a Matrix file, the objects become relative to the insert point.  Thus if your matrix file describes a square from 0,0 to 1,1 -- and it inserted with coordinates 5,5; the resulting square would be from 5,5 to 6,6.

For more details about INSERT_MATRIX view the Help Center 

INSERT_MATRIX=[Matrix File],[Insert X],[Insert Y],[Rotate],[Mirror]

Matrix file - Absolute or Relative path to an existing Matrix file.

Insert X - X coordinate used for the insert point of the Matrix file.

Insert Y - Y coordinate used for the insert point of the Matrix file.

Rotate - Rotation to use when inserting the Matrix file.  Measured in Degrees.

Mirror - Flip horizontally the insert matrix file objects.  Either True or False.

Example:           

INSERT_MATRIX=polygon.fm6,-1.5,2,30.0,FALSE

STEPREPEAT_MATRIX

Insert an existing matrix file the active cell using Array parameters.  When inserting a Matrix file, the objects become relative to the insert point.  Thus if your matrix file describes a square from 0,0 to 1,1 -- and it inserted with coordinates 5,5; the resulting square would be from 5,5 to 6,6.

For more details about INSERT_MATRIX view the Help Center 

STEPREPEAT_MATRIX=[Matrix File],[Insert X],[Insert Y],[Row Count],[Column Count],[Row Distance],[Column Distance],[Rotate],[Mirror]

Matrix file - Absolute or Relative path to an existing Matrix file.

Insert X - X coordinate used for the insert point of the Matrix file.

Insert Y - Y coordinate used for the insert point of the Matrix file.

Row Count - Number of Rows

Column Count - Number of Columns

Row Distance - Distance between Rows

Column Distance - Distance between Columns

Rotate - Rotation to use when inserting the Matrix file.  Measured in Degrees.

Mirror - Flip horizontally the insert matrix file objects.  Either True or False.

Example:           

STEPREPEAT_MATRIX=polygon.fm6,-5.5,-4,2,4,-2,-1.4,0,FALSE

 

JOBFILE array

The JOBFILE array imports any number of FAB 3000 Job files.  The Job file saves time because you do not need to define LAYER array or JOB array.

FILE

Path to the Job file.  The path may be either Absolute or Relative.  The can be unlimited number of Job files loaded.

Note:  The matrix example below will load 2 job files into FAB 3000.  Assuming those job files exist.

JOBFILE {

   FILE=MergeFolder/pcb2311.job

   FILE=C:/MergeFolder/pcb2312.job

}

 

ODB++ array

The ODB++ array imports any number of ODB++ files and folders.  The ODB++ array saves time because you do not need to define LAYER array or JOB array.

FILE

Path to the compressed ODB++ file.  The path may be either Absolute or Relative.  The can be unlimited number of ODB++ files loaded.

FOLDER

Path to an uncompressed ODB++ file.  The path may be either Absolute or Relative.  The can be unlimited number of ODB++ folders loaded.

Note:  The matrix example below will load 2 ODB++ designs into FAB 3000.  One a compressed ODB++ file and the other a parent folder of an uncompressed ODB++ design.

ODB++{

   FILE=MergeFolder/pcb2311.tgz

   FOLDER=C:/MergeFolder/myODBFile

}

 

SAMPLE MATRIX FILES:

For more examples of matrix files checkout the FAB 3000 example folder (located in the FAB 3000 installation folder  ...\FAB3000V8\examples).

Matrix File#1 - Load 3 Separate PCB's (Gerber and Drill), and create a Panel with Rails, and Venting.

Matrix File#2 - Load PCB and RUN DFM Check.

Matrix File#3 - Load Job Files, Perform Panelization, Use Add array to create Test coupons with INSERT_MATRIX.