From a7a089351fc0058b3ef849f2644db559d03e9cd3 Mon Sep 17 00:00:00 2001 From: Dan White Date: Tue, 14 Feb 2012 13:28:10 -0600 Subject: [PATCH] Add TI VQFN package generator --- sch-pcb/fp/Pcb-letter.pdf | Bin 0 -> 305372 bytes sch-pcb/fp/Pcb_9.pm | 1224 +++++++++++++++++ ...0W-400L-24N-245WT-245LT__TI_RGE_Package.fp | 33 + sch-pcb/fp/pcb-example-hdr1 | 149 ++ sch-pcb/fp/pcb-example-hdr2 | 185 +++ sch-pcb/fp/pcb-example-res | 60 + sch-pcb/fp/pcb-example-smd | 100 ++ sch-pcb/fp/pcb-example-tqfn | 260 ++++ sch-pcb/fp/ti_rge.pl | 262 ++++ 9 files changed, 2273 insertions(+) create mode 100644 sch-pcb/fp/Pcb-letter.pdf create mode 100644 sch-pcb/fp/Pcb_9.pm create mode 100644 sch-pcb/fp/VQFN-50P-400W-400L-24N-245WT-245LT__TI_RGE_Package.fp create mode 100755 sch-pcb/fp/pcb-example-hdr1 create mode 100755 sch-pcb/fp/pcb-example-hdr2 create mode 100755 sch-pcb/fp/pcb-example-res create mode 100755 sch-pcb/fp/pcb-example-smd create mode 100755 sch-pcb/fp/pcb-example-tqfn create mode 100755 sch-pcb/fp/ti_rge.pl diff --git a/sch-pcb/fp/Pcb-letter.pdf b/sch-pcb/fp/Pcb-letter.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f1ab9a2086cf1170e1b62f11d343dea435af155e GIT binary patch literal 305372 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 s^vy@+E)VJZxBvf0ssI2 literal 0 HcmV?d00001 diff --git a/sch-pcb/fp/Pcb_9.pm b/sch-pcb/fp/Pcb_9.pm new file mode 100644 index 0000000..cfce576 --- /dev/null +++ b/sch-pcb/fp/Pcb_9.pm @@ -0,0 +1,1224 @@ +# Copyright (C) 2007 John C. Luciani Jr. + +# This program may be distributed or modified under the terms of +# version 0.2 of the No-Fee Software License published by +# John C. Luciani Jr. + +# A copy of the license is at the end of this file. + +package Pcb_9; +require Exporter; +use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); +@ISA = qw(Exporter); +@EXPORT = qw(get_field_format scaled_value flag_value_element flags); +@EXPORT_OK = qw(element_get_field_names dim_field_p element_get_names element_str + ELEMENT_NAME_HIDDEN ELEMENT_SELECTED ELEMENT_SOLDER_SIDE + PIN_MASK PIN_ALWAYS_SET PIN_CONNECTED PIN_MOUNTING_HOLE PIN_DISPLAY_NAME + PIN_SELECTED PIN_SQUARE PIN_OCTAGONAL PIN_ROUND PIN_SHAPE_MASK + PAD_CONNECTED PAD_DISPLAY_NAME PAD_SELECTED PAD_SOLDER_SIDE PAD_SQUARE + PAD_ROUNDED TEXT_ON_SOLDER_SIDE); +%EXPORT_TAGS = (flags => [qw(ELEMENT_NAME_HIDDEN ELEMENT_SELECTED ELEMENT_SOLDER_SIDE + PIN_MASK PIN_ALWAYS_SET PIN_CONNECTED PIN_MOUNTING_HOLE PIN_DISPLAY_NAME + PIN_SELECTED PIN_SQUARE PIN_OCTAGONAL PIN_ROUND PIN_SHAPE_MASK + PAD_CONNECTED PAD_DISPLAY_NAME PAD_SELECTED PAD_SOLDER_SIDE PAD_SQUARE + PAD_ROUNDED TEXT_ON_SOLDER_SIDE)]); + +use strict; +use warnings; +use Carp; +use POSIX; +use Data::Dumper; + +### \title{Creating PCB Elements with Perl} +### \author{John C. Luciani Jr.} +### \date{\today} +### \maketitle + +### \section{Change Log} + +### \begin{tabular}{lccp{4in}} +### {\tt Pcb\_9} & ??? & {\tt jcl} &% +### 1. Fixed a dimension scaling bug in element\_add\_lines. +### The scaling routine now scales an array of points. +### This bug was reported by Ben Jackson.\\ +### &&& 2. The scaling routines now accept a dimension suffix which will +### override the default dimension.\\ +### {\tt Pcb\_8} & 19-Mar-2007 & {\tt jcl} &% +### 1. Removed the export of element\_add\_arc. Not necessary (OO).\\ +### &&& 2. Corrected the mask and clearance parameters in the pin, pad and pin\_oval procedures.\\ +### &&& 3. Removed the Mark command since the mark data is now in the Element header.\\ +### &&& 4. Exported element\_str and added a scale\_factor parameter (default value of 100)\\ +### &&& 5. the key to specify dimensional units (input\_dim) was changed to dim\\ +### &&& 6. Fixed the dimension scaling problem in {\tt add\_element\_lines}\\ +### &&& 7. Corrected the documentation for {\tt element\_add\_pin\_oval}\\ +### {\tt Pcb\_7} & 25 March 2005 & {\tt jcl} &% +### 1. changed the definition of the mask and clearance.\\ +### &&& 2. Fixed the mask and clearance parameters in the pin, pad and pin\_oval procedures.\\ +### {\tt Pcb\_6} & 22 March 2005 & {\tt jcl} &% +### 1. The {\tt element\_add\_rectangle} command now uses the {\tt x} and {\tt y} +### parameters. The center of the rectangle was always placed at (0,0)\\ +### &&& 2. The {\tt pin\_one\_square} key-value pair was not getting properly tested +### in the {\tt element\_add\_pin} procedure.\\ +### &&& 3. Added the {\tt clearance} and the {\tt mask} parameters to {\tt element\_add\_pad\_rectangle}.\\ +### {\tt Pcb\_5} & 6 March 2005 & {\tt jcl} &% +### 1. Added the {\tt element\_add\_lines} command.\\ +### &&& 2. added the {\tt element\_add\_pin\_oval} command.\\ +### &&& 3. Modified the debug print messages.\\ +### &&& 4. Fixed constant for octagonal pads.\\ +### &&& 5. Fixed errors in the EXPORT\_OK and EXPORT\_TAGS declarations.\\ +### &&& 6. Added {\tt element\_get\_names}.\\ +### {\tt Pcb\_4} & 27 February 2005 & {\tt jcl} &% +### 1. Modified the debug strings to output mm and mils.\\ + +### &&& 2. Fixed the {\tt scale\_factor} subroutine. {\tt +### scale\_factor} did not correctly convert from mils to mm. I did +### not test (or use) the conversion to mm until I modified the +### debug strings\\ + +### {\tt Pcb\_3} & 7 February 2005 & {\tt jcl } & Initial Release\\ +### \end{tabular} + +### \section{Pcb\_9} + +### This document describes a set of Perl routines that can be used to +### create component footprints for the circuit board layout program +### \href{http://bach.ece.jhu.edu/~haceaton/pcb}{PCB}. These routines +### reside in a file called |Pcb_|\|.pm| where \ is the current +### revision number of the package. Only the new format of PCB +### elements is output. The differences (that I am aware of) between +### the old and new formats are: + +### \begin{itemize} +### \item Dimensions are in hundreths of a mil. +### \item The argument delimiters are square brackets |[]| +### \item The element command adds the |mark_x| and |mark_y| parameters +### \item The pin and pad command add clearance and mask parameters. +### \end{itemize} +###\par + +### \subsection*{Requirements} + +### These routines should run with a standard Perl distribution. The +### only packages used are |POSIX| and |Carp|.\par + +### \subsection*{Usage} + +### These routines are object oriented. A PCB object is created using +### |new| and all subsequent method calls use this +### object. |element_begin| starts a new element. |element_output| +### outputs the element file. |element_add_mark| sets the component +### centroid. |element_set_text_xy| sets the text position for the +### reference designator. The names of the methods used to draw +### elements all start with the string |element_add|. Arguments for +### the method calls are key-value pairs. The keys are parameter +### strings defined in +### \href{http://pcb.sourceforge.net/pcb-20050127.html/index.html}{pcb.html}.\par + +### \medskip\noindent To use these routines in a Perl script to create a PCB element: + +### \begin{enumerate} +### \item Include the PCB routines |use Pcb_|\|;| +### \item Create a PCB object using |new| +### \item Begin an element using |element_begin| +### \item Add copper to the element using |element_add_pin| or |element_add_pad| +### \item Add silkcreen elements using |element_add_line|, |element_add_arc|, +### \item Mark the centroid using |element_add_mark|. The mark can +### also be set using parameters of the |element_begin| method. +### \item Add the text location for the reference designator using |element_set_text_xy| +### The text location can also be set using parameters of the |element_begin| method. +### \item Output the element to a file using |element_output| +### \end{enumerate} + +### The simple example in \autoref{lst:res example} creates a +### quarter~watt through-hole resistor. The example in +### \autoref{lst:smd example} creates a variety of two terminal SMD +### footprints ranging in size from |0402| to |2512|. The example in +### \autoref{lst:th example} creates Molex 8624 series header +### connector footprints. The example in \autoref{lst:tqfn example} +### creates TQFN footprints for a variety of Maxim parts. + +### These examples place files in the directory |./tmp|. This can be +### easily changed by changing the |element_begin| call. + +###\lstinputlisting[% +### label=lst:res example,% +### caption=1/4 Watt Resistor Example]{pcb-example-res} + +### \section{Examples} +### \label{sec:examples} + +###\lstinputlisting[% +### label=lst:to220 example,% +### caption=TO220 Pads]{pcb-example-TO220-pads} + +### \newpage +###\lstinputlisting[% +### label=lst:smd example,% +### caption=SMD Element Creation Example]{pcb-example-smd} + +###\newpage +###\lstinputlisting[% +### label=lst:th example,% +### caption=Header Connector Creation Example 1]{pcb-example-hdr1} + +###\newpage +###\lstinputlisting[% +### label=lst:th example,% +### caption=Header Connector Creation Example 2]{pcb-example-hdr2} + +###\newpage +###\lstinputlisting[% +### label=lst:tqfn example,% +### caption=TQFN Element Creation Example]{pcb-example-tqfn} + +### \section{Element Flags} + +### The element flag field determines the state of an element. The bit +### values are: + +### @key_value_table@ +use constant ELEMENT_NAME_HIDDEN => 0x10; ### bit 4: the element name is hidden +use constant ELEMENT_SELECTED => 0x40; ### bit 6: element has been selected +use constant ELEMENT_SOLDER_SIDE => 0x80; ### bit 7: element is located on the solder side +### @end_key_value_table@ Element Flags + +### \section{Text Flags} + +### @begin_key_value_table@ +use constant TEXT_DIRECTION_0 => 0; ### Horizontal +use constant TEXT_DIRECTION_90 => 1; ### 90 degrees counter-clockwise +use constant TEXT_DIRECTION_180 => 2; ### 180 degrees counter-clockwise +use constant TEXT_DIRECTION_270 => 3; ### 270 degrees counter-clockwise +### @end_key_value_table@ Text Direction Flags + +### @begin_key_value_table@ +use constant TEXT_SELECTED => 0x40; ### bit 6: the text has been selected +use constant TEXT_ON_SOLDER_SIDE => 0x80; ### bit 7: the text is on the solder (back) side of the board +use constant TEXT_ON_SILKSCREEN => 0x400; ### bit 10: the text is on the silkscreen layer +### @end_key_value_table@ Text Flags + +### \section{Pin Flags} + +### @key_value_table@ +use constant PIN_MASK => 0xFFFD; ### +use constant PIN_ALWAYS_SET => 0x0001; ### bit 0: always set + ### bit 1: always clear +use constant PIN_CONNECTED => 0x0004; ### bit 2: set if pin was found during a connection search +use constant PIN_MOUNTING_HOLE => 0x0008; ### bit 3: set if pin is only a mounting hole (no copper annulus) +use constant PIN_DISPLAY_NAME => 0x0020; ### bit 5: display the pins name +use constant PIN_SELECTED => 0x0040; ### bit 6: pin has been selected +use constant PIN_SQUARE => 0x0100; ### bit 8: pin is drawn as a square +use constant PIN_OCTAGONAL => 0x0800; ### bit 12: set if pin is drawn with an octagonal shape +use constant PIN_ROUND => 0x0000; ### +use constant PIN_SHAPE_MASK => 0xEEFF; ### +### @end_key_value_table@ Pin Flags + +### \section{Pad Flags} + +### @key_value_table@ +use constant PAD_CONNECTED => 0x0004; ### bit 2: set if pad was found during a connection search +use constant PAD_DISPLAY_NAME => 0x0020; ### bit 5: display the pads name +use constant PAD_SELECTED => 0x0040; ### bit 6: pad has been selected +use constant PAD_SOLDER_SIDE => 0x0080; ### bit 7: pad is located on the solder side +use constant PAD_SQUARE => 0x0100; ### +use constant PAD_ROUNDED => 0x0800; ### bit 11: pad has rounded corners +### @end_key_value_table@ Pad Flags + +### \Method new\\ + +### \Usage Pcb_9 -> new\\ + +### \Description + +### Creates an object that is used to make PCB element files. Default +### parameters for the various element drawing commands can be +### initialized using a key-value parameter list. + +### \medskip\noindent The valid keys and default values are in +### \autoref{tab:kv new} + +sub new { + my $class = shift; + my $self = { + ### @key_value_table@ + line_thickness => 10, ### thickness used in drawing silkscreen lines + arc_thickness => 10, ### thickness used in drawing silkscreen arcs + thickness => 10, ### thickness used in drawing any silkscreen line + pin_flags => 0, ### flags used in creating element pins (See \autoref{tab:kv pin flags}) + pad_flags => PAD_SQUARE, ### flags used in creating pads + font_size => 50, ### size in ??? of the silkscreen found + clearance => 10, ### \clearanceDEF + mask => 10, ### \maskDEF + debug => 0, ### debug messages. no messages (0). object methods (1). object methods + internal subroutines (2) + ### @end_key_value_table@ Keys for Method new | new + &_scale_dim(dim => 'mils', @_), + }; + bless $self, $class; # bless $self into the designated class + + printf("(new) Creating a new Pcb object\n") + if $self -> debug_p; + + # initialization + + return $self; +} + +### \Example + +### To create a new object that will display object method debugging +### messages:\par +### \medskip\noindent +### \begin{lstlisting}[numbers=none,frame=none] +### my $Pcb = Pcb_9 -> new(debug => 1); +### \end{lstlisting} + + + + +### \Method element_begin\\ + +### \Usage Pcb -> element_begin\\ + +### \Description + +### Initializes a new Pcb element. If an element was previously +### created but not output a call to |element_begin| will remove it. + +### \medskip\noindent The valid keys and default values are in +### \autoref{tab:kv element-begin} + +sub element_begin { + my $self = shift; + $self->{element} = + { + ### @key_value_table@ + flags => 0, ### \elementflagsDEF + description => '', ### \descriptionDEF + layout_name => '', ### \layoutnameDEF + value => '', ### \valueDEF + mark_x => 0, ### \markxDEF + mark_y => 0, ### \markyDEF + text_x => 0, ### \textxDEF + text_y => 0, ### \textyDEF + direction => 0, ### \directionDEF + scale => 100, ### \scaleDEF + text_flags => 0, ### \textflagsDEF + output_file => 'PCB_ELEMENT.TMP', ### Element filename + pin_one_square => 0, ### Sets a default value that is used when creating a pin. + dim => 'mils', ### units default to mils + ### @end_key_value_table@ Keys for Method element\_begin | element-begin + _elements => [], + $self -> scale_dim(@_) + }; + + printf("(element_begin) Creating element file %s\n", $self -> element_get('output_file')) + if $self -> debug_p; + +} + +### \Example + +### To begin a 1/4 Watt resistor element with dimension values in mils:\par +### \medskip\noindent +### \begin{lstlisting}[numbers=none,frame=none] +### $Pcb -> element_begin(description => 'resistor', +### output_file => '025W', +### dim => 'mils'); +### \end{lstlisting} + + +### \Method element_output\\ + +### \Usage Pcb -> element_output\\ + +### \Description + +### |element_output| outputs the element drawing commands to a +### file. At this time there are no parameters that are valid for the +### \. + +sub element_output ($) { + my ($self) = @_; + my $ref = $self->{element}; + if (defined $ref->{output_file}) { + my $output_file = $ref->{output_file}; + open(OUTFILE, ">$output_file") or + croak "(Pcb) (element_output) Could not open $output_file for output"; + printf(OUTFILE "Element[0x%x \"%s\" \"%s\" \"%s\" %i %i %i %i %i %i 0x%x]\n", + hex($ref->{flags}), + $ref->{description}, + $ref->{layout_name}, + $ref->{value}, + $ref->{mark_x} * 100, + $ref->{mark_y} * 100, + $ref->{text_x} * 100, + $ref->{text_y} * 100, + $ref->{direction}, + $ref->{scale}, + hex($ref->{text_flags})); + printf(OUTFILE "(\n"); + foreach (@ { $ref->{_elements} }) { + printf(OUTFILE " %s\n", &element_str(@$_)); + } + printf(OUTFILE ")\n"); + close(OUTFILE) or croak "(Pcb) (element_output) Could not close $output_file"; + } else { + carp "(Pcb) (element_output) Element filename was not defined"; + } +} + +### \Method element_add_line\\ + +### \Usage Pcb -> element_add_line\\ + +### \Description + +### Creates a silkscreen line of a specified thickness (|thickness|) +### between two \points. + +### \BeginKVTable +### x1 & & \xoneDEF \\ +### y1 & & \yoneDEF \\ +### x2 & & \xtwoDEF \\ +### y2 & & \ytwoDEF \\ +### thickness & & \thicknessDEF \\ +### \EndKVTable{Keys for Method element\_add\_line}{element-add-line} + +sub element_add_line ($%) { + my $self = shift; + my %v = (thickness => $self -> element_get('line_thickness'), + $self -> scale_dim(@_)); + printf(" (element_add_line) adding line from %s to %s with thickness %s\n", + &_debug_str_point($v{x1}, $v{y1}), + &_debug_str_point($v{x2}, $v{y2}), + &_debug_str_dim($v{thickness})) + if $self -> debug_p; + $self -> _element_add('ElementLine', %v); +} + +### \Example + +### To create a 200mil long silkscreen line that is centered at |(0,0)| that is +### 10 mils thick\par +### \medskip\noindent +### \begin{lstlisting}[numbers=none,frame=none] +### $Pcb -> element_add_line(x1 => -100, y1 => 0, +### x2 => 100, y2 => 0, +### thickness => 10); +### \end{lstlisting} + + +### \Method element_add_arc\\ + +### \Usage Pcb -> element_add_arc\\ + +### \Description + +### Creates a silkscreen arc with a specified |width| and |length| +### centered at a \point. + +### \BeginKVTable +### x & & \xDEF\\ +### y & & \yDEF\\ +### width & & horizontal width of the arc\\ +### height & & vertical length of the arc\\ +### start\_angle & & Starting angle of the arc (degrees) \\ +### delta\_angle & & Angle swept by the arc (degrees)\\ +### thickness & & line thickness\\ +### \EndKVTable{Keys for Method element\_add\_arc}{element-add-arc} + + +sub element_add_arc ($%) { + my $self = shift; + my %v = (thickness => $self -> get('arc_thickness'), + $self -> scale_dim(@_)); + printf(" (element_add_arc) center at %s, start angle=%.0f, delta angle=%.0f\n", + &_debug_str_point($v{x}, $v{y}), + map { $v{$_} } qw(start_angle delta_angle)) + if $self -> debug_p; + $self -> _element_add('ElementArc', %v); +} + +### \Example + +### To create a silkscreen circular arc centered at |(0,0)| with a +### line thickness of 10 mils, radius of 200 mils that starts at +### 45$\Deg$ and sweeps for 135$\Deg$:\par + +### \medskip\noindent +### \begin{lstlisting}[numbers=none,frame=none] +### $Pcb -> element_add_arc(start_angle => 45, +### delta_angle => 135, +### x => 0, +### y => 0, +### width => 200, +### height => 200, +### thickness => 10); +### \end{lstlisting} + +### For an ellipse set the width and height to unequal values. + + +### \Method element_add_pin\\ + +### \Usage Pcb -> element_add_pin\\ + +### \Description + +### Adds a pin to an element + +### \BeginKVTable +### x & & \xDEF\\ +### y & & \yDEF\\ +### thickness & & width of the copper pad\\ +### clearance & & \clearanceDEF\\ +### mask & & \maskDEF\\ +### drill\_hole & & diameter of the hole that is drilled at the center of the pad\\ +### name & & string\\ +### pin\_number & & \pinnumberDEF\\ +### flags & & See \autoref{tab:kv pin flags}\\ +### \EndKVTable{Keys for Method element\_add\_pin}{element-add-pin} + +sub element_add_pin { + my $self = shift; + my %v = ( clearance => $self -> get('clearance'), + mask => $self -> get('mask'), + name => '', + flags => $self -> get('pin_flags'), + $self -> scale_dim(@_)); + + if ($v{pin_number} == 1 && $self -> element_get('pin_one_square')) { + $v{flags} &= PIN_SHAPE_MASK; + $v{flags} |= PIN_SQUARE; + } + $v{flags} &= PIN_MASK; + $v{flags} |= PIN_ALWAYS_SET; + + # The mask parameter that was passed as an argument is the + # clearance between the edge of the copper and the edge of the + # masking material. The mask value that PCB wants is the total + # diameter of hole in the mask. + + $v{mask} = $v{mask} * 2 + $v{thickness}; + $v{clearance} *= 2; + + printf(" (element_add_pin) center at %s, diameter=%s, pin_number=%s, flags=0x%x\n", + &_debug_str_point($v{x}, $v{y}), + &_debug_str_dim($v{thickness}), + defined $v{pin_number} ? sprintf("%i", $v{pin_number}) : '?', + $v{flags}) + if $self -> debug_p; + + $self -> _element_add('Pin', %v); +} + +### \Example +### +### To place a pin with a round pad at |(-100,0)| with a pad diameter of 55 mils, a drill hole diameter +### of 35 mils, soldermask clearance of 10 mils, a copper clearance of 9 mils, and a pin number of one:\par +### \medskip\noindent +### \begin{lstlisting}[numbers=none,frame=none] +### $Pcb -> element_add_pin(x => -100, y => 0, +### thickness => 55, +### drill_hole => 35, +### mask => 10, +### clearance => 9, +### pin_number => 1); +### \end{lstlisting} + +### \Method element_add_pad\\ + +### \Usage Pcb -> element_add_pad\\ + +### \Description + +### Pads are created by drawing a line, with a specified thickness, +### between two points. The line is drawn with a square nib and +### extends beyond each end point by a distance of ${\tt +### thickess}\over 2$. + +### \BeginKVTable +### x1 & & \xoneDEF \\ +### y1 & & \yoneDEF \\ +### x2 & & \xtwoDEF \\ +### y2 & & \ytwoDEF \\ +### thickness & & \thicknessDEF \\ +### clearance & & \clearanceDEF\\ +### mask & & \maskDEF\\ +### name & & \padnameDEF\\ +### pad\_number & & \padnumberDEF\\ +### flags & & See \autoref{tab:kv pad flags}\\ +### \EndKVTable{Keys for Method element\_add\_line}{element-add-line} + +sub element_add_pad { + my $self = shift; + my %v = (flags => $self -> get('pad_flags'), + clearance => $self -> get('clearance'), + mask => $self -> get('mask'), + $self -> scale_dim(@_)); + printf(" (element_add_pad) from %s to %s with thickness %s\n", + &_debug_str_point($v{x1}, $v{y1}), + &_debug_str_point($v{x2}, $v{y2}), + &_debug_str_dim($v{thickness})) + if $self -> debug_p; + + $v{mask} = $v{mask} * 2 + $v{thickness}; + $v{clearance} *= 2; + + $self -> _element_add('Pad', %v); + +} + +### \Example + +### To create a pad that is centered at |(0,0)| that is 100 mils long and 50 mils thick\par +### has a soldermask clearance of 10 mils, a copper clearance of 9 mils and is numbered one:\par +### \medskip\noindent +### \begin{lstlisting}[numbers=none,frame=none] +### $Pcb -> element_add_pad(x1 => -25, y1 => 0, +### x2 => 25, y2 => 0, +### thickness => 50, +### mask => 10, +### clearance => 9, +### pad_number => 1); +### \end{lstlisting} + + + + +### \Method element_add_pad_rectangle\\ + +### \Usage Pcb -> element_add_pad_rectangle\\ + +### \Description + +### Create a pad with a specified width and length that is centered at +### a point |(x,y)|. The length is in x-direction and the width is in +### the y-direction. + +### \BeginKVTable +### x & & \xDEF\\ +### y & & \yDEF\\ +### width & & \widthDEF\\ +### length & & \lengthDEF\\ +### clearance & & \clearanceDEF\\ +### mask & & \maskDEF\\ +### name & & \padnameDEF\\ +### pin\_number & & \pinnumberDEF\\ +### \EndKVTable{Keys for Method element\_add\_pad\_rectangle}{element-add-pad-rectangle} + + +sub _print_missing_fields { + my ($sub_name, $ref, @fields) = @_; + my $missing_fields = 0; + foreach (@fields) { + next if defined $ref->{$_}; + printf("(%s) field %s is undefined\n", $sub_name, $_); + $missing_fields = 1; + } + return($missing_fields); +} + + +sub element_add_pad_rectangle { + my $self = shift; + my %v = (flags => $self -> get('pad_flags'), + clearance => $self -> get('clearance'), + mask => $self -> get('mask'), + $self -> scale_dim(@_)); + + die if &_print_missing_fields('element_add_pad_rectangle', + \%v, + qw(width length x y name pin_number clearance mask)); + + my ($x1, $x2, $y1, $y2); + my $thickness; + if ($v{width} < $v{length}) { + $thickness = $v{width}; + $y1 = $v{y}; $y2 = $v{y}; + $x1 = $v{x} - ($v{length} - $thickness) / 2; + $x2 = $v{x} + ($v{length} - $thickness) / 2; + } else { + $thickness = $v{length}; + $x1 = $v{x}; $x2 = $v{x}; + $y1 = $v{y} - ($v{width} - $thickness) / 2; + $y2 = $v{y} + ($v{width} - $thickness) / 2; + } + + printf(" (element_add_pad_rectangle) width = %s, length = %s, center at %s\n", + &_debug_str_dim($v{width}), + &_debug_str_dim($v{length}), + &_debug_str_point($v{x}, $v{y})) + if $self -> debug_p; + + $self -> element_add_pad(x1 => $x1, x2 => $x2, + y1 => $y1, y2 => $y2, + thickness => $thickness, + name => $v{name}, + pin_number => $v{pin_number}, + clearance => $v{clearance}, + mask => $v{mask}, + flags => $v{flags}, + dim => 'mils'); +} + + + +### \Method element_add_pin_oval\\ + +### \Usage Pcb -> element_add_pin_oval\\ + +### \Description + +### Create a pad with a specified width and length that is centered at +### a point |(x,y)|. The length is in x-direction and the width is in +### the y-direction. The corners of the pad are rounded.\par + +### \medskip\noindent This is actually a hybrid object consisting of a +### component side pad, a solder side pad and a pin placed at the same +### center point. + +### \BeginKVTable +### x & & \xDEF\\ +### y & & \yDEF\\ +### width & & \widthDEF\\ +### length & & \lengthDEF\\ +### drill\_hole & & diameter of the hole that is drilled at the center of the pad\\ +### name & & \padnameDEF\\ +### pin\_number & & \pinnumberDEF\\ +### \EndKVTable{Keys for Method element\_add\_pin\_oval}{element-add-pin-oval} + +sub element_add_pin_oval { + my $self = shift; + my %v = ( clearance => $self -> get('clearance'), + mask => $self -> get('mask'), + $self -> scale_dim(@_)); + my ($x1, $x2, $y1, $y2); + my $thickness; + if ($v{width} < $v{length}) { + $thickness = $v{width}; + $y1 = $v{y}; $y2 = $v{y}; + $x1 = $v{x} - ($v{length} - $thickness) / 2; + $x2 = $v{x} + ($v{length} - $thickness) / 2; + } else { + $thickness = $v{length}; + $x1 = $v{x}; $x2 = $v{x}; + $y1 = $v{y} - ($v{width} - $thickness) / 2; + $y2 = $v{y} + ($v{width} - $thickness) / 2; + } + + printf(" (element_add_pad_oval) width = %s, length = %s, center at %s\n", + &_debug_str_dim($v{width}), + &_debug_str_dim($v{length}), + &_debug_str_point($v{x}, $v{y})) + if $self -> debug_p; + + + $self -> element_add_pad(x1 => $x1, x2 => $x2, + y1 => $y1, y2 => $y2, + thickness => $thickness, + flags => PAD_ROUNDED, + dim => 'mils', + map { $_ => $v{$_} } qw(name pin_number clearance mask)); + + $self -> element_add_pad(x1 => $x1, x2 => $x2, + y1 => $y1, y2 => $y2, + thickness => $thickness, + flags => PAD_ROUNDED | PAD_SOLDER_SIDE, + dim => 'mils', + map { $_ => $v{$_} } qw(name pin_number clearance mask)); + + + $self -> element_add_pin(x => ($x1 + $x2) / 2, + y => ($y1 + $y2) / 2, + name => '', + pin_number => $v{pin_number}, + thickness => $thickness, + dim => 'mils', + drill_hole => $v{drill_hole}, + mask => $v{mask}, + flags => 0, + clearance => $v{clearance}); +} + +### \Example + +### To place a pin with an oval pad at |(-100,0)| with a pad diameter +### of 55 mils, a drill hole diameter of 35 mils, soldermask clearance +### of 10 mils, a copper clearance of 9 mils, and a pin number of +### one:\par + +### \medskip\noindent +### \begin{lstlisting}[numbers=none,frame=none] +### $Pcb -> element_add_pin_oval(x => -100, y => 0, +### thickness => 55, +### drill_hole => 35, +### mask => 10, +### clearance => 9, +### pin_number => 1); +### \end{lstlisting} + + +### \Method element_add_mark\\ + +### \Usage Pcb -> element_add_mark\\ + +### \Description + +### The mark is a positioning hint. |element_add_mark| places the mark at +### at a \point. + +### \BeginKVTable +### x & & \xDEF \\ +### y & & \yDEF \\ +### \EndKVTable{Keys for Method element\_add\_mark}{element-add-mark} + +sub element_add_mark ($%) { + my $self = shift; + my %v = $self -> scale_dim(@_); + printf(" (element_add_mark) mark at %s\n", + &_debug_str_point($v{x}, $v{y})) + if $self -> debug_p; + $self -> _element_add('Mark', %v); +} + +### \Method element_add_lines\\ + +### \Usage Pcb -> element_add_lines\\ + +### \Description + +### Draws silkscreen lines using the specified line end points. Lines +### are drawn from point to point until all the points are connected. + +### \BeginKVTable +### points & & reference to a list containing x,y coordinates for line end points.\\ +### thickness & & \thicknessDEF\\ +### \EndKVTable{Keys for Method element\_add\_lines}{element-add-lines} + +sub element_add_lines { + my $self = shift; + my %v = (thickness => $self -> element_get('line_thickness'), + $self -> scale_dim(@_)); + my @pts = @ { $v{points} }; + while (@pts) { + my ($x1, $y1) = splice @pts, 0, 2; + last if $#pts < 1; + $self -> element_add_line(x1 => $x1, y1 => $y1, + x2 => $pts[0], y2 => $pts[1], + thickness => $v{thickness}, + dim => 'mils'); + } +} + + +### \Method element_add_rectangle\\ + +### \Usage Pcb -> element_add_rectangle\\ + +### \Description + +### Draws a silkscreen rectangle with a specified |width| and |length| at a \point. + +### \BeginKVTable +### x & & \xDEF\\ +### y & & \yDEF\\ +### width & & rectangle width (y direction)\\ +### length & & rectangle length (x direction)\\ +### thickness & & \thicknessDEF\\ +### \EndKVTable{Keys for Method element\_add\_rectangle}{element-add-rectangle} + +sub element_add_rectangle { + my $self = shift; + my %v = (x => 0, + y => 0, + thickness => $self -> element_get('line_thickness'), + $self -> scale_dim(@_)); + + # x1,y1 lower left + # x2,y2 upper right + + my $x1 = $v{x} - $v{length} / 2; + my $x2 = $v{x} + $v{length} / 2; + my $y1 = $v{y} + $v{width} / 2; + my $y2 = $v{y} - $v{width} / 2; + $self -> element_add_lines(points => [$x1, $y1, $x1, $y2, $x2, $y2, $x2, $y1, $x1, $y1], + %v, + dim => 'mils'); +} + + +### \Method element_set_text_xy\\ + +### \Usage Pcb -> element_set_text_xy\\ + +### \Description + +### Sets the position of the reference designator text. + +### \BeginKVTable +### x & & \xDEF \\ +### y & & \yDEF \\ +### font\_size & & \\ +### \EndKVTable{Keys for Method element\_add\_mark}{element-add-mark} + +sub element_set_text_xy ($%) { + my $self = shift; + my %v = (font_size => $self -> element_get('font_size'), + $self -> scale_dim(@_)); + printf(" (element_set_text_xy) text at %s\n", + &_debug_str_point($v{x}, $v{y} - $v{font_size})) + if $self -> debug_p; + $self -> element_set(text_x => $v{x}, + text_y => $v{y} - $v{font_size}); +} + +### \Method element_set\\ + +### \Usage Pcb -> element_set\\ + +### \Description + +### Sets values in the element hash table. This should be the only +### method used to set values in the element hash. \ +### contains key-value pairs. + +sub element_set ($@) { + my ($self, @key_value_pairs) = @_; + while (@key_value_pairs) { + my ($k, $v) = splice @key_value_pairs, 0, 2; + next if $k =~ /^_/; # do not set private variables + $self->{element}{$k} = $v; + } +} + +### \Method element_get\\ + +### \Usage Pcb -> element_get\\ + +### \Description + +### Returns a value, from the element hash, for each key specified in +### \. If the value is undefined in the element hash +### then a value from the Pcb object hash is returned. A value of +### |undef| is returned if neither hash contains a defined value for +### the key.\par + +### \medskip\noindent This should be the only method used to retrieve +### values from the element hash. \ contains a list of +### keys.\par + +### \medskip\noindent + +sub element_get ($@) { + my ($self, @keys) = @_; + my @retvals; + foreach my $key (@keys) { + my $value = $self->{element}{$key}; + $value = $self -> get($key) unless defined $value; + push @retvals, $value; + } + return @retvals if wantarray(); + return $retvals[0] if defined wantarray(); + return; +} + + +### \Method get\\ + +### \Usage Pcb -> get\\ + +### \Description + +### Retrieves values from the PCB object hash. This should be the +### only method used to retrieve values from the PCB object hash. +### \ contains a list of keys. + +sub get ($@) { + my ($self, @keys) = @_; + my @retvals = map { $self->{$_} } @keys; + return @retvals if wantarray(); + return $retvals[0] if defined wantarray(); + return; +} + +sub debug_p { shift() -> get('debug') } + + +# Since these debug routines are only meant to be called from within +# the Pcb package distance is assumed to be mils. + +sub _debug_str_dim ($) { + my $dim = shift; + return 'undef' unless defined $dim; + sprintf("%.2f (%.2f)", $dim, &scaled_value($dim, 'mils', 'mm')); +} + +sub _debug_str_point ($$$) { + my ($x, $y) = @_; + return sprintf("x=%s, y=%s", (map { &_debug_str_dim($_) } $x, $y)); +} + + +### \Method element_dump\\ + +### \Usage Pcb -> element_dump\\ + +### \Description + +### A debugging procedure that Prints out the element command drawing +### commands to STDOUT. + +sub element_dump { + my ($self) = @_; + my $ref = $self->{element}; + my @fields = qw(flags description layout_name value text_x text_y direction scale text_flags); + foreach (@fields) { + printf("field %s = %s\n", $_, $ref->{$_}); + } + printf("Element(0x%x \"%s\" \"%s\" \"%s\" %i %i %i %i 0x%x)\n", map {$ref->{$_}} @fields); + printf("(\n"); + foreach (@ { $ref->{_elements} }) { + printf(" %s\n", &element_str(@$_)); + } + printf(")\n"); +} + + + +my %Element_fields; +my %Fields; + +BEGIN +{ + + %Element_fields = ( Element => [qw(flags description layout_name value mark_x mark_y + text_x text_y direction scale text_flags)], + ElementLine => [qw(x1 y1 x2 y2 thickness)], + ElementArc => [qw(x y width height start_angle delta_angle thickness)], + Pin => [qw(x y thickness clearance mask drill_hole name pin_number flags)], + Pad => [qw(x1 y1 x2 y2 thickness clearance mask name pin_number flags)]); + + %Fields = ((map { $_ => { dim => 0, format => '0x0%x'} } + qw(flags text_flags)), + (map { $_ => { dim => 1, format => '%i'} } + qw(text_x text_y + mark_x mark_y + clearance mask + line_thickness arc_thickness + x1 y1 x2 y2 + thickness width + height length x y drill_hole + xoffset yoffset + points + )), + (map { $_ => { dim => 0, format => '%i' } } + qw(start_angle delta_angle direction scale)), + (map { $_ => { dim => 0, format => '"%s"' } } + qw(description layout_name value name pin_number))); + +} + +sub dim_field_p ($) { + my $field_name = shift; + return $Fields{$field_name}{dim} if exists $Fields{$field_name}{dim}; + return 0; +} + +sub element_p { defined $Element_fields{ shift() } } + +sub get_field_format { + my $name = shift; + join(' ', + map { defined $Fields{$_}{format} ? $Fields{$_}{format} : "***$_***" } + &element_get_field_names($name)); +} + +sub element_get_names { + return keys %Element_fields; +} + +sub element_get_field_names ($) { + my ($name) = @_; + return () unless defined $Element_fields{$name}; + return @ { $Element_fields{$name} }; +} + +sub element_str { + my $element_name = shift; + my %v = (scale_factor => 100, + @_); + my $str; + croak "(Pcb) (element_str) Unknown element type '$element_name'", return('') + unless &element_p($element_name); + my @arg; + + foreach my $fn (&element_get_field_names($element_name)) { + croak "(Pcb) (element_str) Missing field value for field $fn, element $element_name" + unless defined $v{$fn}; + + $v{$fn} *= $v{scale_factor} if &dim_field_p($fn); + + push @arg, $v{$fn}; + } + $str = sprintf("%s[" . &get_field_format($element_name) . "]", $element_name, @arg); + return $str; +} + +# Scales dimension field values to mils. Field values that are not +# dimensions are left unchanged. Field names and values are returned +# as a list of key-value pairs. + +sub _scale_dim { + my %args = (dim => 'mils', @_); + my @retval; + foreach my $key (keys %args) { + push @retval, $key; + push(@retval, $args{$key}), next unless &dim_field_p($key); + if (ref($args{$key}) eq '') { + push(@retval, &scaled_value($args{$key}, $args{dim}, 'mils')); + } elsif (ref($args{$key}) eq 'ARRAY') { + push(@retval, [ map { &scaled_value($_, $args{dim}, 'mils') } @ { $args{$key} } ]); + } else { + printf("(Pcb_9) (_scale_dim) incorrect reference type %s for arg %s\n", + ref($args{$key}), + $key); + croak; + } + } + return (@retval); +} + +sub scale_dim ($@) { + my ($self, @args) = @_; + &_scale_dim(dim => $self -> element_get('dim'), + @args); +} + +sub _scale_factor ($) { + my ($dim) = @_; + return undef unless defined $dim; + return 1 if $dim =~ /^\s*mils?\s*$/; + return 0.01 if $dim =~ /^\s*mils?100\s*$/; + return 1000/25.4 if $dim =~ /^\s*mms?\s*$/; + return undef; +} + +sub scaled_value ($$$) { + my $value = shift; + my $from_units = shift || 'mils'; + my $to_units = shift || 'mils'; + + $from_units = $1 if $value =~ s/(\D+)$//; + + return undef unless defined $value; + return undef unless $value =~ /^[-+.0-9eE]+$/; + return $value * &_scale_factor($from_units) / &_scale_factor($to_units); +} + +# adds element definitions + +sub _element_add { + my $self = shift; + push @{ $self->{element}{_elements}}, [@_]; + return unless $self -> debug_p() > 1; + printf(" (_element_add) %s\n", shift); + while (@_) { + my ($k, $v) = splice @_, 0, 2; + printf(" %s = %s\n", map { defined $_ ? $_ : 'undef' } $k, $v); + } +} + +###\clearpage +###\ifpdfscreen% +###\phantomsection% +###\addcontentsline{toc}{section}{References}% +###\fi% +###\nocite{footprint} +###\nocite{Pcb} +#\bibliographystyle{apacite} +###\bibliography{/local/lan/texmf/bibdb/bibdb} +###\newpage + +1; + +# Style (adapted from the Perl Cookbook, First Edition, Recipe 12.4) + +# 1. Names of functions and local variables are all lowercase. +# 2. The module's persistent variables (either file lexicals +# or package globals) are capitalized. +# 3. Identifiers with multiple words have each of these +# separated by an underscore for readability. +# 4. Constants are all uppercase. +# 5. If the arrow operator (->) is followed by either a +# method name or a variable containing a method name then +# there is a space before and after the operator. +# 6. Function names, variable names, hash keys that are meant +# to be used only within the current package have an +# underscore prefix. + + +__END__ +[test program] +#!/usr/bin/perl + +# this is a test program for the various subroutines in the Pcb +# library. It is only meant to test individual routines not create a +# usable component. See the www.luciani.org for the working examples. + +use strict; +use warnings; + +use Pcb_9; + +my $Pcb = Pcb_9 -> new; + +$Pcb -> element_begin(description => 'SMD CAP 100 x 200mils'); + +$Pcb -> element_add_rectangle(width => 100, + length => 200); + +$Pcb -> element_dump; +$Pcb -> element_output; + + +$Pcb -> element_begin(description => 'SMD CAP 1mm x 2mils'); + +$Pcb -> element_add_rectangle(width => '1mm', + length => 2); + +$Pcb -> element_dump; +$Pcb -> element_output; + + +##### No-Fee Software License Version 0.2 + +#### Intent + +### The intent of this license is to allow for distribution of this +### software without fee. Usage of this software other than +### distribution, is unrestricted. + +#### License + +### Permission is granted to make and distribute verbatim copies of +### this software provided that (1) no fee is charged and (2) the +### copyright notice and license statement are preserved on all copies. + +### Permission is granted to make and distribute modified versions of +### this software provided that the entire resulting derived work is +### distributed (1) without fee and (2) with a license identical to +### this one. + +### This software is provided by the author "AS IS" and any express or +### implied warranties, including, but not limited to, the implied +### warranties of merchantability and fitness for a particular purpose +### are disclaimed. In no event shall the author be liable for any +### direct, indirect, incidental, special, exemplary, or consequential +### damages (including, but not limited to, procurement of substitute +### goods or services; loss of use, data, or profits; or business +### interruption) however caused and on any theory of liability, +### whether in contract, strict liability, or tort (including +### negligence or otherwise) arising in any way out of the use of this +### software, even if advised of the possibility of such damage. + diff --git a/sch-pcb/fp/VQFN-50P-400W-400L-24N-245WT-245LT__TI_RGE_Package.fp b/sch-pcb/fp/VQFN-50P-400W-400L-24N-245WT-245LT__TI_RGE_Package.fp new file mode 100644 index 0000000..2c29fa4 --- /dev/null +++ b/sch-pcb/fp/VQFN-50P-400W-400L-24N-245WT-245LT__TI_RGE_Package.fp @@ -0,0 +1,33 @@ +Element[0x0 "VQFN-TI-RGE-24" "" "" 0 0 -12106 -17106 0 100 0x0] +( + Pad[-8897 -4921 -6653 -4921 1102 2000 3102 "" "1" 0x0100] + Pad[-8897 -2952 -6653 -2952 1102 2000 3102 "" "2" 0x0100] + Pad[-8897 -984 -6653 -984 1102 2000 3102 "" "3" 0x0100] + Pad[-8897 984 -6653 984 1102 2000 3102 "" "4" 0x0100] + Pad[-8897 2952 -6653 2952 1102 2000 3102 "" "5" 0x0100] + Pad[-8897 4921 -6653 4921 1102 2000 3102 "" "6" 0x0100] + Pad[-4921 6653 -4921 8897 1102 2000 3102 "" "7" 0x0100] + Pad[-2952 6653 -2952 8897 1102 2000 3102 "" "8" 0x0100] + Pad[-984 6653 -984 8897 1102 2000 3102 "" "9" 0x0100] + Pad[984 6653 984 8897 1102 2000 3102 "" "10" 0x0100] + Pad[2952 6653 2952 8897 1102 2000 3102 "" "11" 0x0100] + Pad[4921 6653 4921 8897 1102 2000 3102 "" "12" 0x0100] + Pad[6653 4921 8897 4921 1102 2000 3102 "" "13" 0x0100] + Pad[6653 2952 8897 2952 1102 2000 3102 "" "14" 0x0100] + Pad[6653 984 8897 984 1102 2000 3102 "" "15" 0x0100] + Pad[6653 -984 8897 -984 1102 2000 3102 "" "16" 0x0100] + Pad[6653 -2952 8897 -2952 1102 2000 3102 "" "17" 0x0100] + Pad[6653 -4921 8897 -4921 1102 2000 3102 "" "18" 0x0100] + Pad[4921 -8897 4921 -6653 1102 2000 3102 "" "19" 0x0100] + Pad[2952 -8897 2952 -6653 1102 2000 3102 "" "20" 0x0100] + Pad[984 -8897 984 -6653 1102 2000 3102 "" "21" 0x0100] + Pad[-984 -8897 -984 -6653 1102 2000 3102 "" "22" 0x0100] + Pad[-2952 -8897 -2952 -6653 1102 2000 3102 "" "23" 0x0100] + Pad[-4921 -8897 -4921 -6653 1102 2000 3102 "" "24" 0x0100] + Pad[0 0 0 0 9645 2000 11645 "" "25" 0x0100] + ElementArc[-9169 -9169 551 551 0 360 1000] + ElementLine[-10137 10137 -10137 -10137 1000] + ElementLine[-10137 -10137 10137 -10137 1000] + ElementLine[10137 -10137 10137 10137 1000] + ElementLine[10137 10137 -10137 10137 1000] +) diff --git a/sch-pcb/fp/pcb-example-hdr1 b/sch-pcb/fp/pcb-example-hdr1 new file mode 100755 index 0000000..b7b9755 --- /dev/null +++ b/sch-pcb/fp/pcb-example-hdr1 @@ -0,0 +1,149 @@ +#!/usr/bin/perl + +# Copyright (C) 2005 John C. Luciani Jr. + +# This program may be distributed or modified under the terms of +# version 0.2 of the No-Fee Software License published by +# John C. Luciani Jr. + +# Creates the PCB elements for Molex 8624 header connectors + +use strict; +use warnings; + +use Pcb_8; + +my $Pcb = Pcb_8 -> new(debug => 1); + +my @Fields = qw(circuits body_length pin_row_length); + +my @Def; # definitions that are common to all components + +while () { + s/\#.*//; # Remove comments + s/^\s*//; # Remove leading spaces + s/\s*$//; # Revove trailing spaces + next unless length; # Skip empty lines + + # Lines that contain an '=' are global definitions. + + push(@Def, $1, $2), next if /(\S+)\s*=\s*(\S.*)/; + + my @values = split /\s*\|\s*/; + + # hash for each footprint + + my %f = ( @Def, + map { $_ => shift(@values) } @Fields); + + $Pcb -> element_begin(description => 'TH', + output_file => + "tmp/" . &package_name($f{circuits}, $f{pin_rows}), + dim => 'mils', + pin_one_square => 1); + + my $pin_num = 1; + my $pins_per_row = $f{circuits} / 2; + + # lower left corner is pin one + + my $x = -$f{pin_spacing} * ($pins_per_row - 1) / 2; + my $y = $f{row_spacing} / 2; + + # These header connectors consist of two rows of pins. With pin + # one in the lower left corner we will place pins from left to + # right until half the pins are placed. At the halfway point we + # will shift to the top row and place pins from right to left. + + while ($pin_num <= $f{circuits}) { + $Pcb -> element_add_pin(x => $x, y => $y, + thickness => 66, + drill_hole => 46, + mask => 10, + clearance => 10, + pin_number => $pin_num); + + # If this is the last pin in the row then + # update the y value otherwise update the x + # value. If we are past the halfway point move + # left (-) instead of right (+). + + $y *= -1; + $x += $f{pin_spacing} if $y > 0; + $pin_num++; + } + + $Pcb -> element_add_rectangle(width => $f{body_width}, + length=> $f{body_length}, + x => 0, + y => 0); + + + $Pcb -> element_set_text_xy(x => -$f{body_length}/2, + y => -$f{body_width}/2 - 20); + + + $Pcb -> element_output(); +} + +sub package_name ($$) { + my ($circuits, $rows) = @_; + sprintf("CON_HDR-254P-%iC-%iR-%iN__Molex_8624-Series", + $circuits/$rows, + $rows, + $circuits); +} + +__DATA__ + +body_width = 200 +pin_spacing = 100 +row_spacing = 100 +pin_diameter = 35 +pin_rows = 2 + +# circuits | body_length | pin_row_length + +4 | 190 | 100 +6 | 290 | 200 +8 | 390 | 300 +10 | 490 | 400 +12 | 590 | 500 +14 | 690 | 600 +16 | 790 | 700 +18 | 890 | 800 +20 | 990 | 900 +22 | 1090 | 1000 +24 | 1190| 1100 +26 | 1290| 1200 +28 | 1390| 1300 + +30 | 1490 | 1400 +32 | 1590 | 1500 +34 | 1690 | 1600 +36 | 1790 | 1700 +38 | 1890 | 1800 +40 | 1990 | 1900 +42 | 2090 | 2000 +44 | 2190 | 2100 +46 | 2290 | 2200 +48 | 2390 | 2300 +50 | 2490 | 2400 +52 | 2590 | 2500 +54 | 2690 | 2600 + +56 | 2790 | 2700 +58 | 2890 | 2800 +60 | 2990 | 2900 +62 | 3090 | 3000 +64 | 3190 | 3100 +66 | 3290 | 3200 +68 | 3390 | 3300 +70 | 3490 | 3400 +72 | 3590 | 3500 +74 | 3690 | 3600 +76 | 3790 | 3700 +78 | 3890 | 3800 +80 | 3990 | 3900 + + diff --git a/sch-pcb/fp/pcb-example-hdr2 b/sch-pcb/fp/pcb-example-hdr2 new file mode 100755 index 0000000..4b7ad20 --- /dev/null +++ b/sch-pcb/fp/pcb-example-hdr2 @@ -0,0 +1,185 @@ +#!/usr/bin/perl + +# Copyright (C) 2005 John C. Luciani Jr. + +# This program may be distributed or modified under the terms of +# version 0.2 of the No-Fee Software License published by +# John C. Luciani Jr. + +# Creates the PCB elements for Molex 8624 header connectors + +use strict; +use warnings; + +use Pcb_8; + +my $Pcb = Pcb_8 -> new(debug => 0); + +my @Fields = qw(circuits body_length pin_row_length); + +my @Def; # definitions that are common to all components + +while () { + s/\#.*//; # Remove comments + s/^\s*//; # Remove leading spaces + s/\s*$//; # Revove trailing spaces + next unless length; # Skip empty lines + + # Lines that contain an '=' are global definitions. + + push(@Def, $1, $2), next if /(\S+)\s*=\s*(\S.*)/; + + my @values = split /\s*\|\s*/; + + # hash for each footprint + + my %f = ( @Def, + map { $_ => shift(@values) } @Fields); + + $Pcb -> element_begin(description => 'TH', + output_file => + "tmp/" . &package_name($f{circuits}, $f{pin_rows}), + dim => 'mils', + pin_one_square => 1); + + my $pin_num = 1; + my $pins_per_row = $f{circuits} / 2; + + # lower left corner is pin one + + my $x0 = -$f{pin_spacing} * ($pins_per_row - 1) / 2; + my $y0 = $f{row_spacing} / 2; + + my $x = $x0; + my $y = $y0; + + # These header connectors consist of two rows of pins. With pin + # one in the lower left corner we will place pins from left to + # right until half the pins are placed. At the halfway point we + # will shift to the top row and place pins from right to left. + + while ($pin_num <= $f{circuits}) { + $Pcb -> element_add_pin(x => $x, y => $y, + thickness => $f{pad_thickness}, + drill_hole => $f{drill_hole}, + mask => 10, + clearance => 10, + pin_number => $pin_num); + + # Header connectors usually have pins numbered from left to + # right with odd numbers on the bottom and even numbers on the + # top. Since this example program could be used for connectors + # other than headers three pin-numbering options are provided. + + # header - two rows of pins. numbers increase from left to right. + # odd numbered pins on the bottom, even on the top. + + # dip - two rows of pins. starting in the lower left corner + # numbers increase left to right along the bottom row + # and right to left along the top row. + + # power - two rows of pins. numbers increase from left to right + # starting on the bottom row and then continue left to right + # along the top row. + + if ($f{pin_numbering_scheme} eq 'header') { + $y *= -1; + $x += $f{pin_spacing} if $y > 0; + } elsif ($f{pin_numbering_scheme} eq 'dip') { + if ($pin_num == $pins_per_row) { + $y -= $f{row_spacing}; + } else { + $x += $pin_num > $pins_per_row + ? -$f{pin_spacing} + : $f{pin_spacing}; + } + } elsif ($f{pin_numbering_scheme} eq 'power') { + if ($pin_num == $pins_per_row) { + $y -= $f{row_spacing}; + $x = $x0; + } else { + $x += $f{pin_spacing} + } + } else { + die "unknown pin numbering scheme |$f{pin_numbering_scheme}|"; + } + $pin_num++; + } + + $Pcb -> element_add_rectangle(width => $f{body_width}, + length=> $f{body_length}, + x => 0, + y => 0); + + + $Pcb -> element_set_text_xy(x => -$f{body_length}/2, + y => -$f{body_width}/2 - 20); + + + $Pcb -> element_output(); +} + +sub package_name ($$) { + my ($circuits, $rows) = @_; + sprintf("CON_HDR-254P-%iC-%iR-%iN__Molex_8624-Series", + $circuits/$rows, + $rows, + $circuits); +} + +__DATA__ + +pad_thickness = 66 +drill_hole = 46 +pin_numbering_scheme = header +body_width = 200 +pin_spacing = 100 +row_spacing = 100 +pin_diameter = 35 +pin_rows = 2 + +# circuits | body_length | pin_row_length + +4 | 190 | 100 +6 | 290 | 200 +8 | 390 | 300 +10 | 490 | 400 +12 | 590 | 500 +14 | 690 | 600 +16 | 790 | 700 +18 | 890 | 800 +20 | 990 | 900 +22 | 1090 | 1000 +24 | 1190| 1100 +26 | 1290| 1200 +28 | 1390| 1300 + +30 | 1490 | 1400 +32 | 1590 | 1500 +34 | 1690 | 1600 +36 | 1790 | 1700 +38 | 1890 | 1800 +40 | 1990 | 1900 +42 | 2090 | 2000 +44 | 2190 | 2100 +46 | 2290 | 2200 +48 | 2390 | 2300 +50 | 2490 | 2400 +52 | 2590 | 2500 +54 | 2690 | 2600 + +56 | 2790 | 2700 +58 | 2890 | 2800 +60 | 2990 | 2900 +62 | 3090 | 3000 +64 | 3190 | 3100 +66 | 3290 | 3200 +68 | 3390 | 3300 +70 | 3490 | 3400 +72 | 3590 | 3500 +74 | 3690 | 3600 +76 | 3790 | 3700 +78 | 3890 | 3800 +80 | 3990 | 3900 + + diff --git a/sch-pcb/fp/pcb-example-res b/sch-pcb/fp/pcb-example-res new file mode 100755 index 0000000..88f5faf --- /dev/null +++ b/sch-pcb/fp/pcb-example-res @@ -0,0 +1,60 @@ +#!/usr/bin/perl + +# Copyright (C) 2005 John C. Luciani Jr. + +# This program may be distributed or modified under the terms of +# version 0.2 of the No-Fee Software License published by +# John C. Luciani Jr. + +# Creates a 1/4 Watt resistor + +use strict; +use warnings; + +use Pcb_8; + +my $Pcb = Pcb_8 -> new(debug => 1); + +$Pcb -> element_begin(description => 'resistor', + output_file => '025W', + dim => 'mils'); + +# the resistor centroid is at (0,0) and the pins are placed 400 mils +# apart + +my $Body_width = 70; # y direction +my $Body_length = 240; # x direction +my @Pins = (-200, 0, 200, 0); # x,y pin centers +my $Pin_num = 1; + +while (@Pins) { + my ($x, $y) = splice @Pins, 0, 2; + $Pcb -> element_add_pin(x => $x, y => $y, + thickness => 55, + drill_hole => 35, + mask => 10, + clearance => 10, + pin_number => $Pin_num++); +} + +$Pcb -> element_add_rectangle(width => $Body_width, + length=> $Body_length, + thickness => 10, + x => 0, + y => 0); + +foreach my $sign (-1, 1) { + $Pcb -> element_add_line(x1 => $sign * $Body_length / 2, + y1 => 0, + x2 => $sign * ($Body_length / 2 + 30), + y2 => 0, + thickness => 10); +} + + +$Pcb -> element_set_text_xy(x => -$Body_length/2, + y => -$Body_width/2 - 20); + + +$Pcb -> element_output(); + diff --git a/sch-pcb/fp/pcb-example-smd b/sch-pcb/fp/pcb-example-smd new file mode 100755 index 0000000..ff3da13 --- /dev/null +++ b/sch-pcb/fp/pcb-example-smd @@ -0,0 +1,100 @@ +#!/usr/bin/perl + +# Copyright (C) 2005 John C. Luciani Jr. + +# This program may be distributed or modified under the terms of +# version 0.2 of the No-Fee Software License published by +# John C. Luciani Jr. + +# Creates the PCB elements specified in the DATA section. The +# footprints are for the SMD packages 0402, 0603, 0805, 1206, 1210, +# 2010, 2512, 0402, 0504, 0603, 0805, 1206, 1210, 1812, 1825 + +use strict; +use warnings; + +use Pcb_9; + +my $Pcb = Pcb_9 -> new(debug => 1); + +my @Fields = qw(land_pattern_length land_row_distance + land_width land_length + land_row_centers grid); + +while () { + s/\#.*//; # Remove comments + s/^\s*//; # Remove leading spaces + s/\s*$//; # Revove trailing spaces + next unless length; # Skip empty lines + my ($type, @values) = split /\s*\|\s*/; + + # hash for each footprint + + my %f = map { $_ => shift(@values) } @Fields; + + $Pcb -> element_begin(description => 'SMD', + output_file => "tmp/$type", + dim => 'mm'); + + my $x = -$f{land_row_centers} / 2; + foreach my $pin_num (1..2) { + $Pcb -> element_add_pad_rectangle(width => $f{land_width}, + length=> $f{land_length}, + x => $x, + y => 0, + name => 'input', + mask => 0.254, + clearance => 0.254, + pin_number => $pin_num); + $x += $f{land_row_centers}; + } + + # Draw a silkscreen rectangle around the component. A silkscreen + # specification that all PCB vendors should be able to meet is + # 10mil line width and 10mil spacing. The silkscreen line width + # defaults to 10mils. To achieve the proper spacing we add + # 30mils (0.762mm) to the maximum extents of the copper pads + # (10mils on either side of the copper and 2*5 mils for the + # silkscreen line). + + my $length = $f{land_pattern_length} + 0.762; + my $width = $f{land_width} + 0.762; + + $Pcb -> element_add_rectangle(width => $width, + length=> $length, + x => 0, + y => 0); + + # Place the refdes slightly (0.5mm) above the upper left corner of + # the outline rectangle. + + $Pcb -> element_set_text_xy(x => -$length/2, + y => -$width/2 - 0.5); + + $Pcb -> element_output(); + +} + + +__DATA__ + +# type package name +# Z overall length of land pattern +# G distance between land rows +# X land width +# Y land length +# C center-to-center spacing between land rows +# Grid number of 0.5mm by 0.5mm elements + +# type Z G X Y C Grid + + 0402 | 2.20 | 0.40 | 0.70 | 0.90 | 1.30 | 2x6 + 0504 | 2.40 | 0.40 | 1.30 | 1.00 | 1.40 | 4x6 + 0603 | 2.80 | 0.60 | 1.00 | 1.10 | 1.70 | 4x6 + 0805 | 3.20 | 0.60 | 1.50 | 1.30 | 1.90 | 4x8 + 1206 | 4.40 | 1.20 | 1.80 | 1.60 | 2.80 | 4x10 + 1210 | 4.40 | 1.20 | 2.70 | 1.60 | 2.80 | 6x10 + 1812 | 5.80 | 2.00 | 3.40 | 1.90 | 3.90 | 8x12 + 1825 | 5.80 | 2.00 | 6.80 | 1.90 | 3.90 | 14x12 + 2010 | 6.20 | 2.60 | 2.70 | 1.80 | 4.40 | 6x14 + 2512 | 7.40 | 3.80 | 3.20 | 1.80 | 5.60 | 8x16 diff --git a/sch-pcb/fp/pcb-example-tqfn b/sch-pcb/fp/pcb-example-tqfn new file mode 100755 index 0000000..33fd9b2 --- /dev/null +++ b/sch-pcb/fp/pcb-example-tqfn @@ -0,0 +1,260 @@ +#!/usr/bin/perl + +# Copyright (C) 2007 John C. Luciani Jr. + +# This program may be distributed or modified under the terms of +# version 0.2 of the No-Fee Software License published by +# John C. Luciani Jr. + +# Creates Maxim TQFN style packages. + +# Data is from the Maxim 21-0140 Rev G and Maxim 21-10159 Rev A +# specifications. + +# The TQFN (thin quad flat no-lead) packages have solder terminations +# on four sides and a thermal pad in the center. The two denser +# packages (T3255-2 and T4055-1) require smaller pads on the corner +# terminations. + +use strict; +use warnings; +use Carp; + +use Pcb_9; # routines to create PCB elements (packages) + +my $Pcb = Pcb_9 -> new(debug => 0); + +# The specifications to generate these symbols is in the __DATA__ +# section of this file. Each line can be either blank, contain a global +# definition or contain a package data record. + +# Global definitions are saved in @Def. +# The field names for the package data record are in @Fields. + +my @Def; # Global definitions saved as key-value pairs. +my @Fields = qw(package_code + pin_count + pad_spacing + pad_width + pad_length + corner_pad_length + thermal_pad_width + thermal_pad_length); + +# Read the __DATA__ section and output a PCB footprint everytime a +# package data record is read. + +while () { + last if /^__END__$/; + s/\#.*//; # Remove comments + s/^\s*//; # Remove leading spaces + s/\s*$//; # Revove trailing spaces + next unless length; # Skip empty lines + + # Lines that contain an '=' are global definitions. The key (lhs) + # and value (rhs) are pushed onto @Def. + + push(@Def, $1, $2), next if /(\S+)\s*=\s*(\S.*)/; + + # A line with non-zero length that is not a global definition is a + # package data record. We split the package record and create a + # hash %p that contains key-value pairs for all of the global + # definitions and the current record. + + my @values = split /\s*\|\s*/; + my %p = ( @Def, + map { $_ => shift(@values) } @Fields); + + # Create a simple id using the package name, package code and pin + # count and then start a new element. + + $p{id} = join('-', map { $p{$_} } qw(package_name package_code pin_count)); + $Pcb -> element_begin(description => $p{id}, + output_file => "tmp/$p{id}", + dim => 'mm'); + print "$p{id}\n"; + + # Create a few convenient specifications from data in the package + # data record hash. The convenetions for these packages is part + # centroid at (0,0) and pin one is in the lower left corner. + + # Corner pads on some of the parts are shorter. This condition is + # handled by creating a new pad length and some pad center + # offsets. + + $p{num_pads_per_side} = $p{pin_count} / 4; # leads on four sides + $p{corner_pad_length} = $p{pad_length} if $p{corner_pad_length} eq ''; + + my $row_center = ($p{body_width_max} - $p{pad_length}) / 2; + my $row_end = ($p{num_pads_per_side} - 1) * $p{pad_spacing} / 2; + my $corner_offset = ($p{pad_length} - $p{corner_pad_length}) / 2; + + # @xy contains the staring locations for a row of pads. + # @inc contains increment values for x and y and offsets for the + # the corner pads. for each row of pads either x or y is incremented. + + my @xy = (x => -$row_center, y => -$row_end, + x => -$row_end, y => $row_center, + x => $row_center, y => $row_end, + x => $row_end, y => -$row_center); + + my @inc= (yinc => $p{pad_spacing}, xoffset => -$corner_offset, + xinc => $p{pad_spacing}, yoffset => $corner_offset, + yinc => -$p{pad_spacing}, xoffset => $corner_offset, + xinc => -$p{pad_spacing}, yoffset => -$corner_offset); + + # create the rows of pads + + &set_pin_num(1); + + while (@xy) { + my %xy = (splice(@inc, 0, 4), + map { $_ => $p{$_} } qw(pad_spacing pad_width pad_length)); + + &draw_row_of_pads(splice(@xy, 0, 4), + %xy, + pad_length => $p{corner_pad_length}, + num_pads => 1); + + # no offsets for pads that aren't on the corners + + &draw_row_of_pads(%xy, + xoffset => 0, + yoffset => 0, + num_pads => $p{num_pads_per_side} - 2); + + &draw_row_of_pads(%xy, + pad_length => $p{corner_pad_length}, + num_pads => 1); + } + + # Add the thermal pad + + $Pcb -> element_add_pad_rectangle(x => 0, + y => 0, + length => $p{thermal_pad_length}, + width => $p{thermal_pad_width}, + name => '', + pin_number => $p{pin_count} + 1); + + # add the pin one dot + + my $dot_pos = $row_center + 0.254; #$p{pad_length} / 2; + + $Pcb -> element_add_arc(x => -$dot_pos, + y => -$dot_pos, + width => $p{pad_width} / 2, + height=> $p{pad_width} / 2, + start_angle => 0, + delta_angle => 360, + thickness => 0.254); # 10 mil lines + + # draw a silksreen rectangle around the package body. + + $Pcb -> element_add_rectangle(x => 0, + y => 0, + width => $p{body_width_max} + 1, + length=> $p{body_length_max} + 1); + + # Set the position of the reference designator to the upper left corner + + $Pcb -> element_set_text_xy(x => -$p{body_length_max} / 2 - 1, + y => -$p{body_width_max} / 2 - 1); + + # Set the centroid mark and output the element + + $Pcb -> element_output; + +} + +# $v{x} current x location +# $v{y} current y location +# $v{pin_num} current pin number + +my %v; # values for draw_row_of_pads + +sub set_pin_num ($) { + $v{pin_num} = shift; +} + +sub draw_row_of_pads { + my %p = (xoffset => 0, + yoffset => 0, + @_); + + foreach (qw(pin_num x y)) { + $v{$_} = $p{$_} if defined $p{$_}; + } + + # swap pad length and width for horizontal rows + + ($p{pad_width}, $p{pad_length}) = ($p{pad_length}, $p{pad_width}) + if defined $p{xinc}; + + foreach (1..$p{num_pads}) { + $Pcb -> element_add_pad_rectangle(x => $v{x} + $p{xoffset}, + y => $v{y} + $p{yoffset}, + width => $p{pad_width}, + length => $p{pad_length}, + name => '', + pin_number => $v{pin_num}++); + $v{x} += $p{xinc} if defined $p{xinc}; + $v{y} += $p{yinc} if defined $p{yinc}; + } +} + + + + +1; + + + +__DATA__ +body_width_min = 4.9 # E +body_width = 5.0 # E +body_width_max = 5.1 # E +body_length_min = 4.9 # D +body_length = 5.0 # D +body_length_max = 5.1 # D + +component_type = ic +package_name = TQFN-Maxim-5x5 + +# Final pad_length = pad_lenth + body_width_max - body_width_min + +# T1655-1 e (nom) b, L, E2, D2 (max) +# T2055-2 e (nom) b (max) L, E2, D2 (nom) +# T2055-5 e (nom) b (max) L (min) E2, D2 (nom) + +# T2855-1 e (nom) b (max) L (min) E2, D2 (nom) +# T2855-2 e (nom) b (max) L (min) E2, D2 (max) + +# T3255-2 e (nom) b (max) L (max) E2, D2 (max) +# T4055-1 e (nom) b (min) L (nom) E2, D2 (min) + + +# e b L L1 E2 D2 + T1655-1 | 16 | 0.8 | 0.35 | 0.5 | | 3.2 | 3.2 + T2055-2 | 20 | 0.65 | 0.35 | 0.55 | | 3.10 | 3.10 + T2055-5 | 20 | 0.65 | 0.35 | 0.45 | | 3.25 | 3.25 + + T2855-1 | 28 | 0.50 | 0.30 | 0.45 | | 3.25 | 3.25 + T2855-2 | 28 | 0.50 | 0.30 | 0.45 | | 2.8 | 2.8 + + + T3255-2 | 32 | 0.50 | 0.30 | 0.5 | 0.25 | 3.2 | 3.2 + T4055-1 | 40 | 0.40 | 0.2 | 0.5 | 0.25 | 3.2 | 3.2 + +# Style (adapted from the Perl Cookbook, First Edition, Recipe 12.4) + +# 1. Names of functions and local variables are all lowercase. +# 2. The program's persistent variables (either file lexicals +# or package globals) are capitalized. +# 3. Identifiers with multiple words have each of these +# separated by an underscore to make it easier to read. +# 4. Constants are all uppercase. +# 5. If the arrow operator (->) is followed by either a +# method name or a variable containing a method name then +# there is a space before and after the operator. + diff --git a/sch-pcb/fp/ti_rge.pl b/sch-pcb/fp/ti_rge.pl new file mode 100755 index 0000000..321d4db --- /dev/null +++ b/sch-pcb/fp/ti_rge.pl @@ -0,0 +1,262 @@ +#!/usr/bin/perl + +# Copyright (C) 2007 John C. Luciani Jr. + +# This program may be distributed or modified under the terms of +# version 0.2 of the No-Fee Software License published by +# John C. Luciani Jr. + +# Creates Maxim TQFN style packages. + +# Data is from the Maxim 21-0140 Rev G and Maxim 21-10159 Rev A +# specifications. + +# The TQFN (thin quad flat no-lead) packages have solder terminations +# on four sides and a thermal pad in the center. The two denser +# packages (T3255-2 and T4055-1) require smaller pads on the corner +# terminations. + +use strict; +use warnings; +use Carp; + +use Pcb_9; # routines to create PCB elements (packages) + +my $Pcb = Pcb_9 -> new(debug => 0); + +# The specifications to generate these symbols is in the __DATA__ +# section of this file. Each line can be either blank, contain a global +# definition or contain a package data record. + +# Global definitions are saved in @Def. +# The field names for the package data record are in @Fields. + +my @Def; # Global definitions saved as key-value pairs. +my @Fields = qw(package_code + pin_count + pad_spacing + pad_width + pad_length + corner_pad_length + thermal_pad_width + thermal_pad_length); + +# Read the __DATA__ section and output a PCB footprint everytime a +# package data record is read. + +while () { + last if /^__END__$/; + s/\#.*//; # Remove comments + s/^\s*//; # Remove leading spaces + s/\s*$//; # Revove trailing spaces + next unless length; # Skip empty lines + + # Lines that contain an '=' are global definitions. The key (lhs) + # and value (rhs) are pushed onto @Def. + + push(@Def, $1, $2), next if /(\S+)\s*=\s*(\S.*)/; + + # A line with non-zero length that is not a global definition is a + # package data record. We split the package record and create a + # hash %p that contains key-value pairs for all of the global + # definitions and the current record. + + my @values = split /\s*\|\s*/; + my %p = ( @Def, + map { $_ => shift(@values) } @Fields); + + # Create a simple id using the package name, package code and pin + # count and then start a new element. + + $p{id} = join('-', map { $p{$_} } qw(package_name package_code pin_count)); + $Pcb -> element_begin(description => $p{id}, + output_file => "tmp/$p{id}", + dim => 'mm'); + print "$p{id}\n"; + + # Create a few convenient specifications from data in the package + # data record hash. The convenetions for these packages is part + # centroid at (0,0) and pin one is in the lower left corner. + + # Corner pads on some of the parts are shorter. This condition is + # handled by creating a new pad length and some pad center + # offsets. + + $p{num_pads_per_side} = $p{pin_count} / 4; # leads on four sides + $p{corner_pad_length} = $p{pad_length} if $p{corner_pad_length} eq ''; + + #my $row_center = ($p{body_width_max} - $p{pad_length}) / 2; + my $row_center = ($p{pad_inner_width} + $p{pad_length}) / 2; + my $row_end = ($p{num_pads_per_side} - 1) * $p{pad_spacing} / 2; + my $corner_offset = ($p{pad_length} - $p{corner_pad_length}) / 2; + + # @xy contains the staring locations for a row of pads. + # @inc contains increment values for x and y and offsets for the + # the corner pads. for each row of pads either x or y is incremented. + + my @xy = (x => -$row_center, y => -$row_end, + x => -$row_end, y => $row_center, + x => $row_center, y => $row_end, + x => $row_end, y => -$row_center); + + my @inc= (yinc => $p{pad_spacing}, xoffset => -$corner_offset, + xinc => $p{pad_spacing}, yoffset => $corner_offset, + yinc => -$p{pad_spacing}, xoffset => $corner_offset, + xinc => -$p{pad_spacing}, yoffset => -$corner_offset); + + # create the rows of pads + + &set_pin_num(1); + + while (@xy) { + my %xy = (splice(@inc, 0, 4), + map { $_ => $p{$_} } qw(pad_spacing pad_width pad_length)); + + &draw_row_of_pads(splice(@xy, 0, 4), + %xy, + pad_length => $p{corner_pad_length}, + num_pads => 1); + + # no offsets for pads that aren't on the corners + + &draw_row_of_pads(%xy, + xoffset => 0, + yoffset => 0, + num_pads => $p{num_pads_per_side} - 2); + + &draw_row_of_pads(%xy, + pad_length => $p{corner_pad_length}, + num_pads => 1); + } + + # Add the thermal pad + + $Pcb -> element_add_pad_rectangle(x => 0, + y => 0, + length => $p{thermal_pad_length}, + width => $p{thermal_pad_width}, + name => '', + pin_number => $p{pin_count} + 1); + + # add the pin one dot + + #my $dot_pos = $row_center + 0.254; #$p{pad_length} / 2; + my $dot_pos = $p{body_width_max}/2 + 0.254; #$p{pad_length} / 2; + + $Pcb -> element_add_arc(x => -$dot_pos, + y => -$dot_pos, + width => $p{pad_width} / 2, + height=> $p{pad_width} / 2, + start_angle => 0, + delta_angle => 360, + thickness => 0.254); # 10 mil lines + + # draw a silksreen rectangle around the package body. + + $Pcb -> element_add_rectangle(x => 0, + y => 0, + width => $p{body_width_max} + 1, + length=> $p{body_length_max} + 1); + + # Set the position of the reference designator to the upper left corner + + $Pcb -> element_set_text_xy(x => -$p{body_length_max} / 2 - 1, + y => -$p{body_width_max} / 2 - 1); + + # Set the centroid mark and output the element + + $Pcb -> element_output; + +} + +# $v{x} current x location +# $v{y} current y location +# $v{pin_num} current pin number + +my %v; # values for draw_row_of_pads + +sub set_pin_num ($) { + $v{pin_num} = shift; +} + +sub draw_row_of_pads { + my %p = (xoffset => 0, + yoffset => 0, + @_); + + foreach (qw(pin_num x y)) { + $v{$_} = $p{$_} if defined $p{$_}; + } + + # swap pad length and width for horizontal rows + + ($p{pad_width}, $p{pad_length}) = ($p{pad_length}, $p{pad_width}) + if defined $p{xinc}; + + foreach (1..$p{num_pads}) { + $Pcb -> element_add_pad_rectangle(x => $v{x} + $p{xoffset}, + y => $v{y} + $p{yoffset}, + width => $p{pad_width}, + length => $p{pad_length}, + name => '', + pin_number => $v{pin_num}++); + $v{x} += $p{xinc} if defined $p{xinc}; + $v{y} += $p{yinc} if defined $p{yinc}; + } +} + + + + +1; + + + +__DATA__ +body_width_min = 3.85 # E +body_width = 4.0 # E +body_width_max = 4.15 # E +body_length_min = 3.85 # D +body_length = 4.0 # D +body_length_max = 4.15 # D + +pad_inner_width = 3.1 + +component_type = ic +package_name = VQFN-TI + +# Final pad_length = pad_lenth + body_width_max - body_width_min + +# T1655-1 e (nom) b, L, E2, D2 (max) +# T2055-2 e (nom) b (max) L, E2, D2 (nom) +# T2055-5 e (nom) b (max) L (min) E2, D2 (nom) + +# T2855-1 e (nom) b (max) L (min) E2, D2 (nom) +# T2855-2 e (nom) b (max) L (min) E2, D2 (max) + +# T3255-2 e (nom) b (max) L (max) E2, D2 (max) +# T4055-1 e (nom) b (min) L (nom) E2, D2 (min) + + +# e b L L1 E2 D2 + RGE | 24 | 0.50 | 0.28 | 0.85 | | 2.45 | 2.45 + +#T2855-1 | 28 | 0.50 | 0.30 | 0.45 | | 3.25 | 3.25 +#T2855-2 | 28 | 0.50 | 0.30 | 0.45 | | 2.8 | 2.8 + + +#T3255-2 | 32 | 0.50 | 0.30 | 0.5 | 0.25 | 3.2 | 3.2 +#T4055-1 | 40 | 0.40 | 0.2 | 0.5 | 0.25 | 3.2 | 3.2 + +# Style (adapted from the Perl Cookbook, First Edition, Recipe 12.4) + +# 1. Names of functions and local variables are all lowercase. +# 2. The program's persistent variables (either file lexicals +# or package globals) are capitalized. +# 3. Identifiers with multiple words have each of these +# separated by an underscore to make it easier to read. +# 4. Constants are all uppercase. +# 5. If the arrow operator (->) is followed by either a +# method name or a variable containing a method name then +# there is a space before and after the operator. + -- 2.25.1