# This configuration file demonstrates panelizing a single job. ############################################################################## # In the [DEFAULT] section you can create global names to save typing the same # directory name, for example, over and over. ############################################################################## [DEFAULT] # Change projdir to wherever your project files are, for example: # # projdir = /home/stuff/projects/test # # or relative pathname from where you are running GerbMerge # # projdir = testdata # # or if all files are in the current directory (as in this example): # # projdir = . projdir = /persist/pcb/merge # For convenience, this is the base name of the merged output files. MergeOut = merge1 ############################################################################# # The [Options] section defines settings that control how the input files are # read and how the output files are generated. ############################################################################# [Options] ################################################################ # # Settings that are very important # ################################################################ # Option indicating name of file that maps Excellon tool codes to drill sizes. # This is not necessary if the Excellon files have embedded tool sizes, or if a # tool list is specified as part of the job description. The ToolList option # here is the "last resort" for mapping tool codes to tool sizes. Most recent # PCB programs embed drill size information right in the Excellon file, so this # option should not be necessary and can be commented out. #ToolList=proj1.drl # Optional indication of the number of decimal places in input Excellon drill # files. The default is 4 which works for recent versions of Eagle (since # version 4.11r12), as well as Orcad and PCB. Older versions of Eagle use 3 # decimal places. #ExcellonDecimals = 4 # Units - We must specify whether files use imperial units (inch) or metric units (mm) MeasurementUnits = mm #MeasurementUnits = inch ################################################################ # # Settings that are somewhat important # ################################################################ # Which layers to draw cut lines on. Omit this option or set to 'None' for no # cut lines. Cut lines are borders around each job that serve as guides for # cutting the panel into individual jobs. Option 'CutLineWidth' sets the # thickness of these cut lines. # # NOTE: Layer names are ALL LOWERCASE, even if you define them with uppercase # letters below. CutLineLayers = *topsilkscreen,*bottomsilkscreen # Which layers to draw crop marks on. Omit this option or set to 'None' for no # crop marks. Crop marks are small L-shaped marks at the 4 corners of the final # panel. These practically define the extents of the panel and are required by # some board manufacturers. Crop marks are also required if you want to leave # extra space around the final panel for tooling or handling. Option # 'CropMarkWidth' sets the thickness of these crop marks. # # NOTE: Layer names are ALL LOWERCASE, even if you define them with uppercase # letters below. CropMarkLayers = *topsilkscreen,*bottomsilkscreen # Set this option to the name of a file in which to write a Gerber fabrication # drawing. Some board manufacturers require a fabrication drawing with panel # dimensions and drill hit marks and drill legend. There's no harm in creating # this file...you can ignore it if you don't need it. FabricationDrawingFile = %(mergeout)s.fab # If FabricationDrawingFile is specified, you can provide an optional file name # of a file containing arbitrary text to add to the fabrication drawing. This # text can indicate manufacturing information, contact information, etc. #FabricationDrawingText = %(projdir)s/fabdwg.txt # Option to generate leading zeros in the output Excellon drill file, i.e., to # NOT use leading-zero suppression. Some Gerber viewers cannot properly guess # the Excellon file format when there are no leading zeros. Set this option to # 1 if your Gerber viewer is putting the drill holes in far off places that do # not line up with component pads. ExcellonLeadingZeros = 0 # Optional additional Gerber layer on which to draw a rectangle defining the # extents of the entire panelized job. This will create a Gerber file (with # name specified by this option) that simply contains a rectangle defining the # outline of the final panel. This outline file is useful for circuit board # milling to indicate a path for the router tool. There's no harm in creating # this file...you can ignore it if you don't need it. OutlineLayerFile = %(mergeout)s.oln # Optional additional Gerber layer on which to draw horizontal and vertical # lines describing where to score (i.e., V-groove) the panel so that jobs # can easily snap apart. These scoring lines will be drawn half-way between # job borders. ScoringFile = %(mergeout)s.sco # Set the maximum dimensions of the final panel, if known. You can set the # dimensions of the maximum panel size supported by your board manufacturer, # and GerbMerge will print an error message if your layout exceeds these # dimensions. Alternatively, when using automatic placement, the panel sizes # listed here constrain the random placements such that only placements that # fit within the given panel dimensions will be considered. The dimensions are # specified in inches or mm depending on the unit system used. PanelWidth = 12.6 PanelHeight = 7.8 # if your boards are metric, use mm #PanelWidth = 100 #PanelHeight = 100 # Set the amount of extra space to leave around the edges of the panel to # simplify tooling and handling. These margins are specified in inches, and # default to 0" if not specified. These spacings will only be visible to the # board manufacturer if you enable crop marks (see CropMarkLayers above) or use. LeftMargin = 0.1 RightMargin = 0.1 TopMargin = 0.1 BottomMargin = 0.1 ################################################################ # # Settings that are probably not important # ################################################################ # If using automatic random tile search, you can specify an auto-timeout in seconds SearchTimeout = 5 # Set the inter-job spacing (inches) in both the X-dimension (width) and # Y-dimension (height). Normally these would be the same unless you're trying # really hard to make your jobs fit into a panel of exact size and you need to # tweak these spacings to make it work. 0.125" is probably generous, about half # that is practical for using a band saw, but you probably want to leave it at # 0.125" if you have copper features close to the board edges and/or are using # less precise tools, like a hacksaw, for separating the boards. XSpacing = 0.125 YSpacing = 0.125 # Width of cut lines, in inches. The default value is 0.01". These are drawn on # the layers specified by CutLineLayers. # in inches CutLineWidth = 0.01 # in mm #CutLineWidth = 0.25 # Width of crop marks, in inches. The default value is 0.01". These are drawn on # the layers specified by CropMarkLayers. CropMarkWidth = 0.01 # This option is intended to reduce the probability of forgetting to include a # layer in a job description when panelizing two or more different jobs. # Unless this option is set to 1, an error will be raised if some jobs do not # have the same layer names as the others, i.e., are missing layers. For # example, if one job has a top-side soldermask layer and another doesn't, that # could be a mistake. Setting this option to 1 prevents this situation from # raising an error. AllowMissingLayers = 0 # This option is intended to reduce the number of drills in the output by # eliminating drill sizes that are too close to make a difference. For example, # it probably does not make sense to have two separate 0.031" and 0.0315" # drills. The DrillClusterTolerance value specifies how much tolerance is # allowed in drill sizes, in units of inches. Multiple drill tools that span # twice this tolerance will be clustered into a single drill tool. For example, # a set of 0.031", 0.0315", 0.032", and 0.034" drills will all be replaced by a # single drill tool of diameter (0.031"+0.034")/2 = 0.0325". It is guaranteed # that all original drill sizes will be no farther than DrillClusterTolerance # from the drill tool size generated by clustering. # # Setting DrillClusterTolerance to 0 disables clustering. DrillClusterTolerance = 0.002 # Use this option to automatically thicken features on particular layers. This # is intended for thickening silkscreen to some minimum width. The value of # this option must be a comma-separated list of layer names followed by minimum # feature sizes (in inches) for that layer. Comment this out to disable thickening. MinimumFeatureSize = *topsilkscreen,0.008,*bottomsilkscreen,0.008 ############################################################################## # This section sets the name of merged output files. Each assignment below # specifies a layer name and the file name that is to be written for that # merged layer. Except for the BoardOutline and Drills layer names, all other # layer names must begin with an asterisk '*'. The special layer name Placement # is used to specify the placement file that can be used with the # '--place-file' command-line option in a future invocation of GerbMerge. The # special layer name ToolList is used to specify the file name that represents # the tool list for the panelized job. # # By default, if this section is omitted or no layername=filename assignment is # made, the following files are generated: # # BoardOutline = merged.boardoutline.ger # Drills = merged.drills.xln # Placement = merged.placement.txt # ToolList = merged.toollist.drl # *layername = merged.layername.ger # (for example: 'merged.toplayer.ger', 'merged.silkscreen.ger') # # Any assignment that does not begin with '*' or is not one of the reserved # names BoardOutline, Drills, ToolList, or Placement is a generic string # assignment that can be used for string substitutions, to save typing. ############################################################################## [MergeOutputFiles] Prefix = %(mergeout)s #*TopLayer=%(prefix)s.cmp #*BottomLayer=%(prefix)s.sol #*TopSilkscreen=%(prefix)s.plc #*BottomSilkscreen=%(prefix)s.pls #*TopSoldermask=%(prefix)s.stc #*BottomSoldermask=%(prefix)s.sts #Drills=%(prefix)s.xln #BoardOutline=%(prefix)s.bor #ToolList = toollist.%(prefix)s.drl #Placement = placement.%(prefix)s.txt # these extensions are the ones used by SeeedStudio.com *TopLayer=%(prefix)s.GTL *BottomLayer=%(prefix)s.GBL *TopSilkscreen=%(prefix)s.GTO *BottomSilkscreen=%(prefix)s.GBO *TopSoldermask=%(prefix)s.GTS *BottomSoldermask=%(prefix)s.GBS Drills=%(prefix)s.TXT BoardOutline=%(prefix)s.bor ToolList = toollist.%(prefix)s.drl Placement = placement.%(prefix)s.txt ############################################################################## # The remainder of the file specifies the jobs to be panelized. Each job is # specified in its own section. To each job you can assign a job name, which # will be the name of the section in square brackets (e.g., [Proj1]). This job # name is used in the layout file (if used) to refer to the job. # # Job names are case-sensitive, but do not create job names that are the same # except for the case of the characters, as this may cause problems during # layout. Job names may only contain the following characters: # # a-z A-Z 0-9 _ # # In addition, job names must begin with a letter (a-z or A-Z). # #[Proj1] # # You can set any options you like to make generating filenames easier, like # Prefix. This is just a helper option, not a reserved name. Note, however, # that you must write %(prefix)s below, in ALL LOWERCASE. # # Note how we are making use of the 'projdir' string defined way up at the top # in the [DEFAULT] section to save some typing. By setting 'projdir=somedir' # the expression '%(projdir)s/proj1' expands to 'somedir/proj1'. #Prefix=%(projdir)s/proj1 # # List all the layers that participate in this job. Required layers are Drills # and BoardOutline and have no '*' at the beginning. Optional layers have # names chosen by you and begin with '*'. You should choose consistent layer # names across all jobs. # # Here are some additional options for each job: # # If this job does not have drill tool sizes embedded in the Excellon file, it # needs to have a separate tool list file that maps tool names (e.g., 'T01') to # tool diameter. This may be the global tool list specified in the [Options] # section with the ToolList parameter. If this job doesn't have embedded tool # sizes, and uses a different tool list than the global one, you can specify it # here. #ToolList=proj1.drl # # If this job has a different ExcellonDecimals setting than the global setting # in the [Options] section above, it can be overridden here. #ExcellonDecimals = 3 # # You can set a 'Repeat' parameter for this job when using automatic placement # (i.e., no *.def file) to indicate how many times this job should appear in # the final panel. When using manual placement, this option is ignored. #Repeat = 11 # ############################################################################## [proj1] Prefix=/persist/pcb/gerber/esp32_camera Repeat = 1 *TopLayer=%(prefix).gtl *BottomLayer=%(prefix).gbl *TopSilkscreen=%(prefix).gto *BottomSilkscreen=%(prefix).gbo *TopSoldermask=%(prefix).gts *BottomSoldermask=%(prefix).gbs Drills=%(prefix).drl BoardOutline=%(prefix).gm1 [proj2] Prefix=/persist/pcb/gerber/iphonecase2 Repeat = 1 *TopLayer=%(prefix)-F.Cu.gbr *BottomLayer=%(prefix)-B.Cu.gbr *TopSilkscreen=%(prefix)-F.SilkS.gbr *BottomSilkscreen=%(prefix)-B.SilkS.gbr *TopSoldermask=%(prefix)-F.Mask.gbr *BottomSoldermask=%(prefix)-B.Mask.gbr Drills=%(prefix).drl BoardOutline=%(prefix)-Edge.Cuts.gbr # for Diptrace Generated PCBs, use the following: #[myProj] #Prefix=%(projdir)s/myProj #*TopLayer=%(prefix)s/Top.gbr #*BottomLayer=%(prefix)s/Bottom.gbr #*TopSilkscreen=%(prefix)s/TopSilk.gbr #*BottomSilkscreen=%(prefix)s/BottomSilk.gbr #*TopSoldermask=%(prefix)s/TopMask.gbr #*BottomSoldermask=%(prefix)s/BottomMask.gbr #Drills=%(prefix)s/Drill.txt #BoardOutline=%(prefix)s/BoardOutline.gbr