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!

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.
    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.
Sini Mukundan

Sini Mukundan

Staff Engineer at Texas Instruments
Sini is an expert on physical design flow and related methodologies. Outside work, she is an avid reader and generally loves being lazy.
Sini Mukundan

Latest posts by Sini Mukundan (see all)


  1. Rinu Johnson

    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

Leave a Reply

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