Wednesday 7 October 2015

Level Shifter in VLSI Chip Design


Level Shifter cell is used to shift a signal voltage range from one voltage domain to another. This is required when the chip is operating at multiple voltage domains. A signal in one voltage domain may have a voltage range which is different to the signal in another voltage domain. This difference in the voltage range may cause unreliable functioning of the destination domain. Hence Level shifter cells are inserted in the voltage domain crossings.



In the picture above the signal from the 0.7V domain drives a logic cell operating in the 1V volatge domain. The 0.7 V domain spends more time in the threshold voltage of the 1V voltage logic cell which may cause unacceptable timing delays and crowbar currents. If the voltage difference is bigger it may happen that the lower voltage range signal may not even get to the threshold voltage of the higher voltage domain logic cell. A level shifter cell in the voltage domain crossover ensures a reliable functioning of the multi-voltage domain chip.

There are two possible situations, one where the source signal voltage is low compared to the sink voltage domain, second one is vice verse. But there can be also situations where dynamic voltage scaling is used and the voltage relation between the source and destination might change over time of operation. In that case we need level shifter which is capable of shifting both low to high and high to low. Accordingly the three types of level shifters are,



Low to High Level ShifterHigh to Low Level ShifterBoth Low to High and High to Low Level Shifter


Low to High Level Shifters can be realized using a buffer or a pair of inverters. The gate voltage of a MOS transistor can be driven up to its breakdown voltage. Breakdown voltage is the voltage beyond which the dielectric gets damaged irreversibly and no longer exhibits the desired dielectric characteristics. This breakdown voltage is typically much higher than the supply voltage. This means the input of the MOS transistor can be driven with an higher voltage than the supply voltage (provided gate voltage is bellow its breakdown voltage).



In the picture shown above the positive gate voltage when it exceeds the Breakdown voltage the dielectric breaks and starts conducting. This is because the dielectric was unable to withstand the voltage stress after a certain voltage level. So a buffer can be used as High to Low Level Shifter if the High voltage signal does not reach its breakdown voltage.



Low to High Level shifter requires a careful transistor sizing. A low voltage signal may not even reach the threshold voltage of the logic cell in the High voltage domain. In this case the level shifter circuit is built by choosing the transistor sizing to bring the threshold voltage down so that the low voltage signal can turn it ON. Also they may increase the GATE thickness to help accumulate the charge better. Traditional Low to High Level Shifter circuit used a cross coupled transistor to amplify the low voltage signal. It consumes more power and introduces more delay. However the designers have come up with many different and efficient ways to implement the Low to High Level Shifter. The circuit implementation of a typical Low to High Level Sifter is show in the picture below.



In the circuit shown above, the P1, P2, N1 and N2 form a cross coupled amplifier which is driven by the low voltage input signal. The transistor size of P1, P2, N1 and N2 are chosen such that the Level Shifter circuit operates reliably for the desired input and output voltage levels. The same circuit can be used for High to Low conversion also. Again the High voltage domain signal should not exceed the gate breakdown voltage. The Level Shifter cell is characterized in all the possible voltages of input and supply and a reliable operating range is derived.

power switch in VLSI Chip


A power switch is used to implement the power gating for a power domain. Power switch that we create in UPF is an abstract model of the actual power switch network which will be implemented in the silicon. For example in coarse grain power gating many parallel power switches are used to implement the power gating. Creating the power switch in UPF serves two purposes. One it captures the power intent of the designer and two it can be used for low power verification.

power_switch

In UPF, a power switch can be created by using the create_power_switch command. The following command creates a power switch for the example in figure.

create_power_switch PDA_SWITCH

-domain PDA

-input_power_port {Vin VDD}

-control_port {Cin SLEEP}

-output_power_port {Vout VDD_GATED}

-ack_port {Aout ACK !SLEEP}

-ack_delay {Aout 100ns}

-on_state {PDA_ON VDD !SLEEP}

-off_state {PDA_OFF SLEEP}

Options input_power_port, control_port and output_power_port does the port mapping for the power switch. Where as option domain specifies the power domain in which the power switch is created. This domain option is synopsys specific but not actually specified in IEEE 1801 standard. While other options like on_state, off_state, ack_port and ack_delay are used to model the power switch. The syntax of which are shown below,

-ack_port {port_name net_name {boolean_function}}

-ack_delay {port_name delay}

-on_state {state_name input_supply_port {boolean_function}}

-off_state {state_name {boolean_function}}

These are required for low power verification. Another model of power switch internally have two separate switches one small and other large (also called mother daughter). Smaller switch is used during the power up. Once the circuit gets to certain voltage level the larger switch is turned ON for normal operation of the power domain logic cells. So two control signals are used for creating these type of power switches.

create_power_switch PDA_SWITCH

-domain PDA

-input_power_port {Vin VDD}

-control_port {CSin SLEEP1}

-control_port {CLin SLEEP2}

-output_power_port {Vout VDD_GATED}

-ack_port {Aout ACK {!SLEEP1 & SLEEP2}}

-ack_delay {Aout 100ns}

-on_state {PDA_ON VDD !SLEEP2}

-off_state {PDA_OFF SLEEP2}

Similarly many different models of power switch can be specified. Apart from the two types of power switches some examples of different types of switches are

Muxed switch: This type of power switch can function as a mux between two input power supplies which can be from different source or of different voltage. One control switch is used to control which of the two supplies are to be selected. Another control signal is used to gate the output supply.

Overlapping Muxed switch: This type of power switch can do a smooth switch over from one supply input to another. This is done by selecting both the supplies at the same time and switching off one after some time during the transition. The two input supplies can be from different source and may have different supply voltages also but they should have the same voltage during the transition. So two control signals for mux select and one control signal to gate the output supply are required.

Mapping power switch:

The supply nets specified in the create_power_switch should already exist in the design. Since the tool has to use a library cell to implement the power switch the designer can specify the library cell that should be used for the purpose by using map_power_switch command. An example is shown bellow,

map_power_switch PDA_SWITCH

-domain PDA

-lib_cells mvlib/headswitch

We must note that the domain specified in both create_power_switch and map_power_switch is the domain in which the power switch is to be placed.

Unconstrainted points with check_timing Command

To check for constraint problems such as undefined clocking, undefined input arrival times, and undefined output constraints, use the check_timing command

pt_shell> check_timing

Information: Checking 'no_clock'.
Warning: There are 4 register clock pins with no clock.
Information: Checking 'no_input_delay'.
Information: Checking 'unconstrained_endpoints'.
Information: Checking 'generic'.
Information: Checking 'latch_fanout'.
Warning: There are 2 level-sensitive latches which fanout to
themselves.
Information: Checking 'loops'.
Warning: There are 6 timing loops in the design.
Information: Checking 'generated_clocks'.

Note: If timing paths are unconstrained, the check_timing command only reports the unconstrained endpoints, not the unconstrained startpoints. Similarly, for paths constrained only by set_max_delay, set_min_delay, or both rather than set_input_delay and set_output_delay, the check_timing command only reports any unconstrained endpoints, not unconstrained startpoints.

To check for unconstrained endpoints use:
report_timing -exceptions

reference solvnet

STA - static timing reports


Global Timing Summary Report

Path Timing Report

Quality of Results Report

Constraint Reports

Bottleneck Report

Global Slack Report

Analysis Coverage Report

Clock Network Timing Report

Clock-Gating and Recovery/Removal Checks

Timing Update Efficiency

Path-Based Timing Analysis

difference between crosstalk noise and crosstalk delay

\Noise:
The term “noise” in electronic design generally means any undesirable deviation in voltage of a net that ought to have a constant voltage, such as a power supply or ground line. In CMOS circuits, this includes data signals being held constant at logic 1 or logic 0.

For noise analysis tool considers the cross-coupling between aggressor nets and victim nets.
it determines the worst-case noise bump or glitch on steady-state victim net.
Steady-state means that the net is constant at logic 1 or logic 0.
The main commands for noise analysis are the check_noise, update_noise, and report_noise commands, which operate in a manner similar to the check_timing, update_timing, and report_timing
Prime time gives the noise reports as
1.Above high
2.Above Low
3.Below Low
4. Below high
There are many different causes of noise such as charge storage effects at p-n junctions, power supply noise, and substrate noise. However, the dominant noise effect in deep-submicron CMOS circuits is crosstalk noise

Crosstalk delay: Crosstalk delay is same as noise but in this case both the nets are not in a steady state.
there is some transition happening on both the nets.
crosstalk delay depends on the propagating direction of the aggressor and victim nets which makes the transition slower or faster.

Note: for setup analysis tool add crosstalk delay to the timing path and for hold it subtract the delta delay from the cell delay.


reference: solvnet

Report global timing


Report global timing

in the latest prime time you can get global setup/hold reports as below format
Setup violations
Total reg->reg reg->out in->reg in->out
WNS -2 0.3 1.6 0.00
TNS 4 1 2 0.00
NOVP 50 10 20 0

Hold violations
Total reg->reg reg->out in->reg in->out
WNS -2 0.3 1.6 0.00
TNS 4 1 2 0.00
NOVP 50 10 20 0

Constraint Reports in PT(prime time report_constraints -all_violators)



The report_constraint command summarizes the constraint violations, including the amount by which a constraint is violated or met and the design object that is the worst violator. PrimeTime can report the maximum area of a design and certain timing constraints. It can also verify whether the netlist meets specific pin limits.

Timing Constraints

There are several types of timing constraints, such as

Maximum path delay and setup

Minimum path delay and hold

Recovery time, the minimum amount of time required between an asynchronous control signal (such as the asynchronous clear input of a flip-flop) going inactive and a subsequent active clock edge

Removal time, the minimum amount of time required between a clock edge that occurs while an asynchronous input is active and the subsequent removal of the asserted asynchronous control signal

Clock-gating setup and hold

Minimum pulse width high or low at one or several clock pins in the network

Minimum period at a clock pin

Maximum skew between two clock pins of a cell

reference solvnet/prime time

prime time sanity checks (analysis coverage)

Run link_design and resolve link errors.

Run check_timing and resolve timing check errors.

Run report_analysis_coverage and resolve untested issues.

Perform the rest of the analysis.

The report_analysis_coverage command summarizes these checks:

Setup

Hold

No-change

Minimum period

Recovery

Removal

Minimum pulse width

Clock separation (master-slave)

Clock-gating setup

Clock-gating hold

Output setup

Output hold

Maximum skew

reference solvnet/prime time

prime time flow: STA : Static timing analysis


Set search path
Set link .libs
Read ldb
Read verilog
Currenct design
Link design
Read constraints
Create clocks
I/O delays
Set uncertainty, source latency
Set clock trans
Set multy cycle path
Set false path
Set case analysis

update timing
Check timing



Read Paracitics
Check timing
Report global timing