Commit 03f8c5bd authored by Andrey Filippov's avatar Andrey Filippov

Updated private vdt repository to the later changes in the open vdt-plugin one

parent 6ae5df1f
...@@ -361,6 +361,12 @@ ...@@ -361,6 +361,12 @@
<extension <extension
point="org.eclipse.core.variables.dynamicVariables"> point="org.eclipse.core.variables.dynamicVariables">
<variable
name="verilog_project_loc"
description="Returns the absolute file system path of the project."
resolver="com.elphel.vdt.ui.variables.VerilogResolver"
supportsArgument="true">
</variable>
<variable <variable
name="verilog_source_loc" name="verilog_source_loc"
description="%verilog_source_loc.description" description="%verilog_source_loc.description"
......
...@@ -39,7 +39,6 @@ import org.eclipse.debug.core.model.ILaunchConfigurationDelegate; ...@@ -39,7 +39,6 @@ import org.eclipse.debug.core.model.ILaunchConfigurationDelegate;
import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Display;
import com.elphel.vdt.Txt; import com.elphel.vdt.Txt;
import com.elphel.vdt.core.tools.contexts.BuildParamsItem;
import com.elphel.vdt.ui.MessageUI; import com.elphel.vdt.ui.MessageUI;
import com.elphel.vdt.veditor.VerilogPlugin; import com.elphel.vdt.veditor.VerilogPlugin;
import com.elphel.vdt.veditor.preference.PreferenceStrings; import com.elphel.vdt.veditor.preference.PreferenceStrings;
......
...@@ -139,7 +139,7 @@ public class XMLConfig extends Config { ...@@ -139,7 +139,7 @@ public class XMLConfig extends Config {
static final String CONTEXT_TOOL_LOG_DIRECTORY = "log-dir"; // folder to store the tool log files static final String CONTEXT_TOOL_LOG_DIRECTORY = "log-dir"; // folder to store the tool log files
static final String CONTEXT_TOOL_STATE_DIRECTORY = "state-dir"; // folder to store the tool state (snapshot) files static final String CONTEXT_TOOL_STATE_DIRECTORY = "state-dir"; // folder to store the tool state (snapshot) files
static final String CONTEXT_TOOL_DISABLED = "disabled"; // Parameter name that disables the tool if true static final String CONTEXT_TOOL_DISABLED = "disable"; // Parameter name that disables the tool if true
static final String CONTEXT_TOOL_RESULT = "result"; // Parameter name keeps the filename representing result (snapshot) static final String CONTEXT_TOOL_RESULT = "result"; // Parameter name keeps the filename representing result (snapshot)
static final String CONTEXT_TOOL_RESTORE = "restore"; // tool name that restores the state from result (shapshot) static final String CONTEXT_TOOL_RESTORE = "restore"; // tool name that restores the state from result (shapshot)
static final String CONTEXT_TOOL_SAVE = "save"; // tool name that saves the state to result file (snapshot) static final String CONTEXT_TOOL_SAVE = "save"; // tool name that saves the state to result file (snapshot)
......
...@@ -35,6 +35,12 @@ import java.util.Iterator; ...@@ -35,6 +35,12 @@ import java.util.Iterator;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.variables.IDynamicVariable;
import org.eclipse.core.variables.IStringVariableManager;
import org.eclipse.core.variables.IValueVariable;
import org.eclipse.core.variables.VariablesPlugin;
import com.elphel.vdt.core.tools.ToolsCore; import com.elphel.vdt.core.tools.ToolsCore;
import com.elphel.vdt.core.tools.config.Config; import com.elphel.vdt.core.tools.config.Config;
import com.elphel.vdt.core.tools.config.ConfigException; import com.elphel.vdt.core.tools.config.ConfigException;
...@@ -327,7 +333,7 @@ public abstract class Context { ...@@ -327,7 +333,7 @@ public abstract class Context {
for(Iterator<String> lineIter = lines.iterator(); lineIter.hasNext();) { for(Iterator<String> lineIter = lines.iterator(); lineIter.hasNext();) {
String line = (String)lineIter.next(); String line = (String)lineIter.next();
// the result will not be used as some other parameter value, so topProcessor is null in the next line /Andrey // the result will not be used as some other parameter value, so topProcessor is null in the next line /Andrey
commandSequence.add(buildCommandString(line,null)); // TODO: parses them here? VERIFY commandSequence.add(resolveStrings(buildCommandString(line,null))); // TODO: parses them here? VERIFY
} }
// Here - already resolved to empty // Here - already resolved to empty
...@@ -736,4 +742,89 @@ public abstract class Context { ...@@ -736,4 +742,89 @@ public abstract class Context {
if(initialized) if(initialized)
throw new ConfigException("Context cannot be re-initialized"); throw new ConfigException("Context cannot be re-initialized");
} }
//Substitute Eclipse and VDT ("verilog_") strings ${} here, after all VDT parameter processing
// recursively resolve variables
private List<String> resolveStrings(List<String> preResolved){
List<String> resolved = new ArrayList<String>();
for (String s:preResolved){
resolved.add(resolveStrings(s));
}
return resolved;
}
private String resolveStrings(String s){
int start = s.indexOf("${");
if (start < 0) return s;
if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) System.out.println("Before substitution\""+s+"\"");
int end = s.indexOf("}", start);
if (end < 0) return s;
String dynVar = s.substring(start+2,end).trim();
String dynValue = resolveEclipseVariables(dynVar);
if (dynValue == null) {
System.out.println("getEclipseSubstitutedString("+s+") - undefined variable: "+dynVar);
dynValue = s.substring(start,end+1); // just no substitution
}
String result = s.substring(0,start)+dynValue;
if (end < s.length()) result += resolveStrings(s.substring(end+1));
if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) System.out.println("After substitution\""+result+"\"");
return result;
}
// from http://www.programcreek.com/java-api-examples/index.php?api=org.eclipse.core.variables.IDynamicVariable
private String resolveEclipseVariables(String key){
if (key == null) return null;
IStringVariableManager variableManager=VariablesPlugin.getDefault().getStringVariableManager();
//debug
/*
IValueVariable [] variables = variableManager.getValueVariables();
IDynamicVariable [] dVariables = variableManager.getDynamicVariables();
System.out.println("resolveEclipseVariables: key=" + key);
for (IValueVariable v : variables){
System.out.println("resolveEclipseVariables: variables=" + v.getValue());
}
for (IDynamicVariable dv : dVariables){
if (!dv.getName().contains("prompt")) {
try {
System.out.print("resolveEclipseVariables: dVariables=" + dv.getName());
System.out.println(" -- "+dv.getValue(null));
} catch (CoreException e) {
// TODO Auto-generated catch block
System.out.println(" -- null?");
}
}
}
*/
int index=key.indexOf(':');
if (index > 1) {
String varName=key.substring(0,index);
IDynamicVariable variable=variableManager.getDynamicVariable(varName);
if (variable == null) return null;
try {
if (key.length() > index + 1) return variable.getValue(key.substring(index + 1));
return variable.getValue(null);
}
catch ( CoreException e) {
return null;
}
}
IValueVariable variable=variableManager.getValueVariable(key);
if (variable == null) {
IDynamicVariable dynamicVariable=variableManager.getDynamicVariable(key);
if (dynamicVariable == null) return null;
try {
return dynamicVariable.getValue(null);
}
catch ( CoreException e) {
return null;
}
}
return variable.getValue();
}
} }
...@@ -46,7 +46,7 @@ import com.elphel.vdt.core.tools.params.types.ParamTypeBool; ...@@ -46,7 +46,7 @@ import com.elphel.vdt.core.tools.params.types.ParamTypeBool;
import com.elphel.vdt.core.tools.params.types.ParamTypeString; import com.elphel.vdt.core.tools.params.types.ParamTypeString;
import com.elphel.vdt.core.tools.params.types.ParamTypeString.KIND; import com.elphel.vdt.core.tools.params.types.ParamTypeString.KIND;
import com.elphel.vdt.core.tools.params.types.RunFor; import com.elphel.vdt.core.tools.params.types.RunFor;
import com.elphel.vdt.ui.MessageUI; //import com.elphel.vdt.ui.MessageUI;
import com.elphel.vdt.ui.VDTPluginImages; import com.elphel.vdt.ui.VDTPluginImages;
import com.elphel.vdt.ui.views.DesignFlowView; import com.elphel.vdt.ui.views.DesignFlowView;
import com.elphel.vdt.ui.variables.SelectedResourceManager; import com.elphel.vdt.ui.variables.SelectedResourceManager;
...@@ -227,6 +227,7 @@ public class Tool extends Context implements Cloneable, Inheritable { ...@@ -227,6 +227,7 @@ public class Tool extends Context implements Cloneable, Inheritable {
this.stateDirString= stateDirString; this.stateDirString= stateDirString;
this.disabledString= disabledString; // to disable tools from automatic running this.disabledString= disabledString; // to disable tools from automatic running
this.resultString= resultString; // parameter name of kind of file that represents state after running this tool this.resultString= resultString; // parameter name of kind of file that represents state after running this tool
this.restoreString= restoreString; // name of tool that restores the state of this tool ran (has own dependencies) this.restoreString= restoreString; // name of tool that restores the state of this tool ran (has own dependencies)
this.saveString= saveString; // name of tool that saves the state of this tool run this.saveString= saveString; // name of tool that saves the state of this tool run
...@@ -239,7 +240,7 @@ public class Tool extends Context implements Cloneable, Inheritable { ...@@ -239,7 +240,7 @@ public class Tool extends Context implements Cloneable, Inheritable {
result=null; result=null;
dependStates=null; dependStates=null;
dependFiles=null; dependFiles=null;
DEBUG_PRINT("Created tool"+name+" disabledString = "+disabledString);
pinned=false; pinned=false;
openState=null; openState=null;
openTool=null; openTool=null;
...@@ -577,14 +578,20 @@ public class Tool extends Context implements Cloneable, Inheritable { ...@@ -577,14 +578,20 @@ public class Tool extends Context implements Cloneable, Inheritable {
"' must be of type '" + ParamTypeBool.NAME + "' must be of type '" + ParamTypeBool.NAME +
"'"); "'");
} }
DEBUG_PRINT("initDisabled() tool "+name+" disabled = "+disabled); // parameter, not value
} }
public boolean isDisabled(){ public boolean isDisabled(){
if (abstractTool) return true; // abstract are always disabled if (abstractTool) return true; // abstract are always disabled
if (disabled==null) return false; if (disabled==null) return false;
List<String> values=disabled.getValue(new FormatProcessor(this)); // null for topFormatProcessor List<String> values=disabled.getValue(new FormatProcessor(this)); // null for topFormatProcessor
if ((values==null) || (values.size()==0)) return false; if ((values==null) || (values.size()==0)) {
return (!values.get(0).equals("true")); DEBUG_PRINT(name+".isDisabled() ==> FALSE (((values==null) || (values.size()==0)))");
return false;
}
DEBUG_PRINT(name+".isDisabled() ==> "+values.get(0).equals("true"));
// return (!values.get(0).equals("true"));
return (values.get(0).equals("true"));
} }
public void initDepends() throws ConfigException{ public void initDepends() throws ConfigException{
......
...@@ -530,8 +530,8 @@ java.lang.NullPointerException ...@@ -530,8 +530,8 @@ java.lang.NullPointerException
DEBUG_PRINT("Could not find enabled tool to provide state "+state); DEBUG_PRINT("Could not find enabled tool to provide state "+state);
return null; return null;
} else { } else {
MessageUI.error("No tool provide state "+state); MessageUI.error("No tool provides state "+state);
DEBUG_PRINT("No tool provide state "+state); DEBUG_PRINT("No tool provides state "+state);
return null; return null;
} }
} }
...@@ -698,8 +698,8 @@ java.lang.NullPointerException ...@@ -698,8 +698,8 @@ java.lang.NullPointerException
if ((dependStates!=null) && (dependStates.size()>0)){ if ((dependStates!=null) && (dependStates.size()>0)){
for (String state:dependStates){ for (String state:dependStates){
if (!stateProviders.containsKey(state)){ if (!stateProviders.containsKey(state)){
MessageUI.error("No tool provide output state '"+state+"' needed to satisfy dependency of the tool "+tool.getName()); MessageUI.error("No tool provides output state '"+state+"' needed to satisfy dependency of the tool "+tool.getName());
System.out.println("No tool provide output state '"+state+"' needed to satisfy dependency of the tool "+tool.getName()); System.out.println("No tool provides output state '"+state+"' needed to satisfy dependency of the tool "+tool.getName());
} }
} }
} }
...@@ -716,8 +716,10 @@ java.lang.NullPointerException ...@@ -716,8 +716,10 @@ java.lang.NullPointerException
String ignoreFilter) throws CoreException { String ignoreFilter) throws CoreException {
if (!okToRun()) return; if (!okToRun()) return;
// Set this tool dirty (not to try reports on this tool before it ran)
DEBUG_PRINT("launchToolSequence("+tool.getName()+", setting its state to \"Dirty\"");
tool.setDirty(true);
setStateProvides(); // just testing setStateProvides(); // just testing
// tool.setDesignFlowView(designFlowView); // tool.setDesignFlowView(designFlowView);
tool.setDesignFlowView(designFlowView); // maybe will not be needed with ToolSequencing class tool.setDesignFlowView(designFlowView); // maybe will not be needed with ToolSequencing class
tool.setMode(mode) ; //TOOL_MODE.RUN); tool.setMode(mode) ; //TOOL_MODE.RUN);
...@@ -1603,11 +1605,11 @@ java.lang.NullPointerException ...@@ -1603,11 +1605,11 @@ java.lang.NullPointerException
public void setDependState(Tool tool){ public void setDependState(Tool tool){
DEBUG_PRINT("++++++++ setDependState("+tool.getName()+")"); DEBUG_PRINT("++++++++ setDependState("+tool.getName()+")");
tool.clearDependStamps(); // is it needed? tool.clearDependStamps(); // is it needed?
Map <String,String> depStates=makeDependStates(tool); Map <String,String> depStates=makeDependStates(tool,false);
for (String state:depStates.keySet()){ for (String state:depStates.keySet()){
tool.setStateTimeStamp(state,depStates.get(state)); // name of the state file including timestamp tool.setStateTimeStamp(state,depStates.get(state)); // name of the state file including timestamp
} }
Map <String,String> depFiles=makeDependFiles(tool); Map <String,String> depFiles=makeDependFiles(tool,false);
for (String file:depFiles.keySet()){ for (String file:depFiles.keySet()){
DEBUG_PRINT("setDependState("+tool.getName()+"), file="+file+" stamp="+depFiles.get(file)); DEBUG_PRINT("setDependState("+tool.getName()+"), file="+file+" stamp="+depFiles.get(file));
tool.setFileTimeStamp(file,depFiles.get(file)); tool.setFileTimeStamp(file,depFiles.get(file));
...@@ -1621,15 +1623,26 @@ java.lang.NullPointerException ...@@ -1621,15 +1623,26 @@ java.lang.NullPointerException
* @return true if all timestamps matched, false otherwise * @return true if all timestamps matched, false otherwise
*/ */
public boolean matchDependState(Tool tool){ public boolean matchDependState(Tool tool){
Map <String,String> depStates=makeDependStates(tool); Map <String,String> depStates=makeDependStates(tool, true);
Map <String,String> depFiles=makeDependFiles(tool); Map <String,String> depFiles=makeDependFiles(tool,true);
Map <String,String> storedDepStates = tool.getDependStatesTimestamps(); Map <String,String> storedDepStates = tool.getDependStatesTimestamps();
Map <String,String> storedDepFiles = tool.getDependFilesTimestamps(); Map <String,String> storedDepFiles = tool.getDependFilesTimestamps();
if (depStates == null) {
DEBUG_PRINT("matchDependState("+tool.getName()+") :"+
" depStates == null");
return false;
}
if (depStates.size()!=storedDepStates.size()) { if (depStates.size()!=storedDepStates.size()) {
DEBUG_PRINT("matchDependState("+tool.getName()+") :"+ DEBUG_PRINT("matchDependState("+tool.getName()+") :"+
" depStates.size()!=storedDepStates.size() - "+depStates.size()+"!="+storedDepStates.size()); " depStates.size()!=storedDepStates.size() - "+depStates.size()+"!="+storedDepStates.size());
return false; return false;
} }
if (depFiles == null) {
DEBUG_PRINT("matchDependState("+tool.getName()+") :"+
" depFiles == null");
return false;
}
if (depFiles.size()!=storedDepFiles.size()) { if (depFiles.size()!=storedDepFiles.size()) {
DEBUG_PRINT("matchDependState("+tool.getName()+") :"+ DEBUG_PRINT("matchDependState("+tool.getName()+") :"+
" depFiles.size()!=storedDepFiles.size() - "+depFiles.size()+"!="+storedDepFiles.size()); " depFiles.size()!=storedDepFiles.size() - "+depFiles.size()+"!="+storedDepFiles.size());
...@@ -1662,7 +1675,7 @@ java.lang.NullPointerException ...@@ -1662,7 +1675,7 @@ java.lang.NullPointerException
* @param tool tool just ran * @param tool tool just ran
* @return map of states (link names) to states files (full with timestamps) * @return map of states (link names) to states files (full with timestamps)
*/ */
private Map <String,String> makeDependStates(Tool tool){ private Map <String,String> makeDependStates(Tool tool, boolean failOnMissing){
Map <String,String> depStates=new Hashtable<String,String>(); Map <String,String> depStates=new Hashtable<String,String>();
List<String> dependStates=tool.getDependStates(); List<String> dependStates=tool.getDependStates();
if (dependStates!=null) for (String state: dependStates){ if (dependStates!=null) for (String state: dependStates){
...@@ -1670,6 +1683,10 @@ java.lang.NullPointerException ...@@ -1670,6 +1683,10 @@ java.lang.NullPointerException
ToolStateStamp tss=currentStates.get(state); ToolStateStamp tss=currentStates.get(state);
depStates.put(state,tss.getToolStateFile()); // name of the state file including timestamp depStates.put(state,tss.getToolStateFile()); // name of the state file including timestamp
} else { } else {
if (failOnMissing) {
DEBUG_PRINT("makeDependStates: no information for state "+state+" on which tool "+tool.getName()+" depends, failing");
return null;
}
DEBUG_PRINT("Seems a BUG (OK when called matchDependState): no information for state "+state+" on which tool "+tool.getName()+" depends"); DEBUG_PRINT("Seems a BUG (OK when called matchDependState): no information for state "+state+" on which tool "+tool.getName()+" depends");
/* /*
DEBUG_PRINT("currentStates are:"); DEBUG_PRINT("currentStates are:");
...@@ -1681,10 +1698,10 @@ java.lang.NullPointerException ...@@ -1681,10 +1698,10 @@ java.lang.NullPointerException
} }
return depStates; return depStates;
} }
private Map <String,String> makeDependFiles(Tool tool){ private Map <String,String> makeDependFiles(Tool tool, boolean failOnMissing){
DEBUG_PRINT("++++++ makeDependFiles("+tool.getName()+")"); DEBUG_PRINT("++++++ makeDependFiles("+tool.getName()+")");
Map <String,String> depFiles=new Hashtable<String,String>(); Map <String,String> depFiles=new Hashtable<String,String>();
List<String> dependFileNames=tool.getDependFiles(); List<String> dependFileNames=tool.getDependFiles(); // files on which this tool depends
if (dependFileNames!=null) { if (dependFileNames!=null) {
IProject project = SelectedResourceManager.getDefault().getSelectedProject(); // should not be null when we got here IProject project = SelectedResourceManager.getDefault().getSelectedProject(); // should not be null when we got here
for (String depFile: dependFileNames){ for (String depFile: dependFileNames){
...@@ -1698,6 +1715,12 @@ java.lang.NullPointerException ...@@ -1698,6 +1715,12 @@ java.lang.NullPointerException
DEBUG_PRINT("makeDependFiles(): file="+depFile+", stamp="+sourceFile.getModificationStamp()+ DEBUG_PRINT("makeDependFiles(): file="+depFile+", stamp="+sourceFile.getModificationStamp()+
" ("+sourceFile.toString()+")"); " ("+sourceFile.toString()+")");
} else { } else {
if (failOnMissing) {
DEBUG_PRINT("makeDependFiles(): source file "+sourceFile.getLocation()+" on which tool "+
tool.getName()+" depends does not exist, failing");
return null;
}
System.out.println("Seems a BUG: source file "+sourceFile.getLocation()+" on which tool "+ System.out.println("Seems a BUG: source file "+sourceFile.getLocation()+" on which tool "+
tool.getName()+" depends does not exist"); tool.getName()+" depends does not exist");
depFiles.put(depFile, ""); // empty stamp for non-existent files? depFiles.put(depFile, ""); // empty stamp for non-existent files?
......
...@@ -77,7 +77,11 @@ public class VerilogResolver implements IDynamicVariableResolver { ...@@ -77,7 +77,11 @@ public class VerilogResolver implements IDynamicVariableResolver {
*/ */
protected String translateToValue(IResource resource, IDynamicVariable variable) throws CoreException { protected String translateToValue(IResource resource, IDynamicVariable variable) throws CoreException {
String name = variable.getName(); String name = variable.getName();
if (name.endsWith("_loc")) { //$NON-NLS-1$ if (name.endsWith("project_loc")) { //$NON-NLS-1$
resource = SelectedResourceManager.getDefault().getChosenVerilogFile();
return resource.getProject().getLocation().toOSString();
} else if (name.endsWith("_loc")) { //$NON-NLS-1$
return resource.getLocation().toOSString(); return resource.getLocation().toOSString();
} else if (name.endsWith("_path")) { //$NON-NLS-1$ } else if (name.endsWith("_path")) { //$NON-NLS-1$
return resource.getFullPath().toOSString(); return resource.getFullPath().toOSString();
......
<?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="QuartusInterface" extends="FPGAPprojectInterface">
<syntax name="GrepFilterProblemSyntax" format='| grep --line-buffered -v "\[%%ParamName"' />
<syntax name="GrepFilterProblemOtherSyntax" format='%(| grep --line-buffered -v "\[%%ParamValue"%|\n%)' />
<typedef name="ParserModeType">
<paramtype kind= "enum" base="String">
<item value="0" label="Tool output is parsed immediately"/>
<item value="1" label="Tool output is delayed by not more than 1 line when consolidating bits"/>
<item value="2" label="As '1', but do not show same bits again"/>
<item value="3" label="All tool output containg hierarchical output is delayed to the very end"/>
</paramtype>
</typedef>
</interface>
<!-- Abstract tools to be inherited by instances used for various Quartus tools -->
<!-- Restore tool for Quartus -->
<tool name="RestoreQuartus" label="Restore state after Quartus tool"
project="FPGA_project"
interface="QuartusInterface"
package="FPGA_package"
shell="/bin/bash"
abstract="true">
<output>
<line name="quartus_pre_restore">
"-c"
<!-- Create project directory on remote server if it did not exist -->
"ssh"
"-oBatchMode=yes"
"-l %RemoteUser %RemoteHost"
"'"
"mkdir -p"
"%QuartusProjectRoot"
"' ;"
<!-- Copy snapshot generated after synthesis from local to remote -->
"rsync -avr -e ssh"
<!-- from: -->
"%QuartusLocalDir/%%StateFile"
<!-- to: -->
"%RemoteUser@%RemoteHost:%QuartusProjectRoot"
";"
</line>
<line name="quartus_restore"
dest="QuartusConsole"
mark="``"
sep="\n"
failure="ERROR"
prompt="@@FINISH@@"
log="">
"puts \"\Restoring snapshot %%StateFile""
"cd ~/%QuartusProjectRoot"
"set outputDir ~/%QuartusProjectRoot/%QuartusRemoteDir"
"file mkdir $outputDir"
"project_restore %QuartusRemoteDir/%%StateFile"
"puts \"@@FINISH@@\""
</line>
</output>
</tool>
<!-- Save tool for Quartus tool -->
<tool name="SaveQuartus"
label="SaveQuartus"
project="FPGA_project"
interface="QuartusInterface"
package="FPGA_package"
shell="/bin/bash"
abstract="true">
<output>
<line name="quartus_save"
dest="QuartusConsole"
mark="``"
sep="\n"
prompt="@@FINISH@@"
failure="ERROR"
log="">
"puts \"Saving snapshot %%StateFile\""
"cd ~/%QuartusProjectRoot"
"set outputDir ~/%QuartusProjectRoot/%QuartusRemoteDir"
"file mkdir $outputDir"
"project_archive -overwrite %QuartusRemoteDir/%%StateFile"
"puts \"@@FINISH@@\""
</line>
<line name="quartus_copy_after_save">
"-c"
"mkdir -p %QuartusLocalDir ;"
"rsync -avr -e ssh"
"%RemoteUser@%RemoteHost:%QuartusProjectRoot/%QuartusRemoteDir/%%StateFile"
"%%StateDir/"
</line>
</output>
</tool>
</vdt-project>
<?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>
<tool name="Quartus"
label="Launch Quartus"
project="FPGA_project"
package="FPGA_package"
shell="/bin/bash" interface="QuartusInterface" description="Launching remote Quartus in console">
<action-menu>
<action label="Launch Quartus" resource="" icon="door_in.png" />
<action label="Generate public key" resource="" icon="key.png" />
<action label="Setup connection to" resource="%RemoteUser@%RemoteHost"
check-extension="false" check-existence="false" icon="setup.png" />
</action-menu>
<parameter id="command" label="Shell command" default="bash"
type="String" format="CopyValue" visible="true" readonly="false" />
<parameter id="actionIndex" default="%%ChosenActionIndex"
type="String" format="CopyValue" visible="false" />
<input>
<group name="General">
"QuartusRemoteCommand"
</group>
<group name="Shell">
"command"
</group>
</input>
<output>
<if actionIndex="0">
<line name="Quartus"
timeout="1"
keep-open= "true">
"%QuartusShellSwitches"
"%QuartusPreSSH"
"ssh"
"-oBatchMode=yes"
<if TerminalMode = "true">
"-t -t"
</if>
"%QuartusSSHSwitches"
"-l"
"%RemoteUser"
"%RemoteHost"
"'"
"%QuartusRemoteCommand"
"'"
"%QuartusSSHExtra"
"|| { echo '*** ssh connection to the server %RemoteUser@%RemoteHost failed ***';"
"echo 'You may need to configure connection - it is done in \"Package Setup\"';"
"echo 'Then generate a public key (if it is not done already), and post it to';"
"echo 'the remote server (currently set as %RemoteUser@%RemoteHost)';"
"exit 1; } ;"
</line>
<line name="quartus_check"
dest="QuartusConsole"
mark="``"
sep=""
success="All rights reserved."
prompt="@@FINISH@@">
<!--success="Finished parsing RTL primitives"-->
"puts \"@@FINISH@@\"\n"
</line>
</if>
<if actionIndex="1">
<line name="Keygen">
"%QuartusShellSwitches"
"echo \"Generating public key with command:\";"
"echo \"ssh-keygen -t rsa -q -f ~/.ssh/id_rsa -N ''\";"
"ssh-keygen -t rsa -q -f ~/.ssh/id_rsa -N ''"
</line>
</if>
<if actionIndex="2">
<line name="SSHCopyID">
"%QuartusShellSwitches"
"echo \"*********************************************\";"
"echo \"** **\";"
"echo \"** This command requires you to be able **\";"
"echo \"** to login to the remote system and enter **\";"
"echo \"** a password once to post your public key **\";"
"echo \"** there. **\";"
"echo \"** **\";"
"echo \"** For this you need 'ssh-askpass' to be **\";"
"echo \"** installed in your system. **\";"
"echo \"** **\";"
"echo \"** If the command will fail, you need to **\";"
"echo \"** install 'ssh-askpass' and try again or **\";"
"echo \"** just manually run: **\";"
"echo \"\n ssh-copy-id %RemoteUser@%RemoteHost\n\";"
"echo \"** from the system terminal and enter your **\";"
"echo \"** password when prompted. **\";"
"echo \"** **\";"
"echo \"** If you see nothing below this box, that **\";"
"echo \"** likely means that Eclipse is launched **\";"
"echo \"** from the terminal, and the system asks **\";"
"echo \"** your password (or permission to add **\";"
"echo \"** key of the remote host first) in that **\";"
"echo \"** terminal - just switch to it and **\";"
"echo \"** complete the setup. **\";"
"echo \"** **\";"
"echo \"*********************************************\";"
"ssh-copy-id %RemoteUser@%RemoteHost;"
</line>
</if>
</output>
</tool>
</vdt-project>
This diff is collapsed.
<?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>
<tool name="QuartusToolPrototype" label="QuartusToolPrototype"
project="FPGA_project"
interface="QuartusInterface"
package="FPGA_package"
shell="/bin/bash"
description="Quartus tool prototype"
abstract="true"
>
</tool>
</vdt-project>
This diff is collapsed.
...@@ -123,6 +123,8 @@ ...@@ -123,6 +123,8 @@
<syntax name="DashName" format=" -%%ParamName" /> <syntax name="DashName" format=" -%%ParamName" />
<syntax name="QuotedDash" format=' -%%ParamName "%%ParamValue"' /> <syntax name="QuotedDash" format=' -%%ParamName "%%ParamValue"' />
<syntax name="NameValue" format=" %%ParamName %%ParamValue" /> <syntax name="NameValue" format=" %%ParamName %%ParamValue" />
<syntax name="DoubleDash" format="--%%ParamName=%%ParamValue" />
<syntax name="DoubleDashName" format="--%%ParamName" />
<!-- <!--
Does not work according to 2.2.1. "Inside text-repetitor, one and only one pattern-generator is mandatory". Does not work according to 2.2.1. "Inside text-repetitor, one and only one pattern-generator is mandatory".
......
...@@ -82,8 +82,7 @@ ...@@ -82,8 +82,7 @@
icon="clock.png" icon="clock.png"
call="ISETraceMap"/> call="ISETraceMap"/>
<menuitem name="ISEPAR" <menuitem name="ISEPAR"
label="Place &amp; route design" label="Place &amp; route design" icon="route66.png"
icon="route66.png"
call="ISEPAR"/> call="ISEPAR"/>
<menuitem name="ISETracePAR" <menuitem name="ISETracePAR"
label="Report post-implementation timing" label="Report post-implementation timing"
...@@ -178,9 +177,24 @@ ...@@ -178,9 +177,24 @@
label="Generate bitstream" label="Generate bitstream"
icon="bitstream.png" icon="bitstream.png"
call="VivadoBitstream"/> call="VivadoBitstream"/>
</menu> </menu>
<menu name="Quartus"
label="Quartus tools"
icon="quartus16x16.png">
<menuitem name="Quartus Server"
label="Start remote Quartus session"
icon="door_in.png"
call="Quartus"/>
<menuitem name="QuartusSynthesis"
label="Synthesize design"
icon="Retort.png"
call="QuartusSynthesis"/>
<menuitem name="QuartusFitter"
label="Place and route design"
icon="route66.png"
call="QuartusPlace"/>
</menu>
</menu> </menu>
......
...@@ -29,8 +29,6 @@ ...@@ -29,8 +29,6 @@
<vdt-project> <vdt-project>
<interface name="FPGAPprojectInterface"> <interface name="FPGAPprojectInterface">
<syntax name="RemoteRootSyntax" format="%%ParamValue/%%ProjectName" /> <syntax name="RemoteRootSyntax" format="%%ParamValue/%%ProjectName" />
<!-- <syntax name="SourceListSyntax" format="%(%%SourceList%| %)" />
<syntax name="FilteredSourceListSyntax" format="%(%%FilteredSourceList%| %)" /> -->
<syntax name="ProgramSyntax" format="%(%%ParamValue%|\n%)" /> <syntax name="ProgramSyntax" format="%(%%ParamValue%|\n%)" />
<!-- typedef --> <!-- typedef -->
</interface> </interface>
...@@ -44,7 +42,7 @@ ...@@ -44,7 +42,7 @@
<parameter id="RemoteUser" label="Remote user name" tooltip="Remote user name" type="String" <parameter id="RemoteUser" label="Remote user name" tooltip="Remote user name" type="String"
format="CopyValue" default="%%UserName" readonly="false" visible="true" /> format="CopyValue" default="%%UserName" readonly="false" visible="true" />
<!-- Vivado options --> <!-- Vivado options -->
<parameter id="VivadoRelease" label="Vivado release" tooltip="Vivado release number (part of the path)" <parameter id="VivadoRelease" label="Vivado release" tooltip="Vivado release number (part of the path)"
type="String" format="CopyValue" default="2013.4" readonly="false" type="String" format="CopyValue" default="2013.4" readonly="false"
visible="true" /> visible="true" />
...@@ -53,7 +51,7 @@ ...@@ -53,7 +51,7 @@
type="String" format="CopyValue" default="/opt/Xilinx/Vivado" readonly="false" type="String" format="CopyValue" default="/opt/Xilinx/Vivado" readonly="false"
visible="true" /> visible="true" />
<!-- ISE options --> <!-- ISE options -->
<parameter id="ISERelease" label="ISE release" tooltip="ISE release number (part of the path)" <parameter id="ISERelease" label="ISE release" tooltip="ISE release number (part of the path)"
type="String" format="CopyValue" default="14.7" readonly="false" type="String" format="CopyValue" default="14.7" readonly="false"
visible="true" /> visible="true" />
...@@ -62,8 +60,16 @@ ...@@ -62,8 +60,16 @@
type="String" format="CopyValue" default="/opt/Xilinx" readonly="false" type="String" format="CopyValue" default="/opt/Xilinx" readonly="false"
visible="true" /> visible="true" />
<!-- Quartus options -->
<parameter id="QuartusRelease" label="Quartus release" tooltip="Quartus release number (part of the path)"
type="String" format="CopyValue" default="15.0" readonly="false"
visible="true" />
<parameter id="QuartusInstallationRoot" label="Quartus root" tooltip="Quartus Installation Root"
type="String" format="CopyValue" default="/opt/Altera" readonly="false"
visible="true" />
<!-- Vivado advanced parameters --> <!-- Vivado advanced parameters -->
<parameter id="TerminalMode" type="BoolYesNo" format="None" <parameter id="TerminalMode" type="BoolYesNo" format="None"
default="false" label="Force terminal mode" tooltip="Force terminal mode for the remote program" /> default="false" label="Force terminal mode" tooltip="Force terminal mode for the remote program" />
...@@ -102,7 +108,7 @@ ...@@ -102,7 +108,7 @@
readonly="true" readonly="true"
visible="true" /> visible="true" />
<!-- ISE advanced parameters --> <!-- ISE advanced parameters -->
<parameter id="ISETerminalMode" type="BoolYesNo" format="None" <parameter id="ISETerminalMode" type="BoolYesNo" format="None"
default="false" label="Force terminal mode" tooltip="Force terminal mode for the remote program" /> default="false" label="Force terminal mode" tooltip="Force terminal mode for the remote program" />
...@@ -147,9 +153,36 @@ ...@@ -147,9 +153,36 @@
readonly="true" readonly="true"
visible="true" /> visible="true" />
<!-- Quartus advanced parameters -->
<parameter id="QuartusTerminalMode" type="BoolYesNo" format="None"
default="false" label="Force terminal mode" tooltip="Force terminal mode for the remote program" />
<parameter id="QuartusShellSwitches" label="Shell switch" tooltip="Shell switches" type="String"
format="CopyValue" default="-c" readonly="false" visible="true" />
<parameter id="QuartusPreSSH" label="pre-ssh" tooltip="pre-ssh shell parameters"
type="String" format="CopyValue" default="" readonly="false" visible="true" />
<parameter id="QuartusSSHSwitches" label="ssh switches" tooltip="Other ssh switches"
type="String" format="CopyValue" default="" readonly="false" visible="true" />
<!-- /opt/Xilinx/Vivado/2013.4/bin/vivado -mode tcl --> <parameter id="QuartusSSHExtra" label="ssh extra parameters" tooltip="ssh extra parameters" type="String"
format="CopyValue" default="" readonly="false" visible="true" />
<parameter id="QuartusConsole" default="Quartus" label="Quartus console name" tooltip="Quartus console name in Eclipse, used by other tools"
type="String" format="CopyValue" visible="true" readonly="false"/>
<parameter id="QuartusRelativeExeOptions" label="Quartus launch command" tooltip="Quartus relative executable path and command options"
type="String" format="CopyValue" default="quartus/bin/quartus_sh -s" readonly="false"
visible="true" />
<parameter id="QuartusRemoteCommand" label="Remote command" tooltip="Remote ssh command"
type="String" format="CopyValue"
default="%QuartusInstallationRoot/%QuartusRelease/%QuartusRelativeExeOptions"
readonly="true"
visible="true" />
<!-- /opt/Xilinx/Vivado/2013.4/bin/vivado -mode tcl -->
<parameter id="NoBabyTalk" label="No Baby talk" tooltip= "Remove licensing baby talk from INFO messages." <parameter id="NoBabyTalk" label="No Baby talk" tooltip= "Remove licensing baby talk from INFO messages."
default="true" visible="true" omit="false" type="Boolean" format="DashName"/> default="true" visible="true" omit="false" type="Boolean" format="DashName"/>
...@@ -161,6 +194,8 @@ ...@@ -161,6 +194,8 @@
"VivadoInstallationRoot" "VivadoInstallationRoot"
"ISERelease" "ISERelease"
"ISEInstallationRoot" "ISEInstallationRoot"
"QuartusRelease"
"QuartusInstallationRoot"
</group> </group>
<group name="AdvancedVivado" label="Vivado server advanced setup"> <group name="AdvancedVivado" label="Vivado server advanced setup">
"TerminalMode" "TerminalMode"
...@@ -186,6 +221,16 @@ ...@@ -186,6 +221,16 @@
"ISEBinDirectory" "ISEBinDirectory"
"ISEUnisimsAbsolutePath" "ISEUnisimsAbsolutePath"
</group> </group>
<group name="AdvancedQuartus" label="Quartus server advanced setup">
"QuartusTerminalMode"
"QuartusShellSwitches"
"QuartusPreSSH"
"QuartusSSHSwitches"
"QuartusSSHExtra"
"QuartusConsole"
"QuartusRelativeExeOptions"
"QuartusRemoteCommand"
</group>
</input> </input>
</package> </package>
...@@ -223,7 +268,7 @@ ...@@ -223,7 +268,7 @@
<parameter id="VivadoIgnoreSource" label="Ignore source files" tooltip="Pattern to ignore source files that match this regular expression" <parameter id="VivadoIgnoreSource" label="Ignore source files" tooltip="Pattern to ignore source files that match this regular expression"
type="String" default=".*unisims.*" format="CopyValue" readonly="false" /> type="String" default=".*unisims.*" format="CopyValue" readonly="false" />
<!-- ISE parameters --> <!-- ISE parameters -->
<parameter id="ISEProjectRoot" label="Workspace directory" tooltip="Relative (to user home directory) path of the workspace on ISE server" <parameter id="ISEProjectRoot" label="Workspace directory" tooltip="Relative (to user home directory) path of the workspace on ISE server"
type="String" default="vdt_ise" format="RemoteRootSyntax" readonly="false" /> type="String" default="vdt_ise" format="RemoteRootSyntax" readonly="false" />
...@@ -242,12 +287,30 @@ ...@@ -242,12 +287,30 @@
<parameter id="ISEIgnoreSource" label="Ignore source files" tooltip="Pattern to ignore source files that match this regular expression" <parameter id="ISEIgnoreSource" label="Ignore source files" tooltip="Pattern to ignore source files that match this regular expression"
type="String" default=".*unisims.*" format="CopyValue" readonly="false" /> type="String" default=".*unisims.*" format="CopyValue" readonly="false" />
<!-- Quartus parameters -->
<parameter id="part" label="Device" tooltip= "FPGA part number (device) to use"
default="" visible="true" omit="" type="String" format="CopyValue"/>
<parameter id="QuartusProjectRoot" label="Workspace directory" tooltip="Relative (to user home directory) path of the workspace on Quartus server"
type="String" default="vdt" format="RemoteRootSyntax" readonly="false" />
<parameter id="QuartusRemoteDir" label="Remote Quartus directory" tooltip="Remote Quartus output subdirectroy for snapshot and result files"
type="Pathname" default="quartus_build" format="CopyValue" readonly="false" />
<!-- Calculated --> <parameter id="QuartusLocalDir" label="Local Quartus directory" tooltip="Local project subdirectroy for Quartus snapshot files"
<!-- <parameter id="VivadoProjectRoot" label="" tooltip="Relative (to user home directory) path of the project on Vivado server" type="Pathname" default="quartus_state" format="CopyValue" readonly="false" />
type="String" default="vdt" format="RemoteRootSyntax" readonly="false" /> -->
<parameter id="QuartusLocalResultDir" label="Local Quartus results directory"
tooltip="Local project subdirectroy for Xilinx Quartus generated result files"
type="Pathname" default="quartus_results" format="CopyValue" readonly="false" />
<parameter id="QuartusLogDir" label="Local Quartus tool logs directory" tooltip="Local project subdirectroy for Quartus tools log files"
type="Pathname" default="quartus_logs" format="CopyValue" readonly="false" />
<parameter id="QuartusIgnoreSource" label="Ignore source files" tooltip="Pattern to ignore source files that match this regular expression"
type="String" default="" format="CopyValue" readonly="false" />
<!-- Calculated -->
<parameter id="SnapshotSynth" <parameter id="SnapshotSynth"
label="Synthesis snapshot" tooltip="Name of Vivado snapshot archive after synthesis" label="Synthesis snapshot" tooltip="Name of Vivado snapshot archive after synthesis"
default="%%ProjectName-synth.dcp" default="%%ProjectName-synth.dcp"
...@@ -324,7 +387,7 @@ ...@@ -324,7 +387,7 @@
type="Boolean" format="None" /> type="Boolean" format="None" />
"" <!-- same as in project --> "" <!-- same as in project -->
<!-- Invisible (calculated) project-wide parameters --> <!-- Invisible (calculated) project-wide parameters -->
<parameter id="SimulDirSlash" type="Pathname" visible="false" <parameter id="SimulDirSlash" type="Pathname" visible="false"
default="?%SimulDir=:,%SimulDir/" format="CopyValue"/> default="?%SimulDir=:,%SimulDir/" format="CopyValue"/>
<parameter id="VivadoSedPaths" type="String" format="CopyValue" <parameter id="VivadoSedPaths" type="String" format="CopyValue"
...@@ -335,6 +398,10 @@ ...@@ -335,6 +398,10 @@
label="sed command line" tooltip="Remote file prefix to be removed for the local error parser when running ISE tools" label="sed command line" tooltip="Remote file prefix to be removed for the local error parser when running ISE tools"
default="sed -u 's@/home/%RemoteUser/%ISEProjectRoot/%%ProjectName/@@'"/> default="sed -u 's@/home/%RemoteUser/%ISEProjectRoot/%%ProjectName/@@'"/>
<parameter id="QuartusSedPaths" type="String" format="CopyValue"
label="sed command line" tooltip="Remote file prefix to be removed for the local error parser when running Quartus tools"
default="sed -u 's@/home/%RemoteUser/%QuartusProjectRoot/%%ProjectName/@@'"/>
<parameter id="ISEWorkspace" label="Workspace directory" tooltip="Relative (to user home directory) path of the workspace on ISE server" <parameter id="ISEWorkspace" label="Workspace directory" tooltip="Relative (to user home directory) path of the workspace on ISE server"
type="String" default="%ISEProjectRoot" format="CopyValue" readonly="true" /> type="String" default="%ISEProjectRoot" format="CopyValue" readonly="true" />
...@@ -394,11 +461,18 @@ ...@@ -394,11 +461,18 @@
tooltip= "Remove remote ISE project files before unpacking snapshot archives" tooltip= "Remove remote ISE project files before unpacking snapshot archives"
default="true" visible="true" type="Boolean" format="None"/> default="true" visible="true" type="Boolean" format="None"/>
<parameter id="QuartusSnapshotSynth"
label="Synthesis snapshot" tooltip="Name of Quartus snapshot archive"
default="%%ProjectName-synth.qar"
type="String" format="CopyValue" />
<parameter id="QuartusSnapshotPlace"
label="Place and route snapshot" tooltip="Name of Quartus snapshot archive"
default="%%ProjectName-par.qar"
type="String" format="CopyValue" />
<input> <input>
<group name="Genaral" label="General parameters"> <group name="General" label="General parameters">
"part" "part"
"ImplementationTopFile" "ImplementationTopFile"
</group> </group>
...@@ -459,8 +533,15 @@ ...@@ -459,8 +533,15 @@
"ISESnapshotOptPhys" "ISESnapshotOptPhys"
"ISESnapshotRoute" "ISESnapshotRoute"
</group> </group>
<group name="Quartus" label="Quartus general properties">
"QuartusProjectRoot"
"QuartusRemoteDir"
"QuartusLocalDir"
"QuartusLocalResultDir"
"QuartusLogDir"
"QuartusIgnoreSource"
"QuartusSedPaths"
</group>
</input> </input>
<output>
</output>
</project> </project>
</vdt-project> </vdt-project>
...@@ -28,8 +28,8 @@ ...@@ -28,8 +28,8 @@
--> -->
<vdt-project> <vdt-project>
<interface name="ISEInterface" extends="FPGAPprojectInterface"> <interface name="ISEInterface" extends="FPGAPprojectInterface">
<syntax name="GrepFilterProblemSyntax" format='| grep --line-buffered -v "\[%%ParamName"' /> <syntax name="GrepFilterProblemSyntax" format='| grep --line-buffered -v "%%ParamName"' />
<syntax name="GrepFilterProblemOtherSyntax" format='%(| grep --line-buffered -v "\[%%ParamValue"%|\n%)' /> <syntax name="GrepFilterProblemOtherSyntax" format='%(| grep --line-buffered -v "%%ParamValue"%|\n%)' />
<typedef name="intstyleType"> <typedef name="intstyleType">
<paramtype kind= "enum" base="String"> <paramtype kind= "enum" base="String">
<item value="ise" label="Indicates the program is being run as part of an integrated design environment"/> <item value="ise" label="Indicates the program is being run as part of an integrated design environment"/>
......
...@@ -194,7 +194,7 @@ ...@@ -194,7 +194,7 @@
default="off" visible="true" omit="off" type="PRIOType" format="Dash"/> default="off" visible="true" omit="off" type="PRIOType" format="Dash"/>
<!-- default not clear , disabling omit--> <!-- default not clear , disabling omit-->
<parameter id="register_duplication" label="Register duplication" <parameter id="register_duplication" label="Register duplication"
tooltip="PRegister duplication (disabled if '-global_opt' is used, reguires '-timing')" tooltip="Register duplication (disabled if '-global_opt' is used, reguires '-timing')"
default="true" omit="" type= "Bool_on_off" format="Dash"/> default="true" omit="" type= "Bool_on_off" format="Dash"/>
<parameter id="register_ordering" outid="r" label="Register ordering" <parameter id="register_ordering" outid="r" label="Register ordering"
tooltip="Register ordering in a slice (use 4 or 8)" tooltip="Register ordering in a slice (use 4 or 8)"
......
...@@ -240,6 +240,7 @@ ...@@ -240,6 +240,7 @@
<!-- TODO: find out, how to reset state and make a tool to depend on--> <!-- TODO: find out, how to reset state and make a tool to depend on-->
<depends-list> <depends-list>
<depends files="FilteredSourceListPar"/> <depends files="FilteredSourceListPar"/>
<depends files="FilteredIncludesListPar"/>
<depends files="constraints"/> <depends files="constraints"/>
</depends-list> </depends-list>
<parameter id="clean_start" label="Clean start" tooltip= "Delete all files on remote before running XST" <parameter id="clean_start" label="Clean start" tooltip= "Delete all files on remote before running XST"
...@@ -496,6 +497,8 @@ ...@@ -496,6 +497,8 @@
<!-- calculated parameters --> <!-- calculated parameters -->
<parameter id="FilteredSourceListPar" type="Filelist" label="FilteredSourceListPar" <parameter id="FilteredSourceListPar" type="Filelist" label="FilteredSourceListPar"
format="ParamListSyntax" default="%%FilteredSourceList" readonly="false" visible="true" /> format="ParamListSyntax" default="%%FilteredSourceList" readonly="false" visible="true" />
<parameter id="FilteredIncludesListPar" type="Filelist" label="FilteredIncludesListPar"
format="ParamListSyntax" default="%%FilteredIncludesList" readonly="false" visible="true" />
<parameter id="ISESynthActionIndex" default="%%ChosenActionIndex" <parameter id="ISESynthActionIndex" default="%%ChosenActionIndex"
type="String" format="CopyValue" visible="false" /> type="String" format="CopyValue" visible="false" />
<parameter id="ConstraintsFiles" type="Filelist" format="ParamListSyntax" <parameter id="ConstraintsFiles" type="Filelist" format="ParamListSyntax"
...@@ -532,6 +535,7 @@ ...@@ -532,6 +535,7 @@
"target_device" <!-- outid="p" --> "target_device" <!-- outid="p" -->
"---" "---"
"FilteredSourceListPar" "FilteredSourceListPar"
"FilteredIncludesListPar"
"RawOutFile" "RawOutFile"
"xst_prj" "xst_prj"
"---" "---"
...@@ -665,6 +669,7 @@ ...@@ -665,6 +669,7 @@
"' ;" "' ;"
"rsync -avrR -e ssh" "rsync -avrR -e ssh"
"%FilteredSourceListPar" "%FilteredSourceListPar"
"%FilteredIncludesListPar"
<if ISESynthActionIndex="0"> <if ISESynthActionIndex="0">
"%ConstraintsFiles" "%ConstraintsFiles"
</if> </if>
......
...@@ -25,6 +25,9 @@ ...@@ -25,6 +25,9 @@
* include the source code for the parts of Eclipse or Eclipse plugins used * include the source code for the parts of Eclipse or Eclipse plugins used
* as well as that of the covered work.} * as well as that of the covered work.}
*******************************************************************************/ *******************************************************************************/
Warnings was (was in an attempt to catch "CRITICAL WARNING" too?):
default=".*([^ ]WARNING:) (\[.*\].*)\[(.*):([0-9]+)\]"
Problem was - missing 1-st line as group 0 had the previous end of line)
--> -->
<vdt-project> <vdt-project>
<tool name="VivadoToolPrototype" label="VivadoToolPrototype" <tool name="VivadoToolPrototype" label="VivadoToolPrototype"
...@@ -40,7 +43,7 @@ ...@@ -40,7 +43,7 @@
default=".*(ERROR:|CRITICAL WARNING:) (\[.*\].*)\[(.*):([0-9]+)\]" default=".*(ERROR:|CRITICAL WARNING:) (\[.*\].*)\[(.*):([0-9]+)\]"
visible="true" type="String" format="CopyValue"/> visible="true" type="String" format="CopyValue"/>
<parameter id="PatternWarnings" label="Warnings" tooltip= "Regular expression for warnings messages" <parameter id="PatternWarnings" label="Warnings" tooltip= "Regular expression for warnings messages"
default=".*([^ ]WARNING:) (\[.*\].*)\[(.*):([0-9]+)\]" default=".*(WARNING:) (\[.*\].*)\[(.*):([0-9]+)\]"
visible="true" type="String" format="CopyValue"/> visible="true" type="String" format="CopyValue"/>
<parameter id="PatternInfo" label="Info" tooltip= "Regular expression for info messages" <parameter id="PatternInfo" label="Info" tooltip= "Regular expression for info messages"
default=".*(INFO:) (\[.*\].*)\[(.*):([0-9]+)\]" default=".*(INFO:) (\[.*\].*)\[(.*):([0-9]+)\]"
......
...@@ -106,6 +106,7 @@ ...@@ -106,6 +106,7 @@
<!-- TODO: find out, how to reset state and make a tool to depend on--> <!-- TODO: find out, how to reset state and make a tool to depend on-->
<depends-list> <depends-list>
<depends files="FilteredSourceListPar"/> <depends files="FilteredSourceListPar"/>
<depends files="FilteredIncludesListPar"/>
<depends files="ConstraintsFiles"/> <depends files="ConstraintsFiles"/>
</depends-list> </depends-list>
...@@ -186,6 +187,8 @@ ...@@ -186,6 +187,8 @@
format="read_xdc_syntax" default="%ConstraintsFiles" visible="false" /> format="read_xdc_syntax" default="%ConstraintsFiles" visible="false" />
<parameter id="FilteredSourceListPar" type="Filelist" label="FilteredSourceListPar" <parameter id="FilteredSourceListPar" type="Filelist" label="FilteredSourceListPar"
format="ParamListSyntax" default="%%FilteredSourceList" readonly="false" visible="true" /> format="ParamListSyntax" default="%%FilteredSourceList" readonly="false" visible="true" />
<parameter id="FilteredIncludesListPar" type="Filelist" label="FilteredIncludesListPar"
format="ParamListSyntax" default="%%FilteredIncludesList" readonly="false" visible="true" />
<parameter id="VivadoSynthActionIndex" default="%%ChosenActionIndex" <parameter id="VivadoSynthActionIndex" default="%%ChosenActionIndex"
type="String" format="CopyValue" visible="false" /> type="String" format="CopyValue" visible="false" />
...@@ -226,6 +229,7 @@ ...@@ -226,6 +229,7 @@
<input> <input>
<group name="General"> <group name="General">
"FilteredSourceListPar" "FilteredSourceListPar"
"FilteredIncludesListPar"
"ConstraintsFiles" "ConstraintsFiles"
"SkipSnapshotSynth" "SkipSnapshotSynth"
"SnapshotSynth" <!-- same as in project --> "SnapshotSynth" <!-- same as in project -->
...@@ -275,6 +279,7 @@ ...@@ -275,6 +279,7 @@
"' ;" "' ;"
"rsync -avrR -e ssh" "rsync -avrR -e ssh"
"%FilteredSourceListPar" "%FilteredSourceListPar"
"%FilteredIncludesListPar"
<if VivadoSynthActionIndex="0"> <if VivadoSynthActionIndex="0">
"%ConstraintsFiles" "%ConstraintsFiles"
</if> </if>
...@@ -289,14 +294,14 @@ ...@@ -289,14 +294,14 @@
success="synth_design completed successfully" success="synth_design completed successfully"
log="" log=""
stdout="parser_Vivado"> stdout="parser_Vivado">
<!-- synth_design completed successfully --> <!-- synth_design completed successfully reset_project -quiet (quiet - will not complain if nothing opened)-->
"cd ~/%VivadoProjectRoot\n" "cd ~/%VivadoProjectRoot\n"
"set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n" "set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n"
<if ResetProject="true"> <if ResetProject="true">
"reset_project -quiet\n" "close_project -quiet\n"
</if> </if>
<!-- Increase number of warning lines, filter them separately. TODO: add configuration parameter --> <!-- Increase number of warning lines, filter them separately. TODO: add configuration parameter -->
"set_msg_config -severity WARNING -limit 1000\n" "set_msg_config -severity WARNING -limit 10000\n"
"file mkdir $outputDir\n" "file mkdir $outputDir\n"
"read_verilog " "read_verilog "
"%FilteredSourceListPar\n" "%FilteredSourceListPar\n"
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment