このページはSoC Encounter 7.1 を用いて、65nmのプロセスでMUCCRA_TOPを配置配線する方法を示す
本ページは天野研でMuCCRAチップの試作をFujitsu社の65nmプロセスで SOC Encounterを用いて行った際の設計フローについて説明する。
Technology File: cs202_lib/tech/lef/v5.6/CS202/common/12S3G2/tech.lef Standard Cell: cs202_sc_io_lib/lef/CS202SN/common/uc.lef IO: 200806RDF/lib/lef/v5.6/CS202/common/common/io.lef RAM: memory/ramcell/lef/v5.6/RAMROM.lef
Standard Cell(Logic): cs202_sc_io_lib/lib/cs202sn_uc_core_s_p125_105v.lib Standard Cell(FF): cs202_sc_io_lib/lib/cs202sn_uc_nscan_s_p125_105v.lib IO: cs202_sc_io_lib/lib/cs202sn_io_s_p125_m_105v_30v.lib RAM: memory/ramcell/dc/cs202sn_cc_s_p100_11v.lib
Standard Cell(Logic): cs202_sc_io_lib/lib/cs202sn_uc_core_f_m40_13v.lib Standard Cell(FF): cs202_sc_io_lib/lib/cs202sn_uc_nscan_f_m40_13v.lib IO: cs202_sc_io_lib/lib/cs202sn_io_f_m40_m_13v_36v.lib RAM: memory/ramcell/dc/cs202sn_cc_s_m40_11v.lib
Netlist: MUCCRA_TOP.v IO File: MUCCRA_TOP.io SDC: MUCCRA_TOP.sdc
% encounter
################################################ # # FirstEncounter Input configuration file # ################################################ # Created by First Encounter v05.20-s197_1 on Sun Nov 5 17:35:01 2006 source ./scripts/var.tcl global rda_Input set rda_Input(import_mode) {-treatUndefinedCellAsBbox 0 -keepEmptyModule 1 -useLefDef56 1 } set rda_Input(ui_netlist) "${source_dir}/${top_name}.v" set rda_Input(ui_netlisttype) {Verilog} set rda_Input(ui_rtllist) "" set rda_Input(ui_ilmlist) "" set rda_Input(ui_ilmspef) "" set rda_Input(ui_settop) {1} set rda_Input(ui_topcell) "${top_name}" set rda_Input(ui_celllib) "" set rda_Input(ui_iolib) "" set rda_Input(ui_areaiolib) "" set rda_Input(ui_blklib) "" set rda_Input(ui_kboxlib) "" set rda_Input(ui_oa_oa2lefversion) {} set rda_Input(ui_view_definition_file) {} set rda_Input(ui_timelib,min) ${min_lib_file} set rda_Input(ui_timelib,max) ${max_lib_file} set rda_Input(ui_timelib) "" set rda_Input(ui_smodDef) "" set rda_Input(ui_smodData) "" set rda_Input(ui_dpath) "" set rda_Input(ui_tech_file) "" set rda_Input(ui_io_file) "${source_dir}/${top_name}.io" set rda_Input(ui_timingcon_file) "${source_dir}/${top_name}_enc.sdc" set rda_Input(ui_latency_file) "" set rda_Input(ui_scheduling_file) "" set rda_Input(ui_buf_footprint) {} set rda_Input(ui_delay_footprint) {} set rda_Input(ui_inv_footprint) {} set rda_Input(ui_leffile) ${lef_file} set rda_Input(ui_cts_cell_footprint) {} set rda_Input(ui_cts_cell_list) {} set rda_Input(ui_core_cntl) {aspect} set rda_Input(ui_aspect_ratio) {1.0} set rda_Input(ui_core_util) {0.7} set rda_Input(ui_core_height) {1515.4} set rda_Input(ui_core_width) {1517.54} set rda_Input(ui_core_to_left) {0} set rda_Input(ui_core_to_right) {0} set rda_Input(ui_core_to_top) {0} set rda_Input(ui_core_to_bottom) {0} set rda_Input(ui_max_io_height) {0} set rda_Input(ui_row_height) {0} set rda_Input(ui_isHorTrackHalfPitch) {0} set rda_Input(ui_isVerTrackHalfPitch) {1} set rda_Input(ui_ioOri) {R0} set rda_Input(ui_isOrigCenter) {0} set rda_Input(ui_exc_net) "" set rda_Input(ui_delay_limit) {1000} set rda_Input(ui_net_delay) {1000.0ps} set rda_Input(ui_net_load) {0.5pf} set rda_Input(ui_in_tran_delay) {0.1ps} set rda_Input(ui_captbl_file) "-typical ${cap_t} -best ${cap_b} -worst ${cap_w}" set rda_Input(ui_defcap_scale) {1.0} set rda_Input(ui_detcap_scale) {1.0} set rda_Input(ui_xcap_scale) {1.0} set rda_Input(ui_res_scale) {1.0} set rda_Input(ui_shr_scale) {1.0} set rda_Input(ui_time_unit) {none} set rda_Input(ui_cap_unit) {} set rda_Input(ui_oa_reflib) "" set rda_Input(ui_oa_abstractname) {} set rda_Input(ui_oa_layoutname) {} set rda_Input(ui_sigstormlib) "" set rda_Input(ui_cdb_file,min) "" set rda_Input(ui_cdb_file,max) "" set rda_Input(ui_cdb_file) "" set rda_Input(ui_echo_file,min) "" set rda_Input(ui_echo_file,max) "" set rda_Input(ui_echo_file) "" set rda_Input(ui_xtwf_file) "" set rda_Input(ui_qxtech_file) "" set rda_Input(ui_qxlib_file) "" set rda_Input(ui_qxconf_file) "" set rda_Input(ui_pwrnet) {VDD VDE VNW} set rda_Input(ui_gndnet) {VSS VPW} set rda_Input(flip_first) {1} set rda_Input(double_back) {1} set rda_Input(assign_buffer) {1} set rda_Input(ui_pg_connections) "" set rda_Input(ui_gen_footprint) {1}
# ## ### Load Configuration file ## # source ./scripts/var.tcl loadconfig conf.conf saveDesign ${top_name}_config.enc
# ## ### Floorplanning ## # set CORE CORE1800 fit setDrawMode fplan floorPlan -fplanOrigin center -site ${CORE} -s 3420 1320 28 28 28 28 setRoutingStyle -top -style m uiSetTool select fit
# ## ### End Tap ## # addEndCap -preCap SC22YUZTAP021 -postCap SC22YUZTAP021 -prefix ENDCAP
# ## ### Edit Halo ## # set top_layer M6 set bottom_layer M1 deletehalofromblock -allBlock deleteroutinghalo -allBlocks redraw set size 7.5 addRoutingHalo -space ${size} -top ${top_layer} -bottom ${bottom_layer} -allBlocks set size 9.0 addHaloToBlock ${size} ${size} ${size} ${size} -allBlock redraw deselectAll
# ## ### Floorplan ## # clearRelativeFPlan deselectAll relativeFPlan --relativePlace MUCCRA/COL0/DATA_MEM_BOTTOM_MEM_BANK0_MEM_MACRO TR BTTOM_CORE_BOUNDARY TL 54 340.555 R90 relativeFPlan --relativePlace MUCCRA/COL0/DATA_MEM_BOTTOM_MEM_BANK1_MEM_MACRO TR BOTTOM_CORE_BOUNDARY TL 54 610.775 R90 relativeFPlan --relativePlace BAMMA/COL0/DATA_MEM_BOTTOM_CONTEXT_CONT_MEM_CONTEXT_MEM0_MEM_MACRO TR BOTTOM_CORE_BOUNDARY TL 54 880.995 R180 relativeFPlan --relativePlace MUCCRA/COL0/DATA_MEM_TOP_MEM_BANK0_MEM_MACRO TR BOTTOM_CORE_BOUNDARY TL 1192.075 340.555 R270 relativeFPlan --relativePlace MUCCRA/COL0/DATA_MEM_TOP_MEM_BANK1_MEM_MACRO TR BOTTOM_CORE_BOUNDARY TL 1192.075 610.775 R270 relativeFPlan --relativePlace MUCCRA/COL0/DATA_MEM_TOP_CONTEXT_CONT_MEM_CONTEXT_MEM0_MEM_MACRO TR BOTTOM_CORE_BOUNDARY TL 1153.805 880.995 R180 ・ ・ ・ # ## ### Design Save ## # if { $enable_save_after_floorplan } { saveDesign ${top_name}_floorplan.enc }
source ./scripts/var.tcl # ## ### Specify Global Net Connection (vdd/vss) ## # clearGlobalNets globalNetConnect VDD -type pgpin -pin VDD -inst * -verbose globalNetConnect VDD -type pgpin -pin VNW -inst * -verbose globalNetConnect VDD -type tiehi -inst * -verbose globalNetConnect VSS -type pgpin -pin VSS -inst * -verbose globalNetConnect VSS -type pgpin -pin VPW -inst * -verbose globalNetConnect VSS -type tielo -inst * -verbose globalNetConnect VDE -type pgpin -pin VDE -inst * -verbose
テストランのFeedBackにより、RAMへの電源供給はメッシュにより 行うことが推奨
# ## ### For VDD/VSS Core Rings (Single) ## # source ./scripts/var.tcl cutRow clearCutRow deselectAll set offset 1.8 set threshold 0.2 set jdistance 1.8 set spacing 6.05 set width 3.0 set v_layer METG1 set h_layer METG2 addRing \ -nets { VSS VDD }\ -around core \ -center 1 \ \ -width_top ${width} \ -width_right ${width} \ -width_bottom ${width} \ -width_left ${width} \ \ -spacing_top ${spacing} \ -spacing_right ${spacing} \ -spacing_bottom ${spacing} \ -spacing_left ${spacing} \ \ -offset_top ${offset} \ -offset_right ${offset} \ -offset_bottom ${offset} \ -offset_left ${offset} \ \ -jog_distance ${jdistance} \ -threshold ${threshold} \ \ -stacked_via_top_layer METTOP \ -stacked_via_bottom_layer MET1 \ \ -layer_top ${h_layer} \ -layer_right ${v_layer} \ -layer_bottom ${h_layer} \ -layer_left ${v_layer} deselectAll
source ./scripts/var.tcl # ## ### For VDD/VSS rings for RAM (Single) ## # deselectAll set spacing 2.0 set width 1.6 set offset 2.0 set threshold 0.2 set jdistance 1.8 set wire_group_enable 0 set wire_bits 2 set interleaving_enable 1 ### Layer set vlayer MET4 set hlayer MET5 addRing \ -nets { VDD VSS } \ -type block_rings \ -around each_block \ \ -use_wire_group ${wire_group_enable} \ -use_wire_group_bits ${wire_bits} \ -use_interleaving_wire_group ${interleaving_enable} \ \ -width_top ${width} \ -width_right ${width} \ -width_bottom ${width} \ -width_left ${width} \ \ -spacing_top ${spacing} \ -spacing_right ${spacing} \ -spacing_bottom ${spacing} \ -spacing_left ${spacing} \ \ -offset_top ${offset} \ -offset_right ${offset} \ -offset_bottom ${offset} \ -offset_left ${offset} \ \ -jog_distance ${jdistance} \ -threshold ${threshold} \ \ -stacked_via_top_layer METTOP \ -stacked_via_bottom_layer MET1 \ \ -layer_top ${hlayer} \ -layer_right ${vlayer} \ -layer_bottom ${hlayer} \ -layer_left ${vlayer} deselectAll fit redraw
source ./scripts/var.tcl source ./scripts/opcond.tcl # ## ### Standard Cell PG ## # sroute \ -nets { VSS VDD } \ -noBlockPins \ -noPadRings \ -noPadPins \ -noStripes \ -targetViaTopLayer 11 \ -crossoverViaTopLayer 11 \ -layerChangeTopLayer 11 \ -jogControl { preferWithChanges differentLayer } fit redraw
source ./scripts/var.tcl source ./scripts/opcond.tcl # ## ### Stripe (Go Through Over Macro) ## # set width 1.0 set spacing 2.05 set distance 30 set layer MET6 set offset 30 addStripe \ -nets { VSS VDD } \ -layer ${layer} \ -width ${width} \ -spacing ${spacing} \ -set_to_set_distance ${distance} \ -xleft_offset ${offset} \ -merge_stripes_value 0.2 \ -max_same_layer_jog_length 1.6 \ -block_ring_top_layer_limit METTOP \ -block_ring_bottom_layer_limit MET1 \ -padcore_ring_top_layer_limit METTOP \ -padcore_ring_bottom_layer_limit MET1 \ -stacked_via_top_layer METTOP \ -stacked_via_bottom_layer MET1 \ -break_stripes_at_block_rings false
# ## ### For VDD/VSS Pad Pin Connection ## # source ./scripts/var.tcl cutRow clearCutRow deselectAll ### Pad pins sroute \ -nets { VDD } \ -noBlockPins \ -noPadRings \ -noCorePins \ -noStripes \ -padPinAllGeomsConnect \ -padPinMinLayer 11 \ -padPinWidth 6 \ -jogControl { preferWithChanges differentLayer } sroute \ -nets { VSS }\ -noBlockPins \ -noPadRings \ -padPinSkipLeft \ -noCorePins \ -padPinSkipRight \ -noStripes \ -padPinAllGeomsConnect \ -padPinMinLayer 12 \ -padPinWidth 6 \ -jogControl { preferWithChanges differentLayer } sroute \ -nets { VSS }\ -noBlockPins \ -noPadRings \ -padPinSkipBottom \ -noCorePins \ -padPinSkipTop \ -noStripes \ -padPinAllGeomsConnect \ -padPinMinLayer 11 \ -padPinWidth 6 \ -jogControl { preferWithChanges differentLayer } deselectAll ### ### Design Save ### if { $enable_save_after_padpin } { saveDesign ${top_name}_padpin.enc }
source ./scripts/var.tcl # ## ### Add Filler ## # addWellTap -cell SC22YUZTAP021 -maxGap 29.6 -fixedGap -inRowOffset 33.8 -prefix WELLTAP addWellTap -cell SC22YUZTAP021 -maxGap 29.6 -fixedGap -inRowOffset 33.4 -prefix WELLTAP addWellTap -cell SC22YUZTAP021 -maxGap 29.6 -fixedGap -inRowOffset 33.0 -prefix WELLTAP addWellTap -cell SC22YUZTAP021 -maxGap 29.6 -fixedGap -inRowOffset 32.6 -prefix WELLTAP addWellTap -cell SC22YUZTAP021 -maxGap 29.6 -fixedGap -inRowOffset 32.2 -prefix WELLTAP addWellTap -cell SC22YUZTAP021 -maxGap 29.6 -fixedGap -inRowOffset 31.8 -prefix WELLTAP addWellTap -cell SC22YUZTAP021 -maxGap 29.6 -fixedGap -inRowOffset 31.4 -prefix WELLTAP addWellTap -cell SC22YUZTAP021 -maxGap 29.6 -fixedGap -inRowOffset 31.0 -prefix WELLTAP addWellTap -cell SC22YUZTAP021 -maxGap 29.6 -fixedGap -inRowOffset 30.6 -prefix WELLTAP addWellTap -cell SC22YUZTAP021 -maxGap 29.6 -fixedGap -inRowOffset 30.2 -prefix WELLTAP addWellTap -cell SC22YUZTAP021 -maxGap 29.6 -fixedGap -inRowOffset 29.8 -prefix WELLTAP addWellTap -cell SC22YUZCUBAS081 -maxGap 28.4 -fixedGap -inRowOffset 28.2 -prefix WELLTAP source ./scripts/pgconn.tcl
source ./scripts/var.tcl # ## ### Standard Cell Placement ## # deselectAll source ./scripts/pgconn.tcl if { $use_multi_threading } { setReleaseMultiCpuLicense true setMultiCpuUsage \ -numThreads ${num_threads} \ -numHosts 1 \ -superThreadsNumThreads ${num_threads} \ -superThreadsNumHosts 1 } else { setMultiCpuUsage \ -numThreads 1 \ -numHosts 1 \ -superThreadsNumThreads 1 \ -superThreadsNumHosts 1 } setPrerouteAsObs {1 2 3 4 5 6 } setPlaceMode -reset setPlaceMode \ -congEffort high \ -timingDriven 1 \ -modulePlan 1 \ -doCongOpt 0 \ -clkGateAware 0 \ -powerDriven 0 \ -reorderScan 1 \ -ignoreSpare 1 \ -placeIOPins 1 \ -moduleAwareSpare 0 \ -checkPinLayerForAccess {1}\ -preserveRouting 0 \ -rmAffectedRouting 0 \ -checkRoute 1 \ -swapEEQ 0 placeDesign -prePlaceOpt -inPlaceOpt if { $use_multi_threading } { releaseMultiCpuLicense } setDrawView place source ./scripts/pgconn.tcl ### ### Design Save ### if { $enable_save_after_std } { saveDesign ${top_name}_std.enc }
source ./scripts/var.tcl # ## ### Trial Route ## # set max_layer 6 set min_layer 1 setTrialRouteMode \ -floorPlanMode false \ -detour true \ -highEffort true \ -maxRouteLayer ${max_layer} \ -minRouteLayer ${min_layer} \ -handlePreroute false \ -autoSkipTracks false \ -handlePartition false \ -handlePartitionComplex false \ -useM1 false \ -keepExistingRoutes false \ -ignoreAbutted2TermNet false \ -pinGuide true \ -honorPin false \ -selNet {} \ -selNetOnly {} \ -selMarkedNet false \ -selMarkedNetOnly false \ -ignoreObstruct false \ -PKS false \ -updateRemainTrks false \ -ignoreDEFTrack false \ -printWiresOnRTBlk false \ -usePagedArray false \ -routeObs true \ -routeGuide {} \ -blockageCostMultiple 1 \ -maxDetourRatio 0 trialRoute setDrawView place
source ./scripts/var.tcl source ./scripts/opcond.tcl extractRC delayCal -sdf ${top_name}.sdf -idealclock wireload -outfile ${top_name}.wl -percent 1.0 -cellLimit 100
# ## ### Static Timing Analsysis for preCTS design ## # clearClockDomains setClockDomains -all timeDesign \ -preCTS \ -reportOnly \ -idealClock \ -pathReports \ -drvReports \ -slackReports \ -numPaths 5 \ -prefix ${top_name}_preCTS \ -outDir timingReports ### ### pre-CTS optimization ### clearClockDomains setClockDomains -all setOptMode \ -usefulSkew false \ -congOpt true \ -fixDRC true \ -fixFanoutLoad true \ -verbose true optDesign -preCTS -setup -drv source ./scripts/pgconn.tcl ### ### Design Save ### if { $enable_save_after_preCTS } { saveDesign ${top_name}_preCTS.enc }
source ./scripts/var.tcl source ./scripts/opcond.tcl # ## ### CTS ## # source ./scripts/pgconn.tcl createClockTreeSpec \ -output Clock.ctstch \ -bufferList \ SC22CKBUFBCLXH1\ SC22CKBUFBCLXL1\ SC22CKBUFCLXH1 \ SC22CKBUFCLXL1 \ SC22CKBUFCLXP1 \ SC22CKBUFCLXR1 \ SC22CKBUFCLXT1 \ SC22CKINVBCLXH1\ SC22CKINVBCLXL1\ SC22CKINVBCLXP1\ SC22CKINVBCLXR1\ SC22CKINVBCLXT1\ SC22CKINVCLXH1 \ SC22CKINVCLXL1 \ SC22CKINVCLXP1 \ SC22CKINVCLXR1 \ SC22CKINVCLXT1 続く
set top_prefer_layer 8 set bottom_prefer_layer 3 setCTSMode \ -traceDPinAsLeaf false \ -traceIoPinAsLeaf false \ -routeClkNet true \ -routeGuide true \ -topPreferredLayer ${top_prefer_layer} \ -bottomPreferredLayer ${bottom_prefer_layer}\ -routeNonDefaultRule {} \ -useLefACLimit false \ -routePreferredExtraSpace 1 \ -opt true \ -optAddBuffer true \ -moveGate true \ -useHVRC true \ -fixLeafInst true \ -fixNonLeafInst true \ -verbose false \ -reportHTML false \ -addClockRootProp false \ -nameSingleDelim false \ -honorFence false \ -useLibMaxFanout true \ -useLibMaxCap true clockDesign -specFile Clock.ctstch -outDir clock_report -fixedInstBeforeCTS setLayerPreference net -isVisible 0 displayClockTree -skew -allLevel -preRoute ### ### Design Save ### if { $enable_save_after_CTS } { saveDesign ${top_name}_CTS.enc }
source ./scripts/var.tcl source ./scripts/opcond.tcl redraw setLayerPreference net -isVisible 1 # ## ### Trial Route after CTS ## # setTrialRouteMode \ -highEffort true trialRoute ### ### Static Timing Analysis for postCTS design ### extractRC delayCal -sdf ${top_name}.sdf -idealclock wireload -outfile ${top_name}.wl -percent 1.0 -cellLimit 100 # for design rule and setup time violations timeDesign \ -postCTS \ -reportOnly \ -pathReports \ -slackReports \ -numPaths 5 \ -prefix ${top_name}_setup_postCTS \ -outDir timingReports # for hold time violations timeDesign \ -postCTS \ -hold \ -reportOnly \ -pathReports \ -slackReports \ -numPaths 5 \ -prefix ${top_name}_hold_postCTS \ -outDir timingReports ### ### Post CTS Optimization ### setOptMode \ -effort high \ -leakagePowerEffort none \ -yieldEffort none \ -simplifyNetlist false \ -setupTargetSlack 0.5 \ -holdTargetSlack 0.5 \ -maxDensity 0.95 \ -drcMargin 0 \ -usefulSkew true optDesign -postCTS -hold -setup -drv fit redraw source ./scripts/pgconn.tcl ### ### Design Save ### if { $enable_save_after_postCTS } { saveDesign ${top_name}_postCTS.enc }
source ./scripts/var.tcl source ./scripts/opcond.tcl # ## ### Routing (Nano Route) ## # if { $use_lsf } { setDistributeHost \ -lsf \ -queue { normal } setReleaseMultiCpuLicense true setMultiCpuUsage \ -numThreads 1 \ -numHosts 1 \ -superThreadsNumThreads 1 \ -superThreadsNumHosts 2 } elseif { $use_ssh } { setDistributeHost \ -ssh \ -add ${host1} ${host2} ${host3} setReleaseMultiCpuLicense true setMultiCpuUsage \ -numThreads 1 \ -numHosts 1 \ -superThreadsNumThreads 1 \ -superThreadsNumHosts ${num_hosts} } else { # normal if { $use_multi_threading } { setReleaseMultiCpuLicense true setMultiCpuUsage \ -numThreads ${num_threads} \ -numHosts 1 \ -superThreadsNumThreads ${num_threads} \ -superThreadsNumHosts 1 } else { setReleaseMultiCpuLicense true setMultiCpuUsage \ -numThreads 1 \ -numHosts 1 \ -superThreadsNumThreads 1 \ -superThreadsNumHosts 1 } } source ./scripts/pgconn.tcl setAttribute -net * -si_post_route_fix true setNanoRouteMode -drouteAntennaEcoListFile Antenna_list setNanoRouteMode -routeWithSiDriven true setNanoRouteMode -routeWithSiPostRouteFix true setNanoRouteMode -routeSiEffort low # The router globally routes the design setNanoRouteMode -routeWithTimingDriven true setNanoRouteMode -routeWithSiDriven true routeDesign -global # The router does the initial detailed routing # (iteration 0 does not include a search-and-repair step), and saves the design as droute0: setNanoRouteMode -routeWithTimingDriven true setNanoRouteMode -drouteStartIteration 0 setNanoRouteMode -drouteEndIteration 0 routeDesign -detail saveDesign droute0.enc # The router does the first search-and-repair iteration # and saves the design for analysis: setNanoRouteMode -routeWithTimingDriven true setNanoRouteMode -drouteStartIteration 1 setNanoRouteMode -drouteEndIteration 1 routeDesign -detail saveDesign droute1.enc # The router does the second to nineteenth search-and-repair iterations and # saves the design for analysis. The switch box grows larger as the iteration number increases. setNanoRouteMode -routeWithTimingDriven true setNanoRouteMode -drouteStartIteration 2 setNanoRouteMode -drouteEndIteration 19 routeDesign -detail saveDesign droute19.enc # The router runs postroute optimization (drouteEndIteration default) # and additional search-and-repair operations and saves the design as droute: setNanoRouteMode -routeWithTimingDriven true setNanoRouteMode -routeInsertAntennaDiode true setNanoRouteMode -drouteUseMultiCutVia true setNanoRouteMode -routeStrictlyHonorNonDefaultRule true setNanoRouteMode -routeWithSiDriven true setNanoRouteMode -drouteStartIteration 20 setNanoRouteMode -drouteEndIteration default routeDesign -detail -viaOpt source ./scripts/pgconn.tcl saveDesign droute.enc releaseMultiCpuLicense ### ### Design Save ### if { $enable_save_after_groute } { saveDesign ${top_name}_route.enc }
source ./scripts/var.tcl source ./scripts/opcond.tcl # ## ### Eco Route ## # source ./scripts/pgconn.tcl deleteroutinghalo -allBlocks if { $use_multi_threading } { setReleaseMultiCpuLicense true setMultiCpuUsage \ -numThreads ${num_threads} \ -numHosts 1 \ -superThreadsNumThreads ${num_threads} \ -superThreadsNumHosts 1 } else { setReleaseMultiCpuLicense true setMultiCpuUsage \ -numThreads 1 \ -numHosts 1 \ -superThreadsNumThreads 1 \ -superThreadsNumHosts 1 } setNanoRouteMode -reset setNanoRouteMode -routeTopRoutingLayer 9 setNanoRouteMode -routeInsertAntennaDiode true setNanoRouteMode -routeWithEco true setNanoRouteMode -drouteStartIteration 0 globalDetailRoute source ./scripts/pgconn.tcl setNanoRouteMode -routeWithEco false setNanoRouteMode -reset releaseMultiCpuLicense
source ./scripts/var.tcl source ./scripts/opcond.tcl # ## ### Post Route ## # # ## ### Timing Analysis ## # extractRC delayCal -sdf ${top_name}.sdf wireload -outfile ${top_name}.wl -percent 1.0 -cellLimit 100 clearClockDomains setClockDomains -all ### ### Post Route Optimization ### setOptMode \ -effort high \ -leakagePowerEffort none \ -yieldEffort none \ -simplifyNetlist false \ -setupTargetSlack 0.5 \ -holdTargetSlack 0.5 \ -maxDensity 0.95 \ -drcMargin 0 \ -usefulSkew true # for design rule and setup time violations timeDesign \ -postRoute \ -reportOnly \ -pathReports \ -slackReports \ -numPaths 5 \ -prefix ${top_name}_setup_postRoute \ -outDir timingReports optDesign -postRoute -setup -drv # for hold time violations timeDesign \ -postRoute \ -reportOnly \ -hold \ -pathReports \ -slackReports \ -numPaths 5 \ -prefix ${top_name}_hold_postRoute \ -outDir timingReports optDesign -postRoute -hold redraw source ./scripts/pgconn.tcl ### ### Design Save ### if { $enable_save_after_postroute } { saveDesign ${top_name}_postRoute.enc }
source ./scripts/var.tcl source ./scripts/opcond.tcl # ## ### Add Filler ## # source ./scripts/pgconn.tcl getFillerMode findCoreFillerCells addFiller -cell SC22YUZS021 SC22YUZS011 -prefix FILLER -markFixed source ./scripts/pgconn.tcl
source ./scripts/var.tcl source ./scripts/opcond.tcl # ## ### Verify ## # clearDrc ### ### Verify Antenna ### verifyProcessAntenna -reportfile ${top_name}.antenna.rpt -leffile ${top_name}.antenna.lef -error 1000 続く
### ### Verify Connectivity ### verifyConnectivity -type all -error 1000 -warning 50 続く
### ### Verify Geometry ### verifyGeometry -antenna -error 10000 -cpu 3 続く
### ### Check Design ### checkDesign -io -netlist -physicalLibrary -powerGround -tieHilo -timingLibrary -floorplan -place -outdir checkDesign 続く
### ### Gate Count ### reportGateCount -level 5 -limit 100 -outfile ${top_name}.gateCount ### ### Report Summary ### summaryReport -outdir summaryReport
source ./scripts/var.tcl # ## ### Save ## # source ./scripts/pgconn.tcl # StreamOut setting. setStreamOutMode -SEcompatible ON -SEvianames ON ### GDS out streamOut ${top_name}.gds \ -mapFile gds2.map \ -libName DesignLib \ -structureName ${top_name}\ -stripes 1 \ -units 1000 \ -mode ALL saveNetlist ${top_name}.v saveNetlist ${top_name}.v.lvs -includePhysicalInst write_sdf -version 3.0 -edges noedge -nonegchecks ${top_name}.sdf ### Save saveDesign ${top_name}.enc
setOpCond -maxLibrary cs202sn_uc_core_s_p125_105v -max DEFAULT -minLibrary cs202sn_uc_core_f_m40_13v -min DEFAULT
### ### Technology Settting ### # true: 12-metal false: 7-metal set use_12tech_file true ### ### Global Variables ### # Top Module Name set top_name "MUCCRA_TOP" #set lib_home_dir "/home/vdec/lib/fujitsu65/cs202_sc_io_lib/lib" #set lib_ram_dir "/home/vdec/lib/fujitsu65/memory/muccra/ramcell/dc" set lib_dir "./lib" set lef_dir "./lef_file" set gds_dir "./gds" set source_dir "./srcNet" set max_lib_file " ${lib_dir}/cs202sn_uc_nscan_s_p125_105v.lib ${lib_dir}/cs202_io_s_p125_m_105v_30v.lib ${lib_dir}/cs202_cc_s_p100_11v.lib ${lib_dir}/cs202sn_uc_core_s_p125_105v.lib" set min_lib_file " ${lib_dir}/cs202sn_uc_nscan_f_m40_13v.lib ${lib_dir}/cs202_io_f_m40_m_13v_36v.lib ${lib_dir}/cs202_cc_s_m40_11v.lib ${lib_dir}/cs202sn_uc_core_f_m40_13v.lib " set cap_t "${lib_dir}/basic.capTbl.typ" set cap_b "${lib_dir}/basic.capTbl.best" set cap_w "${lib_dir}/basic.capTbl.worst" set lef_file " ${lef_dir}/tech_12S3G2.lef ${lef_dir}/uc_CS202SN.lef ${lef_dir}/io.lef ${lef_dir}/RAMROM.lef" ### ### Save Point ### set enable_save_after_floorplan 0 set enable_save_after_padpin 1 set enable_save_after_std 1 set enable_save_after_preCTS 1 set enable_save_after_CTS 1 set enable_save_after_postCTS 1 set enable_save_after_sroute 1 set enable_save_after_groute 1 set enable_save_after_postroute 1 set enable_save_after_filler 1 set enable_save_after_finish 1 ### ### Boost Option ### # LSF Distribution # # <** WARNING **>This option is currently unavailable # <** WARNING **>LSF is not working correctly # # Only Available on Host : hogehoge # # This option is used in Nanoroute(route.tcl) set use_lsf false # SSH Distribution # # This option uses other machines # You can identify many machines, but be careful # someone uses specified machine # # If you specified more than 3 machines # You need to change route.tcl file also # # This option is used in Nanoroute(route.tcl) set use_ssh false set num_hosts 3 set host1 host1 set host2 host2 set host3 host3 #set host4 # Multi-Threading # # <** WARNING **>This option sometime down the Encounter # # This option is available in Standard Cell Placement(std_cell_place.tcl) set use_multi_threading true set num_threads 3 ### Nano Route Option setNanoRouteMode -reset setNanoRouteMode -routeTopRoutingLayer 9 ## nanoroute setting. (drc/ant) setNanoRouteMode -dbAutoBlockCoverPin true setNanoRouteMode -dbSkipAnalog true setNanoRouteMode -drouteAllowMergedWireAtPin false setNanoRouteMode -drouteConnectTieNetCutNumber 2 #setNanoRouteMode -drouteConnectTieNetCutNumber 4 #setNanoRouteMode -drouteConMinimizeViaCount true setNanoRouteMode -drouteExpAlignWireEdgeWithPin true setNanoRouteMode -drouteHonorStubRuleForBlockPin true setNanoRouteMode -drouteUseMinSpacingForBlockage false setNanoRouteMode -drouteViaOnGridOnly true setNanoRouteMode -routeExtraViaEnclosure "0.250" #setNanoRouteMode -routeExpAutoOptimalGgrids true setNanoRouteMode -routeAutoGgrid true setNanoRouteMode -routeIgnoreAntennaTopCellPin false setNanoRouteMode -routeMergeSpecialWire true setNanoRouteMode -routeStrictlyHonorNonDefaultRule true setNanoRouteMode -routeStripeLayerRange "1:5" setNanoRouteMode -routeWithViaInPin true setNanoRouteMode -routeWithViaOnlyForStandardCellPin true ## nanoroute setting. (dfm) setNanoRouteMode -drouteUseMultiCutViaEffort high #####################setNanoRouteMode -routeWithLithoDriven true setAttribute -net * -si_post_route_fix true setNanoRouteMode -drouteAntennaEcoListFile Antenna_list setNanoRouteMode -routeWithSiDriven true setNanoRouteMode -routeWithSiPostRouteFix true setNanoRouteMode -routeSiEffort low
set_units -time ps -resistance Ohm -capacitance pF -voltage V -current mA ↓ set_time_unit ps
set_operating_conditions -max DEFAULT -max_library cs202sn_uc_core_s_p125_105v\ -min DEFAULT -min_library cs202sn_uc_core_f_m40_13v ↓ setOpCond -maxLibrary cs202sn_uc_core_s_p125_105v -max DEFAULT -minLibrary cs202sn_uc_core_f_m40_13v -min DEFAULT
set_driving_cell -lib_cell SC22INVXA1 -library cs202sn_uc_core_s_p125_105v [get_ports {MUCCRA_ADDR[10]}] ↓ set_driving_cell -lib_cell SC22INVXA1 [get_ports {MUCCRA_ADDR[10]}]
#set_max_area 0 #set_ideal_network [get_ports CLK] #set_ideal_network [get_ports RST_N]
Orient: R180 Offset: 0 Pad: CORNER_SW SW Orient: R180 Offset: 170 Pad: F1_0 S Orient: R180 Offset: 171 Pad: F2_0 S Orient: R180 Offset: 173 Pad: F5_0 S Orient: R180 Offset: 178 Pad: IO_CLK_B0 S Orient: R180 Offset: 178 Pad: IO_CLK_B0_TOP S Orient: R180 Pad: F20_0 S Orient: R180 Offset: 238 Pad: IO_RST_N0 S Orient: R180 Offset: 238 Pad: IO_RST_N0_TOP S Orient: R180 Pad: F20_1 S Orient: R180 Offset: 298 Pad: IO_MUCCRA_ADDR10 S Orient: R180 Offset: 298 Pad: IO_MUCCRA_ADDR10_TOP S Orient: R180 Pad: F20_2 S Orient: R180 Offset: 358 Pad: IO_MUCCRA_ADDR9 S Orient: R180 Offset: 358 Pad: IO_MUCCRA_ADDR9_TOP S Orient: R180 Pad: F5_1 S Orient: R180 Pad: F10_0 S Orient: R180 Offset: 413 Pad: VDD_00 S Orient: R180 Offset: 413 Pad: VDD_00_TOP S ・ ・ ・