Workshop Manual

download Workshop Manual

of 21

description

A manual of Synopsys ICC workshop

Transcript of Workshop Manual

  • 1Lab-1IC Compiler - Data Setup (30 mins)

    IntroductionIn this lab you are provided with Verilog netlist, timing constraints (SDC) and Floorplan

    data for a design called RISC_CHIP. You will create a Milkyway design library from theprovided design data in the first part of the lab. In the second part of the lab, you will place thestandard cells, create the clock tree and route the RISC_CHIP design using the basic ICC flow.

    Inputs required for PnR

    1. Logical Libraries (.lib/.db files): These files contain the functionality information of eachstandard cell in the database and also consist of cell-delay tables, pin transition and otherlogical information which will be used by ICC during the Physical Design process.

    2. Physical Libraries (.mw/.lef files): These files contain all the physical attributes of thestandard cells like width, height and pin location.

    3. Netlist: This is the Gate Level Verilog for the design.

    4. SDC: Synopsys Design Constraint file will have the clock information for the clocks inthe design, delay information for IOs, uncertainty, etc.

    5. DEF: Design Exchange Format file which contains design specific details like Floorplanwidth/height, Powerplan, Macro and IO location etc. Generally, it is the task of thedesigner to come up with these attributes for each design, but for the sake of this lab thesame information is provided to you in the form of a DEF.

    6. Tech File: This is given by the Foundry who provides you with the standard cellcollaterals like logical and physical libraries, which contains the information about thetechnology, metal and via definitions and DRC rules that the tool needs to adhere to.

  • 2Task-1: Creating Milkyway Library

    1. Change your current directory to lab1_data_setup and look at the contents of thedirectory.

    cd lab1_data_setupls la

    You should see the list of directories and .synopsys_dc.setup file. Open the file by typingthe following command.

    vi .synopsys_dc.setupThis file contains the logic library settings and user defined variables and the file issourced automatically when the ICC session is invoked.

    2. Start ICCompiler from UNIX prompt.icc_shell

    3. Open the gui.icc_shell> start_gui

    You shall see the gui for the ICC tool.

    4. Let us create milkyway library now.a. Use the MainWindow menu File->Create Libraryto bring up the Create Librarydialog box.b. Use the variables already defined for the library and tech file names.

    2

    Task-1: Creating Milkyway Library

    1. Change your current directory to lab1_data_setup and look at the contents of thedirectory.

    cd lab1_data_setupls la

    You should see the list of directories and .synopsys_dc.setup file. Open the file by typingthe following command.

    vi .synopsys_dc.setupThis file contains the logic library settings and user defined variables and the file issourced automatically when the ICC session is invoked.

    2. Start ICCompiler from UNIX prompt.icc_shell

    3. Open the gui.icc_shell> start_gui

    You shall see the gui for the ICC tool.

    4. Let us create milkyway library now.a. Use the MainWindow menu File->Create Libraryto bring up the Create Librarydialog box.b. Use the variables already defined for the library and tech file names.

    2

    Task-1: Creating Milkyway Library

    1. Change your current directory to lab1_data_setup and look at the contents of thedirectory.

    cd lab1_data_setupls la

    You should see the list of directories and .synopsys_dc.setup file. Open the file by typingthe following command.

    vi .synopsys_dc.setupThis file contains the logic library settings and user defined variables and the file issourced automatically when the ICC session is invoked.

    2. Start ICCompiler from UNIX prompt.icc_shell

    3. Open the gui.icc_shell> start_gui

    You shall see the gui for the ICC tool.

    4. Let us create milkyway library now.a. Use the MainWindow menu File->Create Libraryto bring up the Create Librarydialog box.b. Use the variables already defined for the library and tech file names.

  • 3c. Attach reference libraries to your design library:Click the Add button. Move up one level directory back, then double-click reffollowed by mw_lib.Select the standard cell library sc and click OK to add it to the list.

    d. Add the io and ram16x128 libraries as well.e. Select the Open librarycheck box to open the design library after it is created.f. Click OK.

    5. The following command is the equivalent of the GUI operation above:create_mw_lib -technology $tech_file -mw_reference_library \$mw_path/sc $mw_path/io $mw_path/ram16x128 \-bus_naming_style {[%d]} open $my_mw_lib

    6. Note the contents of the newly created UNIX directory risc_chip.mw (thedesign library).

    icc_shell> ls risc_chip.mw

    Task-2: Load the Netlist, TLU+, Constraints.

    1. Before reading in the Verilog netlist make sure the design library is open: Aneasy way to do so is by checking if the File->Open Library entry isgrayed out. If it is, this confirms that a design library is currently open.

    2. If the library is not opened, we shall open it using the following command.open_mw_lib risc_chip.mw

    3. The following command is used to read in the Verilog file.import_designs $verilog_file -format verilog \-top $top_design

    4. The Verilog_file and top_design are the user defined variables that is sourced from setupfile automatically. See the values stored in these variables, you can do the followingcommands.

    echo $verilog_fileecho $top_design

    5. The Verilog netlist is read in and a LayoutWindow opens, displaying all thenetlist cells stacked on top of each other at the origin. The larger IO pad andmacro cells are shown in light blue. The much smaller standard cells are inlight purple (you may need to zoom in to the lower left corner to see them).

    6. Now let us set the tlu+ files. The folloing command is used to set this up.set_tlu_plus_files -max_tluplus $tlup_max -min_tluplus $tlup_min \-tech2itf_map $tlup_map

    7. Check that TLU+ files are attached and that they pass three sanity checks:

  • 4check_tlu_plus_filesYou should see a listing of the files for max_tlu+, min_tlu+ andmapping_file and all sanity checks should say [Passed!]

    8. Verify that the specified link libraries have been loaded:list_libs

    9. Apply the top level design constraints:read_sdc $sdc_file

    10. Verify that the clocks are appropriately modeled:report_clock

    11. Read the Def file using the following command.read_def $def_file

    12. Now, click on the layout window. To the left bottom of the window, you will notice atask bar called Layout.1

    13. Maximize the Layout.1 task bar. To fit the design in the viewer, press f. You shall seethe floorplan of the design.

    14. You can zoom out and zoom in by scrolling the mouse up and down respectively.

    15. To Select the cell cornerul which is seen at the top left of the design, please move themouse pointer on top of it and left click.

    16. To unselect the selection, right click on the viewer and do a left click on the clearselection button.

    17. Save the cell and notice the new binary files under risc_chip.mw/CEL:save_mw_cel as RISC_CHIP_data_setup

    YOU ARE DONE WITH LAB 1

  • 5Lab-2IC Compiler - Macro-placement & Power planning (45 mins)

    Purpose:

    The purpose of this lab is for you to become familiar with the design planning capabilities in ICCompiler. This lab takes you through the core and placement row structure definition, locatingsignal, P/G pads, insertion of filler pads, manual and virtual flat macro placements, congestonanalysis, Power Network Synthesis and timing.

    Relevant Files and Directories

    All files for this lab are located in the lab2_dp directory under your home directory.

    lab2_dp/

    orca_lib.mw/CEL

    orca_setup The ORCA design after data setup, savedin Milkyway format.

    design_data/ Contains the ORCA design input data

    ORCA_2.v Second-pass Verilog netlistORCA_2.sdc Second-pass SDC timing constraints

    scripts/ Contains various floorplanning scripts

    connect_pg.tcl Logically connect all P/G pins to nets

    insert_pad_filler.tcl Insert pad fillers

    keepout.tcl Placement keepout for all macros

    macro_place_cons.tcl Macro placement constraints

    macro_pg_rings.tcl Create P/G rings around macro groups

    opt_ctrl.tcl Timing and optimization controls

    pad_cell_cons.tcl Define pad cell locations

    pns.tcl Power network constraints/synthesis

    preplace_macros.tcl Place three macros connected to IO pads

  • 6Task1. Load the Design:1. Change to the lab2_dp directory, invoke IC Compiler and start the GUI:

    cd lab2_dpicc_shell gui

    2. Open the orca_setup cell from the orca_lib.mw design library by selecting file- opendesign and select library name orca_lib.mw.

    3. Apply timing and optimization controls which are specified in ./scripts/opt_ctrl.tcl:source scripts/opt_ctrl.tcl

    Task 2. Initialize the floorplan

    1. Create the corner and P/G cells and define all pad cell positions using a provided script:source echo scripts/pad_cell_cons.tcl

    2. Initialize the floorplan:Select Floorplan-Initialize FloorplanChange the Core utilization to 0.8 (80%).Change the Core to left/right/bottom/top spacing to 30.Click OK.Fit [F] the LayoutWindow and have a look at the chips core and peripheryareas.

    3. Insert pad fillers by the following command:source scripts/insert_pad_filler.tcl

    Zoom into the space between two pad cells and notice the filler cells inserted.

    4. Make the logical connection (no physical routing) between the power/ground signalsand all power/ground pins of the I/O pads, macros and standard cells, by executing thefollowing script:

    source echo scripts/connect_pg.tcl

    5. Build the PAD area power supply ringcreate_pad_rings

    6. Save the design as floorplan_initsave_mw_cel as floorplan_init

  • 7Task 3. Preplace the Macros connected to I/O pads

    You will preplace few macros connected to the IO pads manually.

    In this task you will identify the macros that are connected to I/O pad cells and youwill manually place them in the core area such that their connections to the I/O padsare as short as possible.

    1. Zoom in to see the top periphery area shown in Figure 1 below.

    2. Identify macros that connect to I/O pads, as follows:Choose SelectCellsBy TypesClick the Uncheck All button in the top (Cell Type) section of the dialog box.Select the Macro cell type check box.Click the Select All button in lower left corner of the dialog box.Click OK.Notice that all the macros are now selected highlighted in white.

    Select the Flylines button from the top banner section ofthe LayoutWindow.In the Show flylines panel that appears on the right side of the window clickon the pull-down menu and choose Selected to IO and Apply.Reduce the brightness to 50% or less to better see the three flylines. Thethree lower left macros show connections to the top IO pads.

    3. Keep the Show flylines panel open and, if needed, adjust the viewing area(pan/zoom) to see the picture below. If you accidentally unselect the macrosand the flylines disappear, use the [Ctrl] key to re-select the three circledmacros shown here, and the flylines will re-appear.

    Figure 1. Flylines of the IO macro connections.

  • 84. The three macros with a direct connection to IO pad cells are calledI_CLOCK_GEN/I_PLL_PCI, I_CLOCK_GEN/I_PLL_SD andI_CLOCK_GEN/I_CLKMUL. Hover your mouse arrow over a cell to see its informationwindow in the lower-left area. The two PLLs in this design should be placed towards thetop left and right corners of the chip so they are closer to their respective clock pads.

    5. Now you will manually move the I_PLL_PCI macro, which is connected to

    the left pad, into the core area. Keep in mind that you can use the undobutton to back track your steps.a. Select just the I_PLL_PCI macro using Selection Tool button.b. Select the Move/Resize Tool (M) button (may be in the leftbanner of the window) to begin the moving process.Drag the I_PLL_PCI macro to approximately the top-left corner ofthe core area. Leave some room to the edges of the core.

    c. With the PLL still selected, use the align functions to align the PLL tothe top and left edges of the core:Click the Align Objects to Left button to align it to the cores left edgeFrom the pull-down menu select the Align Objects to Top button to align it to the corestop edge. The PLL is now aligned with the edges of the core.

    d. To make sure that the cell is not moved by virtual flat placement, click on thepadlock button to lock it down. You should see an X through the cellnow. This is an alternative to using

    set_dont_touch_placement.

    6. Try to move the fixed I_PLL_PCI macro. You should not be able to do so. If you areable to move it, use the undo button to put it back and fix it in place. Dont worry ifyou make a mistake since you will be provided with a script to place these macros at theexpected coordinates in a later step.Use the [ESC] key as needed to return the cursor to the select mode.

    7. To ensure the three macros are placed as desired, source the following scriptsource echo scripts/preplace_macros.tcl

    Task 4. Create P/G rings around the macro groups

    Power Network Synthesis (PNS) automates the creation of power/ground core and individualmacro rings, as well as vertical and horizontal straps.

    We have created a script to create P/G rings around six groups of macros.

  • 9Take a look at the file located at ./scripts/macro_pg_rings.tcl. The P/G rings are created by:- Defining a rough region that encompasses a group of macros- Defining the block ring layers, widths and offsets- Creating (committing) the metal routes

    Source the following script file,source echo /scripts/macro_pg_rings.tcl

    Task 5. Power Network Synthesis

    Power Network Synthesis (PNS) automatically determines the number and width of P/G straps,as well as the core ring width, based on a target IR drop.

    1. The script file does the PNS:source scripts/pns.tcl

    2. Build the suggested power plancommit_fp_rail

    Zoom into your chip to see how all PG straps and rings were created.Notice that there are no connections between the macros and the surrounding powerrings. Notice also that there are no P/G rails along the standard cell placement rows.

    3. To complete power plan we need to hook up the power pins on all macros, and createthe standard cell power rails. Execute the following commands to accomplish this

    preroute_instancespreroute_standard_cells fill_empty_rows -remove_floating_pieces

    Zoom in and notice the macro pin connections and the blue P/G rails on metal1 (calledMETAL).

    4. Now analyze the completed power plan using Preroute->Analyze Power NetworkEnter the same values for Power Ground nets (VDD VSS), Power budget (350 mW),Supply voltage (1.32 V), and Specified pad masters (pv0i pvdi) that were usedpreviously for Power Network Synthesis, then press OK.You will see another heat map.Close the PNA Voltage Drop on the right by clicking on its small x.

    5. Save the cellsave_mw_cel as floorplan_pns

    Task 7. Check the timing

    Now that the power plan is done, you have to perform a few more steps to completethe placement and to verify max-delay timing.

    1. Apply a complete power net (pnet) blockage on the straps, then run the virtual flatplacement to take pnet settings into account

  • 10

    Create_fp_placement timing_driven no_hierarchy_gravity

    2. Since we need to perform timing check, perform routing using the following commandroute_zrt_global

    3. Analyse the Global Congestion map again.report_congestion -grc_based -by_layer -routing_stage global

    4. Observe the slack on the timing reportreport_timing

    5. Save the cellsave_mw_cel as floorplan_complete

    YOU ARE DONE WITH LAB 2

  • 11

    Lab-3IC Compiler - Placement (45 mins)

    INTRODUCTION

    In this lab you are provided with a floorplanned design called ORCA_floorplaned whichis ready for the placement phase. You will be executing the appropriate placement steps and thenperform the standard cell placement. After this, you will analyze the results and additional stepsto improve the results.

    RELEVANT FILES

    1. Change your current directory to lab3_placement directory.lab3_placement/

    orca_lib.mw/CELORCA_floorplanned This is the ORCA floorplanned design

    saved in the milkyway format.scripts/inputs_toggle_rate.tcl Script to set the toggle rates for the input

    ports.ndr.tcl Script containing commands to define

    the non-default clock routing rules.opt_ctrl.tcl Timing and Optimization controls.

    design_data/ORCA_TOP.scandef Scan chain information used during the

    scan chain re-ordering.synopsys_dc.setup Setup variables those are automatically

    sourced when the icc_shell is pulled up.INSTRUCTIONS

    Task-1 Pre-placement Settings and Checks1. Invoke ICC shell GUI from the lab3_placement directory.

    cd lab3_placementicc_shell -gui

    2. Open design library and open the floorplanned design cell.open_mw_lib orca_lib.mwopen_mw_cel ORCA_floorplanned

    3. Applying timing and optimization controls:source scripts/opt_ctrl.tcl

  • 12

    this file contains all the required variable those are needed to be set before the placementis done.

    4. Now let us set the macro to be fixed. This is done by using the following command.set_dont_touch_placement [all_macro_cells]

    this is to ensure that no macros are supposed to be moved during the placement stage.

    5. Verify the metal layers available for routing- there shouldnt be any ignored layers.report_ignored_layers

    6. Verify that std-cells are allowed to be placed under the M2-M4 power nets, as long as noDRC violations occur.

    report_pnet_options7. The clock nets will be constrained to be routed on M3-M6 , with double spacing rules.

    Apply all the ndr rules on the clock nets, by sourcing the ndr.tclsource scripts/ndr.tcl

    this file will have the commands to define the 2x spacing rules and a command to applythe rule on the clock nets.(please open the file and have a look)

    8. The scan chains are inserted to the design during the synthesis stage. The scandef file willhave the information of the scan chain insertions. Now let us source the scandef file.

    read_def design_data/ORCA_TOP.scandef9. Let us report the inserted scan chains in the design using the following command.

    report_scan_chain10. Now let us enable the low-power placement dynamic power opt.(LPP)

    set_power_options low_power_placement true11. We have successfully done the setup for the placement to start. Let us save this pre-

    placement design.save_mw_cel as ORCA_preplace_setup

    Task-2 Placement and Optimization

    1. The placement and the optimization of the deisgn is done using the following command.place_opt area_recovery optimize_dft -power

    (note: while the place_opt is running you can observe the output on the screen to get anidea of the optimization that occurs)

    2. Save the current deisgn once the place_opt is complete.save_mw_cel -as ORCA_place_opt

    3. Now we must check if there is any congestion seen in the design. Let us generate acongestion map using the following commands.

    report_congestion grc_based by_layer routing_stage globalyou will notice that the congestion overflow is seen, since the std cells are scattered andare not concentrated in single area.

  • 13

    4. Close the congestion map window after analysing the results.5. Generate a physical design report and scroll to the top of the output.

    report_design physicalthis puts out a report on the utilization of the design and the statistics like how manymacros are there in the design, etc. This also puts out information on how manyinstantiations are there in the design .

    6. Generate a QoR (Quality of results) report:report_qor

    this shows up the quantity of the violations that we have hit after the placement is done.7. Report the power dissipation in the design,

    report_powerthis puts out a report showing the leakage power and the dynamic power consumed forthe complete design.

    Task-3 Incremental Optimization

    From the above analysis steps we have determined that we have some congestion issuesand no significant timing violations. We should perform an incremental opt to improvethe designs area and power utilization.

    1. Let us enable the gate-level dynamic power optimization(GLPO):set_power_options dynamic true

    2. To perform incremental logical opt, we will use the following command.psynopt area_recovery power

    3. Let us analyse the congestion of the design once the opt is complete.report_congestion grc_based by_layer routing_stage global

    4. Generate a physical design report and scroll to the topreport_design physical

    5. Generate QoR reportsreport_qor

    6. Report the power dissipation.report_power

    While there is not much improvement in power optimization since we do nothave SAIF annotations and also we are not providing multi-Vt libraries. In your productiondesign, you should expect a good improvement at this stage.

    7. Save the design and exit IC-Compiler.save_mw_cel as ORCA_placedexit

    YOU ARE DONE WITH LAB 3

  • 14

    Lab 4IC Compiler - Clock Tree Synthesis (45 mins)

    Task-1. Copy and load the working CEL

    1. Invoke the IC Compiler from lab4_cts directorycd lab4_cts

    2. Open the design library orca_lib.mw.copy_mw_cel from place_opt to clock_opt

    This will copy the cell which has previously undergone placement and optimization.

    3. Open the copied cell:open_mw_cel clock_opt

    Task-2. Examine the clock trees:

    4. report_clock skew attributes

    5. view report_constraint -all

    Task-3. Preparing for the clock tree synthesis:

    Many designs will have non default requirements for their clock trees, in which executinga default clock tree synthesis is not sufficient.

    1. NDR is already been invoked during placement stage.2. Verify that layers available for clock routing and buffers available for CTS have

    been correctly defined.report_clock_tree settings

    3. Perform following checks before running CTScheck_physical_design stage pre_clock_opt display

    4. Set the clock delay calculator to Arnoldi. This causes the delay calculation to use themore accurate Arnoldi based delay models on clock nets in post synthesis design.

    set_delay_calculation clock_arnoldi

    Task-4: Perform clock tree synthesis:

    1. Synthesize all clock trees, without any timing:clock_opt only_cts no_clock_route

    2. Review the global skew summary after CTS:report_clock_tree summary

  • 15

    3. Generate a different skew report using clock timing commandreport_clock_timing type skew significant_digits 3

    4. Generate a timing report:report_timing

    From clock network delay (propagated) you can confirm that all clocks networkdelays have been set to propagated mode automatically post-CTS. This means thatfor clock latency calculations, the actual clock network delays are being calculatedand propagated (instead of using the estimated ideal values specified in the SDCconstraints).

    5. Generate constraint report for all violations:report_constraint all

    6. Save the design CEL as clock_opt_ctssave_mw_cell as clock_opt_cts

    Task-5: Perform hold time optimization:

    1. In this task you will fix the hold time violations.set_fix_hold [all_clocks]

    Unless the above attribute is set on the clocks, IC Compiler will not perform anyhold time optimization. It is a good idea to perform area recovery at this stagebecause the clocks are now fully defined, and the critical paths are wellunderstood.

    2. Generate a QoR report:report_qor

    3. Ensure that current RC extraction data is available to capture the more accurateintegrated clock global router (ICGR) data for clock nets (as opposed to virtual-route based data). This is a good practice step that should always be performedprior to clock_opt only_psyn ... :

    extract_rc

    4. Perform post-CTS timing, area and scan chain optimization, without clock routing:clock_opt only_psyn optimize_dft no_clock_route

    During the timing optimization phase, notice the additional column titled MINDELAY COST. This indicates that hold time optimizations are now beingperformed as well, which is due to set_fix_hold.

  • 16

    5. Analyze the design to make sure that all violations setup, hold, design rules arefixed. Generate a QoR report and compare the Design Area to the number recordedabove.

    6. Save the cell as clock_opt_psyn.save_mw_cell as clock_opt_psyn

    Task-6: Route the clocks:1. Route the clocks:

    route_zrt_group -all_clock_nets -reuse_existing_global_route true

    This will perform global routing, track assign and detail routing on all the clock netsin the design.

    2. Analyze all constraints one last time to ensure there are no timing/DRC violations.Since there are no violations, there is no need to perform any additional timingoptimization or clock tree optimization.

    3. Save the cell as clock_opt_route.save_mw_cell as clock_opt_route

    4. If the GUI is closed, open it using gui_start and look at the LayoutWindow.

    5. In the View Settings panel turn off the visibility for Cell, as well as for Power andGround under the sub-category Net Type of the Route category. You can visuallysee now that most of the clock nets are routed on METAL3 and METAL5.

    6. To obtain actual wiring statistics:report_design physical

    Toward the bottom of this report, under the Signal Wiring Statistics section, you canverify that most of the wires are on METAL3-METAL5.

    7. To analyze the clock net level topology, select Clock Trees visual mode to displaythe clock tree type and level information. In the panel that opens, select Reload, thenselect the clock trees you want to see in the pop-up dialog box. Try using the panel on theright to turn on/off each clock level.

    YOU ARE DONE WITH LAB 4

  • 17

    Lab-5IC Compiler Routing (45 mins)

    The purpose of this lab is to familiarize you with the routing capabilities in ICCompiler. You will be performing routeability checks, routing optimizations, DRC and LVSanalysis and fixing LVS errors of the placed design.

    Relevant Files and DirectoriesAll files for this lab are located in the lab5_route directory under your home directory.

    Lab5_route/

    orca_lib.mw/CEL/clock_opt_routeThe ORCA_TOP design, after CTS andclock routing the starting cell for this lab.

    ./scripts Provided scripts for use in this lab.

    Task 1. Load the Design and Common Settings

    1. Change to the lab5_route directory, then invoke IC Compiler. Make aworking copy of the CEL named clock_opt_route from the libraryorca_lib.mw, then open the copy.

    open_mw_lib orca_lib.mwcopy_mw_cel -from clock_opt_route -to signal_routeopen_mw_cel signal_routestart_gui

    2. Post-CTS we want to use slow or maximum delays for setup timing checksand optimization, and fast or minimum delays for hold timing. Check the library listingto verify that each loaded max library has a corresponding min library.

    list_libs

    3. Load the common settings which were used during the placement and CTSphases of this design, and which are also required for the routing phase

    source scripts/common_optimization_settings_icc.tclsource scripts/common_placement_settings.tclsource scripts/common_post_cts_timing_settings.tclsource scripts/common_route_si_settings_zrt_icc.tcl

    Task 2. Ensure the design is ready for routing

    We have purposely introduced a pre-route problem in this design, to enhance thelearning experience. You will uncover and fix the pre-route problem in this task.

  • 18

    1. Analyze the design for setup and hold timing, as well as logical DRCs:report_constraint all

    2. Verify that there are no ideal nets and no high fanout nets:all_ideal_netsall_high_fanout -nets -threshold 501

    If the commands return nothing then the design doesnt have ideal nets or netswith a fanout that is greater than 500.

    3. Verify that the preferred routing directions are as expected, and that TLUPlusfiles are loaded

    report_preferred_routing_directionreport_tlu_plus_files

    4. Verify that all placements are legal:check_legality

    5. Verify that all power and ground pins are physically connected to P/G nets:verify_pg_nets

    6. We will use the error browser to locate the problem:

    In the LayoutWindow select Verification > Error Browser to open the ErrorBrowser dialog window.Check the Rail box (since this is a P/G problem) to the right of the empty rail field andclick on the icon. There should be one error cell highlighted. Click OK to select it.Click OK at the bottom of the Load Error Cell dialog.The Error Browser dialog re-appears. In the top pane select the Rail error type. Adetailed list of errors appears in the second pane, with the first one automatically selected.In the LayoutWindow you should notice that the layout has automatically zoomed to theselected error location.

    If you zoom out a little now, you can more easily see the problem: There are standardcells (purple) that are partially placed under the wide VSS ring (METAL3, red) thatsurrounds the ram16x128 macros. These macro cells have VSS rails (METAL, blue)along their top edges, but are missing a VDD rail along their bottom edges. Thesestandard cells were inserted after the standard cell rails were created, causing the openVDD connections.

  • 19

    7. Fix the P/G connection problem by routing the standard cell P/G rails:preroute_standard_cells -remove_floating_piecesverify_pg_nets

    Task 3. Route and Optimize Design

    1. Enable concurrent redundant via insertion:# Setting this option prior to routing activates via# doubling during route_opt, without the need for a# standalone command. Redundant via insertion can# optionally also be performed during as an explicit# step (command) during chip finishingset_route_zrt_common_options -post_detail_route_redundant_via_insertion\medium

    set_route_zrt_detail_options -optimize_wire_via_effort_level medium

    2. Run the following report commands to check non-default routing rules androuting setup:

    report_routing_rulesreport_route_opt_strategyreport_route_zrt_common_optionsreport_route_zrt_global_optionsreport_route_zrt_track_optionsreport_route_zrt_detail_options

    3. Perform initial routing, which includes global routing, track assignment and

  • 20

    detail routing:route_opt -initial_route_only

    4. Scroll up to the top of the route_opt log and locate the (ROPT-020) informationmessage for global route, track assignment and detail route.

    5. Perform post-initial route optimization with -power to optimize for power. The -skip_initial_route option prevents the initial route from beingcompletely ripped up andre-routed:

    route_opt -skip_initial_route power

    6. Ensure that the logical P/G connections are up to date after routing:derive_pg_connection -power_net VDD -power_pin VDD -ground_net VSS -ground_pin VSSderive_pg_connection -power_net VDD -ground_net VSS -tie

    Task 4. DRC and LVS Error Checking and Fixing

    1. Run the signal route verification tools:verify_zrt_routeverify_lvs

    2. The next step is to run incremental route_opt to see if that will fix the shorts.route_opt incremental

    3. You can try running ECO route.route_zrt_eco

    4. Examine the layout for redundant via insertion. Also, generate the following report andlook for this statement near the end: Double Via rate for all layers:

    report_design_physical route

    5. Save the design as route_opt_final:save_mw_cel -as route_opt_final

    YOU ARE DONE WITH LAB 5

  • 21

    LIST OF COMMONLY USED UNIX COMMANDS

    1. To change directory:cd directory_name

    2. To list the contents of a directoryls a

    3. To return to previous directorycd ..

    4. To open any file

    vim filename