MBIT Genus Flow
MBIT Genus Flow
Genus – 19.10
October, 2019
Copyright Statement
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Cadence and the Cadence logo are registered trademarks of
Cadence Design Systems, Inc. All others are the property of their respective holders.
This application note contains content that are being provided to assist Cadence licensed users adopt some tips and tricks on Mbit
designs using Genus, and they are the proprietary and confidential information of Cadence or its licensors, and are supplied subject to,
and may be used only by Cadence’s customer in accordance with a previously executed agreement between Cadence and that
customer.
"ALL MATERIALS FURNISHED BY CADENCE HEREUNDER ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, AND
CADENCE SPECIFICALLY DISCLAIMS ANY WARRANTY OF NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE OR
MERCHANTABILITY. CADENCE SHALL NOT BE LIABLE FOR ANY COSTS OF PROCUREMENT OF SUBSTITUTES, LOSS OF
PROFITS, INTERRUPTION OF BUSINESS, OR FOR ANY OTHER SPECIAL, CONSEQUENTIAL OR INCIDENTAL DAMAGES,
HOWEVER CAUSED, WHETHER FOR BREACH OF WARRANTY, CONTRACT, TORT, NEGLIGENCE, STRICT LIABILITY OR
OTHERWISE."
Power reduction
•why is MBIT helping ?
MBIT cell
•Types
updated
•How do I locate them in Genus ?
Reporting updated
• Power is impacted by
1. The number of clock tree components
2. The power supply voltage
3. The frequency (Toggle Rate)
4. The capacitance (dynP=1/2(CxV²xTR))
=> reducing the number of clock tree components and the clock tree
capacitance is a good option
less power sinks => less clock tree elements => less power
Note: the test on timing_model is to exclude cells like synchronizers from the list
Comb_Mbit libcell Avoid Bitwidth Leakage Power Area Library Library Domain
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
A2LVLUW2_X1N_A9PP96CTUL_C18 false 2 518.49 4.53 sc9mcpp96c_cln16fcll001_pmk_ulvt_c18_ssgnp_cworstccworstt_max_0p72v_0p72v_0c timing
A2LVLUW2_X2N_A9PP96CTUL_C18 false 2 616.36 4.64 sc9mcpp96c_cln16fcll001_pmk_ulvt_c18_ssgnp_cworstccworstt_max_0p72v_0p72v_0c timing
A2LVLUW2_X4N_A9PP96CTUL_C18 false 2 811.94 4.87 sc9mcpp96c_cln16fcll001_pmk_ulvt_c18_ssgnp_cworstccworstt_max_0p72v_0p72v_0c timing
A2LVLUW2_X8N_A9PP96CTUL_C18 false 2 1205.41 5.31 sc9mcpp96c_cln16fcll001_pmk_ulvt_c18_ssgnp_cworstccworstt_max_0p72v_0p72v_0c timing
A2LVLUW4_X1N_A9PP96CTUL_C18 false 4 958.49 6.41 sc9mcpp96c_cln16fcll001_pmk_ulvt_c18_ssgnp_cworstccworstt_max_0p72v_0p72v_0c timing
A2LVLUW4_X2N_A9PP96CTUL_C18 false 4 1162.24 6.64 sc9mcpp96c_cln16fcll001_pmk_ulvt_c18_ssgnp_cworstccworstt_max_0p72v_0p72v_0c timing
A2LVLUW4_X4N_A9PP96CTUL_C18 false 4 1569.97 7.08 sc9mcpp96c_cln16fcll001_pmk_ulvt_c18_ssgnp_cworstccworstt_max_0p72v_0p72v_0c timing
A2LVLUW4_X8N_A9PP96CTUL_C18 false 4 2433.02 7.96 sc9mcpp96c_cln16fcll001_pmk_ulvt_c18_ssgnp_cworstccworstt_max_0p72v_0p72v_0c timing
LVLUW2_X1N_A9PP96CTUL_C18 false 2 536.80 4.31 sc9mcpp96c_cln16fcll001_pmk_ulvt_c18_ssgnp_cworstccworstt_max_0p72v_0p72v_0c timing
[...]
Seq_Mbit libcell Avoid Multibit_Usable Bitwidth Leakage Power Area Library Library Domain
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DFFQA2W_X1N_A9PP96CTUL_C16 true true 2 356.89 1.60 sc9mcpp96c_cln16fcll001_hpk_ulvt_c16_ssgnp_cworstccworstt_max_0p72v_0c timing
DFFQA2W_X2N_A9PP96CTUL_C16 true true 2 582.42 1.71 sc9mcpp96c_cln16fcll001_hpk_ulvt_c16_ssgnp_cworstccworstt_max_0p72v_0c timing
DFFQA4W_X1N_A9PP96CTUL_C16 true true 4 716.09 3.10 sc9mcpp96c_cln16fcll001_hpk_ulvt_c16_ssgnp_cworstccworstt_max_0p72v_0c timing
DFFQA4W_X2N_A9PP96CTUL_C16 true true 4 1084.77 3.26 sc9mcpp96c_cln16fcll001_hpk_ulvt_c16_ssgnp_cworstccworstt_max_0p72v_0c timing
DFFQL2W_X1N_A9PP96CTUL_C20 false true 2 178.41 1.71 sc9mcpp96c_cln16fcll001_hpk_ulvt_c20_ssgnp_cworstccworstt_max_0p72v_0c timing
DFFQL2W_X2N_A9PP96CTUL_C20 false true 2 263.85 1.82 sc9mcpp96c_cln16fcll001_hpk_ulvt_c20_ssgnp_cworstccworstt_max_0p72v_0c timing
DFFQL4W_X1N_A9PP96CTUL_C20 true true 4 359.63 3.15 sc9mcpp96c_cln16fcll001_hpk_ulvt_c20_ssgnp_cworstccworstt_max_0p72v_0c timing
[...]
=> When you set use_multibit_cells true, they are all set to true, then
you can set some back to false to prevent merging
=> So you can select the type of cells you’d like the tool to merge
syn_generic (-physical)
MBIT attributes
• set_db use_multibit_cells true
•…
syn_map (-physical)
• SEQ MBIT instances are present after syn_map
syn_opt (-physical)
• The tool will further try to merge to SEQ MBIT cells during this step No split on
• The tool may split some SEQ MBIT cells to improve performance combo/ISO
• MBIT cells (inv, and, mux, etc.) and iso-ls are mapped during syn_opt
• Current flow
read libs/RTL
syn_generic (-physical)
MBIT attributes
• set_db use_multibit_cells true
• set_db force_merge_isos_into_multibit_cells true (optional, attempts more merge)
• …
syn_map (-physical)
• SEQ MBIT libcells used after syn_map
syn_opt (-physical)
• The tool will further try to merge to SEQ MBIT cells during this step No split on
• The tool may split some SEQ MBIT cells to improve performance combo/ISO
• MBIT cells (inv, and, mux, etc.) and iso-ls are mapped during syn_opt
Read-write inst attribute. Controls whether the instance should be avoided during multibit
merging.
As shown in the following table, the tool only avoids multibit merging for the instance when
the merge_multibit for this instance is not set.
Note: This attribute applies only to sequential and tristate instances. For combo cells, you
may use the dont_touch attribute instead.
• Example
set_db [get_db insts *collar_reg*] .map_to_multibit_bank_label collarRegs
Important: do not mix up with the create_multibit_cell (no ‘s’) command which has a
different use model and is less generic. So prefer the one with the ‘s’ at the end.
25 © 2019 Cadence Design Systems, Inc. All rights reserved worldwide.
Manual mapping
create_multibit_cells
• Usage
-instances takes a string like below
create_multibit_cells -force –instances "{{sublist1} {sublist2} … {sublistn}}"
– Chooses the best libcell among the ones available in the loaded libraries
{{} {DFF1 DFF2 DFF3 DFF4}}
Remarks
1. Please note both the “ and the {} are very important and above format should be followed, as this
is very customized command
2. The list of single bit instances should belong to same module.
3. This command runs in single thread. Its runtime will not be on par with parallel mbci.
4. You may use some commands / expression in the list elements
26 © 2019 Cadence Design Systems, Inc. All rights reserved worldwide.
Manual mapping If physical data is
create_multibit_cells available, the merge is
physical aware
• Some examples
– Put these 4 instances in a 2B-DFF
create_multibit_cells \
-instances “{{{DFF2W} {{inst:out_reg7} {inst:out_reg2} \
{inst:out_reg1} {inst:out_reg12}}}}”
– Put all these instances in any MB you can find in the loaded libs
create_multibit_cells \
-instances "{{{} {[get_db insts *out_reg*]}}}“
• multibit_seqs_instance_naming_style concat
CDN_MBIT_u1_o_reg[1]_MB_u1_o_reg[2]
• multibit_seqs_instance_naming_style short
CDN_MBIT_u1_o_reg_CDN_CPX_[1]_MB_[2]
By setting this attribute It will be present in the name only once as prefix:
CDN_MBIT_top_hierA_hierB_hierD_q_reg[1_4]_MB_hierC[0]_q_reg[0_2]
• force_merge_seqs_into_multibit_cells
– this one will force the tool to evaluate all the DFF for merging.
– Some DFF may still be left not merged if the tool could not find proper
MB replacement for them.
– Note, similar attributes exist for combo and iso-ls cells
force_merge_combos_into_multibit_cells
force_merge_isos_into_multibit_cells
• multibit_mapping_effort_level
– This one is at auto by default. Possible values are auto|high|low
– For more merging, set it to high.
– This will increase the threshold above which merge will not occur due to
timing degradation (resulting in more merging)
• multibit_cells_from_different_busses
– by default cells from different busses can be merged into a MB cell.
– If you do not want this, set this attribute to false
– there are two known limitations.
– Refer to the « things to be aware of » slide
• multibit_debug
– will enable some debug info
• mbci_complex_cell_support
– If you have complex DFF like a DFF including a MUX at the i/p, to
enable the merging to MB of such cells you have to set this attribute
to true
Note: MBIT replacement can only be done for scan chains if they were
created by Genus and not by a 3rd party DFT tools
• MBIT will only occur for flops connected to the same Clock
Gater
– avoid an odd number of DFF attached to a given CG cell
– If you set min_flop to 3 for example, then 2 DFF may be mapped to
1x2bMB-DFF, and one DFF will remain orphan
– may need to adjust the min flop for CG insertion to 2,4 or even 8, depending on the
kind of MB cells you have available.
• Do not give too low number of max flops per CG
– the more CG for a given amount of DFF, the more probability for
orphan DFFs to be left aside.
– Parallel multibit scan libcell are not used for scan chain multibit
merging.
=> an enhancement is ongoing to make them supported
– Example :
set_db multibit_cells_from_different_busses true
merge_to_multibit_cells -sequential
set_db multibit_cells_from_different_busses false
merge_to_multibit_cells -iso_ls
– The above coverage reports 0.11% whereas the actual ISO coverage
is 47% here !!!
• To do so run merge_to_multibit_cells
– This runs usually fast so if you are willing to get the best coverage,
might be good to add some iterations in your scripts.
• Once DFFs have been merged to MBIT libcells, the tool will
not reconsider them for further merging
– So, for example, if you read a netlist with 2bit MBIT and open up 4bit
DFF, the 2bit ones will not take place into 4b cells
(CCR 1636239 : GN-ap42: Allow 2bit to be re-considered to enter 4bit if 4bit cells added )
Note: INVS supports the above (may need some specific vars though) so these
transforms may be done in INVS if this helps.
• If you have changed the way the names are built, or have
fancy configuration with mixed styles you may use SET
MULTIBIT OPTION in LEC