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#
E5 VCCCORE
...
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.
-InnerAlien
inneralien@users.sourceforge.net