Download from

SourceForge Logo


Pinout is a perl script which makes it easy to produce nice looking postscript ballout/pinout images for BGA or PGA type integrated circuits (IC).

It requires two files to work. One file is a list of the pin names and pin numbers separated by a space with one pair per line. The order of the lines doesn't matter.

pin_number1 pin_name1
A3 D29#
C1 D33#

The other file is a configuration file that has the row and column definitions for the part. This file is the chiprc file that comes with the distribution.

ROWS A B C D E F G H J K L M N P ...
COLS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

The first elements of ROWS and COLS define the lower left corner of the pinout, Fig. 1. The order in which you define the ROWS and COLS elements will also determine if you have a top view or a bottom view. Once you choose a top or a bottom view you can create the opposite view by adding the "switch 1" option to the chiprc file. (All of the available options are listed below)

Given this information Pinout will create a postscript page that contains an image like the following:
Top view of a Pentium III: p3.ps

Fig. 1

You will notice that the font is pretty small in the image and postscript file above. The script assumes that there will be a pin in every position and it will calculate the font size and pin pitch based on this assumption. The above postscript pinout has pins that are placed in every other position leaving a staggered appearance. Adding the "stagger 2" option to the chiprc file will tell the script to expect 2 times the distance between adjoining pins, Fig. 2.

Fig. 2

You are able to adjust many of the variables that will allow you to tweak the look of the postscript output. Fig. 3 shows all of the variables that can be adjusted in the chiprc file. These values get printed to STDERR.

Fig. 3 (Click to get a larger image)

The variables are:
var_name : possible values
ref_font_size : null (default), >0
ref_to_border_side : 1.5 (default), any number
ref_to_border_tb : 1.5 (default), any number
font_to_border_tb : 1.5 (default), any number
pin_to_font : 1.5 (default), any number
pin_line_width : 1 (default), any number
pin_radius : 3 (default), any number
pin_padding : 1 (default), any number
page_sizex : 8.5 (default), any number
page_sizey : 11 (default), any number
switch : 0 (default), 1
stagger : 1 (default), >0
margin_paddingx : 0 (default), any number
margin_paddingy : 0 (default), any number

Even though it is possible to put "any number" in some of the values it is wise to use reasonable numbers.
It isn't recommended to make things like ref_font_size equal to 80 although it does look kind of neat.

Example Usage and output:
pinout chiprc pin_name_num_file > output.ps

font_size 2.25
ref_font_size 2.25
ref_to_border_side 1.5
ref_to_border_tb 1.5
font_to_border_tb 1.5
pin_to_font 1.5
pin_to_border_side 10.75
pin_pitch 14.5
pin_line_width 1
pin_radius 3
pin_padding 1
page_sizex 8.5
page_sizey 11
switch 0
margin_paddingx 14.95
margin_paddingy 10.0335
stagger 1
max_pin_name_width 10

The generated output postscript file will most likely be placed into some other document - hopefully LaTeX =). Pinout at the moment cannot generate encapsulated postscript. If you wish to insert an encapsulated postscript file into an M$ product you'll probably need a preview image in the postscript file. An external utility like ps2epsi would be the best program to use. ps2epsi is a great little program that will take the output of Pinout and generate an encapsulated postscript file that bounds the image properly and creates a preview image as well. The preview will make the file twice as large as it was before however.
Good luck and I hope you get some use out of my little script. I know I do.