Posim> LAB

Transcription

Posim> LAB
Cell-Based Training LAB
< Posim>
LAB
Aug. 2008
-1-
Cell-Based Training LAB
Copy <CPU_CHIP.gds> from [SOC] to [ADD_LVS]
Copy <RAM_64B.vclef> from [MEM] to [ADD_LVS]
Add LVS Label and On-Line DRC Using <Virtuoso> & <Calibre>
File preparations:
CPU_CHIP.gds (i.e. from SOC encounter)
0.18um_Virtuoso4.4.tf (i.e. from CIC Design Kit)
tsmc18_core.gds (i.e. from CIC Design Kit)
tsmc18_io_final.gds3 (i.e. from CIC Design Kit)
t18abs2lay.ile (i.e. from CIC Design Kit)
display.drf (i.e. from CIC Design Kit)
T18drc_13a25a.drc (i.e. DRC rules and from CIC Design Kit)
RAM_64B.vclef (i.e. from Artisan)
Stream In Design
(CIW) File Import Stream…
Input File: CPU_CHIP.gds
Top Cell Name: CPU_CHIP
Library Name: CPU_CHIP
ASCII Technology File Name: 0.18um_Virtuoso4.4.tf
OK
Stream In Standard Cells
(CIW) File Import Stream…
Input File: tsmc18_core.gds
Library Name: CPU_CHIP
ASCII Technology File Name: 0.18um_Virtuoso4.4.tf
Clear the Top Cell Name
OK
(CIW) File Import Stream…
Input File: tsmc18_io_final.gds3
Library Name: CPU_CHIP
ASCII Technology File Name: 0.18um_Virtuoso4.4.tf
OK
Stream In LEF Files
(CIW) File Import LEF…
LEF File Name: RAM_64B.vclef
Target Library Name: CPU_CHIP
OK
-2-
Cell-Based Training LAB
(CIW command line) load(“t18abs2lay.ile”)
LVS Tools for UMC18 copy Abs to Lay
Library Name: CPU_CHIP
Cell Name: RAM_64B
OK
(Library Manager) View Refresh
(Library Manager) Library: CPU_ CHIP; Cell: CPU_CHIP; View: layout
Open
You can use hot key “Shift+F” to show all the layers
Fig. Virtuoso layout view
You can check:
Whether all pins of hard blocks are connected?
Whether the power lines are in the correct layers? (i.e. vertical: METAL4;
horizontal: METAL5)
If not, maybe your “streamOut.map” file using in the P&R is not
correct.
(CIW) File Export Stream
Library: CPU_CHIP; Cell: CPU_CHIP; View: layout
Output File: CPU_CHIP_01.gds
OK
On-line DRC
Calibre
-3-
Cell-Based Training LAB
Load Runset File: CPU_CHIP_01.gds
Press “Rules”: T18drc_13a25a.drc
Press “Inputs” Select “Flat”
Press “Run DRC”
Because of the P&R tool is not too smart, some DRC violations may occur.
If there are few errors occur, we can fix them by ourselves. But if the error count
is high, you may do something wrong in the P&R procedure. You should re-do
the P&R.
Finally, there are 7 errors remained since that the deficiency of metal coverage
before standard cell layout replacement (LPE).
Fig. On-line DRC
(LSW) Select “METAL2/pn”
Hot key “l” to create label
Add label “VDD” to all PADs of “PVDD1DGZ”
Add label “VSS” to all PADs of “PVSS1DGZ”
Add label “DVDD” to all PADs of “PVDD2DGZ”
Add label “DVSS” to all PADs of “PVSS2DGZ”
-4-
Cell-Based Training LAB
Fig. PADs and labels
Design Save
(CIW) File Export Stream
Library: CPU_CHIP; Cell: CPU_CHIP; View: layout
Output File: CPU_CHIP_01.gds
OK
Off-Line DRC Using <Calibre>
File preparations:
T18drc_13a25a.drc (i.e. DRC rules and from CIC Design Kit)
Open < T18drc_13a25a.drc > and modify it as follows:
unix> caliber –drc T18drc_13a25a.drc
After the DRC done, you can check the DRC.rep as follows:
RULECHECK PO.R.3 ............ TOTAL Result Count = 1
RULECHECK M1.R.1 ............ TOTAL Result Count = 1
RULECHECK M2.R.1 ............ TOTAL Result Count = 1
RULECHECK M3.R.1 ............ TOTAL Result Count = 1
RULECHECK M4.R.1 ............ TOTAL Result Count = 1
RULECHECK M5.R.1 ............ TOTAL Result Count = 1
……
RULECHECK _M6T.R.1 .......... TOTAL Result Count = 1
……
--- SUMMARY
--TOTAL CPU Time:
TOTAL REAL Time:
339
340
TOTAL Original Layer Geometries: 11373297
TOTAL DRC RuleChecks Executed:
322
-5-
Cell-Based Training LAB
TOTAL DRC Results Generated:
7
Copy <CPU_CHIP.v> from [SOC] to [LVS]
Block-Box LVS Using <Calibre>
File preparations:
CPU_CHIP.v (i.e. from SOC encounter)
Calibre-lvs-cur_soce (i.e. LVS rules, from CIC Design Kit)
RAM_64B.v (i.e. just I/O definitions, user edit)
RAM_64B.spi (i.e. just I/O definitions, user edit)
tsmc18_lvs.spi (i.e. standard cell SPICE files, from CIC Design Kit)
tsmc18_lvs.v (i.e. standard cell Verilog files, from CIC Design Kit)
General LVS performs the comparison between the “Layout” and the
“Schematic”. In the cell based design, there is no “real Schematic” exist. Instead,
the “Schematic” in the cell base design is converted from the “gate-level Verilog
netlist”. The converting tool references “SPICE” template files, and then
converts the entire “cells” in the Verilog files into “sub circuits”.
In the CIC design flow, the layout of the Artisan memories and standard cells can
not be seen. However, any standard cells and hard blocks should already be
passed through the LVS checking. Therefore, only the inter-connections are
needed to be verified, not the cells and hard blocks layouts – they are blocked!
That’s why we called Block Box LVS.
2 files are compared:
layout.spi (i.e. generated from the layout file – CPU_CHIP_01.gds)
source.spi (i.e. converted from the Verilog files – CPU_CHIP.v and
RAM_64B.v)
RAM_64B.v and RAM_64B.spi are shown bellow: (i.e. all the hard blocks
should be treated in the same way)
Edit these files by sourself
-6-
Cell-Based Training LAB
Fig. Hard block templates
unix> v2lvs –v CPU_CHIP.v –l tsmc18_lvs.v –l RAM_64B.v –o
source.spi –s tsmc18_lvs.spi –s RAM_64B.spi –s1 VDD –s0 VSS
be sure that the “source.spi” is generated
Revise the “Calibre-lvs-cur_soce”
LAYOUT PRIMARY “CPU_CHIP”
LAYOUT PATH “../ADD_LVS/CPU_CHIP_01.gds”
LAYOUT CASE YES
SOURCE PRIMARY “CPU_CHIP”
SOURCE PATH “source.spi”
SOURCE CASE YES
Add the following contents in the last line:
LVS BOX RAM_64B
Blocking the following lines:
//LVS BOX PADIZ40
//LVS BOX PADOZ40
//LVS BOX PCORNERDG
//LVS BOX PCORNERDG_L
//LVS BOX PVDD1DGZ
//LVS BOX PVSS1DGZ
//LVS BOX PVSS2DGZ
//LVS BOX PVSS3DGZ
-7-
Cell-Based Training LAB
unix> caliber –lvs –spice layout.spi –hier –auto Calibre-lvs-cur_soce
you can check the lvs.rep
Fig. LVS result
---------The following steps should be performed on CIC server--------LPE (Replace Layout and RC Extraction)
File preparations:
CPU_CHIP_01.gds (i.e. from Virtuoso)
RAM_64B.spec (i.e. from Artisan)
unix> ssh –l username 140.126.24.14
(connecting to CIC server)
queue>
create a new folder for LPE and get into it
ftp cae18.ee.ncu.edu.tw
ftp> get CPU_CHIP_01.gds
ftp> get RAM_64B.spec
ftp> by
Also, you can use your FTP tool by using the “SSH2” mode
-8-
Cell-Based Training LAB
Fig. FTP in SSH2 mode
queue> Qentry –M LPE –tech TSMC18 –f CPU_CHIP_01.gds –T
CPU_CHIP –s RAM_64B.spec –t t18ra1shd –c TSMC18 –i TSMC18 –o
CHIP.netlist
Another method: (If you have a huge number of memories, the number of
command bits may exceed the PVS constraint.)
Edit the file: command.run
! " # # $ % & ! " # ' % & ! ' # ' % & ! ' # # $ % & ! $ $ # $ % & ! $ $ ' % & ! ( $ $ % & ! ( $ # % & ! # $ $ % & ! # $ # % ) & * + , * queue/cicq78a> chmod 755 command.run
queue/cicq78a> ./command.run
Post-Layout Simulation Using <Nanosim>
File preparations:
Warning: the patterns should be
applied at negative edge !!
CHIP.vec (i.e. user edit)
CHIP.cfg (i.e. user edit)
-9-
Cell-Based Training LAB
CHIP.netlist (i.e. from LPE)
spice.header (i.e. from LPE)
Generate your nanosim test benches from the Verilog-XL simulation:
Copy <tcpu.v>, <cpu.v>, <RAM_64B.v> from [RTL] to
[POSIM/PATTERN/GEN]
Modify the time scale in <tcpu.v> and <RAM_64B.v>
Modify <tcpu.v>
negative edge !!
Warning: the patterns should be applied at
Test pins declarations:
The values of test pins should be assigned
Add the test benche generation functions as follows:
Fig. NANOSIM testbenches generation
- 10 -
Cell-Based Training LAB
verilog tcpu.v
generate the file <cpu.dat>
then, copy all the patterns and paste them in the file <CHIP.vec> (in
[POSIM])
Example of CHIP.cfg:
Fig. Example of CHIP.cfg
- 11 -
Cell-Based Training LAB
queue>
create a new folder for NANOSIM and get into it
queue> Qentry –M NANOSIM –nspice CHIP.netlist spice.header –nvec
CHIP.vec –m CPU_CHIP –c CHIP.cfg –o CHIP –out fsdb –t 12000
Finally, download the “CHIP.fsdb” and “nanosim.log” to check the po-sim
waveforms and powers.
Fig. Po-sim waveforms
Fig. Average power in nanosim.log
- 12 -