Skip to content
Snippets Groups Projects
Commit bfb99355 authored by Kartik Prabhu's avatar Kartik Prabhu
Browse files

LVS comparison with Calibre

parent db4c9192
No related branches found
No related tags found
No related merge requests found
...@@ -30,10 +30,11 @@ foreach x $ADK_LVS_EXCLUDE_CELL_LIST { ...@@ -30,10 +30,11 @@ foreach x $ADK_LVS_EXCLUDE_CELL_LIST {
append lvs_exclude_list [dbGet -u -e top.insts.cell.name $x] " " append lvs_exclude_list [dbGet -u -e top.insts.cell.name $x] " "
} }
# Typically we would exclude cells, but we are not in this case,
# since Magic creates abstract views for all cells (incl. filler)
saveNetlist -excludeLeafCell \ saveNetlist -excludeLeafCell \
-flat \ -flat \
-phys \ -phys \
-excludeCellInst $lvs_exclude_list \
$vars(results_dir)/$vars(design).lvs.v $vars(results_dir)/$vars(design).lvs.v
# saveNetlist -excludeLeafCell \ # saveNetlist -excludeLeafCell \
......
...@@ -75,6 +75,7 @@ def construct(): ...@@ -75,6 +75,7 @@ def construct():
magic_gds2spice = Step( this_dir + '/open-magic-gds2spice' ) magic_gds2spice = Step( this_dir + '/open-magic-gds2spice' )
netgen_lvs = Step( this_dir + '/open-netgen-lvs' ) netgen_lvs = Step( this_dir + '/open-netgen-lvs' )
magic_antenna = Step( this_dir + '/open-magic-antenna' ) magic_antenna = Step( this_dir + '/open-magic-antenna' )
calibre_lvs = Step( this_dir + '/mentor-calibre-comparison' )
# Default steps # Default steps
...@@ -148,6 +149,7 @@ def construct(): ...@@ -148,6 +149,7 @@ def construct():
g.add_step( netgen_lvs_def ) g.add_step( netgen_lvs_def )
g.add_step( magic_gds2spice ) g.add_step( magic_gds2spice )
g.add_step( netgen_lvs_gds ) g.add_step( netgen_lvs_gds )
g.add_step( calibre_lvs )
#----------------------------------------------------------------------- #-----------------------------------------------------------------------
# Graph -- Add edges # Graph -- Add edges
...@@ -179,6 +181,7 @@ def construct(): ...@@ -179,6 +181,7 @@ def construct():
g.connect_by_name( adk, magic_gds2spice ) g.connect_by_name( adk, magic_gds2spice )
g.connect_by_name( adk, netgen_lvs_def ) g.connect_by_name( adk, netgen_lvs_def )
g.connect_by_name( adk, netgen_lvs_gds ) g.connect_by_name( adk, netgen_lvs_gds )
g.connect_by_name( adk, calibre_lvs )
g.connect_by_name( adk, pt_timing ) g.connect_by_name( adk, pt_timing )
g.connect_by_name( adk, pt_power_rtl ) g.connect_by_name( adk, pt_power_rtl )
g.connect_by_name( adk, pt_power_gl ) g.connect_by_name( adk, pt_power_gl )
...@@ -232,6 +235,10 @@ def construct(): ...@@ -232,6 +235,10 @@ def construct():
g.connect_by_name( signoff, netgen_lvs_gds ) g.connect_by_name( signoff, netgen_lvs_gds )
g.connect_by_name( magic_gds2spice, netgen_lvs_gds ) g.connect_by_name( magic_gds2spice, netgen_lvs_gds )
# LVS comparision using Calibre
g.connect_by_name( signoff, calibre_lvs )
g.connect_by_name( magic_gds2spice, calibre_lvs )
g.connect_by_name( signoff, pt_timing ) g.connect_by_name( signoff, pt_timing )
g.connect_by_name( signoff, pt_power_rtl ) g.connect_by_name( signoff, pt_power_rtl )
g.connect_by_name( gen_saif_rtl, pt_power_rtl ) # run.saif g.connect_by_name( gen_saif_rtl, pt_power_rtl ) # run.saif
......
LAYOUT PATH "./inputs/design_extracted.spice"
LAYOUT PRIMARY "${design_name}"
LAYOUT SYSTEM SPICE
SOURCE PATH "./design.lvs.v.spice"
SOURCE PRIMARY "${design_name}"
SOURCE SYSTEM SPICE
MASK SVDB DIRECTORY "svdb" QUERY
LVS REPORT "outputs/lvs.report"
LVS ISOLATE SHORTS YES
LVS REPORT OPTION S
// Case sensitive
LAYOUT CASE YES
SOURCE CASE YES
// Black box all std cells if Magic is also black boxing
LVS BOX "sky130_*"
// Very important! Magic uses slashes as part of the name
LVS SPICE SLASH IS SPACE NO
LVS SPICE PREFER PINS YES
LVS ABORT ON SUPPLY ERROR NO
LVS RECOGNIZE GATES NONE
LVS IGNORE PORTS NO
LVS CHECK PORT NAMES YES
LVS ABORT ON SOFTCHK NO
LVS SHOW SEED PROMOTIONS NO
LVS SHOW SEED PROMOTIONS MAXIMUM 50
LVS POWER NAME "VDD" "VPWR"
LVS GROUND NAME "VSS" "VGND"
LVS SPICE OVERRIDE GLOBALS YES
LVS GLOBALS ARE PORTS NO
VIRTUAL CONNECT COLON YES
VIRTUAL CONNECT REPORT NO
LVS EXECUTE ERC YES
ERC RESULTS DATABASE "erc.results"
ERC SUMMARY REPORT "erc.summary" REPLACE HIER
ERC CELL NAME YES CELL SPACE XFORM
ERC MAXIMUM RESULTS 1000
ERC MAXIMUM VERTEX 4096
#=========================================================================
# Comparison of netlists using Calibre
#=========================================================================
# Author : Kartik Prabhu
# Date : June 13, 2021
#
name: mentor-calibre-comparison
#-------------------------------------------------------------------------
# Inputs and Outputs
#-------------------------------------------------------------------------
inputs:
- adk
- design_extracted.spice
- design.lvs.v
outputs:
- lvs.report
#-------------------------------------------------------------------------
# Parameters
#-------------------------------------------------------------------------
parameters:
design_name: undefined
commands:
- sh run_lvs.sh
debug:
- calibre -rve -lvs svdb
This diff is collapsed.
envsubst < calibre_lvs.rule.template > calibre_lvs.rule
v2lvs -i -lsp inputs/adk/stdcells.spi -s inputs/adk/stdcells.spi -lsp source.added -s source.added -v inputs/design.lvs.v -o design.lvs.v.spice
calibre -lvs -hier ./calibre_lvs.rule -hcell hcells -automatch
\ No newline at end of file
.subckt sky130_fd_pr__pfet_01v8 d g s b
.ends
.subckt sky130_fd_pr__pfet_01v8_hvt d g s b
.ends
.subckt sky130_fd_pr__nfet_01v8 d g s b
.ends
.subckt sky130_fd_pr__nfet_01v8_hvt d g s b
.ends
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment