Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vdt-plugin
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
vdt-plugin
Commits
caf0f750
Commit
caf0f750
authored
Aug 06, 2015
by
Mikhail Karpenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add timing analizer interface
parent
9973916e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
193 additions
and
6 deletions
+193
-6
quartus_place.xml
tools/Altera_Quartus/quartus_place.xml
+1
-4
quartus_timing_analyzer.xml
tools/Altera_Quartus/quartus_timing_analyzer.xml
+188
-0
DesignMenu.xml
tools/DesignMenu.xml
+4
-2
No files found.
tools/Altera_Quartus/quartus_place.xml
View file @
caf0f750
...
@@ -50,7 +50,7 @@ timing and fitting requirements can be met"/>
...
@@ -50,7 +50,7 @@ timing and fitting requirements can be met"/>
</typedef>
</typedef>
<typedef
name=
"QuartusRegPack"
>
<typedef
name=
"QuartusRegPack"
>
<paramtype
kind=
"enum"
base=
"String"
>
<paramtype
kind=
"enum"
base=
"String"
>
<item
value=
"auto"
label=
"The Fitter automatically chooses the best method to fit the design"
/>
<item
value=
"auto"
label=
"The Fitter automatically chooses the best method to fit the design
℃
"
/>
<item
value=
"off"
label=
"The Fitter does not attempt to place a pair of logic functions in a single logic cell"
/>
<item
value=
"off"
label=
"The Fitter does not attempt to place a pair of logic functions in a single logic cell"
/>
<item
value=
"normal"
label=
"The fitter places both a combinational and a sequential operation in a logic cell when
<item
value=
"normal"
label=
"The fitter places both a combinational and a sequential operation in a logic cell when
it is expected that the placement will not affect performance"
/>
it is expected that the placement will not affect performance"
/>
...
@@ -78,9 +78,6 @@ register cascade chains, or that can be converted to register cascade chains"/>
...
@@ -78,9 +78,6 @@ register cascade chains, or that can be converted to register cascade chains"/>
inherits=
"QuartusToolPrototype"
inherits=
"QuartusToolPrototype"
>
>
<action-menu>
<action
lable=
"Place"
resource=
""
icon=
"mondrian2x2.png"
/>
</action-menu>
<depends-list>
<depends-list>
<depends
state=
"QuartusSnapshotSynth"
/>
<depends
state=
"QuartusSnapshotSynth"
/>
</depends-list>
</depends-list>
...
...
tools/Altera_Quartus/quartus_timing_analyzer.xml
0 → 100644
View file @
caf0f750
<?xml version="1.0" encoding="UTF-8"?>
<!--
/*******************************************************************************
* Copyright (c) 2015 Elphel, Inc.
* This file is a part of VDT plug-in.
* VDT plug-in is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* VDT plug-in is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Additional permission under GNU GPL version 3 section 7:
* If you modify this Program, or any covered work, by linking or combining it
* with Eclipse or Eclipse plugins (or a modified version of those libraries),
* containing parts covered by the terms of EPL/CPL, the licensors of this
* Program grant you additional permission to convey the resulting work.
* {Corresponding Source for a non-source form of such a combination shall
* include the source code for the parts of Eclipse or Eclipse plugins used
* as well as that of the covered work.}
*******************************************************************************/
-->
<vdt-project>
<interface
name=
"QuartusTimequestInterface"
extends=
"QuartusInterface"
>
<typedef
name=
"TemperatureGradeType"
>
<paramtype
kind=
"enum"
base=
"String"
>
<item
value=
"i"
label=
"Industrial grade (-40℃ to 100℃)"
/>
<item
value=
"c"
label=
"Commercial grade (0℃ to 85℃)"
/>
<item
value=
"m"
label=
"Military grade (-55℃ to 125℃)"
/>
<item
value=
"e"
label=
"Extended grade (-40℃ to 125℃)"
/>
<item
value=
"a"
label=
"Automotive grade (-40℃ to 125℃)"
/>
</paramtype>
</typedef>
<typedef
name=
"TimingModelType"
>
<paramtype
kind=
"enum"
base=
"String"
>
<item
value=
"fast"
label=
"Fast corner delay model"
/>
<item
value=
"slow"
label=
"Slow corner delay model"
/>
</paramtype>
</typedef>
<typedef
name=
"TemperatureRange"
>
<paramtype
kind=
"number"
lo=
"-55"
hi=
"125"
format=
"%d"
/>
</typedef>
</interface>
<tool
name=
"QuartusTimequest"
label=
"Timing analizer interface"
project=
"FPGA_project"
interface=
"QuartusTimequestInterface"
package=
"FPGA_package"
shell=
"/bin/bash"
description=
"Quartus static timing analyzer"
log-dir=
"QuartusLogDir"
state-dir=
"QuartusLocalDir"
inherits=
"QuartusToolPrototype"
>
<depends-list>
<depends
state=
"QuartusSnapshotPlace"
/>
</depends-list>
<!-- Command line parameters -->
<parameter
id=
"lower_priority"
label=
"Lower priority"
tooltip=
"Option to lower priority of the current process."
type=
"Boolean"
default=
"false"
visible=
"true"
readonly=
"false"
omit=
"false"
format=
"DoubleDashName"
/>
<parameter
id=
"parallel"
label=
"# of processors to use"
tooltip=
"Controls parallel compilation. If 0 is specified, the Quartus software
uses all processors detected on the system. Otherwise, the software attempts to use the specified number of processors.
Note: this feature is not licenced for the Web Edition and this parameter should be set to 1"
type=
"Cardinal"
default=
"1"
visible=
"true"
readonly=
"false"
omit=
"0"
format=
"DoubleDash"
/>
<parameter
id=
"do_report_timing"
label=
"Do report timing"
tooltip=
"For every clock domain, this option reports the most critical
path based on setup slack. This command is equivalent to:
report_timing -npaths 1 -to_clock $clock
for every clock in the design (where $clock is the clock name)"
type=
"Boolean"
default=
"false"
visible=
"true"
readonly=
"false"
omit=
"false"
format=
"DoubleDashName"
/>
<parameter
id=
"force_dat"
label=
"Force delay annotation"
tooltip=
"Using this option runs the Delay
Annotator and new delays are annotated on the compiler netlist. The compiler netlist is the source from which a timing netlist
is created. This option therefore ensures that new delays are used in the timing netlist. If this option is not set, the
default flow attempts to re-use existing delays in the compiler netlist (if available)"
type=
"Boolean"
default=
"false"
visible=
"true"
readonly=
"false"
omit=
"false"
format=
"DoubleDashName"
/>
<parameter
id=
"grade"
label=
"Temperature grade"
tooltip=
"Option to specify the device temperature grade to use when running
the TimeQuest Timing Analyzer. This option is provided to support what-if analysis and is not recommended for final sign-off analysis"
type=
"TemperatureGradeType"
default=
"i"
visible=
"true"
readonly=
"false"
omit=
"i"
format=
"DoubleDash"
/>
<parameter
id=
"model"
label=
"Timing model"
tooltip=
"Option to specify the timing model to use when running
the TimeQuest Timing Analyzer"
type=
"TimingModelType"
default=
"fast"
visible=
"true"
readonly=
"false"
omit=
"fast"
format=
"DoubleDash"
/>
<parameter
id=
"multicorner"
label=
"Multicorner"
tooltip=
"Creates slack summaries for all available operating conditions,
enabling multi-corner timing analysis"
type=
"Boolean"
default=
"true"
visible=
"true"
readonly=
"false"
omit=
"true"
format=
"DoubleDashName"
/>
<parameter
id=
"report_script"
label=
"Report script"
tooltip=
"Name of the custom Tcl script called at the end of
the default script, but before the netlist is destoryed. The behavior of the default script is equivalent to the
following if this option is specified:
project_open 'rev'
create_timing_netlist 'options'
read_sdc if defined
update_timing_netlist
create summary panels

# The custom script is loaded here
source 'script_name'

delete_netlist
project_close"
type=
"Filename"
default=
""
visible=
"true"
readonly=
"false"
omit=
""
format=
"DoubleDashName"
/>
<parameter
id=
"sdc"
label=
"SDC file to read"
tooltip=
"Name of the SDC File to read. If this option is not specified,
the TimeQuest Timing Analyzer reads the default 'rev'.sdc file if it exists"
type=
"Filename"
default=
""
visible=
"true"
readonly=
"false"
omit=
""
format=
"DoubleDashName"
/>
<parameter
id=
"speed"
label=
"Speed grade"
tooltip=
"Option to specify the device speed grade to use when running
the TimeQuest Timing Analyzer"
type=
"Cardinal_1"
default=
""
visible=
"true"
readonly=
"false"
omit=
""
format=
"DoubleDashName"
/>
<parameter
id=
"temperature"
label=
"Temperature"
tooltip=
"Option to specify the device temperature ℃ to use when running
the TimeQuest Timing Analyzer"
type=
"TemperatureRange"
default=
""
visible=
"true"
readonly=
"false"
omit=
""
format=
"DoubleDashName"
/>
<parameter
id=
"voltage"
label=
"Voltage"
tooltip=
"Option to specify the device voltage (mV) to use when running
the TimeQuest Timing Analyzer"
type=
"Cardinal"
default=
""
visible=
"true"
readonly=
"false"
omit=
""
format=
"DoubleDashName"
/>
<input>
<group
name=
"Timing analizer"
>
"lower_priority"
"parallel"
"do_report_timing"
"force_dat"
"multicorner"
"model"
"grade"
"report_script"
"sdc"
"speed"
"temperature"
"voltage"
</group>
</input>
<output>
<!-- Assemble quartus_sta arguments line -->
<line
name=
"quartus_assemble_args"
dest=
"QuartusConsole"
sep=
" "
>
"set sta_args \""
"%do_report_timing"
"%force_dat"
"%grade"
"%lower_priority"
"%model"
"%multicorner"
"%parallel"
"%report_script"
"%sdc"
"%speed"
"%temperature"
"%voltage"
"\""
</line>
<!-- Start fitter -->
<line
name=
"quartus_run_synth"
dest=
"QuartusConsole"
mark=
"``"
sep=
"\n"
prompt=
"@@FINISH@@"
success=
"@@FINISH@@"
log=
""
stdout=
"parser_Quartus"
>
"cd ~/%QuartusProjectRoot"
"set projectName %%ProjectName"
"set outputDir ~/%QuartusProjectRoot/%QuartusRemoteDir"
"file mkdir $outputDir"
"load_package flow"
<!-- Reopen project if it was closed somehow -->
"if [is_project_open] {"
"puts \"Project is open, starting timing analizer\""
"} else {"
"project_open $projectName"
"}"
"if {[catch {execute_module -tool sta -args $sta_args} result]} {"
"puts \"Result: $result\""
"puts \"ERROR: Timing analizer faild. See the report file.\""
"} else {"
"puts \"INFO: Timing analysis was successful.\""
"}"
"puts \"@@FINISH@@\""
</line>
</output>
</tool>
</vdt-project>
tools/DesignMenu.xml
View file @
caf0f750
...
@@ -197,9 +197,11 @@
...
@@ -197,9 +197,11 @@
label=
"Place and route design"
label=
"Place and route design"
icon=
"route66.png"
icon=
"route66.png"
call=
"QuartusPlace"
/>
call=
"QuartusPlace"
/>
<menuitem
name=
"QuartusTimeQuest"
label=
"Timing analizer"
icon=
"clock.png"
call=
"QuartusTimequest"
/>
</menu>
</menu>
</menu>
</menu>
<menu
name=
"MainDesignMenu2"
<menu
name=
"MainDesignMenu2"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment