- multiple people ............
- multiple prescriptions ........
Friday, December 17, 2010
ease of prescription management
Thursday, November 11, 2010
Tuesday, November 9, 2010
RC extraction
basic rc extraction corners
Hi,
Extraction can happen in different modes and different process corners.
From the fab, we get the RC data for different corners (for example slow/fast/nominal etc).
when we talk about modes, extraction can happen for ASIC's during the design process at
1. Global mode (post global routing).
2. Final mode (post detailed routing).
In Global mode, once RC's are extracted, the delay model that is used is elmore.
Elmore is a distributed resistance and lumped capacitance model. It accounts for only one pole and hence fast but can introduce some inaccuracy.
In final mode, the delay model is AWE (asymptotic waveform evaluation). AWE is more accurate because it is a > 2 pole model.
Delay models are important because the delay calculator provides this delay information back to STA (static timing analysis) engine.
Extraction is so important because it effects STA (static timing analysis), which dictates if you met your setup and hold times at every single flop in your chip.
STA actually finds the longest(critical) path in your circuit which determines your circuit frequency and also if you met all your hold times in your circuit.
STA uses extraction data at fast corner while calculating hld and slow data while calculating setup to be pessimistic as possible so that your chip doesn't fail after it comes back from the fab.
Extraction can also be classified as Lumped and coupled. In lumped you basically try to reduce a large RC circuit into an equivalen smaller RC circuit just taking the dominant poles into account (without any coupling). This is important because you want to reduce large RC circuits to smaller one's so that you can save on computer memory and run times.
In coupled mode, you basically try to extract the coupling capacitances which contribute to analyzing your crosstalk delay/noise effects on your chip.
If we are extracting for gate level, we have an equivalent RC circuit representation for each gate, which represents the gate Input/Output capacitances along with holding resistances. We plug these models into the RC network. But this is only for delay computation purpose (especially for fast slew propagation). But this can be inaccurate. Hence we dont represent gates using RC's. Rather we represent them using NLDM's and .libs (liberty format).
Reduction only happens mostly for passive components (wires) and not active elements. This reduction we term as model order reduction (MOR).
We usually plug in .lib (liberty) models for gates. Liberty models have tables which show gate delay as a function of (input transition time/output loads).
what we use at global and final mode for extraction is usually called a 2.5D extractor. This makes use of rules which are generated using a 3D extractor.
A 3D extractor is most accurate as it uses maxwells equations (to be precise green's function) to calculate RC's of various geometries which your fabrication facility will most likely manufacture.
BR
-Niks
Thursday, October 28, 2010
Fwd: 68-95-99.7 rule - Wikipedia, the free encyclopedia
Helen, Jeffrey and Stephane
From: Jeffrey CUI <huijun.cui@gmail.com>
Date: Thu, Oct 28, 2010 at 4:48 PM
Subject: 68-95-99.7 rule - Wikipedia, the free encyclopedia
To: Jeffrey CUI <huijun.cui@gmail.com>
Tuesday, October 26, 2010
Clock reconvergence pessimism removal (CRPR) 2
The removal portion or the credit is the difference between max delay and min delay of the common portion.
There is a command called : report_crpr which could give the exact crp value. Calculate crpr is quite expensive, so report_timing won't give you the exact cpr value. The value given by the report_timing is the exact value +/- the range of "timing_crpr_threshold_ps". That is the reason that you could see different crp value between report_crpr and report_timing.
To deal with the above issue, synopsys create another variable "timing_crpr_enable_adaptive_engine" to handle, when this variable is set to true, only the path with violation will be recalculate cpr, so the cpr will be accurate.
Clock reconvergence pessimism removal (CRPR)
In the adaptive CRPR mode, PrimeTime SI calculates CRPR only for the critical path set
(the violating portion of the design), thereby reducing the complexity of CRPR analysis. The
critical path set is the set of all paths with a slack of less than zero, for both setup and hold
timing constraints. The adaptive mode operates only when crosstalk analysis is enabled and
the maximum iteration count is set to 2 or more.
Typically, more nets are reselected for analysis in the second iteration using adaptive CRPR
because no CRPR is done in the first iteration. The resulting analysis is more accurate (less
pessimistic) because more nets are reselected for analysis.
report_timing and report_crpr
CRPR, or clock reconvergence pessimism removal, accounts for the difference in min/max delay of the portion of the clock network that is common to both the launch and the capture paths. For a path, it finds the common pin where the clock paths diverge, computes the difference between the min/max arrival times (the "CRP" value), and applies this as a credit to the path slack.
pt_shell> report_app_var *crpr*
Variable Value Type Default Constraints
----------------------- --------- ------- ---------- -----------------------
timing_crpr_enable_adaptive_engine false bool false
timing_crpr_minimize_grouping false bool false
timing_crpr_remove_clock_to_data_crp false bool false
timing_crpr_remove_muxed_clock_crp true bool true
timing_crpr_threshold_ps 1000 real 20 val >= 1
CRPR should be set to true to get things closer to the .........
Talk with Oscar ( library guy )
2. It doesn't make sense to use set_nose_margin, set_noise_immunity_curve, it is a coarse setting and some teams use it to add extra margin.
3. We do have lef file available ( I love lef file, I could extract lots of information from it ).
PTL, I got all the information I need.
Question: which corner we use when we analyze noise ???
Monday, October 25, 2010
set_noise_margin
From: Jeffrey H Cui [mailto:jeffrey@marvell.com]
Sent: Monday, October 25, 2010 6:25 PM
To: Jeffrey Cui
Subject:
2. Synopsys Commands Command Reference
set_noise_margin
Copyright 2009 Synopsys, Inc. All rights reserved.
NAME
set_noise_margin
Sets noise margin for a library pin, port, or pin.
SYNTAX
int set_noise_margin
[-above]
[-below]
[-low]
[-high]
margin_value
object_list
float margin_value
list object_list
ARGUMENTS
-above Specifies the noise margin for above ground or power rail noise
analysis region.
-below Specifies the noise margin for below ground or power rail noise
analysis region.
-low Specifies the noise margin for ground rail noise.
-high Specifies the noise margin for power rail noise.
margin_value
Specifies a margin value. The value is the input height in
units of voltage. 1.0.
object_list
Specifies a list of lib-pins or ports.
DESCRIPTION
Each library cell input can tolerate a certain amount of noise without
causing a failure at the cell output. This characteristic is called
noise immunity. This command specifies noise immunity at library pins
to determine whether noise failures occur as well as the amount of
noise slack.
Noise immunity in the library can be specified as noise immunity
curves, polynomials, or tables or in terms of noise margins.
This command specifies a noise margin for a library pin, design port,
or pin. It can be used in the absence of library-specified noise immu-
nity characteristics, or to override the library-specified characteris-
tics by replacing them with noise margins. Noise immunity curves that
have been annotated using the set_noise_immunity_curve command will
override noise margins set by this command.
Noise margins consider only the bump heights at the cell inputs. Using
height-only noise margins is simpler, faster, and more conservative
than the other methods.
For high, narrow noise bumps, using height-only noise margins is pes-
simistic because it treats some bumps as noise failures that would oth-
erwise pass with the immunity curve model. However, for wide noise
bumps, using noise
margins gives the same results as using noise immunity curves.
Noise immunity characteristics can vary for different noise bump types,
so there can be four different noise margins associated with each
input: below low, above low, below high, and above high. All values are
specified as positive numbers for all four types of noise bumps.
In the absence of command-specified or library-specified noise immunity
data, PrimeTime SI calculates the maximum allowable noise bump heights
based on DC noise margins of the driver and receiver, as defined in the
.lib technology library by the input/output logic-level parameters.
report_noise_calculation will show whether noise margin information was
taken from the library or annotated by this command.
EXAMPLES
This example specifies a margin of 4 for above the ground rail noise
for pin A of library cell IV in the lsi_10k library:
pt_shell> set_noise_margin -above -low 4 lsi_10k/IV/A
SEE ALSO
set_noise_immunity_curve (2), report_noise_calculation (2),
remove_noise_margin (2).
B-2008.12-SP2 Copyright (c) 2009 Synopsys, Inc. All rights reserved.
set_noise_margin -above -low 4 m9hpd_std_slow/hpd_sao21bx2/A2
set_noise_immunity_curve
From: Jeffrey H Cui [mailto:jeffrey@marvell.com]
Sent: Monday, October 25, 2010 6:25 PM
To: Jeffrey Cui
Subject:
2. Synopsys Commands Command Reference
set_noise_immunity_curve
Copyright 2009 Synopsys, Inc. All rights reserved.
NAME
set_noise_immunity_curve
Sets noise immunity curve for a library pin or port.
SYNTAX
int set_noise_immunity_curve
[-above]
[-below]
[-low]
[-high]
[-height height_value]
[-width width_value]
[-area area_value]
object_list
float height_value
float width_value
float area_value
list object_list
ARGUMENTS
-above Specifies an immunity curve for above ground or power rail noise
analysis region.
-below Specifies an immunity curve for below ground or power rail noise
analysis region.
-low Specifies an immunity curve for ground rail noise.
-high Specifies an immunity curve for power rail noise.
-height height_value
Specifies the height of the input voltage bump at the threshold
of logic failure. The height is in the voltage units of the
library.
-width width_value
Specifies the width of the input voltage bump at the threshold
of logic failure. The width is in the time units of the
library.
-area area_value
Specifies an area value for the curve. This parameter specifies
the size of the hyperbolic curve. 1.0.
object_list
Specifies a list of lib-pins or ports.
DESCRIPTION
Each cell input can tolerate a certain amount of noise without causing
a failure at the cell output. This characteristic is called noise immu-
nity. This command specifies noise immunity at library pins to deter-
mine whether noise failures occur as well as the amount of noise slack.
Noise immunity in the library can be specified as noise immunity
curves, polynomials, or tables or in terms of noise margins that con-
sider only the bump heights at the cell inputs.
This command specifies a noise immunity curve for a library pin or
design port. It can be used in the absence of library-specified noise
immunity characteristics, or to override the library-specified charac-
teristics by replacing them with a noise immunity curve. This command
will also override noise margins that have been annotated using the
set_noise_margin command,
The curve is hyperbolic with three coefficients to fully specify the
hyperbola: height and width of the input voltage bump at the threshold
of logic failure, and an area value to specify the size of the curve.
The three coefficients should be chosen to match the hyperbolic curve
to the data points obtained by laboratory characterization.
Noise immunity characteristics can vary for different noise bump types,
so there can be four different noise immunity curves associated with
each input: below low, above low, below high, and above high. All coef-
ficients are specified as positive numbers for all four types of noise
bumps.
report_noise_calculation will show whether noise immunity information
was taken from the library or annotated by this command.
EXAMPLES
This example specifies a noise height of 2, width of 3, area of 4 for
above the ground rail noise for pin A of library cell IV in the lsi_10k
library:
pt_shell> set_noise_immunity_curve -above -height 2 -width 3 \
-area 4 lsi_10k/IV/A
SEE ALSO
set_noise_margin (2), report_noise_calculation (2), remove_noise_immu-
nity_curve (2).
B-2008.12-SP2 Copyright (c) 2009 Synopsys, Inc. All rights reserved.
si_noise_composite_aggr_mode
si_noise_composite_aggr_mode
Specifies the composite aggressor mode for noise analysis.
TYPE
String
DEFAULT
disabled
DESCRIPTION
This variable specifies which composite aggressor mode is used in
PrimeTime SI noise analysis. Allowed values are disabled (the
default), which turns off the composite aggressor feature. normal,
causes PrimeTime SI to calculate noise by utilizing the non-statistical
composite aggressor feature. Selecting statistical causes PrimeTime SI
to calculate noise by using the statistical composite aggressor flow.
In disabled composite aggressor mode, PrimeTime SI uses its original
flow with composite aggressor completely off to analyze the noise.
In normal composite aggressor mode, PrimeTime SI aggregates the effect
of multiple small aggressors into a single composite aggressor, thereby
reducing the computational complexity and improving the performance.
statistical composite aggressor mode reduces the pessimism for noise
analysis by reducing the effect of composite aggressor.
For the current value of this variable, type printvar si_noise_compos-
ite_aggr_mode.
si_xtalk_double_switching_mode
si_xtalk_double_switching_mode
Controls the double switching detection during the PrimeTime-SI
timing analysis.
TYPE
String
DEFAULT
"disabled"
DESCRIPTION
Double switching detection mode can have one of these three values,
"disabled", "clock_network" or "full_design". When this mode is "dis-
abled", the default mode, this double switching detection is not
enabled. When this variable is enabled (set to "clock_network" or
"full_design"), during update_timing PrimeTime-SI checks that whether
crosstalk bump on the switching victim could cause the output to switch
twice (and cause a pulse) instead of of desiered single signal propaga-
tion.
To detect the potential double switching in the clock network, which
could cause the double clocking (where the clock could switch twice on
a the sensitive edge) or false clocking (where the switching bump on
the non-sensitive edge could actually latch the state), set this value
to "clock_network".
To detect the potential double switching in the data path as well as
clock path set this variable to "full_design". Double switching on a
data path is less severe then double switching on the clock network.
The double switching detection needs CCSN library information on the
victim load cell.
After the update_timing user could access these information in two ways
1) by command report_si_double_switching or 2) by the net attributes
si_has_double_switching & si_double_switching_slack. Refer the man
page of report_si_double_switching for the command details. The victim
net attribute si_has_double_switching is true when ever there is a
potential double switching on any of the load pins. The victim net
attribute si_double_switching_slack has the bump slack, reducing the
switching bump by that much amount could remove the double switching.
If the victim net doesn't cause double switching si_double_switch-
ing_slack will be "POSITIVE". If the victim net load pins doesn't have
CCS-Noise model information, the attribute will be reported as "INIFIN-
ITY".
The victim nets having the double switching is automatically reselected
to higher iteration so that they could be reanalyzed with more accurate
analysis.
The double switching happens when, the switching bump & transition time
are large and fed into driver which strong enough amplify this. To
avoid double switching either of them can be reduced.
Mock response to Devang
I am trying to understand several more options. I have some questions to ask Felicia/Amit and waiting for their response. I think I could have some recommendation middle this week.
NOISE
Thursday, October 21, 2010
0ps input transient time issue
2. the input cap zero issue: I guess it is because the port is floating
3. Big output transient time, there is no output load.
-Jeff
Wednesday, October 20, 2010
primetime_si
pt_shell> set_operating_conditions -analysis_type bc_wc \
-min BEST -max WORST
pt_shell> report_timing -delay_type min_max
Then, for crosstalk max analysis under WORST operating conditions, you would use:
pt_shell> set si_enable_analysis true
pt_shell> set_operating_conditions -analysis_type \
on_chip_variation WORST
pt_shell> report_timing -delay_type max
Then, for crosstalk min analysis under BEST operating conditions, you would use:
pt_shell> set_operating_conditions -analysis_type \
on_chip_variation BEST
pt_shell> report_timing -delay_type min
Monday, October 18, 2010
10_18_2010 PDS Error issue - Create_cell
So the solution is easy, just add two lines before I create cells to make sure these cells are not there when I am trying to create cell. Basically, def could play the role of create_cell too.
Friday, October 15, 2010
ICC bound vs plan
ICC scenario
-cts_corner min | max | min_max | none
When set to min (max), the min (max) corner of the scenario will
be considered by the optimize_clock_tree command. When set to
min_max, both of the min and max corners of the scenario will be
considered by the optimize_clock_tree command. Default value of
this option is none.
Wednesday, October 13, 2010
40nm spacing rules ..........
________________________________________________
Filler insertion. the 40nm minimum spacing rule is 2 placement grid. which is 0.28.
The problem is when the space is say, 4 x 0.14, you have 3x filler cell in your list, 3x is chosen first, then only 1x space is left. You have a gap left. This part is relative easy to resolve by controlling the size of standard rows, make the size always even number of 0.14. But it will become impossible after you place the standard cell, you can't control the gap between standard cells, it could be 2,3,4,5,6.
Because of the above reason, Synopsys creates this option -no_x1, which is to resolve the issue I mentioned above. It could resolve like 4x gap, it will try 3x filler, then use two 2x filler to fill the gap.
Friday, October 8, 2010
ESD and DRO cells
DRO used up to metal3, composed by standard cell. So I will treat it as standard cell, I won't add any blockage, any route_guide to it, I will let ICC to take care of everything. The only thing I need to take care is to make sure the cell is on the right row and make sure the hookup won't be messed up.
metal1 is run all the way across the block, so no need to take care the
To play safe which is not super necessary. create_preroute_via from metal6 to metal3
ESD used up to metal2. Two set of pins, VDD/VSS and VDD_ESD/VSS_ESD, since there is only one set of VDD/VSS here, so the connect is simple. Here is the deal, pease ESD as standard cell, make sure it is on the right row. After all the conn
metal1 rail is only on the boundary, so some trouble over there.
create_preroute_via from metal6 to metal2 for VDD_ESD and VSS_ESD
Found out no need to take care the connection from upper metal to lower metal, the tool is smart enough to take care of it by itself. Walla, ICC.
I still want to take care WPE for around these blocks.
Small problem, there is no odd width filler cell in daxing's script, this may create gap for power rail. The problem is not that small, need to tell him to fix it.
Tuesday, October 5, 2010
spacing rule and wpe
Side is easy, keep 0.28, use spacing rule to make sure this, then 2.1 wpe blockage. ( No, I will not use spacing rule, I will use blockage to make sure that )
Top and bottom, basically, need 1.5 rows to 2 rows to make sure M1 rails are there for the one row for add filler cells.
Then there will be no spacing rule to SNPS.
Boundary boundary to meet the wpe rule:
Top/Bottom: one row will be blocked for placement, these will be wpe blockage, remove and put back.
Left/Right: 2.1um wide straps placement blockages will be added.
The blockages generated from addM5_xxx:
Will be removed permeability.
My blockage:
1. regular placement blockage: snap to standard cell placement grid and wpe blockage will generated around it.
2. core-area blockage: will be generate from my placement blockage gen script.
Tap cell:
Same as before to play around the blockage, reversed blockage to place the tape cell, But I will improve the generating of the blockage to be snapped to 0.14 placement grid.
I could have another way to place the tap cell without using blockage, I could use step to place the tap cell in the right place. And I could use spacing rule to push out other function cells next to tapecell.
Monday, September 27, 2010
09_27_2010 notes
gater_en -180ps
CoreClk -156ps
macro_out -122ps
TNS -169ns
skew 214ps
w/o spacing rules
gater_en -153ps
CoreClk -123ps
macro_out -90ps
TNS -131ns
Skew: 186ps
Plan and misc:
svn, grep
Anyway, the golden goal is to refer to that fp easily.
netlist/sdc: relative static
xgdai way: write out a floorplan and read back the floorplan.
netlist: better attach a date with it.
Build a touch README file, so that I could do a quick visual check.
Friday, September 24, 2010
09_24_2010
What is your best features ?
Passionate, energetic and a great leader - the French don't do humble.
Mis info 02_24_2010
- spare cells
- tap OK
- bronze -> silver
- pds
- delay cell
- multiple scenario
- slow use tighter constraints
- CTS/PostRoute
- pt script
- xt script
- antenna
- transient time fixing
- new gc size: 2.53 x 1.84
Mis info for today 09_23_2010
- Spacing rules
- scandef
- other sdc files
- clock pessism
- status: setup/hold, utilization
- PDS
- legalize_placement
- route_opt -incremental
Helen, Jeffrey and Stephane
Wednesday, September 22, 2010
Mis info for 09_22_2010
spacing rules
extract_rc -est
tap width 0.56um
how to read/use err mky db ?
set cache_read cache_write
focal_opt -hold_end_points all -effort medium/high
2.52 um width m6 straps
-153ps ( clock_en ) ( -131ns ), 78.17% utilization short 55, DRC 992
get_cells/get_flat_cells/get_physical_cells
report_timing -delay min
Wednesday, September 15, 2010
color color
unalias ls
how to get rid of the color inside vim/gvim
syntax off
Friday, September 10, 2010
09_10_2010 ICC
Monday, August 23, 2010
TIMING RESULT
The above is for placement database.
TODO:
Check CTS TIMING RESULTS AND KICK OFF ROUTE ........
08_23_2010 Thoughts
Report your progess
Communicate with your coworkers .........
Basically, keep every body informed.
Thursday, August 19, 2010
CTS
.clk_pa(clk_pa), .clk_se(clk_se), .clk_ra(clk_ra), .clk_tx(clk_tx),
.clk_pe_3d(clk_pe_3d), .clk_pe_2d(clk_pe_2d), .clk_pe_2x_2d(
clk_pe_2x_2d), .clk_mc(clk_mc), .clk_de(clk_de), .clk_hi(clk_hi),
Monday, August 16, 2010
Thursday, August 12, 2010
08_12_2010 PDS
/proj/pnreda/SYNOPSYS/ICC/2010.03-SP2-1/libraries/syn/gtech.db
/proj/pnreda/SYNOPSYS/ICC/2010.03-SP2-1/libraries/syn/standard.sldb
08_12_2010
$MKY(strmoutmap) == /proj/bg2z0scl/tech/Z0/mky_m9.strmoutmap
$MKY(preroute_file) == /proj/bg2z0scl/wa/jeffrey/design/gfx3D.current/mky/datain/brf_dsp_icc.pr
Tuesday, August 10, 2010
uid=6638(jeffrey) gid=11390(bg2z0scl) groups=10(staff),150(gcad),1807(vsyslib0),11178(bg2z0),11390(bg2z0scl)
Monday, August 9, 2010
08_09_2010 New project
I need to change my mindset, from perfect to "good enough". You don't need to get something to be perfect. First, there is no such thing called perfect. You need to get it DONE quickly and then move on. Quite a few new interesting things to learn. GO FOR IT, JEFFREY.
Thursday, August 5, 2010
08_05_2010 ICC Power thing
ICC is a complicated, but very very powerful tool if you know how to manage and use it.
Here are some notes for my recent power trial for GC:
- GC has two group of IOs, each group needs ISO cells.
- ISO cells will lie in the space of always-on, so we have the problem disjointed voltage area.
- ICC supports disjointed place_bounds, so Da ignored the voltage area and used placed_bounds to put the ISO cells in the place_bounds. Then he build the buffer tree for the iso ctrl, then he updated the place bound to include the buffers. After everything is done, he manually hooked up the power for these two disjointed area.
- Note: place bound only takes leaf cells, voltage_area, power_domain only take hierarchical cells.
- GC rtl hier is bad, but it is managable.
From the above notes, I did the following way. I used the UPF mode for ICC:
- no power domain, no voltage area, everything is default. There is no difference between ISO cell and other regular standard cells.
- Create the place_bounds which is exactly same as the future voltage area.
- The place_bounds is for the ISO cells.
- create_fp_placement to have all the ISO cells inside the place_bounds.
- To have prefix the newly created cell set compile_instance_name_prefix i_iso_buffer_
- create_buffer_tree for ISO signals.
- update_place_bounds to include these newly created buffers.
- Visually check these buffer cells to make sure they are ok.
- create_fp_hierarchy for these newly created buffers.
- remove_bounds
- derive_pg_connection: to hooked all the existed cells. standard cell, ISO, iso_ctrl.
- Please refer to the attached for the detailed upf commands.
- set up the voltage_area which is exactly same location as the place_bounds
- remove the standard cell placement
- place the filler_cell in the non-default voltage_area
- place the filler_cell in the default voltage_area
- pre-route standard cell to hook up the m1 power_rail for standard_cell
- remove the filler cell
- place the power switch cell
- power_straps for m2,m3,m4,m5 etc.
- hook up the power...............
FINAL and general comments:
- upf is the trend, you need to figure out ways to use it, you can't avoid it.
- try to do everything inside tcl, perl is good, but you need to go out and come back and it is not convenient.
________________________________________________________________
Thursday, July 29, 2010
07_29_2010 Router options
set_route_mode_options
zroute true or false.
set_route_opt_strategy
set_route_options
set_route_type
signal, clock or pg.
set_route_zrt_common_options
set_route_zrt_detail_options
set_route_zrt_global_options
set_route_zrt_track_options
Wednesday, July 28, 2010
07_28_2010 Expected Delivery from FE
- netlist
- sdc file
- scandef
- clock exception list
- upf file
- floorplan suggestion
07_28_2010 Bi-Weekly CAD meeting
Concerns I collected from the meeting:
PLL
- It still could be rotated for now, it can't be rotated for 28nm
- All the analog signals are on the right, the digital signals are on the left.
- There is no build-in AVDD, AVSS pad, there are multiple avdd/avss ports/pins. It is up the PnR engineer to hook the ports to the PAD. Goal: resistance, IR drop.
- Three critical signals: REFCLKIn, CLKOUT_ANA, TP ( test point ). You can't have floating TP.
- PLL could be placed in the middle for flip-chip.
- The driving strength for the DCLK is x12, but there is no liberty file for PLL since there is no timing information for PLL and we don't need timing information for PLL.
Serdes PHY routing channel
- Critical signals: clk and the current sources
- Routing channel cells are created to standardize the routing. To guarantee the quality.
- 1um, 2um, 10um width routing cells, and the turning up/down routing cells.
- 1um, 2um cells don't have base layer, so they could be overlapped.
- Different kinds of routing channel and buffer cells.
- You need a clock buffer every 500um, but you need place the 1st buffer 250um away since there are around 250um routing inside PHY.
COMPHY
- The power PADs are built-in, so no need to worry about AVDD/AVSS hookup.
- One guy complained about the misaligned pad or something, another person suggested it is because of the multiple pieces of metal for the PAD
- Chengpei complained we don't see the power mesh in the digital portion of the PHY, so this makes our IR analysis very difficult to give us last minute surprise.
Thursday, July 22, 2010
07_22_2010 IR drop / power structure study
Both GC and ISP are in the switching power domain, this means they have always on and switching power. vcc_m1 ( always on ) and vcc_block. The role of vcc_m1 is to supply the power to the always on power part and the power switch cell. vcc_m1 is relative straight forward. vcc_block is tricky.
GC, power distribution structure:
M6, M4 vertical straps. M6 strap width is 5um, M4 strap width is 0.4um.
There are twice M4 straps than M6 straps. half of the M4 straps are in between M6 vcc_gc and vss straps. The structure is solid. M4 straps are connected to M1, M6 is connected to M4. For the in between M6 strap M4s, the power is solid. For the "floating" M4s, they connected to the power network through M1 ( what a shame ).
For the macro region, M5 horizontal straps are added. Macro picked up the power through M4 pins, then M5 horizontal straps, then M6 the main power straps. The power is ok or solid for macro.
note for GC: there is a weak spot for a small area between marcos. IR drop is big, reason, there are M4 straps but it is not connected to M6 directly, the connection is like this: M4 picked up the power from M1 and distributed to other M1 ( stdcell ), I guess Da Xia made some last minute fix, he extended M5 straps of Macro to connect these M4s.
ISP power structure:
Three layer power network. M6 and M2 are vertical ones. M5 is the horizontal. It is a three layer power mesh. M2 is not needed to align with M6. It is a very solid three layer power network. No special treatment is needed for macros.
note for ISP: need to make sure there are Power Switch cell in between macros ( both horizontally and vertically , Ki-Tae only guaranteed horizontal switch cells, I think the IR will be better with switch cells vertically in between macros ). need to make sure at least a pair of M2 straps in between macros.
So Jeffrey's power mesh
- Three layers M2, M5, M6
- I will use less dense M6 then ISP to give back M6 routing resource.
- Make sure the gap between macros is wide enough for one row of switch cell
- Make sure the gap between macros is wide enough for one column of switch cell
- Make sure the gap between macros is wide enough for one pair of M2 straps
- Make sure the gap between cell and boundary is wide enough for power switch cell
- Add vcc_block, vss ring around the block.
Tuesday, July 20, 2010
07_20_2010 Macro hier count
07_20_2010 Power connection
Monday, July 19, 2010
07_19_2010 JCUI Macro placement flow
07_19_2010
Friday, July 16, 2010
Thursday, July 15, 2010
07_15_2010 Ki-Tae Power method
Wednesday, July 14, 2010
07_14_2010 SVN
Tuesday, July 13, 2010
07_13_2010 ICC Place
Monday, July 12, 2010
07_12_2010 ICC Setup
07_12_2010 gcc800_power
There are three power net: vcc_gc, vcc_m1, vss.
Friday, July 9, 2010
07_09_2010 ICC
Thursday, July 8, 2010
07_08_2010 ICC
Tuesday, July 6, 2010
07_06_2010 Talk with Ki-Tae Kwon
- I think the reason he gave to me is convincing, tabbing has its disadvantage, you could only view one window at a time. Plus, you need to click twice to access that window.
- I think four windows should be more than enough. I remembered that Jeremy Minor always open a pair of windows when he is debugging. Maybe that is a very good practice also.
- Login to a grid machine, rup without any option and you will see the list the grid machines.
- You could use rup to figure out the loading for the machine.
- You could use ssh
.
07_02_2010 Talk with Ki-Tae Kwon
Naming convention: parent project mmp2, revision a0 ( A zero ), l: layout.
Rtl project name will be the same less L.