Professional Documents
Culture Documents
© 2013 Cadence Design Systems, Inc. All rights reservd worldwide. Cadence and the Cadence logo are registered
trademarks of Cadence Design Systems, Inc. All others are the property of their respective holders.
Purpose
In today’s high performance design power has become a Prime concern. The power
consumed by clocking structure is the dominant part of total power estimation. Given a design,
we can reduce its power consumption by replacing some flip-flops with fewer multi-bit flip-
flops. However, this procedure may affect the performance of the original circuit. Hence, the
flip-flop replacement with timing and placement aware are the necessary requirements in
today’s design.
Audience
This document is intended for design and design-for-test engineers involved in digital designs
who desire to reduce the power using multibit cell. Also Physical aware multibit will reduce
the congestion issues associated with multibit. This document will also help for scan
insertion flow and Logic equivalence checking flow.
Introduction
Power has become a burning issue in modern VLSI design. In modern integrated circuits, the
power consumed by clocking gradually takes a dominant part. A conventional single-bit flip-
flop cell uses an inverter chain with high drive strength to drive the clock signal. Clustering
several such cells and forming a multibit flip-flop can share the drive strength, dynamic power,
and area of the inverter chain, and can even save the clock network power and facilitate the
skew control.
For example, we can eliminate two inverters after merging as shown in the figure below. It
will reduce the total area and power consumption of the flip-flops.
More importantly, using multi-bit flip-flop can also reduce the number of clock sinks. This will
reduce the wire length of the clock network and the buffers required in the clock net-work to
maintain the slew and balance the skew. Therefore, power consumed by the clock network will
be reduced.
In logical multibit flow, merging of flip flops is done in a logical netlist where it may be difficult
to predict the impact on timing and congestion after placement. There are a lot of flip-flops on a
chip at different locations but we cannot merge every flip-flop due to timing constraint. Physical
MBCI enables merging of single-bit flops into multibit flop using placement based clustering
algorithm. Physical aware merging removes unnecessary jumps in timing which logical merging
is prone to.
A multibit cell represents a group of cells with identical functionality. Multibit cells generally have
lower power, similar or better area, and are easier to use for place and route.
RTL Compiler recognizes the following style of components for multibit merging:
Flops (non-scan and scan) with one or more of the following shared input pins: flop
clock, async_set, async_reset, sync_set, sync_reset, sync_enable
Latches with one or more shared control pins:o latch gate/enable, async_set,
async_reset
Combinatorial cells (muxes, inverters, nand, nor, xor, xnor) that share all pins that are
not bundled in the Liberty description.
State retention (SRPG) cells that share the same retention control pins(s)
RTL Compiler supports the following pin types for multibit sequential cells:
Input pins
Data in
Clock
Async controls (clear, preset)
Sync controls (clear, preset, enable)
Scan input pins (scan data input, scan enable)--for multibit scan cells
Output pins
Data out (q, qbar)
Scan output pin--for multibit scan cells
cell (dff4) {
area : 1 ;
pin (CLK) {
direction : input ;
capacitance : 0 ;
min_pulse_width_low : 3 ;
min_pulse_width_high : 3 ;
}
bundle (D) {
members(D1, D2, D3, D4);
nextstate_type : data;
direction : input ;
capacitance : 0 ;
timing() {
related_pin : "CLK" ;
timing_type : setup_rising ;
...
}
timing() {
related_pin : "CLK" ;
timing_type : hold_rising ;
intrinsic_rise : 1.0 ;
intrinsic_fall : 1.0 ;
}
}
pin (CLR) {
direction : input ;
capacitance : 0 ;
timing() {
related_pin : "CLK" ;
timing_type : recovery_rising ;
...
}
}
pin (PRE) {
direction : input ;
capacitance : 0 ;
timing() {
related_pin : "CLK" ;
timing_type : recovery_rising ;
...
}
}
In the logical multibit flow, sequential cells are converted into multibit during incremental
synthesis after global mapping. Before global synthesis DFT setup is done and before connecting
scan chains multibit segments are identified.
Following figure (Figure 1-1) highlights the tasks you need add to the generic top-down synthesis
flow to perform multibit cell mapping. Multibit cell mapping occurs during incremental
optimization.
RTL Compiler supports variable bit-widths. If the library has multibit library cells with different bit
widths, all sizes will be considered during multibit cell inferencing. The tool starts merging using
largest bit width first.
Multibit flops can be replaced with either parallel or serial multibit scan cells in the DFT flow .
START
Libraries
Read Timing libs
Elaborate
Synthesize –to_map
Meet const No
Yes
Connect_scan_chain
Meet Const No
Task related to multibit
End
For physical aware multibit flow, multibit mapping happens after placement in RCP and during
RCP Incremental optimization as shown in Figure 1-2. DFT setup happens after RCP incremental
optimization. The multibit segments are then identified in the design before doing a connect
scan chain. A low effort incremental is then done to legalize and optimize after dft insertion.
START
Elaborate
Analyze results
Meet const? No
Yes
Apply multibit constraints r
Yes
Identify multibit scan abs
End
The order of individual names in the concatenated multibit instance name should be consistent
with the pin declaration order in the multibit library cell. For example, if the pin declaration
order of library cells is {D1, D0} and 'a_reg' is associated with 'D0' and 'b_reg' with 'D1', the
multibit instance name should be 'CDN_MBIT_b_reg_MB_a_reg'.
For incomplete mapping (for example, only 2 flip-flops are mapped to a 4-bit cell), the
associated pins should be the foremost pins in the bundle. For example, 'a_reg[0]' and 'a_reg[1]'
are mapped into a 4-bit cell and the pin bundle is {D3, D2, D1, D0}. The associated pins should
be 'D3' and 'D2'.
In case if the user is altering the naming style of MBIT, please use the command below to set it
according to your new MBIT name.
Troubleshooting
Problem # 1
How to check if multibit cells are available in library?
Solution
The info about the types of multi-bit cells available is important since the different drive strengths
& the different bit-widths of the flops etc help determine the coverage provided and affect the
QoR.
Before enabling multi-bit cell inferencing in RC through "set_attribute use_multibit_cells true", do
the following.
report multibit_inferencing -lib
RC prints a report in format as shown below: COMMAND: # report multibit_inferencing -lib
==============================================
==============================================
Library : No Combinational Multibit libcell present Library : Sequential Multibit Libcells info
==============================================
Seq_Mbit libcell Avoid Bitwidth
----------------------------------------------
2WDFFX1 false 2
2WSDFFX1 true 2
4WSDFF6X1 false 4
4WDFF6X1 true 4
Problem # 2
How to get verbose messaging of MBCI (multibit) flow in RC?
Solution
You can enable following tcl variable to enable the Debug mode of MBCI flow. set
multibit_opto_debug 1
With this variable set, you can see the debug message with a reason why RC failed to map to a
multi-bit flop in the logfile.
For example:
=====================================================
Replacement trial for bitwidth of 2
Trying to make multibit bank 'CDN_MBIT_u10_MB_u11' out of u10 (DFFQ_X1)
u11 (DFFRPQ_X1)
=====================================================
Please note that this variable will increase the size of the logfile considerably, so should be used
with caution and should not be made part of the default script.
Problem # 3
After connecting the scan chains, some of the multibit flops are missing in the DFT scan chains
report. These flops are not meant to be excluded from the scan chains (attribute dft_dont_scan not
set). How to tell RC to connect these flops on the scan chain?
Solution
The multibit flops are treated as abstract scan segments. They usually have scan chains defined and
connected in their library cells. These scan segments should be identified as abstract scan segments
prior to connecting the scan chains with this command:
identify_multibit_cell_abstract_scan_segments