Search This Blog

Thursday, October 24, 2019

Sanity Checks

Sanity Checks:
sanity checks qualify the netlist in terms of timing ,checks the issues related to library files and constraints file etc.
Techniques to resolve the sanity checks and its clear explanation
  1. Check_timing -verbose
  2. CheckDesign -all
  3. Check_library
  4. Check_legality
  5. Check_Netlist
  6. Report_qor
  7. Report_timing
1.Check_timing:
Check_timing will checks the below following Issues
  • Clock wave form not reaching to the  flops
  • Combinational loops
  • Clock is expected but clock is not reaching to the flops/unconstrained paths
  • No drive assertion
  • No external input delay on the specified ports
  • No external output delay on the specified Ports
  • Unconstrained signal arriving at end points/ports
  • Ideal clocks
  • Multi_driven_nets 
Issues clear Explanation and resolve techniques
Clock wave form not reaching to the  flops:
  • It means clock is not yet created ,so we will create a new clock to resolve this issues
  • create_clock -name CLK -period 10 -waveform {0 5} -source [get_ports clock_port]
Combinational loops:
  • A combinational loop is formed when a signal can reach back to itself without encountering any sequential device along the path.
  • This loop should be broken for timing analysis, you can manually choose which segment to disable and explicitly let the timing analysis tool know.so that any meaning full path is not excluded from the timing analysis.
  • By default innovus/tempus  tool will identify the combinational loop in the design and breaks the loop  at different arbitrary point.
  • set_disable_timing -from A -to Y [get_cells cell_name]
Clock is expected but clock is not reaching to the flops/unconstrained paths:
  • unconstrained paths means clock reaching but waveform is not reaching to the that flop D pin
Why proper clock wave form is not reaching to the reference pin/port
reasons are follows
  1. If there is a case analysis
  2. Disablement the timing arc
  3. set_clock_sens
  • we can check for that pin whether the clock is reaching to the flop or not by following command
  • get_property [get_pins Reg/D] clock_sources
  • get_property [get_pins abcd/ck] clocks
  • find all fan in to that flop
foreach_in_collection a [all_fanin -to  Reg/ck] {
set b [get_object_name $a]
puts "$b"
}
  • select any one of the q pin and generate the clock to resolve this issue
  • find the clock sources to the selected flop and where the clock sources is same then for that master clock you can create the generated clock to resolve the issue 
  • create_generated_clock -name G_CLK -divided_by 2 -source CLK [get_pins reg/Q]
No external input delay on the specified ports:
By setting the input delay to that port, to resolve the issue
  • set_input_delay -max 3 -clock CLK [get_ports port_name] {30% of the clock period}
  • set_input_delay -min 2 -clock CLK [get_ports port_name] {30% of the clock period}
No external output delay on the specified Ports
Unconstrained signal arriving at end points/ports
If no external output delay issue is on pin you can create the generated clock or it is on the port you can give the output delay constraints
  • set_output_delay -max 7 -clock CLK [get_ports port_name] {70% of the clock period}
  • set_output_delay -min5 -clock CLK [get_ports port_name] {70% of the clock period}
No drive assertion
  • It means no drive is specified for ports we will get this issues
  • set_driving_cell -lib_cell BUFX2  [get_ports port_name]
  • instead of specifying the driving cell command at input pin/port you can give the set_input_transition command to resolve this violations
Ideal Clock 
set_propagated [get_clocks all_clocks]


PD interview Questions part 3



1).What is core utilization?
  • It is the ratio of (std cell area + macro area + blockage area) / total area
  • Get_utilization
2).What is cell utilization?
  • It is the ratio of std cell area/ total area allocated to standard cells
3).What is gate count?
  • Gate count is 3 to 4 times of instance count.
  • Total place-able instance area / 2 input NAND gate area in .lib
  • Report_qor
  • Check_physical_design  -design_statistics
4).What is aspect ratio?
  • It is the ratio of vertical routing resources to the horizontal routing resources.
5).What is a channel?
  • It is the minimum spacing required between two macros or between macros and boundary.
6).How do you calculate the channel width?
  • Based on the fly-line analysis we will able to know the no. of signals passing through the channel and suppose “21” signals are passing than “21” metal routes are required.So if the signals are need to be routed vertically than we divide the no of routes by no of vertical layers. Suppose no of vertical layers is “3”.
  • On each metal layer 7 track are needed so the width of channel should be equal to 7 tracks.
7).How do you measure the no. of signals passing through a channel?
  • Through the fly-line analysis
8).How do you calculate the metal routes that can be passed through a channel?
  • The no of metal routes required is equal to the no of signal passing through the channel
9).Guidelines for general macro placement?
  • If two communicating macros placed close to each another and if all the pins of both the macros are connected to each other than there is no need of spacing but if some pins are connecting  with the core logic than we need to provide some spacing so that from the pin route should come and connect to the logic.
  • So minimum spacing required between the 2 macros or boundary and macro is called as the channel.
10).What is Grid? Different kinds of Grid?
  • Grids can be of manufacturing grid, placement grid and routing grid. The minimum metal length that can be manufactured is called manufacturing grid.
  • Placement grid is nothing but one SITE whose height is equal to the STD cell height and width is multiple of M2 pitch and all the cells are placed according to this grid. During routing tool divides entire area into small square boxes and assigns horizontal and vertical tracks to it and route according to these routing grids.
11). what is core area?
  • The area in which standard cells, memories, blockages, power mesh, routing of nets are present we call it as core area
12) What do you mean ny a 9Track Cells?
  • If there are 9 parallel routing tracks are present in a cell than we call it as 9 track cells.
13).Typical Metal layers used in Macro?
  • Generally M1 to M4 metal layers are used by macro

Floor plan Steps

Steps in Floorplan
  • Initialize with Chip & Core Aspect Ratio (AR)
  • Initialize with Core Utilization
  • Initialize Row Configuration & Cell Orientation
  • Provide the Core to Pad/ IO spacing (Core to IO clearance)
  • Pins/ Pads Placement
  • Macro Placement by Fly-line Analysis
  • Macro Placement requirements are also need to consider
  • Blockage Management (Placement/ Routing)




Spacing between Macro:

Pitch of the highest metal layer it is blocked by the  macro pin  * Total no.of pins associated with the macros
=     ------------------------------------------------------------------------
         Total No of available Metal layers in one direction


Issues arises due to bad Floorplan

  • Congestion near Macro Pins/ Corners due to insufficient Placement Blockage
  • Std. Cell placement in narrow channels led to Congestion
  • Macros of same partition which are placed far apart can cause Timing Violation






Wednesday, October 23, 2019

PnR Inputs

Physical Design Inputs
  1. Netlist (.V)
  2. Synopsys design constraints (.SDC)
  3. Libraries (.libs)
  4. LEF (Library Exchange Format .lef)
  5. Technology File (.tf)
  6. TLU+ file
Netlist (.V) 
Synthesis team will provide .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 
  • Cell Library Information
Synopsys design constraints (.SDC) 
Synthesis team will provide .SDC file
  • Clock Definitions
  • Clock Names
  • Generated Clock Names
  • Operating Conditions
  • Input and Output delays
  • Max and Min delays
  • Max_transition
  • Multicycle paths
  • False paths
  • Set_driving_cells
  • Set_drive
  • Set_load
  • Set_disable_timing
  • Case Analysis
  • Clock_uncertainty
Example SDC File:
create_clock  -name SYS_CLK -period 10 -waveform {0 0.5} [get_ports PORT_NAME]
create_generated_clock  -name GEN_SYS_CLK -source PORT_NAME  -divide_by 2 
create_clock -name V_SYS_CLK -period 10 -waveform {0 5}
set_input_delay -max 3 -clock SYS_CLK [get_ports port_name]
set_output_delay -max 7 -clock SYS_CLK [get_ports port_name]
set_max/min_delay -max 3 -clock SYS_CLK [get_pins Pin_name]
set_multicycle_path -setup 3 -from [get_clocks CLK1] -to [get_clocks CLK2]
set_multicycle_path -hold 2 -from [get_clocks CLK1] -to [get_clocks CLK2]
set_driving_cell -lib_cell BUFX2  [get_ports Port_name]
set_load 0.9 [get_ports out[10]]
set_case_analysis 1 [get_ports SE]
set_case_analysis 0 [get_port TM]
set_dont_use [get_lib_cells RAM2P_128x16_ss_1v08_125c_syn/RAM2P_128x16]
set_propagated_clocks [get_clocks*]
set_disable_timing [get_cells cell_name]
set_clock_uncertainty 0.250 -setup [get_clocks CLK]
set_clock_uncertainty 0.100 -hold [get_clocks CLK]
set_max_delay 5.0 [get_ports port_name]
set_load 2 [get_ports port_name]
set_input_transition 1.0 -clock clk [get_ports port_name]

Libraries (.libs):
Vendor will provide Libraries
Cell Delay = based on input transition and output load
  • Setup time
  • Hold time
  • Removal time
  • Recovery time
  • Leakage Power
  • Dynamic Power
  • Delay
  • PVT conditions
  • Wire load models
  • Std.lib
  • Macro.lib
  • IO lib
  • Arcs
LEF (Library Exchange Format(.lef)):
  • Std.cell LEF
  • Macro LEF
  • IO Lef
LEF Contains
  • Cell
  • Cell name
  • Shape
  • Size
  • Orientation
  • Class
  • Pin Name
  • Port Name
  • Layout Geometries
  • Blockage
  • Antenna Diff Area
Technology File (.tf)
Fab Team will provide the Technology File
Technology file (.tf) in Synopsys Format
Tech_lef in Cadence Format
Technology file contains
  • Units
  • Mask Name
  • Max current density
  • Metals 
  • Layers
  • Vias
  • Min width
  • Min space
  • Pitch
  • Lines
  • Patterns
  • Intensity
  • Metal Density
  • Antenna Rules
  • Width 
  • Height
  • blink
TLU + File
TLU + File  in Synopsys Format
CapTables in Cadence Format 
  • Normal Captable File in 2D format
  • Expanded Captable File in 3D format
Tlu+ file contains the RC coefficients 
  1. TLU+ Maximum File
    • It has Maximum RC values
  2. TLU+ Minimum File
    • It has Minimum RC values
  3. Mapped File
    • Mapped file maps the technology file and .itf file for Deriving the RC values
ITF (Interconnect Technology File):

  • It describes the thickness and the physical attributes of conductor and dielectric used to extract the RC values for the chip











What are all floor Plan Controlling Parameters

  • Aspect Ratio
  • Utilization
  • IO clearance
Aspect Ratio : It is defined as the Ratio of vertical routing resources to the horizontal routing resources is Called as Aspect Ratio
  • If Aspect ratio is more than one (AR>1) The block shape is Vertical Rectangle which means height is more than the width
  • If Aspect ratio is lesser than one (AR<1) The block shape is Horizontal Rectangle which means width is more than the height
  • If aspect ratio is equals to one the block shape is SQUARE 
Utilization :
  • Area of the core that is used by placed Standard Cells and Macros expressed in percentage
IO clearence:
  • The spacing between the core boundary to die boundary is called as IO clearance





Commands Used in Floorplan (ICC TOOL)

  • How to know the Utilization of the floor plan
  • Get_utilization
  • How to know how many macros are there in the design
  • sizeof_collection [all_macros]
  • Floorplan Creation
  • create_floorplan -left_io2core 20 -bottom_io2core 20 -right_io2core 20 top_io2core 20  \ -core_utilization 0.7 --core_aspect_ratio 1.0
  • How to apply the Keepout margin
  • set_keepout_margin  -type hard -all_macros -outer {2 2 2 2}
  • How to know how many clocks are there in your design
  • sizeof_collection [get_clocks]
  • How to get the Core area
  • get_attribute [get_core_area] bbox
  • How to get the Die area
  • get_attribute [get_die_area] bbox
  • How to find the Area of the cell
  • report_area
  • How to find the Reference cells area
  • report_references
  • How to find the Design statistics
  • check_physical_design   -design_statistics
  • How to know the Hierarchy information
  • set_hierarchy_color -cycle_color
  • How many Layer are there in the design
  • get_layers
  • How many Nets are there in the design
  • get_nets
  • Port information
  • get_ports
  • How to get the exact cell Location
  • get_location cellname
  • How to find the cell delay 
  • report_delay _calculations -from  xyz/a -to xyz/B
  • Libraries information
  • get_libs
  • Physical library information
  • get_physical_libs
  • How many buffers are there in the design 
  • sizeof_collection [get_bufers]
  • How many no of Inputs are there in the design 
  • sizeof_collection [get_inputs]
  • No of Outputs
  • sizeof_collection [get_outputs]
  • How to know no of Ports
  • sizeof_collection [get_ports *]
  • How to know Cell count
  • sizeof_collection [get_cells]
  • How to know Registers count
  • sizeof_collection [get_registers]
  • How to know Alternative lib cells of the cells
  • get_alternative_lib_cell cell_name
  • How to know Path group information
  • get_path_groups
  • How to know how many site rows are there in the design
  • sizeof_collection [get_site_rows]
  • How to find the Pins of the cell
  • get_pins -of_objects cells_name
  • How to know Timing qor of the design
  • report_timing
  • How to know Hold violations in the design 
  • report_timing -delay_type min
  • How to know Setup violations in the design 
  • report_timing -delay_type max
  • How to know all violated paths in the design
  • report_constraint -all_violators 
  • How to know DRC violations in the design 
  • report_constraint -all_violators -max_transistition
  • report_constraint -all_violators -capacitance
  • How to know Design QOR (Report_qor)
  • report_qor
  • How to create bound
  • create_bound -coordinates {{x1 y1}  {x2 y2}} -type hard/soft/Exclusive -object_list {cell1 cell2 cell3} 
  • How to get how many bounds are present in the design
  • get_bounds
  • How to get the number of blockages in  design
  • Get_placement_blockage
  • How to create the placement blockage
  • 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.

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...