1
<HTML><HEAD><TITLE>Using Electric 9-8: Pad Frame Generation</TITLE></HEAD>
2
<BODY BGCOLOR="#FFFFFF">
3
<!-- PAGE BREAK --><A NAME="chap09-08"></A>
5
<BR><CENTER><FONT SIZE=6><B>Chapter 9: TOOLS</B></FONT></CENTER><BR>
6
<CENTER><TABLE WIDTH="90%" BORDER=0><TR>
7
<TD><CENTER><A HREF="chap09-07.html#chap09-07"><IMG SRC="../images/iconplug.png" ALT="plug" BORDER=0></A></CENTER></TD>
8
<TD><CENTER><H2>9-8: Pad Frame Generation</H2></CENTER></TD>
9
<TD><CENTER><A HREF="chap09-09.html#chap09-09"><IMG SRC="../images/iconplug.png" ALT="plug" BORDER=0></A></CENTER></TD></TR></TABLE></CENTER>
12
The Pad Frame generator reads a disk file and places a ring of pads around your chip.
13
The pads are contained in a separate library, and are copied into the current library to construct the pad frame.
15
The format of the pad frame disk file is as follows:
18
<TR><TD><CODE>celllibrary LIBRARYFILE [copy]</CODE></TD><TD>; Identifies the file with the pads</TD></TR>
19
<TR><TD><CODE>facet PADFRAMEFACET</CODE></TD><TD>; Creates a facet to hold the pad frame</TD></TR>
20
<TR><TD><CODE>core COREFACET</CODE></TD><TD>; Places your circuit in the center of the pad frame</TD></TR>
21
<TR><TD><CODE>align PADFACET INPUTPORT OUTPUTPORT</CODE></TD><TD>; Defines input and output ports on pads</TD></TR>
22
<TR><TD><CODE>place PADFACET [GAP] [PORTASSOCIATION]</CODE></TD><TD>; Places a pad into the pad frame</TD></TR>
23
<TR><TD><CODE>rotate DIRECTION</CODE></TD><TD>; Turns the corner in pad placement</TD></TR>
26
The file must have exactly one <CODE>celllibrary</CODE> and <CODE>facet</CODE> statement,
27
as they identify the pad library and the pad frame facet.
28
If the <CODE>celllibrary</CODE> line ends with the keyword <CODE>copy</CODE>,
29
then facets from that library are copied into the library with the pad ring (by default, they are merely instantiated,
30
creating a cross-library reference to the pads library).
31
The file may have only one <CODE>core</CODE> statement to place your top-level circuit inside of the pad frame.
32
If there is no <CODE>core</CODE> statement,
33
then pads are placed without any circuit in the middle.
35
The <CODE>align</CODE> statement is used to identify connection points on the pads that will be used for placement.
36
Each pad should have an input and an output port that define the edges of the pad.
37
These ports are typically the on the power or ground rails that run through the pad.
38
When placing pads, the output port of one pad is aligned with the input port of the next pad.
40
Each pad that is placed with a <CODE>place</CODE>
41
statement is aligned with the previous pad according to the alignment factor.
42
A <I>gap</I> can be given in the placement that spreads the two pads by the specified distance.
43
For example, the statement:
44
<CENTER><CODE>place padIn gap=100</CODE></CENTER>
45
requests that the "padIn" pad be placed so that its input port is 100 lambda units away from the previous pad's output port.
47
If a core facet has been given, you can also indicate wiring between the pads and the core ports.
48
This is done by having one or more <I>port associations</I> in the <CODE>place</CODE> statements.
49
The format of a port association is simply <CODE>PADPORT = COREPORT</CODE>.
50
For example, the statement:
51
<CENTER><CODE>place padOut tap=y</CODE></CENTER>
52
indicates that the "tap" port on the placed pad will connect to the "y" port on the core facet.
54
The port association can also create an export on the pad.
56
<CENTER><CODE>place padOut export tap=o7</CODE></CENTER>
57
creates an export on the pad from its "tap" port and names it "o7".
59
The <CODE>rotate</CODE> statement rotates subsequent pads by the specified amount.
60
The statement has only two forms: <CODE>rotate c</CODE> to rotate clockwise,
61
and <CODE>rotate cc</CODE> to rotate counterclockwise.
63
Here is an example of a pad frame disk file, with the finished layout.
64
The array file is "pads4u.arr" (from the "Examples" folder) and it expects to find a facet called "tool-PadFrame"
65
(found in the "samples.txt" library,
66
which you can read with the <B>Readable Dump</B> subcommand of the <B>Import</B> command of the <B>File</B> menu).
69
<TR><TD><CODE>; specify the library with the pads </CODE></TD> <TD><CODE>; place the top edge of pads</CODE></TD></TR>
70
<TR><TD><CODE>celllibrary pads4u.txt</CODE></TD> <TD><CODE>place PAD_corner{lay}</CODE></TD></TR>
71
<TR><TD></TD> <TD><CODE>place PAD_gnd{lay} gnd_in=gnd</CODE></TD></TR>
72
<TR><TD><CODE>; create a facet called "padframe"</CODE></TD> <TD><CODE>place PAD_vdd{lay} m1m2=vdd</CODE></TD></TR>
73
<TR><TD><CODE>facet padframe</CODE></TD> <TD></TD></TR>
74
<TR><TD></TD> <TD><CODE>; place the right edge of pads</CODE></TD></TR>
75
<TR><TD><CODE>; place this facet as the "core"</CODE></TD> <TD><CODE>rotate c</CODE></TD></TR>
76
<TR><TD><CODE>core tool-PadFrame</CODE></TD> <TD><CODE>place PAD_corner{lay}</CODE></TD></TR>
77
<TR><TD></TD> <TD><CODE>place PAD_in{lay} out=pulse</CODE></TD></TR>
78
<TR><TD><CODE>; set the alignment of the pads</CODE></TD> <TD><CODE>place PAD_spacer{lay}</CODE></TD></TR>
79
<TR><TD><CODE>; (with input and output export)</CODE></TD> <TD></TD></TR>
80
<TR><TD><CODE>align PAD_in{lay} dvddL dvddR</CODE></TD> <TD><CODE>; place the bottom edge of pads</CODE></TD></TR>
81
<TR><TD><CODE>align PAD_out{lay} dvddL dvddR</CODE></TD> <TD><CODE>rotate c</CODE></TD></TR>
82
<TR><TD><CODE>align PAD_vdd{lay} dvddL dvddR</CODE></TD> <TD><CODE>place PAD_corner{lay}</CODE></TD></TR>
83
<TR><TD><CODE>align PAD_gnd{lay} dvddL dvddR</CODE></TD> <TD><CODE>place PAD_out{lay} in=out1</CODE></TD></TR>
84
<TR><TD><CODE>align PAD_corner{lay} dvddL dvddR</CODE></TD> <TD><CODE>place PAD_out{lay} in=out2</CODE></TD></TR>
85
<TR><TD><CODE>align PAD_spacer{lay} dvddL dvddR</CODE></TD> <TD></TD></TR>
86
<TR><TD></TD> <TD><CODE>; place the left edge of pads</CODE></TD></TR>
87
<TR><TD></TD> <TD><CODE>rotate c</CODE></TD></TR>
88
<TR><TD></TD> <TD><CODE>place PAD_corner{lay}</CODE></TD></TR>
89
<TR><TD></TD> <TD><CODE>place PAD_in{lay} out=in1</CODE></TD></TR>
90
<TR><TD></TD> <TD><CODE>place PAD_in{lay} out=in2</CODE></TD></TR>
93
<CENTER><IMG SRC="../images/chap09-16.png" ALT="Figure 9.16" BORDER=0></CENTER>
95
This file places 8 pads in a ring (2 on each side) and also places corner "pads" for making bends.
96
The input pads connect to the 2 input ports "a1" and "a2".
97
The output pads connect to the 3 output ports "out1", "out2", and "out3"
98
The power and ground pads connect to the "vdd" and "gnd" ports.
100
Note that the generator places pad instances, but does not wire them to each other.
101
In order to create a uniform ring of power and ground between the pads,
102
you can use the Auto-router or the Mimic-router (see <A HREF="chap09-05.html#chap09-05">Section 9-5</A>).
105
Connections between pads and ports of the core facet use Unrouted arcs
106
(from the Generic technology, see <A HREF="chap07-09.html#chap07-09">Section 7-9</A>).
107
These arcs can be converted to real geometry with the river router.
108
To do this, you must select arcs on one side of the pad frame and use the <B>River-Route</B>
109
subcommand of the <B>Routing</B> command of the <B>Tools</B> menu
110
(see <A HREF="chap09-05.html#chap09-05">Section 9-5</A> for more on routing).
111
Because the river router always pushes geometry to the left and bottom,
112
this will work for the left and bottom sides only.
113
To route the top and right sides, you must rotate the entire circuit
114
(select everything and rotate 180 degrees).
115
After routing the top and right (now left and bottom)
116
you can rotate the circuit back to its original position.
117
The finished layout is shown here, fully instantiated.
118
</TD><TD><IMG SRC="../images/chap09-17.png" ALT="Figure 9.17" BORDER=0></TD></TR></TABLE>
121
<CENTER><TABLE BORDER=0><TR>
122
<TD><A HREF="chap09-07.html#chap09-07"><IMG SRC="../images/iconbackarrow.png" ALT="Prev" BORDER=0></A></TD>
123
<TD><A HREF="chap09-07.html#chap09-07">Previous</A></TD>
124
<TD> </TD>
125
<TD><A HREF="../index.html"><IMG SRC="../images/iconcontarrow.png" ALT="Contents" BORDER=0></A></TD>
126
<TD><A HREF="../index.html">Table of Contents</A></TD>
127
<TD> </TD>
128
<TD><A HREF="chap09-09.html#chap09-09">Next</A></TD>
129
<TD><A HREF="chap09-09.html#chap09-09"><IMG SRC="../images/iconforearrow.png" ALT="Next" BORDER=0></A></TD>
130
</TR></TABLE></CENTER>