Full-Custom Design Flow in LaRC (Cadence)
Full-Custom Design Flow in LaRC (Cadence)
Full-Custom Design Flow in LaRC (Cadence)
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Full</strong>-<strong>Custom</strong> <strong>Design</strong> <strong>Flow</strong> <strong>in</strong><br />
<strong>LaRC</strong> (<strong>Cadence</strong>)<br />
M.J. Hsiao 08/28/2002
Outl<strong>in</strong>es<br />
Related files<br />
How to startup<br />
Create a new cell<br />
Recommended setup<br />
Start draw<strong>in</strong>g<br />
Some tricks<br />
Instance a cell (Pcell)<br />
Contacts, p<strong>in</strong>s, lables<br />
On-l<strong>in</strong>e check<strong>in</strong>g<br />
2
Outl<strong>in</strong>es<br />
Off-l<strong>in</strong>e check<strong>in</strong>g<br />
Command file<br />
Stream out<br />
Schematic file<br />
Execution<br />
Outputs<br />
Make a Pcell<br />
Hspice simulation<br />
Some commands<br />
Execution and outputs<br />
Waveform viewer<br />
Resources<br />
3
Related files<br />
All files are placed at ~cic/Techfile/<br />
Includ<strong>in</strong>g<br />
Technology file (*.tf)<br />
Dracula cmdfiles (*.lvs *.drc *.lpe *.com)<br />
SPICE models (*.l)<br />
Pcell library (Macro cells for layout).<br />
I/O Pads<br />
Documents<br />
display.drf (rules for display<strong>in</strong>g layers)<br />
diva*.rul (For on-l<strong>in</strong>e check<strong>in</strong>g)<br />
4
Related files<br />
Prefix all directories with ~cic/Techfile/<br />
0.35um <strong>in</strong> directory tsmc035/<br />
0.25um <strong>in</strong> directory tsmc025/<br />
TF, display.drf, diva*.rul: techfile/<br />
Dracula cmdfiles: cmdfiles/<br />
SPICE model: models/<br />
Pcell library: 0X5pcell/<br />
Documents: doc/<br />
5
Related files<br />
0.18um <strong>in</strong> directory tsmc018/<br />
For Mixed-signal purpose<br />
MixedSignal/<br />
For RF purpose<br />
RF/<br />
Then all directories are the same as previous.<br />
6
How to startup<br />
Create a startup directory and copy the<br />
display.drf to this directory (differs by<br />
technology).<br />
Start “icfb &” then File New Library<br />
Fill <strong>in</strong> the library name and<br />
technology file<br />
7
How to startup<br />
Copy *.rul to the diretory<br />
startup_directory/library_name for on-l<strong>in</strong>e<br />
check<strong>in</strong>g<br />
Add Pcell library (very powerful)<br />
Tools Library Path Editor<br />
Choose a name for it and fill the path of Pcell<br />
library<br />
In Library Path Editor, Files Save<br />
Or you can directly modify the file<br />
startup_directory/cds.lib to add it<br />
8
Create a new cell<br />
File New Cellview<br />
Choose your preferred cell name and the<br />
library that it belongs to.<br />
For creat<strong>in</strong>g layout view<br />
View name = layout<br />
Tool = Virtuoso<br />
For creat<strong>in</strong>g schematic view<br />
View name = schematic<br />
Tool = Composer-Schematic<br />
Manage your designs by:<br />
Tools Library Manager<br />
9
Recommended setup<br />
In Virtuoso, Options Display<br />
Recommended setup<br />
is shown <strong>in</strong> figure,<br />
<strong>in</strong>clud<strong>in</strong>g:<br />
• Display Levels<br />
• Grid Controls<br />
• Snap Modes<br />
After the setup is<br />
done, remember save<br />
to file.<br />
10
Recommended setup<br />
In Virtuoso, Options Layout Editor<br />
Uncheck<br />
“Auto Set Reference Po<strong>in</strong>t”<br />
and “Gravity on”.<br />
Remember save to file.<br />
11
Start draw<strong>in</strong>g<br />
Upper row shows the position and current command<br />
Lower row shows the h<strong>in</strong>t and actions of buttons<br />
Pick desired layer at LSW<br />
12
Start draw<strong>in</strong>g<br />
All hotkeys all shown <strong>in</strong> the menus<br />
Frequently used hotkeys<br />
r<br />
Draw rectangle<br />
u<br />
Undo<br />
p<br />
Draw path<br />
U<br />
Redo<br />
o<br />
Create various contacts<br />
del<br />
Delete<br />
^p<br />
Create p<strong>in</strong><br />
s<br />
Strech one side of a polygon or path<br />
l(el)<br />
Create label<br />
m<br />
Move<br />
^z<br />
Zoom <strong>in</strong> by 2<br />
c<br />
Copy<br />
Z<br />
Zoom out by 2<br />
R<br />
Reshape a polygon<br />
^r<br />
Redraw<br />
i<br />
Create <strong>in</strong>stance (Pcell or other cells)<br />
f<br />
Fit draw <strong>in</strong> w<strong>in</strong>dow<br />
q<br />
Set properties<br />
k<br />
Create ruler<br />
Esc<br />
Cancel current command<br />
K<br />
Clean all ruler<br />
13
Some tricks<br />
Reshape<br />
or<br />
Make Cell<br />
Make selected geometries to a cell.<br />
When a cell is modified, all <strong>in</strong>stances of it will be<br />
updated.<br />
Also can flip selected geometries (when us<strong>in</strong>g “i” to<br />
<strong>in</strong>stance a cell)<br />
Flatten: don’t ma<strong>in</strong>ta<strong>in</strong> cell hierarchy, i.e., your<br />
layout is no longer dependent to other cells.<br />
14
Instance a cell (Pcell)<br />
Sideways: flip horizontal<br />
Upside down: flip vertical<br />
Fill<br />
parameters<br />
for Pcell here<br />
15
Contacts, p<strong>in</strong>s, labels<br />
Contacts: besides connection contacts<br />
Power contacts (M1_P <strong>in</strong> NWELL)<br />
Ground contacts (M1_N <strong>in</strong> p-substrate)<br />
must be placed with<strong>in</strong> a distance.<br />
Lots of Power/Ground contacts <strong>in</strong> series<br />
Guard r<strong>in</strong>g, shield the noise from<br />
NWELL/substrate<br />
P<strong>in</strong>s: for on-l<strong>in</strong>e check<strong>in</strong>g (Verify DRC)<br />
Must use METAL1 for power (vdd!) and<br />
ground (gnd!), therefore, it’s a part of layout.<br />
16
Contacts, p<strong>in</strong>s, labels<br />
Labels: for off-l<strong>in</strong>e check<strong>in</strong>g (Dracula)<br />
Must use text2 for power (vdd!) and ground<br />
(gnd!), it’s not a part of layout.<br />
Sometimes Dracula will miss the labels,<br />
<strong>in</strong>crease its size or change position then try<br />
aga<strong>in</strong>…<br />
17
On-l<strong>in</strong>e check<strong>in</strong>g<br />
In Virtuoso, Verify DRC<br />
Just press OK<br />
Usually only perform on-l<strong>in</strong>e <strong>Design</strong>-Rule-<br />
Check<strong>in</strong>g, it’s fast to get results.<br />
Erroneous area will be shown <strong>in</strong> bl<strong>in</strong>k<strong>in</strong>g<br />
“X”, and error messages are shown <strong>in</strong><br />
CIW w<strong>in</strong>dow (icfb w<strong>in</strong>dow)<br />
Use Verify Markers to get the message<br />
of an erroneous area<br />
18
Off-l<strong>in</strong>e check<strong>in</strong>g<br />
Dracula, for CONFIDENCE LEVEL!<br />
DRC, LVS, LPE<br />
Prepar<strong>in</strong>g<br />
Command files<br />
Stream data of your layout<br />
Schematic file (created by Composer)<br />
or SPICE netlist for LVS (layout vs. schematic)<br />
A TEMPERORY DIRECTORY, it generates<br />
LOTS of temporary files<br />
19
Command file<br />
Command file, copy one to the temporary<br />
directory and modify it.<br />
The follow<strong>in</strong>g l<strong>in</strong>es are located at the beg<strong>in</strong>n<strong>in</strong>g of<br />
the command file<br />
PRIMARY = _cell_name_ ;top module name<br />
INDISK = _cell_name_.gds ;gds file name<br />
OUTDISK = _cell_name_.out ;output file name<br />
PRINTFILE = _cell_name_ ;<br />
20
Stream out<br />
In CIW, File Export Stream<br />
Fill library name, cell<br />
name, and output file<br />
name<br />
The stream-out data is<br />
also known as GDSII<br />
format, which is what<br />
you submit to FAB<br />
21
Schematic file<br />
For Composer schematic file, <strong>in</strong> CIW,<br />
File Export CDL<br />
to get netlist file.<br />
For SPICE netlist, enclose your top<br />
module by a sub-circuit description (no<br />
stimulus required)<br />
At the temporary directory, type LOGLVS<br />
to generate files of LVS<br />
22
Schematic file<br />
After enter LOGLVS, the prompt is:<br />
(upper is the help message)<br />
ENTER COMMAND<br />
:<br />
Then type<br />
:htv<br />
:cir netlist_filename<br />
:con top_module_name<br />
:x<br />
For check<strong>in</strong>g R and C,<br />
*.BIPOLAR<br />
Must be <strong>in</strong>cluded <strong>in</strong> the netlist file<br />
23
Execution<br />
When all items are ready, type PDRACULA at<br />
the temporary directory, the prompt is<br />
*******************************************************************************<br />
*/N* DRACULA3 ( REV. 4.8 / SUN-4 S5R4 /GENDATE: 29-OCT/1999 )<br />
*** ( Copyright 1995, <strong>Cadence</strong> ) ***<br />
*/N* EXEC TIME =22:47:57 DATE =27-AUG-2002 HOSTNAME = bluebird<br />
*******************************************************************************<br />
:<br />
Then type<br />
:/g command_filename n<br />
:/f<br />
A jxrun.com will be generated, the run it at unix prompt:<br />
> jxrun.com >! xxx.log &<br />
For large layout, it may take a few hours, so you may<br />
logout after execute it at backgroud.<br />
24
Outputs<br />
DRC: *.sum<br />
LVS: *.lvs<br />
Hard to understand and debug<br />
In Virtuoso, Tools Dracula Interactive<br />
then select the LVS menu for more friendly<br />
<strong>in</strong>terface (sometime it will crash… )<br />
LPE: similar as LVS, but you must pass<br />
LVS first, a SPICE01.DAT will be generated.<br />
Trick: run LPE without LVS first, mark the<br />
l<strong>in</strong>e “LPECHK[SOREF]...” at the end of LPE<br />
command file<br />
25
Make a Pcell<br />
In Virtuoso, Tools Pcell<br />
Draw a basic resistor first<br />
In Pcell menu, Stretch Stretch <strong>in</strong> X<br />
draw the stretch l<strong>in</strong>e (<strong>in</strong> yellow), the double<br />
click the l<strong>in</strong>e shows the form<br />
26
Make a Pcell<br />
In Pcell menu, Repetition Repeat <strong>in</strong> Y<br />
select the shapes to be repeated, double click<br />
the shapes show the form<br />
Use the modify or redef<strong>in</strong>e submenus to modify<br />
it (arithmetic expression is allowed)<br />
27
Make a Pcell<br />
Parameters Summarize to show the status<br />
Compile To Pcell (function selects none)<br />
Done<br />
28
Make a Pcell<br />
Instance it<br />
29
Hspice simulation<br />
A demonstration file<br />
* First l<strong>in</strong>e must be empty or a comment l<strong>in</strong>e<br />
* ‘*’ is the symbol of comments<br />
.protect<br />
.lib './ls35_4_1.l' TT<br />
.unprotect<br />
.options post<br />
m1 1 6 3 3 nch w=100u l=0.6u<br />
m2 3 4 5 5 nch w=10u l=0.6u<br />
m3 6 3 5 5 nch w=10u l=0.6u<br />
r4 1 6 20k<br />
c1 6 0 100u<br />
r1 5 0 2k<br />
v1 4 0 5<br />
c2 3 0 0.001u<br />
v2 1 0 pulse(11 12 0 0 0 5n 10n)<br />
.tran 1n 10u<br />
.end<br />
30
Some commands<br />
.protect/.unprotect<br />
Don’t dump the contents that is enclosed by<br />
them, usually to avoid display<strong>in</strong>g the whole<br />
model file.<br />
.lib ‘spice_model_file’model<br />
Model TT is typical NMOS and PMOS<br />
Model SS is slow NMOS and PMOS<br />
Model FF is fast NMOS and PMOS<br />
These models can be found at the beg<strong>in</strong>n<strong>in</strong>g<br />
of the model file.<br />
31
Some commands<br />
.options post<br />
Set options, post means generate waveform<br />
files (for waveform viewer)<br />
.tran Time doma<strong>in</strong> analysis<br />
.ac Frequency doma<strong>in</strong> analysis<br />
.dc DC (steady state) analysis<br />
Monte Carlo (statistical) analysis<br />
Work with .tran .ac .dc<br />
Useful for evaluat<strong>in</strong>g process variation<br />
32
Some commands<br />
.measure<br />
Performs your desired measurement on<br />
waveform<br />
Reduce the usage of waveform viewer (slow)<br />
.<strong>in</strong>c ‘filename’<br />
Include another spice netlist file<br />
.subckt subcktname iolist .....<br />
Create sub-circuit, like module <strong>in</strong> verilog<br />
End with .ends<br />
33
Execution and outputs<br />
Execution: At unix prompt<br />
>hspice –l xxx.lis xxx.sp &<br />
Outputs:<br />
.lis<br />
.sw#<br />
.ms#<br />
.ac#<br />
.ma#<br />
.tr#<br />
.mt#<br />
.ic<br />
Output list<br />
DC analysis results<br />
DC measurement results<br />
AC analysis results<br />
AC measurement results<br />
Transient analysis results<br />
Transient measurement results<br />
Initial condition of nodal voltages<br />
34
Waveform viewer<br />
awaves:<br />
View the waveforms of analysis<br />
Slow if the waveform data is large (~100MB)<br />
Supports arithmetic operations on output<br />
variables (ex. voltage and current).<br />
Use middle button to drag the variable <strong>in</strong>to<br />
function menu<br />
Can change X-axis to other variables<br />
Update waveform without re-launch<strong>in</strong>g<br />
awaves: ^u<br />
35
Resources<br />
Lots of useful sub-circuits are located at:<br />
/usr/meta/cur/parts<br />
<strong>in</strong>clud<strong>in</strong>g discrete component (FET, BJT,<br />
diode) and l<strong>in</strong>ear circuits (OP)<br />
Demos can be found at<br />
/usr/meta/cur/demo<br />
<strong>in</strong>clud<strong>in</strong>g the demos of awaves and<br />
hspice<br />
How to draw eye diagrams on awaves can be<br />
found here.<br />
36