+ Post New Thread
Results 1 to 6 of 6
  1. #1
    Junior Member level 2
    Points: 412, Level: 4

    Join Date
    Jun 2018
    Posts
    22
    Helped
    0 / 0
    Points
    412
    Level
    4

    Innovus CTS .tcl Script Qustions

    We moved from Encounter to Innovus and I am trying to modify the .tcl script which was used for Encounter.

    The script for Encounter is:
    Code:
    clockDesign \
    	-specFile Clock.ctstch \
    	-outDir $rpt_dir/clock_report \
    	-fixedInstBeforeCTS
    The script above could not be run by Innovus and reported error:
    Code:
    **ERROR: (IMPSE-25):    You are using a Limited Access feature that requires special setup before you can use it. Please contact Cadence support for more information on how to access this feature.
    That's why I thought I need to make it into the Innovus version.
    By searching online, I feel I find the equavalent command:
    Code:
    # Create the clock tree spec from the .sdc file
    createClockTreeSpec -output Clock.ctstch
    # Set -routeGuide to use routing guide during CTS
    setCTSMode -routeGuide true
    # Set routeClkNet to use NanoRoute during CTS
    setCTSMode -routeClkNet true
    # Perform clock tree synthesis
    clockDesign -outDir $rpt_dir/clock_report
    By comparing both scripts, I have the following questions:
    1. Seems like the Innovus script has two extra parts which are ' Set -routeGuide to use routing guide during CTS' and 'Set routeClkNet to use NanoRoute during CTS'. Could anyone explain what are these?
    2. In the Encounter script, there is
    Code:
    -fixedInstBeforeCTS
    , which I cannot find the meaning of it anywhere online. Could anyone let me know the function of that command as well as the Innovus version of it?

    I will really appreciate your help. Thank you so much.
    Last edited by EEPuppyPuppy; 16th December 2019 at 22:24.

    •   AltAdvertisement

        
       

  2. #2
    Advanced Member level 5
    Points: 8,973, Level: 22

    Join Date
    Apr 2016
    Posts
    1,880
    Helped
    328 / 328
    Points
    8,973
    Level
    22

    Re: Innovus CTS .tcl Script Qustions

    Quote Originally Posted by EEPuppyPuppy View Post
    We moved from Encounter to Innovus and I am trying to modify the .tcl script which was used for Encounter.

    The script for Encounter is:
    Code:
    clockDesign \
    	-specFile Clock.ctstch \
    	-outDir $rpt_dir/clock_report \
    	-fixedInstBeforeCTS
    The script above could not be run by Innovus and reported error:
    Code:
    **ERROR: (IMPSE-25):    You are using a Limited Access feature that requires special setup before you can use it. Please contact Cadence support for more information on how to access this feature.
    That's why I thought I need to make it into the Innovus version.
    By searching online, I feel I find the equavalent command:
    Code:
    # Create the clock tree spec from the .sdc file
    createClockTreeSpec -output Clock.ctstch
    # Set -routeGuide to use routing guide during CTS
    setCTSMode -routeGuide true
    # Set routeClkNet to use NanoRoute during CTS
    setCTSMode -routeClkNet true
    # Perform clock tree synthesis
    clockDesign -outDir $rpt_dir/clock_report
    By comparing both scripts, I have the following questions:
    1. Seems like the Innovus script has two extra parts which are ' Set -routeGuide to use routing guide during CTS' and 'Set routeClkNet to use NanoRoute during CTS'. Could anyone explain what are these?
    2. In the Encounter script, there is
    Code:
    -fixedInstBeforeCTS
    , which I cannot find the meaning of it anywhere online. Could anyone let me know the function of that command as well as the Innovus version of it?

    I will really appreciate your help. Thank you so much.

    1. first part of the question, regarding route guides, I can tell you what they are. these are high level "regions" that help the router estimate resources available. not sure what CTS does with this flag.
    the second part means the tool will perform detailed routing of the clock tree using NanoRouter. This is the default and preferred method if I am not mistaken. With the detailed routing in place, it is much easier to calculate delays and loads, so convergence is eased, insertion delay is minimized, etc.
    2. I can't remember, but I would guess this is related to fixing the placement of the cells prior to CTS. In Innovus, CTS runs concurrent optimization, so fixing the cells makes no sense anymore. Wild guess. I haven't seen this command or something similar in my innovus scripts.

    Anyway... you should also check ccopt_design -ckSpec. it should still support old Encounter format.
    I also believe you shouldn't run clockDesign anymore, that is legacy command. For some reason my innovus version also says this is limited feature. It isn't.
    Really, I am not Sam.



    •   AltAdvertisement

        
       

  3. #3
    Junior Member level 2
    Points: 412, Level: 4

    Join Date
    Jun 2018
    Posts
    22
    Helped
    0 / 0
    Points
    412
    Level
    4

    Re: Innovus CTS .tcl Script Qustions

    Quote Originally Posted by ThisIsNotSam View Post
    1. first part of the question, regarding route guides, I can tell you what they are. these are high level "regions" that help the router estimate resources available. not sure what CTS does with this flag.
    the second part means the tool will perform detailed routing of the clock tree using NanoRouter. This is the default and preferred method if I am not mistaken. With the detailed routing in place, it is much easier to calculate delays and loads, so convergence is eased, insertion delay is minimized, etc.
    2. I can't remember, but I would guess this is related to fixing the placement of the cells prior to CTS. In Innovus, CTS runs concurrent optimization, so fixing the cells makes no sense anymore. Wild guess. I haven't seen this command or something similar in my innovus scripts.

    Anyway... you should also check ccopt_design -ckSpec. it should still support old Encounter format.
    I also believe you shouldn't run clockDesign anymore, that is legacy command. For some reason my innovus version also says this is limited feature. It isn't.
    Hi, thank you for your response.
    I have searched ccopt_design -ckSpec in google but did not find anything useful.

    However, I did find another post which contains the conversation between you and another person.
    In that post you suggest him to use
    Code:
    setCTSMode -engine ccopt
    set_ccopt_property use_inverters auto 
    setCCOptMode -cts_opt_type full
    create_ccopt_clock_tree_spec
    ccopt_design
    I have tried this code and only changed the last line to
    Code:
    return ccopt_design
    since for some reasons, it really wants to have something returned, or it will report error.
    The output to the command window is:
    Code:
    **WARN: (IMPCK-8086):   The command setCTSMode is obsolete and will be removed in the next release. This command still works in this release, but by the next release you must transition to the CCOpt-based CTS flow.
    Creating clock tree spec for modes (timing configs): default
    extract_clock_generator_skew_groups=true: create_ccopt_clock_tree_spec will generate skew groups with a name prefix of "_clock_gen" to balance clock generator connected flops with the clock generator they drive.
    Reset timing graph...
    Ignoring AAE DB Resetting ...
    Reset timing graph done.
    Ignoring AAE DB Resetting ...
    Analyzing clock structure...
    Analyzing clock structure done.
    Reset timing graph...
    Ignoring AAE DB Resetting ...
    Reset timing graph done.
    Checking clock tree convergence...
    Checking clock tree convergence done.
    So I actaully have the following questions:
    1. I feel that it is done correctly, right?
    2. In my Encounter script, we used an Clock.ctstch file. I have tried the command
    Code:
    clockDesign -specFile Clock.ctstch
    This is for Encounter so as the previous post said, it failed.
    I also tried
    Code:
    createClockTreeSpec -output Clock.ctstch
    as well as
    Code:
    ccopt_design -ckSpec Clock.ctstch
    Though they all failed, too, I am wondering I do not need the .ctstch file with the ccopt flow?
    In the .ctstch file, there are some settings includes the names of all the buffers, whether do post optimization, and whether do gating, which I do not think I can easily set without the .ctstch file.



    •   AltAdvertisement

        
       

  4. #4
    Advanced Member level 5
    Points: 8,973, Level: 22

    Join Date
    Apr 2016
    Posts
    1,880
    Helped
    328 / 328
    Points
    8,973
    Level
    22

    Re: Innovus CTS .tcl Script Qustions

    Quote Originally Posted by EEPuppyPuppy View Post
    Hi, thank you for your response.
    I have searched ccopt_design -ckSpec in google but did not find anything useful.

    However, I did find another post which contains the conversation between you and another person.
    In that post you suggest him to use
    Code:
    setCTSMode -engine ccopt
    set_ccopt_property use_inverters auto 
    setCCOptMode -cts_opt_type full
    create_ccopt_clock_tree_spec
    ccopt_design
    I have tried this code and only changed the last line to
    Code:
    return ccopt_design
    since for some reasons, it really wants to have something returned, or it will report error.
    The output to the command window is:
    Code:
    **WARN: (IMPCK-8086):   The command setCTSMode is obsolete and will be removed in the next release. This command still works in this release, but by the next release you must transition to the CCOpt-based CTS flow.
    Creating clock tree spec for modes (timing configs): default
    extract_clock_generator_skew_groups=true: create_ccopt_clock_tree_spec will generate skew groups with a name prefix of "_clock_gen" to balance clock generator connected flops with the clock generator they drive.
    Reset timing graph...
    Ignoring AAE DB Resetting ...
    Reset timing graph done.
    Ignoring AAE DB Resetting ...
    Analyzing clock structure...
    Analyzing clock structure done.
    Reset timing graph...
    Ignoring AAE DB Resetting ...
    Reset timing graph done.
    Checking clock tree convergence...
    Checking clock tree convergence done.
    So I actaully have the following questions:
    1. I feel that it is done correctly, right?
    2. In my Encounter script, we used an Clock.ctstch file. I have tried the command
    Code:
    clockDesign -specFile Clock.ctstch
    This is for Encounter so as the previous post said, it failed.
    I also tried
    Code:
    createClockTreeSpec -output Clock.ctstch
    as well as
    Code:
    ccopt_design -ckSpec Clock.ctstch
    Though they all failed, too, I am wondering I do not need the .ctstch file with the ccopt flow?
    In the .ctstch file, there are some settings includes the names of all the buffers, whether do post optimization, and whether do gating, which I do not think I can easily set without the .ctstch file.
    We are going in circles now.

    Not only you do not need a ctstch file anymore, my understanding is that you should not use one. There should still be a legacy mode within the ccopt_design command to read it and transform it into ccopt attributes and properties, but like I said, it is legacy.

    Either way, you have to stop googling for these things. You need to read the manual of your innovus version. The chapter on CTS is pretty well written, actually. I don't know why ccopt_design doesn't work for you, something is missing. Adding a return in there is not needed, I have no clue what it does actually.
    Last edited by ThisIsNotSam; 20th December 2019 at 08:23.
    Really, I am not Sam.



  5. #5
    Junior Member level 2
    Points: 412, Level: 4

    Join Date
    Jun 2018
    Posts
    22
    Helped
    0 / 0
    Points
    412
    Level
    4

    Re: Innovus CTS .tcl Script Qustions

    Quote Originally Posted by ThisIsNotSam View Post
    We are going in circles now.

    Not only you do not need a ctstch file anymore, my understanding is that you should not use one. There should still be a legacy mode within the ccopt_design command to read it and transform it into ccopt attributes and properties, but like I said, it is legacy.

    Either way, you have to stop googling for these things. You need to read the manual of your innovus version. The chapter on CTS is pretty well written, actually. I don't know why ccopt_design doesn't work for you, something is missing. Adding a return in there is not needed, I have no clue what it does actually.
    Thank you for your previous suggestions. I was looking at the manual, trying to understand it and modifying it fits the test circuit I am working on.
    By using the commands from the 'Quick Start Example' section (I am using the 18.1 version) and modify it, I could get something without errors.

    One thing I feel a little bit strange is that the manual does not mention the clock pin (clock name) anywhere. Maybe it is because I did not find it.
    From the .ctstch file, I can see the clock name (clock pin) was mentioned so the tool (Encounter) will know where to start the tree.
    I am not very sure whether I should also let Innovus know the clock pin by using some commands. But usually there will be mutiple clocks in one design so I assume that it is a thing I need to address with.

    Will really appreciate if you could give me some suggestions or hints.



    •   AltAdvertisement

        
       

  6. #6
    Advanced Member level 5
    Points: 8,973, Level: 22

    Join Date
    Apr 2016
    Posts
    1,880
    Helped
    328 / 328
    Points
    8,973
    Level
    22

    Re: Innovus CTS .tcl Script Qustions

    I believe the tool is now able to find all clock roots automatically. Maybe they are inferred from the SDC commands.
    Really, I am not Sam.



--[[ ]]--