04.01.2015 Views

Full-Custom Design Flow in LaRC (Cadence)

Full-Custom Design Flow in LaRC (Cadence)

Full-Custom Design Flow in LaRC (Cadence)

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!