Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Innovus CTS .tcl Script Qustions

Status
Not open for further replies.

EEPuppyPuppy

Junior Member level 3
Joined
Jun 14, 2018
Messages
26
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
343
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:

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.
 

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.
 

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:

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.
 

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

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top