unclear tcl error

Hi everyone,

I must admit that I'm pretty new to tcl scripting so this error might be plain stupid but I've failed to understand it so far.

I have a makefile (taken from the openrisc repo on opencores.org and adapted to my needs) which has a set of rules to control the whole place and route flow, from compilation to bitstream generation. Among these rules there's one to extract timing reports that goes like this:

# Generate reports >$(TCL_SCRIPT_REPORT): > TCL_FILE=$@ $(MAKE) tcl-common > $(Q)echo "run_designer \"Generating timing reports\" \" " >> $@ > $(Q)echo " open_design $$""proj_name.adb " >> $@ > TCL_FILE=$@ $(MAKE) dump-actel-report-project-tcl > $(Q)echo "\"">> $@

The tcl-common provides a set of common parameters to each step of the flow and works fine, while the dump-actel-report-project-tcl looks like this:

# TCL commands to generate timing reports of project >dump-actel-report-project-tcl: > $(Q)echo " report " \\ >> $(TCL_FILE) > $(Q)echo " -type timing " \\ >> $(TCL_FILE) > $(Q)echo " -analysis max " \\ >> $(TCL_FILE) > $(Q)echo " -print_summary yes " \\ >> $(TCL_FILE) > $(Q)echo " -use_slack_threshold no " \\ >> $(TCL_FILE) > $(Q)echo " -print_paths yes " \\ >> $(TCL_FILE) > $(Q)echo " -max_paths 5 " \\ >> $(TCL_FILE) > $(Q)echo " -max_expanded_paths 1 " \\ >> $(TCL_FILE) > $(Q)echo " -include_user_sets no " \\ >> $(TCL_FILE) > $(Q)echo " -include_pin_to_pin yes " \\ >> $(TCL_FILE) > $(Q)echo " -select_clock_domains no " \\ >> $(TCL_FILE) > $(Q)echo " "$(DESIGN_NAME)"-timing.rpt " >> $(TCL_FILE) > $(Q)echo " report " \\ >> $(TCL_FILE) > $(Q)echo " -type timing_violations " \\ >> $(TCL_FILE) > $(Q)echo " -analysis max " \\ >> $(TCL_FILE) > $(Q)echo " -use_slack_threshold no " \\ >> $(TCL_FILE) > $(Q)echo " -limit_max_paths yes " \\ >> $(TCL_FILE) > $(Q)echo " -max_paths 100 " \\ >> $(TCL_FILE) > $(Q)echo " -max_expanded_paths 0 " \\ >> $(TCL_FILE) > $(Q)echo " "$(DESIGN_NAME)"-timmaxdly.rpt " >> $(TCL_FILE) > $(Q)echo " report " \\ >> $(TCL_FILE) > $(Q)echo " -type timing_violations " \\ >> $(TCL_FILE) > $(Q)echo " -analysis min " \\ >> $(TCL_FILE) > $(Q)echo " -use_slack_threshold no " \\ >> $(TCL_FILE) > $(Q)echo " -limit_max_paths yes " \\ >> $(TCL_FILE) > $(Q)echo " -max_paths 100 " \\ >> $(TCL_FILE) > $(Q)echo " -max_expanded_paths 0 " \\ >> $(TCL_FILE) > $(Q)echo " "$(DESIGN_NAME)"-timmindly.rpt " >> $(TCL_FILE)

When I run the 'make report' I get the following error at the end:

debian@debian:place_route$ make report >TCL_FILE=report.tcl make tcl-common >make[1]: Entering directory `/home/debian/repo/9123_FOCS_ITA/branches/false-path-study/mbfocs/target/rtax1000s352_1/place_route' >rm -f report.tcl; >echo; echo "\tGenerating "report.tcl; echo > > Generating report.tcl >
[skipping unnecessary lines]
Designer: Generating timing reports >Actel Designer Software >Version: 9.1.5.1 >Release: v9.1 SP5 > >Info: The design focs.adb was last modified by software version 9.1.5.1. >Opened an existing design focs.adb. >Wrote timing report to file: focs-timing.rpt > >The Report command succeeded ( 02:20:16 ) >Wrote timing_violations report to file: focs-timmaxdly.rpt > >The Report command succeeded ( 00:00:09 ) >Wrote timing_violations report to file: focs-timmindly.rpt > >The Report command succeeded ( 00:00:09 ) > >The Execute Script command succeeded ( 02:20:35 ) >Design closed. > > while executing >"exec designer SCRIPT:designer.tcl LOGFILE:report.log" > (procedure "run_designer" line 6) > invoked from within >"run_designer "Generating timing reports" " > open_design $proj_name.adb > report \ > -type timing \ > -analysis max \ > -print_summary yes \ > -..." > (file "report.tcl" line 18) >Command exited with non-zero status 1 >real 8703.72 >user 8413.83 >sys 6.62 >make: *** [report] Error 1

Apparently all the timing reports are saved correctly, but the tcl script exits with an error that I'm not able to spot.

Any help is appreciated.

Al

--
A: Because it messes up the order in which people normally read text.  
Q: Why is top-posting such a bad thing?  
 Click to see the full signature
Reply to
alb
Loading thread data ...

Hi,

I think Make assumes that an exit code of 0 means success, and anything else implies failure. That seems to be why there is an error. From your log, it doesn't look like the Tcl script exited with an error.

HTH, Harnhua

Reply to
harnhua

Hi Harnhua, snipped-for-privacy@plunify.com wrote: []

From 'make' manual: Errors in Recipes. After each shell invocation returns, make looks at its exit status. If the shell completed successfully (the exit status is zero), the next line in the recipe is executed in a new shell; after the last line is finished, the rule is finished.

If you look carefully to the code (re-posted here for convenience) I posted it is pretty clear the tcl script has flagged an error, but it doesn't seem to me clear what type of error it might be:

Still wandering in the dark...

Al

Reply to
alb

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.