# PCB NC formats

PCB NC drill files convey PCB drilling and routing information. The NC formats were originally designed by CNC drill and route machine vendors as proprietary input formats for their equipment, and are known under their company name: Excellon, Hitachi, Sieb & Meyer, Posalux, etc. These formats are similar as they are based on RS-274-C and related to G-code. In 1985 IPC published a generic standard NC format, IPC-NC-349. Later XNC was designed, a simple strict subset of IPC-NC-349, designed not for driving machines but for exchanging drill information between CAD and CAM. They are collectively referred to as (PCB) NC files.
The NC files are primarily used to drive CNC machines, and they are adequate for that task.
They are also used to exchange design information between CAD and CAM, for which they are not adequate: essential information such as plating and drill span is missing. Furthermore, the NC output in CAD systems is often poorly implemented, resulting in poor registration between drill holes and copper layers and other problems. To exchange data between CAD and CAM it is more preferred to use the Gerber format. The quality of the Gerber file output software is typically good, and Gerber supports attributes to transfer meta-information such as plating and span.

## IPC-NC-349 format

The IPC-NC-349 format is the only IPC standard governing drill and routing formats. XNC is a strict subset of IPC-NC-349, Excellon a big superset. Many indefinite NC files pick some elements of the IPC standard.
A digital rights managed copy of the specification is available from the IPC website, for a fee. It is targeted at input for drill/rout machines, not CAD to CAM data exchange.

## XNC format

The XNC format is strict subset of the IPC-NC-349 specification targeted at data exchange between CAD and CAM. The name XNC format stands for Exchange NC format. As a strict subset, it is highly compatible with existing software. Its purpose is to address the current chaos of different subsets and incomplete NC files, and define a simple common standard. The XNC subset was defined by a consortium formed by Graphicode, Ucamco, KiCad and Pentalogix.
The specification is freely available among others at the Ucamco download page. The specification is brief, detailed, easy to understand and unambiguous. It is targeted at CAD to CAM data exchange, not at input for drill/rout machines.
An example:

## Excellon format

The name Excellon format is derived from the company Excellon Automation (not to be confused with Excellon Software), which was the market leader in PCB drilling and routing machines during the 1980s, and whose proprietary format became widely used.
There are actually two Excellon formats, the older Excellon 1 and Excellon 2. Excellon 2 is a superset of IPC-NC-349. Commands from both are sometimes confusingly mixed in the same file.
Excellon Automation stopped publishing the specification of its format, without statement on the IP and usage rights of the format. An archived copy exists. The specification is ambiguous, leading to different interpretations, especially in the area of coordinates and units. It is targeted at input for drill/rout machines, not CAD to CAM data exchange.

## Indefinite NC files

CAD/CAM data exchange often uses NC files that do not conform to any specification. These files contain a few IPC-NC-349 commands, but follow neither the Excellon nor the IPC-NC-349 specification. Commands are not used properly, or are used in a syntactically incorrect way, and binary data objects may be included. Sometimes the historic EIA or EBCDIC character encoding is used. Usually the header is incomplete: the scale or the tool diameters is missing. Sometimes there is no header at all, and the file only contains tool numbers, with an unspecified diameter, and X,Y coordinates, in an unspecified unit. They are often called Excellon files although they are undefinite NC files. No specification exists.
An example:
The tool diameters and how to interpret the coordinates is not specified. This file is meaningless without additional information, typically put in a free format human readable tool file. This information must be re-entered manually by the CAD/CAM operator, with unnecessary manual labor and risk of delays or errors. Astonishingly, such enigmatic files are still used.