Text
Text
Text
III.Display commands
1.cat [options] file :- concatenation(prints the comtent file on the console
itself)
cat-n:-proceed each line with anumber
cat-v:-displays nonprinting chars
cat -e:-displays non printing chars
2.echo[text string]:-echo the string to stdout
3.head -[number] filename:- displays the lines in file and their content
4.tail [options] [filename] :- displays the last few lines files
IV.System Resources
1.grep-n ravi <filename.txt> :- prints the word ravi along with line numbers
2.grep-x ravi <filename.txt> :- select only those matches that exactly match the
whole time
3.grep-o ravi <filename.txt> :- prints only the matched part of the line
4.grep-i ravi <filename.txt> :-prints it ignores case distinctions
5.grep-v ravi <filename.txt :- Invert the sense of matching to select the non
matching lines
6.grep-w ravi <filename.txt> :- matching lines
7.grep-f ravi <filename.txt> :- obtains pattrens from file
8.grep-h [pattren] [filename]:-print the filename for each match
https://www.youtube.com/watch?v=N-uyt8E5TgU
https://www.earticleblog.com/jio-apn-setting-jionet.html
https://tricksgang.com/increase-jio-speed/
https://www.komparify.com/speedtest/provider/reliance-jio
http://electronics-course.com/d-flip-flop
https://www.electronicsforu.com/technology-trends/learn-electronics/flip-flop-rs-
jk-t-d
https://learnabout-electronics.org/Digital/dig53.php
https://www.javatpoint.com/d-flip-flop-in-digital-electronics
https://circuitdigest.com/electronic-circuits/d-flip-flops
https://ecetutorials.com/digital-electronics/d-flip-flop-circuit-operation-and-
truth-table/
https://www.electricaltechnology.org/2018/05/digital-flip-flops.html
https://www.digitalelectronicsdeeds.com/ipsd/enipsd_c5.html
https://www.gatevidyalay.com/flip-flops-in-electronics/
https://www.daenotes.com/electronics/digital-electronics/flip-flops-types-
applications-woking
https://learn.sparkfun.com/tutorials/digital-logic/sequential-logic
https://digitalbyte.weebly.com/delay-and-toggle-flip-flop.html
https://www.realdigital.org/doc/1d4a229dba3de76c709b63ca1dbabe02
http://www.onmyphd.com/?p=flip.flop
https://components101.com/tags/d-flip-flop
https://www.allaboutcircuits.com/technical-articles/karnaugh-map-boolean-algebraic-
simplification-technique/
https://www.google.com/amp/s/www.geeksforgeeks.org/introduction-of-k-map-karnaugh-
map/amp/
https://www.electronicshub.org/boolean-logic-sop-form-pos-form/
https://www.ques10.com/p/6106/write-a-short-note-on-i-k-map-1/
https://www.elprocus.com/sum-of-products-and-product-of-sums/
https://www.google.com/amp/s/www.electricaltechnology.org/2018/05/karnaugh-map-k-
map.html/amp
https://www.google.com/amp/s/pediaa.com/what-is-the-difference-between-sop-and-
pos/amp/
https://www.zeepedia.com/read.php?converting_between_pos_and_sop_using_the_k-
map_digital_logic_design&b=9&c=11
https://www.iitg.ac.in/cseweb/vlab/Digital-System-Lab/fa_mux.php?id=10#:~:text=Full
%20Adder%20using%204%20to%201%20Multiplexer%3A&text=A%204%20to%201%20line,S%2CCout
%20are%20the%20outputs.
https://www.ques10.com/p/30280/implement-a-full-adder-circuit-using-two-41-multip/
https://www.electronicshub.org/multiplexerandmultiplexing/
https://www.electronics-tutorials.ws/combination/comb_2.html
https://www.circuitstoday.com/half-adder-and-full-adder
main
https://www.electronicshub.org/sequential-circuits-basics/
https://www.circuitstoday.com/half-adder-and-full-adder
https://www.electrical4u.com/electrical-engineering-articles/digital-electronics/
Flooplan : (@ FloorplanningChecks_Barts[1].pptx)
Halo for all macros is taken as 0.5um
Any Standard cell height = 1.26um
Cell Widths:
BUFFD16 = 4.06um FILL4BWP = 0.56
BUFFD12 = 3.08um FILL3BWP = 0.42
BUFFD8���= 2.24um TAPCELLBWP = 0.56
All tiles have half-row (0.63um) at top and bottom i.e. every tile start and end on
half-row
To meet the above TSMC requirement, we add FILL cells on the first and last row of
each tile.
To meet timing on top-level paths there should also be a vertical channel for
buffering between memories every 200um.
All Macros should have orientation of either �R90� or �MX90� only. ROS macro�s
orientation should be �R0�
CHK2:Top and Bottom of Tile Should have 0.63 Micron offset from boundary :
CHK4:
FeedThru Allignment
CHK14:Halo spacing
min. = 0.5um
CHK22 : RAM power is connected to M7 stripes, no M6 P/G stripes exist over rams
CHK27: Blockages around clock buffers (CKBD96) [Every CKBD96 clock buffer will
have 1um blockage around it.]
N7 Base issues
NW
PO
OD
MP
MD
FB
CCP
NP
PP
VT* (VTUL_N , VTUL_P , VTL_N , VTL_P , VTS_P , VTS_N ) min VT width is 0.228 (4CPP)
VD
VG
CMD
CPO
When level shifter region is extended till the boundary cells(tile edge ) need to
maintain 7X filler spacing to meet NWELL area with a spacer cell b/w them
PERFRO placement need to change which is creating the odd poly issue with the core
region. #From the tile edge to PERFRO edge the length is 7.5810 (if you divide with
the even multiple of� i.e. 0.114 == 66.5 ).#�#So try to reduce the spacing by 0.057
using the placement blockage b/w PERFRO and tile boundary edge 7.5240 (then you
will get even multiple i.e. 66) .
Need to maintain >=10cpp (>=0.57um) in vertical direction from macro edge to edge.
When RAM�s got abutted to each other PO spacing violations (need to maintain 0.57
spacing b/w them)
SNIFFER CELL :
Sniffer cell in MV tiles can be R0 or MY . But make sure all the M0,M1 and M2
should align to the respective Color tracks.
Upsize
Reduces cell delay
Most ECOs will be upsizes
Most combinational D0 cells should be upsized with a delay of ~80ps � D1 cells are
the same footprint!
Flops can be upsized
Should be done carefully
Clock pin cap can change
Flop movement due to legalization can hurt clock routes
Flops can also be upsized to reduce setup time
Buffer bypass
Saves buffer delay
Tools tend to insert buffers so that all endpoints on a net end up at the outputs
of a buffer tree
Some cells can be reattached to the root of the tree
Cell in red could be attached the output of cell in orange
FindFloatingWaste
NonDefaultRuleCheck
NonDefLength
InsertSpareflop
LVT swap
SpMixedVt
LpFF swap
extra metal fill for tiles around chip boundary
Upsize cells if frontend use D0 cells. Open FE and make sure the new cells are
placed in correct location. Check clock pin connection if the new cell is Flop.
Q: PD owner give route.v to frontend to start logic eco, it takes 1 or 2 days to
get the logic eco file back. PD already makes a few iterations of timing ECOs. How
to apply functional ECO without losing timing ECOs?
A1: (with updated verilog flow) go back to the original route.v, apply the updated
verilog and apply all the timing ecos on the original route.v, fix the timing ecos
if they conflict with updated verilog. TB will apply updated verilog first and then
timing ecos. Remember to give locations for new added cells.
A2: (generate eco file from updated verilog flow) Apply the new functional eco file
Overall Review:
During Metal eco flow, we swap existing MECC*_DCAP* cells with various
MECC*_ logic cells to fix timing and perform functional ecos
MECC* logic cells have similar base layers. Only by changing M1 layers to
MECC*_DACP* cells , MECC* logic cells are formed.
Following procedure is adopted to do functional/timing ecos during metal ecos by
using encounter.
a) All non MECC* logic cells and FILL cells are fixed during the process
b) Remove all MECC*_DCAP* cells.
c) Add MECC* logic cells
d) Place them with correct orientation(All dcap cells should have
orientation R0 or MX!)
e) Fill MECC*_DCAP* cells
Check for any FILL cells addition in FeApplyEco log file.
If FeApplyEco adds new FILL cells, TileBuilderCheckLogs will throw an error.
Important things:
a) CbTilePreEcoRouteXOR and CbTileXOR targets in metal eco are as important
as LEC targets. These targets should pass at any given time. Do not proceed to
next eco until *XOR targets run successfully without any errors.
b) Do Not use any regular cells for timing fixes or for functional eco
c) Don not modify any existing 0nm/+2nm lib cells. Upsizing and deleting
cells will modify base layers.
d) If you get a functional eco from front end , Please take look at it and
modify to higher strengths based on MECC cells availability to avoid slownodes
Try not to leave dangling nets and floating gates. Be careful when deleting an
output pin from a net. It may create a floating input.
It�s bad to add more than one CLKBUFs to a particular branch of a clock net. In
this case, you'll need to trace the clock tree back a few levels and create a new
branch.
Frontend should generate ECO file based on PD-released route.v.
Use primetime or FE timing debugger to simulate the effect of ECO.
Net connected to the tile port should have the same name as port.
Clock buffers can be changed but make sure that they are fixed.
In addition to basic setup and hold timing, there are many other timing-related
checks that take place in the timing flow
Timing checks - things like unclocked flops, unconstrained endpoints, timing loops
Min period - for a library cell like a RAM, tells the max frequency it can run at
Min pulse width violations (for example, if a clock pulse is too small)
Datapulse violations (when setup and hold time meet timing, but it still will not
latch properly since the total time spent at logic 0 or logic 1 is too small to
latch)
Data transition violations (data signal takes too long to switch)
Clock transition violations (clock signal takes too long to switch - burns power!)
Max capacitance violations (trying to drive too much of a load)
Signal Integrity (SI/noise) related violations
Clock SI (too mush crosstalk on clock nets)
Noise area/height (aggressor signals causing noise interference that is too large)
Double switching (aggressor signals causing a signal to toggle repeatedly in one
cycle)
Miscellaneous reports like clock frequencies, total negative slack, constraint
errors, analysis coverage (percent of design timed), illegal cell types, etc
The main timing analysis tool used historically for graphics chips is Synopsys
Primetime. This is for both normal timing and noise timing.
For each process node (like TSMC 45nm), the signoff guidelines team comes up with a
set of PVTs that need to be timed. This stands for:
P = Process (slow, typical, fast)
V = Voltage (0.72v, 0.88v)
T = Temperature (0c, 100c)
In addition to the process characteristics, there are extraction corners that need
to be timed in certain combinations with those PVTs. Usually there are 4 of these
(typical rc with high/low temp, best rc with low temp, worst rc with high temp).
These represent variations in wire delay due to process and temperature.
The cell libraries are characterized at each PVT and timed with extraction corners
that make sense.
For each chip family, the logic design and DFT (design for test) teams provide a
list of modes which need to be timed in combination with the PVTs and extraction
corners. Modes are distinct because they have different clocks and also test
different portions of the logic by setting constant values on muxes which control
the function of the chip.
Typical modes include normal functional mode, display mode, and scan. The common
scan modes are multi-shift, single-shift, capture, and lockup.
On the right are the library PVTs used for the Evergreen line of chips
The cell libraries have to be characterized for each PVT corner, also called
library corners
Libraries come in various flavors
NLDM - Non-linear delay model - are the normal libraries we use. They use a
voltage source for driver modeling.
CCS - Composite current source - are libs that use a current source for driver
modeling. They are supposed to be more accurate than NLDM, but not so much in
45nm+.
Graphics chips so far have chosen to useNLDM for timing analysis and CCS for noise
analysis. Do not be confused by the CCS file extension on libraries in 45nm and
32nm. The timing tables are still NLDM in those CCS library files.
Here are the extraction corners used for the Evergreen line of chips:
StarRC is the normal extraction tool. Extraction files can be text (SPEF) or
binary (SBPF). Standard Parasitic Extraction Format (SPEF) files are larger, but
can be examined using text editors. Synopsys Binary Parasitic Format (SBPF) files
are 4 times smaller and faster to read in timing tools, but are limited in use to
Synopsys tools
Timing in TileBuilder
There are 4 target groups for timing in TileBuilder tile flows:# ilm -
generates interface logic views of tile for full chip flows# pretiming - runs
non-extracted timing on floorplan data route_timing - most timing runs show up
here, including SI# noise_timing - for SI timing when separated from normal
timing
Timing in the tile flow can happen at many different flow stages
Pretiming with no wireload - good early indicator before placement
Pretiming with wireload - usually has bad timing and is ignored
Route timing - first stage usable for full chip flows, after placement and routing
but before optimization
ReRoute timing - after SpOptRoute and FeReRoute (optimization and re-routing) -
used for tile releases for most of the project
EcoRoute timing - after ReRoute and ECOs are applied
There are more combinations, like MvtRoute (after mixed Vt swap), and DfmEcoRoute
(after ECO and DFM steps like redundant via insertion and dummy metal fill). Do
not be surprised to see others.
The timing targets will have the stages above somewhere in the target name, like
PtTimFuncTT0p85vcbest0cff0p935v0cReRouteSxHld
Messy design constraints will cause timing results to be very bad. The first thing
to check when timing results are suspicious is the constraints log. Each PtTim
report directory will have a file called constraints.log.gz. Look for failed
constraints (such as a clock that did not get created correctly) by finding any
line that begins with �0�.
All constraints that were processed correctly will be following by a line with �1�
on it.
It�s a good idea to periodically check for errors in the other log files, such as
update_timing.log and the main log file which is kept at logs/PtTim*.log
If clock frequencies are incorrect for clocks which have cross-logic, there may be
clock period expansion warnings in the update_timing log.
Missing false paths or case values on clock gating muxes can cause false
violations to show up.
Too many unconstrained endpoints or unclocked flops points to missing or broken
clocks
Many false violations will appear for high fanout nets that have not yet been
optimized
AOCV stands for advanced on chip variation. It�s similar to OCV, except it takes
logic depth into account to reduce pessimism when long chains of logic are
statistically unlikely to randomly vary in the same direction. It also adds
pessimism in the case of short levels of logic since OCV may have been too
optimistic in that case.
AOCV was not used for previous 45nm chips but is starting to be used for smaller
process nodes.
AOCV is a step in the direction of statistical timing analysis (see this PDF for
more info)
What are the OCV numbers used for setup and hold?
What are timing margins for setup and hold for various timing corners?
Signal integrity
The term Signal Integrity (SI) addresses two concerns in the electrical design
aspects � the timing and the quality of the signal.
The goal of signal integrity analysis is to ensure reliable high-speed data
transmission.
Since many SI problems are directly related to dV/dt or dI/dt, faster rise time
significantly worsens some of the noise phenomena such as ringing, crosstalk, and
power/ground switching noise.
Systems with faster clock frequency usually have shorter rise time, therefore they
will be facing more SI challenges.
Issues in SI
X-Talk Noise
Delay
IR ( Voltage ) Drop in power lines
Ground bounce
EM / Electron migration
The one creating X-talk is called Aggressor & the one receiving it is called
Victim.
X-talk noise between neighboring signal wires can cause two major problems that
affects the operational integrity of IC designs:
1. X-talk Delay.
2. X-talk Noise.
The timing impact of an aggressor net on a victim net depends on several factors:
X-Talk Delay
X-talk delay changes the signal propagation on some of the nets, reducing
achievable clock speed.
Congestion
Too many neighbours
Shielding
Fixing Strategies
Buffer insertion may fix crosstalk noise and other problems, but may not have space
at the right spot for extra buffer and wires.
Gate sizing may fix crosstalk and other problems, but may introduce new
aggressor/victim nets
Spacing is usually very effective in the initial few P&R�fixes iterations but takes
routing resources and detouring
Shielding (hard spacing) can be too expensive if applied globally
Rip-up & reroute with spacing is usually very effective for glitch noise victims
that are not timing critical
Rerouting aggressors is usually very effective for both crosstalk glitch and delay
Placement-based prevention
Placement stage: congestion optimization (congOpt)
Routing-based prevention
Routing stage: coupling cap reduction in NanoRoute
(routeWithSiDriven, routeWithTimingDriven)
Note: Setting reasonable slew limits during physical synthesis has been shown to be
very effective in reducing crosstalk.
Placement-Based Prevention
Move cells/placement
to reduce wire congestion
and coupling
Routing-Based Prevention
Net reordering to
reduce coupling