Oddpawn

Just imagine the things I would have written as a 15 year old. From what I remember, I wrote about: game walkthrough for Oddpawn; interesting things I found on the internet; random movie reviews; and an irregular blog series on Harry Potter (something like a fan fiction). I discontinued my writing when I descended into laziness 😛 and subsequently lost the blog to an Internet giant. Apparently they acquired Blogger sometime in ’07.

My friends created this blog and asked me to use it as a travelogue. I didn’t like the idea of broadcasting the photographs I clicked- mainly because I don’t handle criticism well. I considered making it a tech-blog and sometime later I realised that almost everything I knew and I could possibly write about were all on the internet. Cut to a day in late 2015. I’m in the university library listening to noise on Spotify (yeah! I have a playlist full of colourful noises). In my hands is something Ashlee Vance calls the Quest for a Fantastic Future. Half way through what I recall is a blueprint of the Red Dragon mission, I am losing interest in it. My thoughts are meandering to even the darkest corners of my mind. That was when I realised that my thoughts can never be given a direction. I wanted my blog to have as many dimensions as my thoughts. I made a list of things I wanted to write in this blog. And it has taken two long semesters and 10+ friends to get me writing. So, there goes – a blogpost after 9 years. Might not be great but makes me happy that I am writing again for I am no wallflower but an Oddpawn.

Advertisements

VLSI CAD EXAM!!!

Guys, this is something that might come in handy if Akshay’s page isn’t working. All the best!!. <Scroll down for HSPICE test files>

  • CAD SETUP

engnx servers by default are bash servers. You need not run bin/bash. (Anyways, no harm in doing so tho).

Create a folder named “cad_exam_your-netid” in terminal by using mkdir command.

mkdir cad_exam_your-netid

Run the following script to source the cad files into your dir.

. /proj/cad/startup/setup-ibm130-cad

Copy all the files required from the given source using cp.

cp /home/cad/startup/EE6325/cad_exam_f2015

Throughout the exam you might need to source either Cadence or Synopsys.

For Synopsys –

. /proj/cad/startup/profile.synopsys_2013 (design vision, wv, siliconsmart, primetime etc)

. /proj/cad/startup/profile.synopsys (hspice)

For Cadence –

. /proj/cad/startup/profile.ic-5

  • LAYOUT

Don’t forget to attach existing techfile (cmrf8sf) while creating a new lib.

DRC

  1. From Virtuosomenu, select Assura -> run DRC… This brings out a DRC form.
  2. Put your Working Library, cell, and view names as this picture
  3. For your Rules File, enter:

/proj/cad/library/mosis/IBM_PDK/cmrf8sf/relDM/Assura/DRC/drc.rul

  1. Click Set Switchesand choose “BEOL_STACK_620”, “Cell”, “Ext_Latchup” and “GridCheck” (hold the “ctrl” key while selecting). 

 

6 METAL PROCESS LVS SETUP LINKS:

 

For Extract Rules:

/home/cad/kits/IBM_CMRF8SF-LM013/IBM_PDK/cmrf8sf/V1.2.0.0LM/Assura/LVS/extract62.rul

For Compare Rules:

/home/cad/kits/IBM_CMRF8SF-LM013/IBM_PDK/cmrf8sf/V1.2.0.0LM/Assura/LVS/compare.cdl

For Switch Names:

Click Set Switches and then choose NO_SUBC_IN_GRLOGIC

For Binding FIles(s):

/home/cad/kits/IBM_CMRF8SF-LM013/IBM_PDK/cmrf8sf/relLM/Assura/LVS/bind.cdl

QRC

 /proj/cad/library/mosis/IBM_PDK/cmrf8sf/relDM/Assura/QRC/41

LIBRARY COMPILER

The only commands that would be helpful are

lc_shell

read_lib ./library.lib

write_lib library -format db -output library.db

  • DESIGN PREP

Run these commands  before extracing .lef

cp /home/cad/startup/EE6325/aux/native_abs.pl .

cp /home/eng/h/hxh025000/public_html/index_files/native_header.lef .

cp /home/cad/startup/EE6325/aux/strmoutMap .

Changes needed in the cds.lib file –

DEFINE cdsDefTechLib $CDS_INST_DIR/tools/dfII/etc/cdsDefTechLib

DEFINE analogLib $CDS/tools/dfII/etc/cdslib/artist/analogLib

DEFINE basic $CDS/tools/dfII/etc/cdslib/basic

DEFINE cmrf8sf /proj/cad/library/mosis/IBM_PDK/cmrf8sf/V1.8.0.4DM/cdslib51/cmrf8sf

DEFINE esd8rf /proj/cad/library/mosis/IBM_PDK/cmrf8sf/V1.8.0.4DM/cdslib51/esd8rf

DEFINE avTech /proj/cad/cadence/assura-5141-3.20.001.lnx86/tools/assura/etc/avtech/avTech

DEFINE “your_library and path”

When you’re done,

perl native_abs.pl

  • ENCOUNTER

cp ~/cad/cadence/your_own.lef .

cp /home/eng/a/axs109221/public_html/Scripts/ addvias.pl .

cp /home/eng/a/axs109221/public_html/Scripts/pin_cover.tcl .

Starting Encounter

Go to your Encounter directory by typing:

cd ~/cad/se

Source the following link:

. /home/eng/h/hxh025000/public_html/index_files/profile.ic-5_enc

Start the Encounter design environment by typing the following in your Encounter directory:  encounter

After it is done, run add pincovers and vias.

  • PRIMETIME

After changing the variables file,

pt_shell –f primetime.script

  • HSPICE

If you need output of your spice simulation,

hspice YOUR_SPICE_FILE.sp > YOUR_SPICE_FILE.out

NAND2


hspice file: nand2test.sp

.include "/home/cad/kits/IBM_CMRF8SF-LM013/IBM_PDK/cmrf8sf/V1.2.0.0LM/HSPICE/models/model013.lib_inc"

.include nand2lvs.sp

.option post runlvl=5

xi a b out nand2

vdd! vdd! gnd! 1.2V

v1 a gnd! pwl(0ns 0V 1ns 0V 1.075ns 1.2V 2.075ns 1.2V 2.15ns 0V 3.15ns 0V 3.225ns 1.2V 4.225ns 1.2V 4.3ns 0V 5.3ns 0V)

v2 b gnd! pwl(0ns 0V 1ns 0V 1.075ns 0V 2.075ns 0V 2.15ns 1.2V 3.15ns 1.2V 3.225ns 1.2V 4.225ns 1.2V 4.3ns 0V 5.3ns 0V)

$vin in gnd! pulse(0V 1.2V 0ns 50ps 50ps 1400ps 3000ps)

Cout out gnd 25f $ Output Capacitance Load = 25 fF

.tr 10ps 5ns

.end

OAI2221


hspice file: oai2221test.sp

.include "/home/cad/kits/IBM_CMRF8SF-LM013/IBM_PDK/cmrf8sf/V1.2.0.0LM/HSPICE/models/model013.lib_inc"

.include oai2221lvs.sp

.option post runlvl=5

xi a b c d e f g out oai2221

vdd! vdd! gnd! 1.2V

v1 a gnd! pwl(0ns 0.00V 1ns 0.00V 1.075ns 1.20V 2.075ns 1.20V 2.15ns 0.00V 3.15ns 0.00V 3.225ns 0.00V 4.225ns 0.00V 4.3ns 0.00V 5.3ns 0.00V)

v2 b gnd! pwl(0ns 0.00V 1ns 0.00V 1.075ns 0.00V 2.075ns 0.00V 2.15ns 0.00V 3.15ns 0.00V 3.225ns 1.20V 4.225ns 1.20V 4.3ns 0.00V 5.3ns 0.00V)

v3 c gnd! pwl(0ns 0.00V 1ns 0.00V 1.075ns 0.00V 2.075ns 0.00V 2.15ns 0.00V 3.15ns 0.00V 3.225ns 1.20V 4.225ns 1.20V 4.3ns 0.00V 5.3ns 0.00V)

v4 d gnd! pwl(0ns 0.00V 1ns 0.00V 1.075ns 1.20V 2.075ns 1.20V 2.15ns 0.00V 3.15ns 0.00V 3.225ns 1.20V 4.225ns 1.20V 4.3ns 0.00V 5.3ns 0.00V)

v5 e gnd! pwl(0ns 0.00V 1ns 0.00V 1.075ns 1.20V 2.075ns 1.20V 2.15ns 0.00V 3.15ns 0.00V 3.225ns 1.20V 4.225ns 1.20V 4.3ns 0.00V 5.3ns 0.00V)

v6 f gnd! pwl(0ns 0.00V 1ns 0.00V 1.075ns 0.00V 2.075ns 0.00V 2.15ns 0.00V 3.15ns 0.00V 3.225ns 0.00V 4.225ns 0.00V 4.3ns 1.20V 5.3ns 1.20V)

v7 g gnd! pwl(0ns 0.00V 1ns 0.00V 1.075ns 0.00V 2.075ns 0.00V 2.15ns 0.00V 3.15ns 0.00V 3.225ns 1.20V 4.225ns 1.20V 4.3ns 0.00V 5.3ns 0.00V)
Cout out gnd 25f $ Output Capacitance Load = 25 fF

.tr 10ps 5ns

.end

MUX21


hspice file: mux21test.sp

.include "/home/cad/kits/IBM_CMRF8SF-LM013/IBM_PDK/cmrf8sf/V1.2.0.0LM/HSPICE/models/model013.lib_inc"

.include mux21lvs.sp

.option post runlvl=5

xi a b s out mux21

vdd! vdd! gnd! 1.2V
v1 a gnd! pwl(0ns 0.00V 1ns 0.00V 1.075ns 1.20V 2.075ns 1.20V 2.15ns 0.00V 3.15ns 0.00V 3.225ns 1.20V 4.225ns 1.20V 4.3ns 0.00V 5.3ns 0.00V)

v2 b gnd! pwl(0ns 1.20V 1ns 1.20V 1.075ns 0.00V 2.075ns 0.00V 2.15ns 1.20V 3.15ns 1.20V 3.225ns 0.00V 4.225ns 0.00V 4.3ns 0.00V 5.3ns 0.00V)

v3 s gnd! pwl(0ns 0.00V 1ns 0.00V 1.075ns 0.00V 2.075ns 0.00V 2.15ns 1.20V 3.15ns 1.20V 3.225ns 1.20V 4.225ns 1.20V 4.3ns 0.00V 5.3ns 0.00V)

$vin in gnd! pulse(0V 1.2V 0ns 50ps 50ps 1400ps 3000ps)

Cout out gnd 25f $ Output Capacitance Load = 25 fF

.tr 10ps 5ns

.end

INV WITH DELAY & EDP CALCULATION


$ hspice file: invlvs.sp
.include "/home/cad/kits/IBM_CMRF8SF-
LM013/IBM_PDK/cmrf8sf/relLM/HSPICE/models/model013.lib_inc"
.include lvstest.sp
.option post runlvl=5
xi in out inv
vdd! vdd! gnd! 1.2V
vin in gnd! pwl(0ns 0V 1ns 0V 1.05ns 1.2V 2.05ns 1.2V 2.35ns 0V
3.35ns 0V 3.425ns 1.2V 4.425ns 1.2V 4.5ns 0V 5.5ns 0V 5.575ns
1.2V)
Cout out 0 20f
.tr 0.01ns 4ns
.measure tran t1 when v(in)='0.9*1.2' fall=1
$ Measures start time t1
.measure tran t2 when v(out)='0.9*1.2' rise=1
$ Measure end time t2
.measure tran t3 when v(in)='0.1*1.2' TD=3ns rise=1
$ Measures start time t3
.measure tran t4 when v(out)='0.1*1.2' TD=3ns fall=1
$ Measures end time t4
.measure tran tlh
+ TRIG v(in) VAL='1.2*0.5' TD=0NS FALL=1
+ TARG v(out) VAL='1.2*0.5' TD=0NS RISE=1
.print tlh
.measure tran thl
+ TRIG v(in) VAL='1.2*0.5' TD=0NS RISE=1
+ TARG v(out) VAL='1.2*0.5' TD=0NS FALL=1
.print thl
.measure tran delay param='max(tlh,thl)'
$ Measures Delay(worst case delay)
.print delay
.measure tran dd param='max(tlh,thl)-min(tlh,thl)'
$ Measures Delay Difference
.print dd
.measure tran current avg I(vdd!) from=t1 to=t2
.measure tran current_2 avg I(vdd!) from=t3 to=t4
$.print current_of_inverter
$.print current
$.print current_2
Page6
.measure tran e1 param='1.2v*current*(t1-t2)'
$ Measure Energy1
.measure tran e2 param='1.2v*current_2*(t3-t4)'
$ Measures Energy2
.print e1
.print e2
.measure tran energy param='max(e1,e2)'
$ Measures Energy ( worst case energy)
.print energy
.measure tran edp param='energy*delay'
$ Measure Energy delay product
.print edp
.end