MCMM
MCMM
create_scenario scan_min
source $scripts/min_operating_conditions.tcl
set_tlu_plus_files \
-max_tluplus $tluplus_max \
-min_tluplus $tluplus_min \
-tech2itf_map $tluplus_map
check_tlu_plus_files
read_sdc $sdc_file_scan
remove_ideal_network -all
set_timing_derate -min -early 0.9
set_timing_derate -min -late 1
set_timing_derate -max -early 1
set_timing_derate -max -late 1.1
create_scenario scan_max
source $scripts/max_operating_conditions.tcl
set_tlu_plus_files \
-max_tluplus $tluplus_max \
-min_tluplus $tluplus_min \
-tech2itf_map $tluplus_map
check_tlu_plus_files
read_sdc $sdc_file_scan
remove_ideal_network -all
set_timing_derate -min -early 0.9
set_timing_derate -min -late 1
set_timing_derate -max -early 1
set_timing_derate -max -late 1.1
create_scenario func_min
source $scripts/min_operating_conditions.tcl
set_tlu_plus_files \
-max_tluplus $tluplus_max \
-min_tluplus $tluplus_min \
-tech2itf_map $tluplus_map
check_tlu_plus_files
read_sdc $sdc_file_func_min
remove_ideal_network -all
set_timing_derate -min -early 0.9
set_timing_derate -min -late 1
set_timing_derate -max -early 1
set_timing_derate -max -late 1.1
create_scenario func_max
source $scripts/max_operating_conditions.tcl
set_tlu_plus_files \
-max_tluplus $tluplus_max \
-min_tluplus $tluplus_min \
-tech2itf_map $tluplus_map
check_tlu_plus_files
read_sdc $sdc_file_func_max
remove_ideal_network -all
set_timing_derate -min -early 0.9
set_timing_derate -min -late 1
set_timing_derate -max -early 1
set_timing_derate -max -late 1.1
The PnR tools now have concurrent multi-corner and multimode analysis and optimization
capabilities. In ICCompiler, we create scenarios to specify the different corners and modes the
design should operate on. In a scenario , you can have constraints which determine the mode of
operation, and different libraries(or opertaing conditions) which determine the corners. You also set
up the TLUPLus files and specify derating factors.
ICCompiler uses the command create_scenario to specify a new scenario. When you run this
command, the scenario created becomes the current_scenario and all previous scenario specific
commands are removed from the design. I usually create a separate file for my scenarios named
create_scenarios.tcl , for ease of editing and debugging. I am saving it here more for my future
reference, but if you find it helpful, way to go, me!
Since I source similar files in various stages, I always set a remove_scenario -all as my first line
of the script. This saves the muddling up of constraints and gives me peace of mind.
create_scenario is the command that creates the scenario. You should give it a name as func_max,
func_min etc above
You specify the corner of operation using the command set_operating_conditions. I find it
easier to create separate files for the various operating conditions I use. This way, I can use the
original create_scenarios.tcl file for all of my designs, with minimal changes. So here I am
sourcing min_operating_conditions.tcl & max_operating_conditions.tcl depending on
whether it is max corner or min corner libraries.
TLUPlus is a binary table format that stores the RC coefficients. The TLUPlus models enable accurate
RC extraction results by including the effects of width, space, density, and temperature on the
resistance coefficients.To use TLUPlus models for RC estimation and extraction, you specify the
following files
1. The map file, which matches the layer and via names in the Milkyway technology file with
the names in the ITF file
2. The maximum TLUPlus model file.
3. The minimum TLUPlus model file.
You specify these files by using the set_tlu_plus_files command. You have to sepcify this for
each scenario. After specifying the TLUPlus files, validate them by running
thecheck_tlu_plus_files command.
The command read_sdc reads in the Synopsys Design Constraints file. This determines the mode of
operation in the MCMM.
remove_ideal_network -all is a safety net for me. My goal in life is to go verify the SDC before I
run PnR, but I err. I forget at times and get a beautifully ideal reset net which hasnt been synthesized
in placement. Over the years I have figured out that it is far safer to add this in the script than rely on
SDC.
If timing derate factors are specified,some or all path delays are multiplied by derate factors.
Here, for hold check (-min), the signal could arrive early by a factor of 0.9. Similary, for setup check
(-max), the signal can be late by 10% (OR delay multiplied by 1.1). When the value is 1, no derating
is applied.
If you have clock_tree_exceptions in the SDC, they may not be honoured for just the current scenario
unless you specifically mention the -clocks & -current_scenariooptions. A better option is to
apply the exceptions outside of the scenario definitions and not include them the SDC. This way you
have a better control of your constraints.