Thursday, March 29, 2012

Dual-ended or Single-ended read

1. Dual ended when read/write ports are shared (6T cell)
2. Dual ended when you want to read fast; use a diff-sense-amp to sense a very small voltage difference.

Thursday, February 23, 2012

Vias

rectangular vias better than square vias - why?

except in the case of - small interconnects (wires) (eg: M1) since rectangular vias have bigger side-wall caps. This would dominate the small wire capacitance.

Golden rule of thumb for small wires: close to driver - rectangular & close to load - square

Friday, December 17, 2010

Sizing a n-input standard gate (where n≠1)

Load Capacitance = CLOAD

Input Capacitance of the n-input NAND gate = CN

Beta ratio of n-input NAND gate = βN

Input Capacitance of equivalent inverter = CINV

Beta ratio of equivalent Inverter = βINV

(a) Logical Effort:

(b) Assume an inverter in place of the n-input NAND gate:

Now, the equivalent pull-down strength of the n-input NAND gate is:

Hence, adding WNN and WPN we get CN:


E.g. for ND2, βN = 1 and for INV βINV = 2:

Thursday, December 2, 2010

Wire resistive shielding

With a very long wire, the net RC for calculations is assumed to be 50% of the actual RC. This is because of resistive shielding of the long wire. The driver can only see 50% of the actual RC and increasing the drive-strength by more than that required for a 0.5RC won't give us any more benefit.

Friday, October 8, 2010

Sizing the bit-line pre-charge device

Margins
Slopes
Better Tracking

Sizing the bit-line keeper

The bit-line keeper should be sized so that the following criterion are met:

1. Writability
2. Keeper Leaker Ratio

Design Margins in SRAM Design

To basic types:
  • Self Timed: Does not vary with frequency, process, temperature, voltage
  • Frequency Dependent: Varies with each timing, process corner
Self-Timed Margin (STM) can be of two sub-types:
  • STM(Functional): Not meeting this margin breaks your functionality and the design is broken. For Example: Setup and Hold Violations.
    Typically 15% pre-layout and 10% post-layout
  • STM(Crowbar): Not meeting this margin, causes a crow-bar current. You lose performance and power, but the design is correct functionally. For Example: Turning off pre-charge clock after the word-line turns on, causes the bit-line to discharge very slowly and there is a huge crow-bar current flowing through it. This impacts your clk2q and also is a huge power drain.
    Typically 0-10% pre-layout and 10% post-layout

Thursday, April 1, 2010

Sorting in a huge data file

Instead of writing a perl code that uses Bubble Sort/Quick Sort/or any other sorting algorithm, simply use "sort" command in unix.

## unix sort
## sort -gk 4,4 inputfile -o outputfile
## -g :general, handles scientific notation
## -k 4,4 :start and end on 4th field

Monday, September 28, 2009

Negative Hold Time

Negative hold time is generally seen where a delay is already added in the data path inside the flop. This is usually done by the library vendor.Assume the flop which foundry gives us as a library part that has ports named as CLK-port, Data-Port. Now, in essence this is wrapper and should be treated as one. Inside this we have the actual flop whose ports are CLK-in, data-in. CLK-port is connected directly to CLK-in, Data-port goes through some delay element (either buffer or routing net) to Data-in. So even if the actual flop has hold requirement of say 0.2ns, if the data delay element value is 0.5ns, the library will give spec as -0.3ns HOLD requirement for the above flop. This signifies that even if the data changes 0.3ns before CLK, it can still be latched and as for the actual flop(inside the wrapper) it will still meet 0.2ns HOLD. (data changes after 0.2ns from clk change).Advantage:The biggest advantage is less iteration after layout...Easy and less painful synthesis (else HOLD fixing can be an iterative process)Disadvantage:We pay the cost in bigger setup times for above flops.

Wednesday, April 15, 2009

Limiting cases for Number of SRAM Cells on ONE bit-line pair

1. Frequency (and hence, Power) -- Since with increased number of SRAM Cells, there will be more capacitance on the bit-lines. An increased capacitance entails an increased delay and also an increased power consumption - 0.5 x alpha x f x C x Vswing x VDD

2. Leakage -- While doing a read, only the cell that's being read is forcing a zero onto a bit-line (i.e. draining the capacitance on that bitline), but the pass transistors of other SRAM cells are OFF and if they leak such that the bit-line-bar is being pulled low -- then this can cause a problem since both the bit-line and the bit-line-bar shall be at zero voltages.

Wednesday, July 9, 2008

Resetting Edge Triggered Flops

Resetting edge-catcher flops will slightly change the behavior of edge triggered interrupts around reset:


1. if the edge were asserted during reset, the edge-detection would only be valid that 1-cycle and wouldn't get caught in the core because the interrupt special register is actually reset. after i reset this register, we would start detecting these sorts of edge interrupts.


2. if for some reason an edge interrupt was asserted and held, and then the proc gets a reset, we'd catch this edge again after reset. which we wouldn't have before. this is essentially the same as the first case, but considers the chance you running before the reset.

Friday, June 20, 2008

Reachable vs. non-reachable X statements

Rule: do not code reachable X statements. It is OK to code non-reachable X statements.

What does this mean? Basically, the designer knows when the X statement is reachable or not. Let's take case statements as an example. If it is a full case, then it's obvious that the default X statement is not reachable. If it is not a full case, there are two options:

1) Designer knows that case expression will never take certain values and synthesis can optimize for those truly don't-care situations. This is non-reachable X.
case (condition)
2'b01: A=1'b1;
2'b10: A=1'b0;
default: A='bx;

Designer knows that 'condition' will never have the values {2'b00, 2'b11} which makes the default X non-reachable. In this situation, designer should also add an SVA assertion to check his assumption so that during simulation the assertion checker will fire if 'condition' ever equals the above values.

2) Designer knows that case expression can take on all the values, but functionally only {2'b01, 2'b10} are important. This is reachable X. We do not allow synthesis to optimize for this case because the resulting gate-level will not be equal to RTL and bugs may be inadvertently introduced. There is no easy way to check the designer's assumption about the don't-care. In this situation, all case conditions should be explicitly specified to create a full case or the default statement should be assigned to a 2-state value.