- Congestion
- If the congestion is there in your design first check in which region you got the congestion hotspot
- If it is with cell density use partial blockage , how much percentage you gave to clear the congestion hotspot
- If it is due to pin density , Use cell padding /keep_out_margin ,how much padding number you gave and for which cell/instance/module
- If congestion is there at Macro pins , think about how to resolve the issue
- First check is there any sufficient Blockage or not if it is not there give proper blockage
- keep out margin will also helps
- You may see the shorts on macro pins with routing blockage on it ,so you should reduce the route blockage area on macro
- Check the channel spacing is there or not otherwise you may see the congestion
- Remember in which metal layer, you got the congestion
- Timing
- You should take care about the setup time violations not for Hold time violations but it should be under control
- why we did not check the hold time violations at this stage means clock is not yet build, the delay or not real these delays are estimated delays
- If you get the setup time violations check about the flop location, if it is too far use bounds
- Even though setup time is not fixed ,Get the all nets which are there in that path and you can route it in top metal layer by using specify_net_weight
- Use net guides also you fix the setup time violations set_net_priority which metal layers are used to route first
- If the combinational delay is more than the clock period you should inform to RTL Team, based on there guidelines use multi_cycle paths
- what is the uncertainty, how much value is there for setup and hold uncertainty
- What is latency,how much value you gave for both source and network latency
- If data to data to data check is required for a particular module or module ports
- Density
- check Placement Density
- If the pin density is more ,you have to check the don't touch or don't use attribute on the cells ,If these attributes are not specified tool may use those cells
Search This Blog
Monday, May 17, 2021
Placements checks
PowerPlan checks
- Power nets opens
- Power nets shorts
- No of stripes
- Set to set distance
- Ring width
- Which metal layers are used for power route (For ring and stripes)
- Power hook up was done are not
- Early rail analysis
- Electro migration and IR drop analysis only for power nets
Sunday, May 16, 2021
Floor plan cheeks
- Utilization
- Aspect ratio
- IO clearance
- block size
- Area
- pin/port placement
- Macro placement
- offset value
- Macro orientation
- channel spacing between macros
- Placement blockages
- keep_out margin for macros
ICC commands frequently used at CTS stage
- get_clocks
- get_property [get_clocks clock_name] period
- get_property [get_clocks clock_name] uncertainty
- get_property [get_clocks clock_name] latency
- sizeof_collections [get_clocks]
- report_clock_tree
- report_clock_tree -exceptions
- report_clock_tree -level_info
- report_clock_tree -summary
- report_clock_tree -type latency
- report_clock_tree -local_skew
- get_utilization
- get_buffers *CLK*
- set_dont_touch [get_lib_cells */*DLY*] false
- set_dont_touch [get_lib_cells */*CLKBUF*] false
- set_dont_touch [get_lib_cells */*CLKINV*] false
- report_clock_tree_power
- report_clock_tree -interclock_timing
- report_clock_timing -type latency
Report_timing
Report_timing Switches
- report_timing -late
- report_timing -early
- report_timing -from u123/y -to u124/b
- report_timing -from u123/y -through u124/b -to reg/D
- report_timing -path_type max -path_group r2r
- report_timing -max_paths 50 -nworst 500
- report_timing -slack_lessor_than 0 -delay_type max
- report_timing -slack_greater_than 0 -delay_type min
- report_timing -format {cell arc instance slack startPoint endPoint}
- report_timing -collection [get_clocks clock_name]
Virtual clock
Virtual clock
- Virtual clock is a clock it is doesn't associated with any clock pin or Port of the design
- it will be used to validate the input to output timing paths
- It is reference to static timing analysis to validate the reg2out ,in2out paths or in2reg paths
Data Arrival time and Data required time
Data Arrival Time:
- Time taken by the signal to propagate from clock definition point to the D pin of the capturing flop is called as data arrival time
- DAT = Tlaunch + Tcq+Tcombo+net delays
- Data required time is the time taken by the signal from clock definition point to the clock pin of the capturing flop is called as the data required time
- DRT = Tclk +Tcapture +clock logic Delay -Tsetup -Tuncrtainty+clock net delay for setup time analysis
Transition, Slew, skew and cell Delay
Transition:
- Time taken by the signal can change their state from 0 to 1 or 1 to 0 is called as the Transition
Slew:
- The rate of change of transition is called as Slew
- The clock path arrival difference between the two successive clocks is called as Skew
- Cell delay is based on input transition and output load is called as cell delay
- This delay is based on cell rise and cell fall delay
Floor plan commands in innovus
Floor plan Reports
- checkFPlan -reportUtil
- checkPlace
- Check_timing -verbose
- CheckNetlist
- CheckUnique
- Report_qor
- Report_timing
- checkPinAssignment
- checkDesign -all
- report_constraints
- all_analysis_views
- report_analysis_summary
Latency
Clock Latency
- Latency is the combination of both source latency and network latency
- Clock Latency = source latency + Network latency
Time taken by the signal to propagate from the clock source to clock definition point
Network latency:
Time is taken by the signal to propagate from clock definition point to register clock pin
How to give the latency target by command
- set_clock_latency 0.2 -rise [get_clocks clock]
- set_clock_latency 0.1 -fall [get_clocks clock]
- set_clock_latency -source 0.300 -early [get_clocks clock]
- set_clock_latency -source 0.400 -late [get_clocks clock]
How to reduce the cross talk
Cross talk reduction techniques:
- Use the shielding
- Apply NDR rules
- Double space will help you to reduce the cross talk
- down sizing the Aggressor net Driver cell
- Upsize the Victim net driver cell
Blockages
- Only buffers can be placed and standard cells cannot be placed.
- Blocks all std-cells and buffers to be placed.
- Std-cell blockages are mostly used to:
- Avoid routing congestion at macro corners
- Restrict std-cells to certain regions in the design
- Control power rails generation at macro cells
- By default a placement blockage has a blockage factor of 100%. No cells can be placed in that area, but flexibility of blockages can be chosen by partial blockages.
- To reduce placement density without blocking 100% of the area, changing the blockage factor of an existing blockage to lower value will be a better option.
- Reduce the congestion by spreading the logic
- It may leads to timing violations
- Hard blockages will west the core area
- create_placement_blockage -coordinates { {x1 y1} {x2 y2}} -type hard/Soft -name blockagename
- create_placement_blockage -coordinates { {x1 y1} {x2 y2}} -type partial -blocked_percentage x -name blockagename.
Cross talk
Cross talk:
- Cross talk is nothing but ,switching in one net can interfere neighbouring net due to the cross coupling capacitance between that , this is called as cross talk
- switching signal is Aggressor
- Non switching signal is victim
Effects of Cross talk
- Cross talk leads to timing violations
- Functional failure
- case 1
- If the signal is switching in same direction , victim transition becomes fast resulting data to arrival early which leads to hold violations
- This scenario is good for setup and bad for hold
- case 2
- if the signal is switching in opposite directions , victims transition becomes slows down ,which increasing the delay and leads to setup violation
- This scenario is good for hold and bad for setup
- case 3
- If cross talk in clock path the above cases are opposite
- Aggressor and victim signal state are changing from 0 to 1
- Aggressor is switching from 0 to 1 and victim is switching from 1 to 0
Which is cell better buffer cell or Inverter cell Why ?
Inverter is Better than the Buffer because
- Better transition than buffer
- Size is less
- Less Dynamic power consumption
- Reducing the duty cycle distortion
Technology File (.tf)
Technology File (.tf)
Fabrication Team will provide the Technology File
Technology file (.tf) in Synopsys FormatTech_lef in Cadence Format
Technology file contains
- Units
- Max current density
- Metals
- Layers
- Vias
- Min width
- Min space
- Pitch
- Lines
- Patterns
- Intensity
- Metal Density
- Antenna Rules
- Width
- Height
- Blink
- Color names
- Mask Name
LEF (Library Exchange Format)
LEF (Library Exchange Format(.lef)):
Types of LEFS
Std.cell LEF
Macro LEF
IO Lef
LEF Contains
- Cell
- Cell name
- Shape
- Pin Size
- Orientation
- Class
- Pin Name
- Pin layer name
- Port Name
- Layout Geometries
- Blockage
- Pin Depth
- Pin spacing
- Pin width
- Antenna Diff Area
LIB (Libraries (.Lib))
Libraries (liberty file .libs) :
Vendor will provide the Libraries
Cell Delay = based on input transition and output load
- Units
- Library Setup time
- Library Hold time
- Removal time
- Recovery time
- Leakage Power
- Dynamic Power
- Delay
- PVT conditions
- Wire load models
- Std.lib
- Macro.lib
- IO lib
- Arcs
- Input transition
- Output load
Gate level Netlist (.V)
Gate level Netlist (.V)
Synthesis team will provide the Gate level Netlist (.V) file
It is the combination of the sequential and combinational cells and its connectivity
it contains
Module
Module Information
Cell & Instance name
Drive strength
Inputs
Outputs
Wire Information
Hierarchy Information
Sub-Module Names
Bottleneck Analysis
- If a single Cell is a part of multiple paths and is the root cause of violations in all those paths, then that Cell can be considered as a bottleneck in the design
- Bottleneck Analysis lists these types of cells causing timing violations on multiple paths
- By identifying and fixing the violation caused by a Bottleneck Cell improved timing can be achieved
- You fix many violations with one change
Multi cycle paths
- Multi Cycle path is nothing but the data can take more than one clock cycle to capture the data is called as multi cycle path.
- Multi cycle path is a one of the timing Exception
- This timing exception is created between the inter clock domains
- The domain relationship between the clocks used in multi cycle path
- case 1
- To set the multi cycle path between the flops
- set_multicycle_path -from flop1 -to flop2
- case 2
- Between the clock domains
- set_multicycle_path -from clock1 -to clock2
- case 3
- How to set the multi cycle path for setup and hold
- set_multicycle_path 5 -setup -from [get_clocks clock1] -to [get_clocks clock2]
- set_multicycle_path 4 -hold -from [get_clocks clock1] -to [get_clocks clock2]
- case 4
- If clock 1 is faster than the clock2
- set_multicycle_path 5 -setup -from [get_clocks clock1] -to [get_clocks clock2] -start
- set_multicycle_path 4 -hold -from [get_clocks clock1] -to [get_clocks clock2] -start
- case 5
- if clock 1 is slower than the clock2
- set_multicycle_path 5 -setup -from [get_clocks clock1] -to [get_clocks clock2] -end
- set_multicycle_path 4 -hold -from [get_clocks clock1] -to [get_clocks clock2] -end
- Note:
- Multi cycle path number is based on the requirement
- if you do multi cycle for setup analysis Nth edge ,you have to do hold analysis at N-1 edge
- based on the fast clock we should put the start and end switch
- if the faster clock is at launching side you should keep start otherwise put end switch
- Benefits of the multi cycle path
- Multi cycle path will improve the timing
Scan DEF
- Group of scan chains ,these are called as partitions
- Where we need to start the scan chain ,and where we need to end the scan chain flop info
- How many flops are there for each chain
- A partition can have only one operating condition and power domain
Scan chain Reordering
- The scan Flip flop placements may create lengthier routes if the consecutive flops in scan chain placement far due to a functional requirement
- In this case, the Place and Route tool can reconnect the scan chain to make routing easier
- The scan chain reordering is performed at Placement
- scan chain can reduce the wire length and congestion
- scan chain will improve the routability
- scan chain can performed based on their physical location of the flops
- Lesser the length will reduce the resistance and capacitance
- Lower values of R and C will improve the timing
- It will reduce the congestion
Saturday, May 15, 2021
Useful Skew
Useful Skew
- By intentionally adding some delay to in the clock path at clock pin of capture path or launch path is called as Useful skew
- The above figure has two timing paths from F1 to F2 and From F2 to F3
- There is timing violation in first timing path , We have setup margin in F2 to F3
- By adding some delay to the clock pin of the Flop F2 , it will fix the setup time violation
- Example DRT is 500 ps ,DAT is 600 ps , setup is violated with 100 ps
- consider From Flop F1 to Flop F2, there is timing violation of -100 pico sec, setup slack = DRT-DAT, hold is 200ps
- From Flop F2 to Flop F3 ,there is a setup margin of 500ps and hold margin of 100ps
- Obsevartions
- After adding the delay to the clock pin of the flop F2 , setup got fixed between the F1 and F2 but hold time may failure we should take care of that, based on the margin and hold slack we can add the delay
- Between the F2 and F3 setup may violate but hold may benefit, if we add more delay to the clock pin of the F2
Filler cells
Fillers cells
- These cells are Physical only cells , there is no logical connection
- These cells are useful for Nwell continuity,Power continuity and Implantation layer in Design
- If N wells are Discontinuity DRC will Fill the Filler cells based on the gap
- Nwells and implantation are continuous it is easier to foundry people to generate the mask
- Mask is very costly
############### adding filler cells############################
- addFiller -cell {FILL1 FILL2 FILL4 FILL8 FILL16 FILL32} -prefix filler_cells
Manufacturing Grid, standard cell row and Unit tile
Manufacturing Grid :
- The smallest geometry that semiconductor foundry can process or smallest resolution of your technology process (e.g. 0.005)
- All drawn geometries during Physical Design must snap to this grid
- While Masking fab. use this as reference line
- The minimum Width and Height a Cell that can occupy in the design
- The Standard Cell Site will have the same height as Standard Cells, but the width will be as small as your smallest Filler Cell
- It’s one Vertical Routing Track and the Standard Cell Height
- All Standard Cells must be multiple of Unit Tile
- Rows are actually the Standard Cell Sites abut side by side and then Standard Cells are placed on these Rows
- Cells with the equal no. of Track definition will have same height
what is the Difference between PBA and GBA
- In GBA mode the tool consider both the worst slew and worst arrival in a path during the analysis
- In PBA mode the tool consider the path by path
- for setup analysis ,in GBA it will consider worst values among all the four values (observe the below picture), For PBA it will consider path by path and timing arc by timing arc
- For hold analysis, in GBA it will consider best value (less value) among all the four values
- Conclusion is GBA is more pessimistic than PBA
- PBA with AOCV is the Best Timing
- mindelay _GBa <= mindelay PBA
- max_delay GBA >= max_delay in PBA
How to fix the Transition Violations
- Up-sizing the Driver cell
- Adding the Buffer at beginning of the driver net
- Split the Load
What are the reasons for metastability
Reasons for Meta-stability
- Slow transition
- Less supply voltage
- High clock skew
- Excessive combo delay
How electromigration will impact on the Timing
Electromigration:
- For fixes of the Electro migration violations ,will increase the width of the metal layers
- If will increase the metal width of that net ,the net resistance capacitance will decrease it leads to fastened the data
- Due to that that, the delay of the metal layer will decrease
- Due to lesser values of the R and C the transition of that metal layer may increase it leads to hold time violations
- This timing violations are based on the life time of the chip
Electro_migration and it's Fixing techniques
Electro_migration:
- Electro migration is nothing but , the current in a metal wire is more than the current carrying capability of that metal wire is called Electro migration
- Electro migration can lead to opens or shorts due to metal ion displacement caused by the flow of electrons
- Electro migration will come in both Power ans Signal nets
- Power Em is more crucial than signal em because the current direction in the power net is uni direction but in signal both the direction that's why less electromigration in signal nets compared to power nets
- Increasing the Metal width will to fix the electromigration ,which means if you increase the metal width the current carrying capability of that metal wire will increase , means the current density will reduce
- current density = current / area
- Area =width x thickness
- sigma = current /W*T
- current density and width is inversely proportional
- Metal jumping Top metal layers also a one of the technique because Top metal layer width is high compared to lower metal layers
- Non Default rules double width will help to fix the em violation
How IR Drop will impact on Timing
IR Drop
- IR drop will occur due to the internal resistance, capacitance factors of the net . instance or cell may not get the sufficient voltage to drive the cell is called IR Drop
- Due to IR Drop cell may not work properly because the cell didn't get the sufficient supply voltage
- Due to this DROP the output of the cell may take lot of time to store the output of the that instance or cell it leads fail the timing
- Due to that Ir drop , cell output may take lot of time it leads to setup time violation
- Consider two flops are connected in cascade
- Assume 1st Flop is launching flop and second flop is Capturing Flop
- Due to the internal resistance and cap values the data can go slow in data path which means it may take time
- When data path is slower than the clock path it leads to Setup time violation
- IR drop will help to Hold time Violations
- If IR drop is more in the clock path it may get both setup and hold violation
What Does DEF file contains
- Contains Die/core area
- Placed Macro information
- Blockage information
- Placed I/O Pin/pad information
- std cell placement area
What are Physical DRC's
- Minimum width and spacing for metal
- Minimum width and spacing for via
- End of line spacing
- Via Enclose
- Parallel length spacing
- Minimum area
- Misaligned net Spacing
- Non sufficient Metal overlap
- Shorts violations
- Less than min edge Length
- Different net via cut spacing
- Special notch spacing
Thursday, May 13, 2021
How to add Metal Fills
############## Adding Metal fills ##############################
- setMetalFill -maxDensity based_on_node -minDensity based_on_node -layer {Metal1 Metal2 Metal3 Metal4 Metal5 Metal6 Metal7 Metal 8 Metal9}
- addMetalFill -layer {Metal1 Metal2 Matel3 Metal4 Metal5 Metal6 Metal7 Metal 8 Metal9 } -timingAware sta -net {VSS}
Adding Filler cells
############### adding filler cells############################
- addFiller -cell {FILL1 FILL2 FILL4 FILL8 FILL16 FILL32} -prefix filler_cells
Wednesday, May 12, 2021
How to add DECAP cells
############### adding decap cells #########################
- addDeCapCellCandidates {DECAP10 0.019 DECAP2 0.0006 DECAP3 0.003 DECAP4 0.005 DECAP5 0.007 DECAP6 0.0102 DECAP8 0.0149 DECAP9 0.017 DECAP7 0.012}
- addDeCap -totCap 0.800 -cells DECAP10 DECAP8 DECAP4 DECAP6 DECAP3 DECAP5 DECAP9 DECAP7 -prefix DEcap
############### adding filler cells############################
- addFiller -cell {FILL1 FILL2 FILL4 FILL8 FILL16 FILL32} -prefix filler_cells
############## Adding Metal fills ##############################
- setMetalFill -maxDensity based_on_node -minDensity based_on_node -layer {Metal1 Metal2 Metal3 Metal4 Metal5 Metal6 Metal7 Metal 8 Metal9}
- addMetalFill -layer {Metal1 Metal2 Matel3 Metal4 Metal5 Metal6 Metal7 } -timingAware sta -net {VSS}
################# dumping pnr outs ##########################
- saveDesign design_name.enc
- defOut -floorplan -scanChain -netlist -routing design_name.def
- saveNetlist design_name.v
- setExtractRCMode -engine postRoute -effortLevel low
- extractRC
- rcOut -rc_corner rc_min -spef design_name.Min_spef
- rcOut -rc_corner rc_max -spef design_name.Max_spef
- write_sdc > design_name.sdc
- streamOut design_name.gds -mapFile "respective node layermap" -merge "respective node stdcell gds" -mode all -structureName design_name_top -units 2000
Tuesday, May 11, 2021
dbGet Commands
1). To report the number of inputs
- dbGet top.numInputs
- dbGet top.numInsts
3). To report the status of the design
- dbGet top.statusRouted
- dbGet top.statusIoPlaced
- dbGet top.statusClockSynthesized
- dbGet selected.??
- dbGet top.insts.cell.name BUFX2* -u
- dbGet [dbGet -p top.insts.name instancename].cell.name
- dbGet -p1 top.nets.isCtsclock 1
- dbGet top.insts.isDontTouch 1
- dbGet top.fplan.groups.pd.name
- dbGet [dbGet -p2 [dbGet -p top.instspStatus fixed].cell.name invx1]
- dbGet top.fplan.coreBox
- dbGet top.fplan.pBlkgs.area
- dbGet [dbGet -p2 top.insts.cell.isSequential 1].name
- dbGet [dbGet -p2 top.insts.cell.isSequential 0].name
- dbGet [dbGet -p top.insts.instTerms.name pinname].net.name
- dbGet top.?? status*
- dbGet head.layers.maxDensity
- dbGet head.layers.minDensity
- dbGet head.layers.minSpacing
- dbGet head.layers.minWidth
- dbGet head.vias.name
- dbGet [dbGet top.insts.instTerms.name pin_name -p].net.name
- dbGet [dbGet top.insts.instTerms.name pin_name -p].isOutput
- dbGet [dbGet top.insts.instTerms.name pin_name -p].isInput
- dbGet [dbGet [dbGet top.insts.instTerms.name pin_name -p].layer].name (which metal layer is connecting to that pin)
- dbGet [dbGet top.insts.instTerms.name pin_name -p].dontTouch
Friday, April 23, 2021
Script for design to list the cellls and its count
dbGet commands
#!/usr/bin/tclsh
set instances_name [dbGet top.insts.name]
set instances_count [llength $instances_name]
set sequential_cells [dbGet [dbGet -p2 top.insts.cell.IsSequential 1].name]
set sequential_count [llength $sequential_cells]
set buffers [dbGet [dbGet -p2 top.insts.cell.isBuffer 1].name]
set buffers_count [llength $buffers]
set Power_switch_cells [dbGet [dbGet -p2 top.insts.cell.isPowerSwitch 1].name]
set Power_switch_count [llength $Power_switch_cells]
set inverter_cells [dbGet [dbGet -p2 top.insts.cell.isInverter 1].name]
set inverter_count [llength $inverter_cells]
set level_shifter_cells [dbGet [dbGet -p2 top.insts.cell.isLevelShifter 1].name]
set level_shifter_count [llength $level_shifter_cells]
set retention_cells [dbGet [dbGet -p2 top.insts.cell.isRetention 1].name]
set retention_count [llength $retention_cells]
set isolation_cells [dbGet [dbGet -p2 top.insts.cell.isIsolationCell 1].name]
set isolation_count [llength $isolation_cells]
set physical_cells [dbGet [dbGet -p top.insts.isPhysOnly 1].name]
set physical_cells_count [llength $physical_cells]
puts "total instances list is :$instances_name"
puts "Total sequential cells list is: $sequential_cells"
puts $isolation_cells
puts $Power_switch_cells
puts $buffers
puts $inverter_cells
puts $level_shifter_cells
puts $retention_cells
puts $physical_cells
puts "total instances count in the design is : $instances_count"
puts "Total sequential cells count is :$sequential_count"
puts "Total Buffer cells count is:$buffers_count"
puts "Total power switch cells count is:$Power_switch_count"
puts "Total inverter cells count is:$inverter_count"
puts "Total level shifter cells count is:$level_shifter_count"
puts "Total retention cells count is:$retention_count"
puts "Total isolation cells count is:$isolation_count"
puts "Total Physical_Cells is : $physical_cells_count"
set combo_cells_count [expr $instances_count - $sequential_count - $buffers_count - $Power_switch_count - $inverter_count - $level_shifter_count - $retention_count - $isolation_count - $physical_cells_count]
puts "combinational cells count is : $combo_cells_count"
Sunday, April 18, 2021
Fabrication Steps
Etching
In the etching step, a liquid (“wet etching”) or plasma (“dry etching”) chemical agent removes the uppermost layer of the substrate in the areas that are not protected by photo resis
Diffusion
The basic principle underlying this process is that the dopant atoms migrate from a region of high concenfration to the region of low concentration In simple, diffiision is the process of introducing controlled amounts of dopants into the semiconductors.
Wednesday, April 7, 2021
Interview questions part 4
1). Steps involved in synthesis like compile, elaborate, link and then dc_compile for optimization understand what happens in each stage
Elaborate:
- It will check for the sub modules in the Top module ,if there are any gate-level netlists read in with the RTL files, Genus automatically links the cells to their references in the technology library during elaboration.
- Translate the design into its gtec representation
- allows changing the parameters values defined in the source code
- Replace the HDL arithmetical operators in the code with the design ware component
- It links the design automatically
link: It will link the Design
2). what happens during optimization techniques
- Path adjustment
- Path grouping
- Re-timing
- Tns optimization
- Ungrouping
3). What are the different stages of Optimization in synthesis
- Boolean optimization (Architectural optimization)
- Incremental optimization
- Retiming is an advanced optimization technique where registers are repositioned to reduce cycle time or area without changing the input-output latency of the design.
- This technique is best fitted for a design that can be pipe lined.
- The drawback of this technique is, possible problem in formal verification.
- Retiming can be enabled at the top level or selective modules using the ‘retime’ attribute.
- Retiming can recover sequential area from a design with both easy to meet timing goals and a positive slack from the initial synthesis.
- Retiming a design that does not meet timing goals after the initial synthesis could impact total negative slack: the paths with the better slack can be “slowed down” to the range of worst negative slack
- Tightening the constraint on a selective path will make the path become more critical and force Genus to work harder on it.
- This trick can help closing timing for a small number of violating paths.
- The following constraint needs to be set before mapping
- path_adjust -delay <> -from -to
- Propagation of constant across the boundary
- Propagation of equal and opposite information across the hierarchy
- propagation of unconnected Port information across hierarchy
- Pushing of inverters across the hierarchy
- ungrouping merges the sub design of a given hierarchy into the parent cell or design ,it removers the hierarchical boundaries and allows design compiler to improve the timing by reducing the levels of logic and to improve the area and sharing logic
Timing violations Fixing Orders
Order of Fixing the timing violations
- Cross talk Noise
- Bottleneck analysis
- Fan-out
- capacitance
- transition
- hold time violation
- setup time violations
SETUP time Violations Fixing and How it impact on the design
SETUP TIME Violations fixing Techniques
- Up-size the cell
- HVT to LVT conversion
- Add buffer on Data path
- get_cells
- get_lib_cells -of_object cell_name (which cell you want to up-size NOR2X0_HVT)
- get_alternative_lib_cells cell_name
- size_cell cell_name saed32hvt_ff1p16vn40c/NOR4X0_HVT (corresponding cell library with cell name )
- Cell size may increase
- Location of the cell pins will change
- Nearer cells will move
- Transition time will increase it means data comes early it will impact on the hold
- get_cells
- get_lib_cells -of_objects U453 (cell name NOR4X0_LVT)
- size_cell U453 NOR4X0_LVT (U453 Instance name)
- insert_buffer net_name BUFX4
- If the cell delay is more than the net delay will get the more timing violation
- If the net length is more, then only we will add the buffer other wise timing violations goes more worst
- createInstGroup group_name
- createInstGroup group_name -guide { co- ordinates}
- addInstGroup group_name {instances names}
- If there is no possibility with the logic to up_size you can up_size the Launch Flop
- It will benefit just 3 to 10 ps
- May effect to Hold time violation
Tuesday, April 6, 2021
Report_annatoted_delay
Report_annotated_delay
- Annotated delay means To set cell/net delay.
- To set a cell delay, specify the delay from a cell input to an output of the same cell.
- To set a net delay, you specify the delay from a cell output to a cell input.
- In a design that uses SDF-annotated delays on all arcs or almost all arcs, such as 95% or more
- Annotated delay Means :RC values are applied properly
- Non -Annotated Delay means: RC values are not applied properly
- For any arcs that are not annotated, Sign-off Tool estimates the delay and output slew using the best available input slew.
- For a block of arcs that are not annotated, Tool propagates the worst slew throughout the block.
Voltus
VOLTUS
Inputs for VOLTUS (power analysis):
Technology lefs
Tech lef
Macro lef
Decap lef
Buf lef
Libraries
Verilog netlist
DEF (data exchange format)
SPEF (standard parasitic extraction format)
CPF (common power factor)
Commands used in voltus
read_lib -lef $lefs
read_view_definition ../design/viewDefinition.tcl
read_verilog ../design/postRouteOpt.enc.dat/Top.v.gz
read_def ../design/routed_data.def.gz
read_power_domain -cpf ../design/Top.cpf
Read_spef ../design/postRouteOpt_RC_wc_125.spef.gz
How to go back from routing db to powerPlan
To go to power plan
editDelete -type Regular
deleteShield -nets *
selectInst *
deselectInst u0
deselectInst ring/PSO_RING_psoI_PD_ring_1_RING_SWITCH*
deselectInst ring/PSO_RING_psoI_PD_ring_1_RING_CORNER*
deselectInst column/PSO_COLUMN_psoI_PD_column_1_HEADER_SWITCH*
dbSet selected.InstTerms.Inst.pstatus placed
dbSet selected.InstTerms.Inst.pstatus unplaced
deleteFillers
Few shortcuts for manual editing
Short cuts
a to select
s to stretch the wire
Shift +a edit wire , press e to entering into the edit route
K for scale
Shift+k to remove the scale markers in the design window
Monday, April 5, 2021
Commands to add functional mode
detach_net read_spi SPI_INST/A/B1
add_inst ecoAND FreePDK45_lib_v1.0/AND2_X1
add_net New_net
attach_net New_net ecoAND/A1
attach_net New_net SPI_INST/A/B1
attach_net read_spi ecoAND/ZN
attach_net ibias ecoAND/A2
By using above commands we can add a cell in between modules. This we called it as Functional ECO
View Defination file
- Defining the PVT corners
- Delay corners
- Constraining the modes
- Creating the views
- Setting the analysis views
- Mode: Whether it is a functional mode/ test mode /scan mode
- corners : Based on Pvt will define the corners
- Views : The combination of mode and corners is called View
Check_design issues
Check_design
- Unresolved References
- empty modules
- Constants
- Assign_statements
- undriven pins
- unloaded outputs
- unconstrained input pins
- Multi driven
- constant hierarchical pins
- Why multi driven nets will come
- If you have a block box module in the design ,Genus assumes all its ports as "inout" ports and this lead to the multi driven nets warning, to resolve this you need to at least define the port definitions for the block box module
- Assign statements causes feed through and we can replaced with Buffers
- starting point
- End point
- path type
- path group
- nets
- cells
- capacitance
- transition
- data arrival time
- data required time
- library setup time
- insertion delay
- output delay
- input delay
- slack
- cell count
- sequential cell count
- combinational cells count
- WNs
- TNs
- No of paths are failing
Sunday, April 4, 2021
ICC_Commands
- get_cells *
- get_pins -of_objects instance_name
- report_delay_calculation -from ABC/a -to ABC/y
swapping from LVT/HVT to HVT/LVT
- get_cells *
- get_lib_cells -of_objects instance_name
- size_cell instance_name lib_name lib_name
- get_lib_cells -of_objects instance_name
how to calculate the gate count
- gate_count = (total area/Nand gate area)
How to find the lib_cells of a cell
- get_lib_cells */*DEL*
- all_macro_cells
- size_of_collection [all_macro_cells]
How to add buffer
- get_nets -of_objects [get_pins -of_object pin_name -filter "direction==out"]
- get_buffers
- insert_buffers net_name BUFX4
- update_timing
- report_timing
Friday, April 2, 2021
Low Power Cells
Low power cells
- Clock gating cells
- Power Gating
- Level shifters
- Retention registers
- Switch cells
- Clock gating can be inserted without changing the function of the logic
- Add clock gating in clock path to prevent the clock cycles
- clock gating cells are used to reduce the dynamic power
- Which is used to shutoff the Power supply to the particular region
- Power gates are use to reduce the leakage Power
- Header switch and Footer Switch
- Header switch will connect between VDD and PMOS
- Footer Switch will connect between NMOS and VSS
- When SLEEP = 0 transistor will work normally (SLEEP 0 and 1 is based on power control management)
- When SLEEP =1 transistor will turn off
- SLEEP transistors are used to control Power to the selected blocks
- Disadvantages: To turn on the PMOS it may take long time it causes more IR drop compare to NMOS
- More number of transistor at time to turn ,it means more current is required to turn at that time drop may come
- Level shifter's are classified into two types
- High_to_low Level shifter
- Low_to_High Level shifter
- High to low Level shifter is used The signal going from the high voltage domain to low voltage domain the gate of the transistor may damage in the receiving domain ,or cause signal EM that's why we use the High to low Level shifter
- Low to high level shifter is used when ,the potential difference between the two voltage domain is greater than the subtraction of ground bounce % in VDDh from threshold voltage , low voltage signal is driving the high voltage domain ,may cause crow bar currents to avoid we use this Level Shifter
- VDDH-VDDL > Vth-{%of ground bounce of VDDH}
- One of the fundamental reason is that example 1Vsignal is driving the 1.5V gate will turn on both NMOS and CMOS it may cause crowbar current
- To meet certain requirements ,signal rise or fall time degradation between the driving cell in one domain and the receiving into another domain it may cause Timing Violations
- When the signal is going from 1V voltage domain to 1.5V voltage domain are vise verse we use Level Shiters
- Normally we can put the level shifter in three places like in transmitter domain or in receiver domain or between the Domains
- Basically Level shifters are placed in the destination Domain
- while doing any job in the device , when power supply of the device is turn off the state of the info is lost, to resume the state of the info when its Power up
- The block must have its state restore from external source build up its state from the reset condition
- we can keep inside the always on logic
- It will placed in placement stage
- Height of the retention flop is double of the standard cell row (For 45nm 1.71 is the row height )
- Flop height is equals to 2*row height
- Switch cells are used to Power up / down for the rails to the particular block we use switch cells
- which are placed under the stripes
- Switch cell has two Power inputs and one output
- External power input, PSO for signal, PSO_out , VDD, VSS
- Inputs are control input and power supply
- Output is power output (input voltage is equal to output voltage)
- Which are placed in ring fashion or column fashion or daisy chain format
- Which are placed in daisy chain format to switch on the rails
- More number of switch cells are required to turn on the rails ,at a time more logic need to turn on , so if we provide less it cause IR drop issue
- Got placed in Power plan stage
- retention flops ,Always_on_cells, level shifters and isolation cells are placed at placement stage
What is the sanity checks you have done for STA?
Sanity checks for STA: Linking Checks: We need to check., is there any missing modules or missing pins in a library. this is done by link c...
-
Sanity checks for STA: Linking Checks: We need to check., is there any missing modules or missing pins in a library. this is done by link c...
-
LISTS keywords and It's Usage lindex lindex is a keyword and it will print the index value of the list. Example: set NameList ...
-
Power Dynamic power: Power consumed by the cell when it is active mode. Switching Power: Power dissipated by the charging and discharging of...