The vendordrill plugin - Apply Vendor Drills and DRC

Load and Apply vendor file to the current design.

Description

Footprint holes are predefined within each footprint and layer characteristics are predefined in the layout file. Consequentially, hole sizes may vary among footprints or not match a vendor's available drill availability unless manually adjusted. Likewise, predefined layout layer characteristics may mismatch a vendor's specific requirements. For example one type of Through-Hole resistor footprint may have 40mil holes while another may have 43.5 mil holes.

Some PCB fabricators have a finite set of drill sizes available. In this case loading a vendor file will automatically adjust the layout's hole sizes to agree with the vendor's drill availability.

Many current PCB fabricators offer any drill size within a tolerance with just a minimum and maximum. In this case the layout's holes do not need to match specific drill sizes but it may be desirable to normalize the hole sizes. While the user may want all holes consistent for aesthetic reasons there may be a fabrication cost saving if hole sizes are consistent. Likewise, design rules, such as trace width and minimum separation, can impact fabrication cost. In this situation the drills listed in the vendor files would not be specific drill availability but rather normalization values.

The LoadVendorFrom() Action enables a file of vendor specific fabrication requirements to be loaded to the current design. When the vendor file is applied, holes will be automatically adjusted to conform to the drill sizes listed in the vendor file and layer characteristics will be used in any subsequent Design Rule Checks (DRC). Some critical parts where you may not want to change the drill size can be identified to be left alone - "skipped".

Vendor File Requirements

If the optional second argument is pure, LoadVendorFrom() will not reset existing internal vendor data before the load and will not auto-apply them after load. This makes it possible to load multiple vendor drill files incrementally, effectively merging them in memory. The ApplyVendor() action needs to be called manually after the last file loaded with pure.

Example Minimal Vendor File

    ha:vendor_drill_map {
  vendor = oshpark  # Optional and can be omitted
  units = mil      # mil|mils|inch|inches|mm - mil is default
  round = nearest  # up is default; alternative: down
  li:drillmap = {
      20
      25
      30
  }
  li:skips = {
      refdes = {^J3$}       # Skip J3.
      refdes = {^U[1-3]$}   # Skip U1, U2, U3
  }

  # this feature will be removed, use the new DRC instead!
  ha:drc = {
      copper_space = 7
      copper_width = 7
      silk_width = 10
  }