ICCompiler MCMM Flow – create_scenario

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!

remove_scenario -all

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

Fairly easy to read I should say.

  • 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 the `check_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.
    	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
    

    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_scenario` options. 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.

2 comments on “ICCompiler MCMM Flow – create_scenario

  1. Rinu Johnson

    Hi
    am trying to do a setup for 45 nm in soc encounter using the nangate open cell library….i dont have a qrctech file or captables…how do i get the details to create an ict file so that i cen generate the cap tables….thanks in advance

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *