Commit e1ec9699 authored by Andrey Filippov's avatar Andrey Filippov

Cleanup, bug fixes

parent bd3994cd
...@@ -138,6 +138,7 @@ public class VDT { ...@@ -138,6 +138,7 @@ public class VDT {
// Build in generators for tool description // Build in generators for tool description
//------------------------------------------------------------------------- //-------------------------------------------------------------------------
public static final String GENERATOR_ID_TOOL_NAME = "ToolName";
public static final String GENERATOR_ID_PROJECT_NAME = "ProjectName"; public static final String GENERATOR_ID_PROJECT_NAME = "ProjectName";
public static final String GENERATOR_ID_EXE_PATH = "ExePath"; public static final String GENERATOR_ID_EXE_PATH = "ExePath";
public static final String GENERATOR_ID_PROJECT_PATH = "ProjectPath"; public static final String GENERATOR_ID_PROJECT_PATH = "ProjectPath";
......
...@@ -135,7 +135,8 @@ public class XMLConfig extends Config { ...@@ -135,7 +135,8 @@ public class XMLConfig extends Config {
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)
static final String CONTEXT_TOOL_AUTOSAVE = "autosave"; // Parameter name of boolean type that controls automatic save after success static final String CONTEXT_TOOL_AUTOSAVE = "autosave"; // Parameter name of boolean type that controls automatic save after success
static final String CONTEXT_TOOL_ABSTRACT = "abstract"; // true for the prototype tools used only for inheritance by others static final String CONTEXT_TOOL_ABSTRACT = "abstract"; // true for the prototype tools used only for inheritance by others
static final String CONTEXT_TOOL_PRIORITY = "priority"; // lower the value, first to run among otherwise equivalent report tools (taht do not change state)
static final String CONTEXT_LINEBLOCK_TAG = "line"; static final String CONTEXT_LINEBLOCK_TAG = "line";
...@@ -646,6 +647,20 @@ public class XMLConfig extends Config { ...@@ -646,6 +647,20 @@ public class XMLConfig extends Config {
String autoSaveString = getAttributeValue(contextNode, CONTEXT_TOOL_AUTOSAVE); String autoSaveString = getAttributeValue(contextNode, CONTEXT_TOOL_AUTOSAVE);
String isAbstractAttr = getAttributeValue(contextNode, CONTEXT_TOOL_ABSTRACT); String isAbstractAttr = getAttributeValue(contextNode, CONTEXT_TOOL_ABSTRACT);
String priorityString = getAttributeValue(contextNode, CONTEXT_TOOL_PRIORITY);
double priority=Double.NaN;;
if (priorityString!=null){
try {
priority=Double.parseDouble(priorityString);
} catch (Exception e){
throw new ConfigException("Tool priority '" + contextName +
"' has invalid priority string '"+priorityString+"' - floating point value is expected.");
}
}
boolean isAbstract; boolean isAbstract;
if(isAbstractAttr != null) { if(isAbstractAttr != null) {
checkBoolAttr(isAbstractAttr, CONTEXT_TOOL_ABSTRACT); checkBoolAttr(isAbstractAttr, CONTEXT_TOOL_ABSTRACT);
...@@ -705,6 +720,7 @@ public class XMLConfig extends Config { ...@@ -705,6 +720,7 @@ public class XMLConfig extends Config {
saveString, saveString,
autoSaveString, autoSaveString,
isAbstract, isAbstract,
priority,
null, null,
null, null,
null); null);
......
...@@ -241,7 +241,7 @@ public abstract class Context { ...@@ -241,7 +241,7 @@ public abstract class Context {
// calling them with dryRun=true; // calling them with dryRun=true;
for (Tool tool : ToolsCore.getConfig().getContextManager().getToolList()){ for (Tool tool : ToolsCore.getConfig().getContextManager().getToolList()){
try { try {
tool.buildParams(false); tool.buildParams(true); // was false
if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_TOOL_SEQUENCE)) { if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_TOOL_SEQUENCE)) {
if (tool.hashMatch()) System.out.println("recalcHashCodes(): "+tool.getName()+ if (tool.hashMatch()) System.out.println("recalcHashCodes(): "+tool.getName()+
" hashMatch()="+tool.hashMatch()+ " hashMatch()="+tool.hashMatch()+
...@@ -249,7 +249,7 @@ public abstract class Context { ...@@ -249,7 +249,7 @@ public abstract class Context {
" getLastRunHash()="+tool.getLastRunHash()); " getLastRunHash()="+tool.getLastRunHash());
} }
} catch (ToolException e) { } catch (ToolException e) {
System.out.println("failed buildParams(false) on tool="+tool.getName()+", e="+e.toString()); System.out.println("failed buildParams(true) on tool="+tool.getName()+", e="+e.toString());
} }
} }
} }
...@@ -406,9 +406,9 @@ public abstract class Context { ...@@ -406,9 +406,9 @@ public abstract class Context {
String [] params=item.getParams(); String [] params=item.getParams();
if (params!=null) for (int i=0;i<params.length;i++){ if (params!=null) for (int i=0;i<params.length;i++){
currentHash += params[i].hashCode(); currentHash += params[i].hashCode();
// if (name.equals("VivadoSynthesis")){ // if (name.equals("VivadoBitstream")){
// System.out.println(params[i]+": "+currentHash); // System.out.println(params[i]+": "+currentHash);
// } // }
} }
} }
...@@ -417,8 +417,8 @@ public abstract class Context { ...@@ -417,8 +417,8 @@ public abstract class Context {
// Seems that during build it worked on a working copy of the tool, so calculated parameter did not get back // Seems that during build it worked on a working copy of the tool, so calculated parameter did not get back
Tool proto=ToolsCore.getConfig().getContextManager().findTool(name); Tool proto=ToolsCore.getConfig().getContextManager().findTool(name);
// System.out.println("Calculated currentHash for "+name+"="+currentHash); // System.out.println("Calculated currentHash for "+name+"="+currentHash);
// if (name.equals("VivadoSynthesis")){ // if (name.equals("VivadoBitstream")){
// System.out.println("Check here: VivadoSynthesis"); // System.out.println("Check here: VivadoBitstream");
// } // }
if (proto!=null){ if (proto!=null){
if (proto!=this){ if (proto!=this){
......
...@@ -55,6 +55,7 @@ public class ContextManager { ...@@ -55,6 +55,7 @@ public class ContextManager {
for(Tool toolContext : toolContexts) for(Tool toolContext : toolContexts)
toolContext.init(config); toolContext.init(config);
sortToolContexts(); // according to priority for selecting "report" tools
initialized = true; initialized = true;
} }
...@@ -86,12 +87,27 @@ public class ContextManager { ...@@ -86,12 +87,27 @@ public class ContextManager {
} }
public void addToolContexts(List<Tool> contexts) throws ConfigException { public void addToolContexts(List<Tool> contexts) throws ConfigException {
if(initialized) if(initialized)
throw new ConfigException(cannotAddMessage); throw new ConfigException(cannotAddMessage);
toolContexts.addAll(contexts); toolContexts.addAll(contexts);
} }
public void sortToolContexts() throws ConfigException {
boolean inOrder=false;
while (!inOrder){
inOrder=true;
for (int i=0;i<(toolContexts.size()-1);i++){
if (toolContexts.get(i).getPriority()>toolContexts.get(i+1).getPriority()){
toolContexts.add(i,toolContexts.remove(i+1));
inOrder=false;
}
}
}
}
public Context findContext(String contextName) { public Context findContext(String contextName) {
if(installationContext != null && installationContext.getName().equals(contextName)) if(installationContext != null && installationContext.getName().equals(contextName))
return installationContext; return installationContext;
......
/******************************************************************************* /*******************************************************************************
* Copyright (c) 2006 Elphel, Inc and Excelsior, LLC. * Copyright (c) 2014 Elphel, Inc.
* This file is a part of Eclipse/VDT plug-in. * This file is a part of Eclipse/VDT plug-in.
* Eclipse/VDT plug-in is free software; you can redistribute it and/or modify * Eclipse/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 * it under the terms of the GNU General Public License as published by
* Free Software Foundation; either version 2 of the License, or (at your option) * the Free Software Foundation, either version 3 of the License, or
* any later version. * (at your option) any later version.
* *
* Eclipse/VDT plug-in is distributed in the hope that it will be useful, but * Eclipse/VDT plug-in is distributed in the hope that it will be useful,
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * but WITHOUT ANY WARRANTY; without even the implied warranty of
* FITNESS FOR A PARTICULAR PURPOSE. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* See the GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License along * You should have received a copy of the GNU General Public License
* with Eclipse VDT plug-in; if not, write to the Free Software * along with this program. If not, see <http://www.gnu.org/licenses/>.
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*******************************************************************************/ *******************************************************************************/
package com.elphel.vdt.core.tools.generators; package com.elphel.vdt.core.tools.generators;
......
/*******************************************************************************
* Copyright (c) 2014 Elphel, Inc.
* This file is a part of Eclipse/VDT plug-in.
* Eclipse/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.
*
* Eclipse/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/>.
*******************************************************************************/
package com.elphel.vdt.core.tools.generators;
import com.elphel.vdt.VDT;
import com.elphel.vdt.core.tools.params.Tool;
/**
* Generate the name of current project.
*
* Created: 21.02.2006
* @author Lvov Konstantin
*/
public class ToolNameGenerator extends AbstractGenerator {
public static final String NAME = VDT.GENERATOR_ID_TOOL_NAME;
public String getName() {
return NAME;
}
public ToolNameGenerator()
{
super(null); // null for topFormatProcessor - this generator can not reference other parameters
}
protected String[] getStringValues() {
String toolName="";
if (topProcessor!=null){
Tool tool=topProcessor.getCurrentTool();
// System.out.println(", tool="+tool+" tool name="+((tool!=null)?tool.getName():null));
if (tool != null) {
// System.out.println(" tool="+tool.getName()+", ignoreFilter="+ignoreFilter);
toolName=tool.getName();
} else {
System.out.println("ToolNameGenerator(): topProcessor.getCurrentTool() is null");
}
} else {
System.out.println("ToolNameGenerator(): topProcessor is null");
}
return new String[]{toolName};
}
} // class ProjectNameGenerator
...@@ -295,9 +295,9 @@ public class Parameter implements Cloneable, Updateable { ...@@ -295,9 +295,9 @@ public class Parameter implements Cloneable, Updateable {
// //
public void setCurrentValue(String value) throws ToolException { public void setCurrentValue(String value) throws ToolException {
// if (id.equals("SimulationTopFile")){ // Andrey // if (id.equals("PreBitstreamTCL")){ // Andrey
// System.out.println("setCurrentValue() SimulationTopFile, value="+value); // System.out.println("setCurrentValue() PreBitstreamTCL, value="+value+", this="+this);
// } // }
if(type.isList()) if(type.isList())
throw new ToolException("Assigning a non-list value to list parameter"); throw new ToolException("Assigning a non-list value to list parameter");
...@@ -314,9 +314,9 @@ public class Parameter implements Cloneable, Updateable { ...@@ -314,9 +314,9 @@ public class Parameter implements Cloneable, Updateable {
} }
public void setCurrentValue(List<String> value) throws ToolException { public void setCurrentValue(List<String> value) throws ToolException {
// if (id.equals("SimulationTopFile")){ // Andrey // if (id.equals("PreBitstreamTCL")){ // Andrey
// System.out.println("setCurrentValue() SimulationTopFile a list value"); // System.out.println("setCurrentValue() PreBitstreamTCL, value="+value+", this="+this);
// } // }
if(!type.isList()) if(!type.isList())
throw new ToolException("Assigning a list value to non-list parameter"); throw new ToolException("Assigning a list value to non-list parameter");
......
...@@ -141,6 +141,7 @@ public class Tool extends Context implements Cloneable, Inheritable { ...@@ -141,6 +141,7 @@ public class Tool extends Context implements Cloneable, Inheritable {
private TOOL_MODE lastRunMode; // last running (not STOP) mode private TOOL_MODE lastRunMode; // last running (not STOP) mode
private int lastRunHash; // hash code of the last run private int lastRunHash; // hash code of the last run
private ToolWaitingArguments toolWaitingArguments; // save here launch parameters when tool need to wait for other tools to run/get restored private ToolWaitingArguments toolWaitingArguments; // save here launch parameters when tool need to wait for other tools to run/get restored
private double priority; // the lower the earlier tool will run among those with the same dependencies
private static void DEBUG_PRINT(String msg){ private static void DEBUG_PRINT(String msg){
if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_TOOL_SEQUENCE)) { if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_TOOL_SEQUENCE)) {
System.out.println(msg); System.out.println(msg);
...@@ -172,6 +173,7 @@ public class Tool extends Context implements Cloneable, Inheritable { ...@@ -172,6 +173,7 @@ public class Tool extends Context implements Cloneable, Inheritable {
String saveString, // name of tool that saves the state of this tool run String saveString, // name of tool that saves the state of this tool run
String autoSaveString, // name of boolean that turns on/off auto-save after the tool run String autoSaveString, // name of boolean that turns on/off auto-save after the tool run
boolean abstractTool, boolean abstractTool,
double priority,
/* never used ??? */ /* never used ??? */
List<Parameter> params, List<Parameter> params,
List<ParamGroup> paramGroups, List<ParamGroup> paramGroups,
...@@ -211,6 +213,7 @@ public class Tool extends Context implements Cloneable, Inheritable { ...@@ -211,6 +213,7 @@ public class Tool extends Context implements Cloneable, Inheritable {
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
this.autoSaveString= autoSaveString; // name of boolean that turns on/off auto-save after the tool run this.autoSaveString= autoSaveString; // name of boolean that turns on/off auto-save after the tool run
this.abstractTool= abstractTool; this.abstractTool= abstractTool;
this.priority = priority;
disabled=null; disabled=null;
restoreTool=null; restoreTool=null;
...@@ -452,6 +455,10 @@ public class Tool extends Context implements Cloneable, Inheritable { ...@@ -452,6 +455,10 @@ public class Tool extends Context implements Cloneable, Inheritable {
if (imageKeysActions==null) return null; if (imageKeysActions==null) return null;
return imageKeysActions[actionIndex]; return imageKeysActions[actionIndex];
} }
public double getPriority(){
return (Double.isNaN(priority))? 1.0: priority;
}
public List<RunFor> getRunFor(){ public List<RunFor> getRunFor(){
...@@ -528,6 +535,8 @@ public class Tool extends Context implements Cloneable, Inheritable { ...@@ -528,6 +535,8 @@ public class Tool extends Context implements Cloneable, Inheritable {
if (restoreString== null) restoreString = baseTool.restoreString; if (restoreString== null) restoreString = baseTool.restoreString;
if (saveString== null) saveString = baseTool.saveString; if (saveString== null) saveString = baseTool.saveString;
if (autoSaveString== null) autoSaveString = baseTool.autoSaveString; if (autoSaveString== null) autoSaveString = baseTool.autoSaveString;
// System.out.println("copyBaseAttributes(), tool="+getName());
if (Double.isNaN(priority)) priority= baseTool.priority;
// What about output lines attributes? // What about output lines attributes?
...@@ -856,7 +865,8 @@ public class Tool extends Context implements Cloneable, Inheritable { ...@@ -856,7 +865,8 @@ public class Tool extends Context implements Cloneable, Inheritable {
* Set tool timestamp from the command timestamp (set when user launches the sequence) * Set tool timestamp from the command timestamp (set when user launches the sequence)
*/ */
public void setTimeStamp(){ public void setTimeStamp(){
timeStamp=SelectedResourceManager.getDefault().getBuildStamp(); DEBUG_PRINT(getName()+".setTimeStamp()");
setTimeStamp(SelectedResourceManager.getDefault().getBuildStamp()); // sometimes (in the beginning) it is null???
} }
public boolean alreadyRan(){ public boolean alreadyRan(){
...@@ -868,6 +878,7 @@ public class Tool extends Context implements Cloneable, Inheritable { ...@@ -868,6 +878,7 @@ public class Tool extends Context implements Cloneable, Inheritable {
} }
public void setTimeStamp(String timeStamp){ public void setTimeStamp(String timeStamp){
DEBUG_PRINT(getName()+".setTimeStamp("+timeStamp+")");
this.timeStamp=timeStamp; this.timeStamp=timeStamp;
} }
...@@ -924,8 +935,8 @@ public class Tool extends Context implements Cloneable, Inheritable { ...@@ -924,8 +935,8 @@ public class Tool extends Context implements Cloneable, Inheritable {
IMemento toolMemento= memento.createChild(MEMENTO_TOOL_TYPE,name); IMemento toolMemento= memento.createChild(MEMENTO_TOOL_TYPE,name);
toolMemento.putBoolean(MEMENTO_TOOL_PINNED, new Boolean(pinned)); toolMemento.putBoolean(MEMENTO_TOOL_PINNED, new Boolean(pinned));
toolMemento.putString(MEMENTO_TOOL_STATE, this.state.toString()); toolMemento.putString(MEMENTO_TOOL_STATE, this.state.toString());
if (timeStamp!=null) toolMemento.putString(MEMENTO_TOOL_TIMESTAMP, timeStamp); if (getTimeStamp()!=null) toolMemento.putString(MEMENTO_TOOL_TIMESTAMP, getTimeStamp());
if (lastRunHash!=0) toolMemento.putInteger(MEMENTO_TOOL_LASTRUNHASH, lastRunHash); if (getLastRunHash()!=0) toolMemento.putInteger(MEMENTO_TOOL_LASTRUNHASH, getLastRunHash());
IMemento depMemento; IMemento depMemento;
for(String state:dependStatesTimestamps.keySet()){ for(String state:dependStatesTimestamps.keySet()){
depMemento=toolMemento.createChild(MEMENTO_TOOL_STATEDEPSTAMP); depMemento=toolMemento.createChild(MEMENTO_TOOL_STATEDEPSTAMP);
...@@ -939,7 +950,7 @@ public class Tool extends Context implements Cloneable, Inheritable { ...@@ -939,7 +950,7 @@ public class Tool extends Context implements Cloneable, Inheritable {
depMemento.putString(MEMENTO_TOOL_TIMESTAMP, dependFilesTimestamps.get(file)); depMemento.putString(MEMENTO_TOOL_TIMESTAMP, dependFilesTimestamps.get(file));
// DEBUG_PRINT("file="+file+" depMemento="+ depMemento.toString()); // DEBUG_PRINT("file="+file+" depMemento="+ depMemento.toString());
} }
// DEBUG_PRINT("*** Updated memento for tool "+name+ " memento="+toolMemento.toString()); DEBUG_PRINT("*** Updated memento for tool "+name+ " memento="+toolMemento.toString());
} }
...@@ -970,7 +981,7 @@ public class Tool extends Context implements Cloneable, Inheritable { ...@@ -970,7 +981,7 @@ public class Tool extends Context implements Cloneable, Inheritable {
this.state=TOOL_STATE.NEW; this.state=TOOL_STATE.NEW;
} }
String timestamp=toolMemento.getString(MEMENTO_TOOL_TIMESTAMP); String timestamp=toolMemento.getString(MEMENTO_TOOL_TIMESTAMP);
if (timestamp!=null) this.timeStamp=timestamp; if (timestamp!=null) setTimeStamp(timestamp);
Integer hc=toolMemento.getInteger(MEMENTO_TOOL_LASTRUNHASH); Integer hc=toolMemento.getInteger(MEMENTO_TOOL_LASTRUNHASH);
if (hc!=null) lastRunHash=hc; if (hc!=null) lastRunHash=hc;
clearDependStamps(); clearDependStamps();
...@@ -1182,6 +1193,7 @@ public class Tool extends Context implements Cloneable, Inheritable { ...@@ -1182,6 +1193,7 @@ public class Tool extends Context implements Cloneable, Inheritable {
// private void updateContextOptions (IProject project){ // private void updateContextOptions (IProject project){
public void updateContextOptions (IProject project){ // public to be able to update parameters before setting "dirty" flags public void updateContextOptions (IProject project){ // public to be able to update parameters before setting "dirty" flags
DEBUG_PRINT("~~~updateContextOptions(project) for tool "+getName());
PackageContext packageContext = getParentPackage(); PackageContext packageContext = getParentPackage();
if (packageContext != null) { if (packageContext != null) {
OptionsCore.doLoadContextOptions(packageContext); OptionsCore.doLoadContextOptions(packageContext);
......
...@@ -100,6 +100,7 @@ public class ToolSequence { ...@@ -100,6 +100,7 @@ public class ToolSequence {
tool.clearDependStamps(); tool.clearDependStamps();
} }
} }
setToolsDirtyFlag(true); // update may be needed ?
toolFinished(null); toolFinished(null);
} }
...@@ -539,6 +540,55 @@ public class ToolSequence { ...@@ -539,6 +540,55 @@ public class ToolSequence {
DEBUG_PRINT("Report tool "+tool.getName()+" already ran in this launch, skipping"); DEBUG_PRINT("Report tool "+tool.getName()+" already ran in this launch, skipping");
continue; continue;
} }
if (tool.getState()==TOOL_STATE.FAILURE){
// find latest of the current states (usually just one)
// MessageUI.error("Enable breakpoints, debugging findReportTool()");
ToolStateStamp stamp=null;
for (String state:depStates){
if (openStates.keySet().contains(state)){
ToolStateStamp tss=currentStates.get(state);
if (tss!=null){
if ((stamp==null) || tss.after(stamp)){
stamp=tss;
}
}
}
}
if (stamp!=null) {
DEBUG_PRINT("stamp="+stamp.getToolStamp()+"\ntool.getTimeStamp()="+tool.getTimeStamp());
} else {
DEBUG_PRINT("stamp=null\ntool.getTimeStamp()="+tool.getTimeStamp());
}
if (tool.getTimeStamp()==null){
DEBUG_PRINT("tool.getTimeStamp()=NULL");
}
if ((stamp==null) ||(tool.getTimeStamp()==null) || stamp.after(tool.getTimeStamp()) || stamp.getToolStamp().equals(tool.getTimeStamp())){
// tool.recalcHashCodes(); // it was 0 here
try {
//Not needed anymore, as these are ran on load (before it was only for good ones)?
tool.updateContextOptions(SelectedResourceManager.getDefault().getSelectedProject()); // restoring this too, as once missed tool
// parameters when tool state was deleted
tool.buildParams(true); // recalculates hashCode for this tool, this is needed
if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_TOOL_SEQUENCE)) {
System.out.println("recalcHashCodes(): "+tool.getName()+
" hashMatch()="+tool.hashMatch()+
" getCurrentHash()="+tool.getCurrentHash()+
" getLastRunHash()="+tool.getLastRunHash());
}
} catch (ToolException e) {
System.out.println("failed buildParams(true) on tool="+tool.getName()+", e="+e.toString());
}
if (tool.hashMatch()) {
DEBUG_PRINT("Report tool "+tool.getName()+" failed after the current state was created, skipping it from automatic run.");
continue;
} else {
DEBUG_PRINT("Report tool "+tool.getName()+" failed after the current state was created, but hash is different - retryting.");
DEBUG_PRINT("getLastRunHash()="+tool.getLastRunHash()+" getCurrentHash()="+tool.getCurrentHash());
}
}
// will retry again
}
DEBUG_PRINT("Report tool "+tool.getName()+" can be ran at the current state."); DEBUG_PRINT("Report tool "+tool.getName()+" can be ran at the current state.");
return tool; // All checks passed, return this tool return tool; // All checks passed, return this tool
} }
...@@ -1223,8 +1273,11 @@ public class ToolSequence { ...@@ -1223,8 +1273,11 @@ public class ToolSequence {
public String getToolStateFile(){ public String getToolStateFile(){
return toolStateFile; return toolStateFile;
} }
public boolean after(ToolStateStamp after, ToolStateStamp before){ public boolean after(ToolStateStamp after){
return SelectedResourceManager.afterStamp(after.getToolStamp(), before.getToolStamp()); return SelectedResourceManager.afterStamp(after.getToolStamp(), getToolStamp());
}
public boolean after(String after){
return SelectedResourceManager.afterStamp(after, getToolStamp());
} }
} }
...@@ -1290,12 +1343,12 @@ public class ToolSequence { ...@@ -1290,12 +1343,12 @@ public class ToolSequence {
/** /**
* Scan all succeeded tools and set "dirty" flag if their dependencies do not match stored ones * Scan all succeeded tools and set "dirty" flag if their dependencies do not match stored ones
* * No, do for all - good or bad (bad needed to be updateContextOptions(project) to set current parameter values -> hashCodes for considering to be auto-rerun
*/ */
public void setToolsDirtyFlag(boolean update){ public void setToolsDirtyFlag(boolean update){
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 (Tool tool : ToolsCore.getConfig().getContextManager().getToolList()){ for (Tool tool : ToolsCore.getConfig().getContextManager().getToolList()){
if (tool.getState()==TOOL_STATE.SUCCESS){ // if (tool.getState()==TOOL_STATE.SUCCESS){
if (update){ if (update){
// tool.updateContextOptions(project) recalculates parameters, but not the hashcodes // tool.updateContextOptions(project) recalculates parameters, but not the hashcodes
tool.updateContextOptions(project); // Fill in parameters - it parses here too - at least some parameters? (not in menu mode) tool.updateContextOptions(project); // Fill in parameters - it parses here too - at least some parameters? (not in menu mode)
...@@ -1306,7 +1359,7 @@ public class ToolSequence { ...@@ -1306,7 +1359,7 @@ public class ToolSequence {
} }
} }
tool.setDirty(!matchDependState(tool)); tool.setDirty(!matchDependState(tool));
} // }
} }
// why did it fail? // why did it fail?
if (SelectedResourceManager.getDefault().isToolsLinked()) { if (SelectedResourceManager.getDefault().isToolsLinked()) {
......
...@@ -25,6 +25,8 @@ import com.elphel.vdt.core.tools.generators.FileListGenerator; ...@@ -25,6 +25,8 @@ import com.elphel.vdt.core.tools.generators.FileListGenerator;
import com.elphel.vdt.core.tools.generators.FilteredSourceListGenerator; import com.elphel.vdt.core.tools.generators.FilteredSourceListGenerator;
import com.elphel.vdt.core.tools.generators.TopModulesNameGenerator; import com.elphel.vdt.core.tools.generators.TopModulesNameGenerator;
import com.elphel.vdt.core.tools.generators.SourceListGenerator; import com.elphel.vdt.core.tools.generators.SourceListGenerator;
import com.elphel.vdt.veditor.VerilogPlugin;
import com.elphel.vdt.veditor.preference.PreferenceStrings;
public class RepeaterRecognizer implements Recognizer { public class RepeaterRecognizer implements Recognizer {
...@@ -104,7 +106,12 @@ public class RepeaterRecognizer implements Recognizer { ...@@ -104,7 +106,12 @@ public class RepeaterRecognizer implements Recognizer {
String separator, String separator,
FormatProcessor topProcessor) FormatProcessor topProcessor)
{ {
System.out.println("Ever get here? RepeaterRecognizer.java:findGenerator()"); // yes, sure if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) {
System.out.println("Ever get here? RepeaterRecognizer.java:findGenerator("+genName+","+repPrefix+
","+repSuffix+","+separator+","+((topProcessor==null)?"NULL":((topProcessor.getCurrentTool()==null)?
"Null":topProcessor.getCurrentTool().getName()))+")"); // yes, sure
// repeater in the output lines - see grep.xml
}
AbstractGenerator gen=new FilteredSourceListGenerator(repPrefix, repSuffix, separator,topProcessor); AbstractGenerator gen=new FilteredSourceListGenerator(repPrefix, repSuffix, separator,topProcessor);
if (genName.equals(gen.getName())) return gen; if (genName.equals(gen.getName())) return gen;
gen=new SourceListGenerator(repPrefix, repSuffix, separator); gen=new SourceListGenerator(repPrefix, repSuffix, separator);
......
...@@ -44,7 +44,8 @@ public class SimpleGeneratorRecognizer implements Recognizer { ...@@ -44,7 +44,8 @@ public class SimpleGeneratorRecognizer implements Recognizer {
new UserNameGenerator(), new UserNameGenerator(),
new StateDirGenerator(processor), new StateDirGenerator(processor),
new StateFileGenerator(processor), new StateFileGenerator(processor),
new StateBaseGenerator(processor) new StateBaseGenerator(processor),
new ToolNameGenerator()
// new SourceListGenerator("","",""), // new SourceListGenerator("","",""),
// new FilteredSourceListGenerator("","","") // new FilteredSourceListGenerator("","","")
}; };
......
...@@ -35,6 +35,7 @@ import com.elphel.vdt.core.options.OptionsCore; ...@@ -35,6 +35,7 @@ import com.elphel.vdt.core.options.OptionsCore;
import com.elphel.vdt.core.tools.contexts.Context; import com.elphel.vdt.core.tools.contexts.Context;
import com.elphel.vdt.core.tools.contexts.PackageContext; import com.elphel.vdt.core.tools.contexts.PackageContext;
import com.elphel.vdt.core.tools.params.ToolException; import com.elphel.vdt.core.tools.params.ToolException;
import com.elphel.vdt.core.tools.params.ToolSequence;
import com.elphel.vdt.ui.MessageUI; import com.elphel.vdt.ui.MessageUI;
import com.elphel.vdt.ui.views.DesignFlowView; import com.elphel.vdt.ui.views.DesignFlowView;
...@@ -86,7 +87,8 @@ public class ContextOptionsDialog extends Dialog { ...@@ -86,7 +87,8 @@ public class ContextOptionsDialog extends Dialog {
, new String[] {context.getLabel(), e.getMessage()}) , new String[] {context.getLabel(), e.getMessage()})
, e ); , e );
} }
context.recalcHashCodes(); context.recalcHashCodes();
if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER))
System.out.println("ContexOptionsDialog.okPressed()"); System.out.println("ContexOptionsDialog.okPressed()");
// Need to update Design menu as it uses calculated parameters // Need to update Design menu as it uses calculated parameters
......
...@@ -328,7 +328,7 @@ public class SelectedResourceManager implements IWindowListener, ISelectionListe ...@@ -328,7 +328,7 @@ public class SelectedResourceManager implements IWindowListener, ISelectionListe
} }
public static boolean afterStamp(String after, String before){ public static boolean afterStamp(String after, String before){
return parseStamp(before).after(parseStamp(after)); return parseStamp(after).after(parseStamp(before));
} }
public String getChosenTarget() { public String getChosenTarget() {
......
...@@ -64,7 +64,7 @@ public class ClearLogFiles extends ClearAction { ...@@ -64,7 +64,7 @@ public class ClearLogFiles extends ClearAction {
for (IFile file:toRemove){ for (IFile file:toRemove){
try { try {
// file.delete(IResource.ALWAYS_DELETE_PROJECT_CONTENT ,null); // file.delete(IResource.ALWAYS_DELETE_PROJECT_CONTENT ,null);
file.delete(true ,null); file.delete(true ,null); // force
} catch (CoreException e) { } catch (CoreException e) {
System.out.println("Could not delete "+file.getLocation().toOSString()+", exception:"+e); System.out.println("Could not delete "+file.getLocation().toOSString()+", exception:"+e);
} }
......
...@@ -56,7 +56,7 @@ public class ClearStateFiles extends ClearAction { ...@@ -56,7 +56,7 @@ public class ClearStateFiles extends ClearAction {
if (messageBox.getReturnCode() == 0) { if (messageBox.getReturnCode() == 0) {
for (IFile file:toRemove){ for (IFile file:toRemove){
try { try {
file.delete(0,null); file.delete(true,null); // force - in log files was needed
} catch (CoreException e) { } catch (CoreException e) {
System.out.println("Could not delete "+file.getLocation().toOSString()); System.out.println("Could not delete "+file.getLocation().toOSString());
} }
......
...@@ -59,8 +59,8 @@ abstract public class ContextsAction extends Action ...@@ -59,8 +59,8 @@ abstract public class ContextsAction extends Action
this.designFlowView=designFlowView; this.designFlowView=designFlowView;
} }
public void updateActions(){ public void updateActions(boolean updateDirty){
if (this.designFlowView!=null) this.designFlowView.updateLaunchAction(); if (this.designFlowView!=null) this.designFlowView.updateLaunchAction(updateDirty);
} }
public void setContexts(List<Context> contexts) { public void setContexts(List<Context> contexts) {
......
...@@ -396,8 +396,8 @@ public class DesignFlowView extends ViewPart implements ISelectionListener { ...@@ -396,8 +396,8 @@ public class DesignFlowView extends ViewPart implements ISelectionListener {
} else { } else {
toggleLinkedTools.setImageDescriptor(VDTPluginImages.DESC_TOOLS_LINKED); toggleLinkedTools.setImageDescriptor(VDTPluginImages.DESC_TOOLS_LINKED);
} }
toolSequence.setToolsDirtyFlag(false); //boolean update) - recalculate dirty flags // toolSequence.setToolsDirtyFlag(false); //boolean update) - recalculate dirty flags
fDesignFlowView.updateLaunchAction(); fDesignFlowView.updateLaunchAction(true); // will call toolSequence.setToolsDirtyFlag(false)
} }
}; };
toggleLinkedTools.setToolTipText("Toggle tool dependency"); toggleLinkedTools.setToolTipText("Toggle tool dependency");
...@@ -431,7 +431,7 @@ public class DesignFlowView extends ViewPart implements ISelectionListener { ...@@ -431,7 +431,7 @@ public class DesignFlowView extends ViewPart implements ISelectionListener {
if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) { if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) {
System.out.println("openInstallationPropertiesDialog()-> OK"); System.out.println("openInstallationPropertiesDialog()-> OK");
} }
fDesignFlowView.updateLaunchAction(); fDesignFlowView.updateLaunchAction(true);
}; };
} }
}; };
...@@ -462,7 +462,7 @@ public class DesignFlowView extends ViewPart implements ISelectionListener { ...@@ -462,7 +462,7 @@ public class DesignFlowView extends ViewPart implements ISelectionListener {
if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) { if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) {
System.out.println("GlobalContextsAction.openDialog()-> OK"); System.out.println("GlobalContextsAction.openDialog()-> OK");
} }
fDesignFlowView.updateLaunchAction(); fDesignFlowView.updateLaunchAction(); // is it already updated?
}; };
} }
}; };
...@@ -488,7 +488,7 @@ public class DesignFlowView extends ViewPart implements ISelectionListener { ...@@ -488,7 +488,7 @@ public class DesignFlowView extends ViewPart implements ISelectionListener {
if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) { if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) {
System.out.println("LocalContextsAction.openDialog()-> OK"); System.out.println("LocalContextsAction.openDialog()-> OK");
} }
fDesignFlowView.updateLaunchAction(); fDesignFlowView.updateLaunchAction(); // is it already updated?
}; };
} }
}; };
...@@ -507,7 +507,7 @@ public class DesignFlowView extends ViewPart implements ISelectionListener { ...@@ -507,7 +507,7 @@ public class DesignFlowView extends ViewPart implements ISelectionListener {
if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) { if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) {
System.out.println("openToolPropertiesDialog()-> OK"); System.out.println("openToolPropertiesDialog()-> OK");
} }
fDesignFlowView.updateLaunchAction(); fDesignFlowView.updateLaunchAction(true);
}; };
// ConsoleView.getDefault().println("Action 1 executed", ConsoleView.MSG_INFORMATION); // ConsoleView.getDefault().println("Action 1 executed", ConsoleView.MSG_INFORMATION);
} }
...@@ -552,7 +552,7 @@ public class DesignFlowView extends ViewPart implements ISelectionListener { ...@@ -552,7 +552,7 @@ public class DesignFlowView extends ViewPart implements ISelectionListener {
if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) { if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) {
System.out.println("Ran openToolLaunchDialog() ->"+result); System.out.println("Ran openToolLaunchDialog() ->"+result);
} }
fDesignFlowView.updateLaunchAction(); fDesignFlowView.updateLaunchAction(true);
} catch (CoreException e) { } catch (CoreException e) {
MessageUI.error(Txt.s("Action.OpenLaunchConfigDialog.Error", MessageUI.error(Txt.s("Action.OpenLaunchConfigDialog.Error",
new String[] {selectedItem.getLabel(), e.getMessage()}), new String[] {selectedItem.getLabel(), e.getMessage()}),
...@@ -627,6 +627,13 @@ public class DesignFlowView extends ViewPart implements ISelectionListener { ...@@ -627,6 +627,13 @@ public class DesignFlowView extends ViewPart implements ISelectionListener {
// Made it public to call from ContexOptionsDialog.okPressed() as launch actions might change // Made it public to call from ContexOptionsDialog.okPressed() as launch actions might change
// private void updateLaunchAction() { // private void updateLaunchAction() {
public void updateLaunchAction() { public void updateLaunchAction() {
updateLaunchAction(false);
}
public void updateLaunchAction(boolean updateDirty) {
if (updateDirty){
toolSequence.setToolsDirtyFlag(false); // if true - recalculates parameters
}
// System.out.println("DesignFlowView.updateLaunchAction()"); // System.out.println("DesignFlowView.updateLaunchAction()");
...@@ -1201,7 +1208,7 @@ public class DesignFlowView extends ViewPart implements ISelectionListener { ...@@ -1201,7 +1208,7 @@ public class DesignFlowView extends ViewPart implements ISelectionListener {
public void finalizeAfterVEditorDB(IMemento memento){ public void finalizeAfterVEditorDB(IMemento memento){
toolSequence.restoreCurrentStates(memento); // restore states and recalc "dirty" flags - should be after tools themselves toolSequence.restoreCurrentStates(memento); // restore states and recalc "dirty" flags - should be after tools themselves
doLoadDesignMenu(); doLoadDesignMenu();
updateLaunchAction(); updateLaunchAction(true); // true?
} }
......
...@@ -54,7 +54,7 @@ public class GlobalContextsAction extends ContextsAction { ...@@ -54,7 +54,7 @@ public class GlobalContextsAction extends ContextsAction {
if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) { if (VerilogPlugin.getPreferenceBoolean(PreferenceStrings.DEBUG_OTHER)) {
System.out.println("GlobalContextsAction.run()"); System.out.println("GlobalContextsAction.run()");
} }
super.updateActions(); super.updateActions(true);
} }
} }
} }
......
...@@ -63,7 +63,7 @@ public class LocalContextsAction extends ContextsAction { ...@@ -63,7 +63,7 @@ public class LocalContextsAction extends ContextsAction {
if (lastSelected != null) { if (lastSelected != null) {
if (openDialog(title, lastSelected, project)== Window.OK){ if (openDialog(title, lastSelected, project)== Window.OK){
System.out.println("LocalContextsAction.run()"); System.out.println("LocalContextsAction.run()");
super.updateActions(); super.updateActions(true);
} }
} }
} }
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
log-dir="VivadoLogDir" log-dir="VivadoLogDir"
state-dir="VivadoLocalDir" state-dir="VivadoLocalDir"
disable="DisableVivadoBitsteam" disable="DisableVivadoBitsteam"
inherits="VivadoToolPrototype"
> >
<action-menu> <action-menu>
<action label="Generate bitstream" resource="" icon="bitstream.png" /> <action label="Generate bitstream" resource="" icon="bitstream.png" />
...@@ -69,44 +70,22 @@ ...@@ -69,44 +70,22 @@
<parameter id="verbose_bit" outid="verbose" label="Verbose" tooltip= "Temporarily override message limits set with set_msg_config" <parameter id="verbose_bit" outid="verbose" label="Verbose" tooltip= "Temporarily override message limits set with set_msg_config"
default="false" visible="true" omit="false" type="Boolean" format="DashName"/> default="false" visible="true" omit="false" type="Boolean" format="DashName"/>
<!-- parser parameters --> <!-- parser parameters - will have different values than the base tool -->
<parameter id="PatternErrors" label="Errors" tooltip= "Regular expression for error messages" <parameter id="PatternErrors"/>
default=".*ERROR: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="PatternWarnings"/>
visible="true" type="String" format="CopyValue"/> <parameter id="PatternInfo"/>
<parameter id="PatternWarnings" label="Warnings" tooltip= "Regular expression for warnings messages" <parameter id="NoFileProblem"/>
default=".*WARNING: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Drc"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Vivado_Tcl"/>
<parameter id="PatternInfo" label="Info" tooltip= "Regular expression for info messages" <parameter id="Route"/>
default=".*INFO: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Memdata"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Synth"/>
<parameter id="NoFileProblem" label="No-file problems" tooltip= "Report problems that do not specify particular source file/line" <parameter id="Netlist"/>
default="true" visible="true" omit="false" type="Boolean" format="None"/> <parameter id="Opt"/>
<!-- TODO: change to bitstream-specific problems --> <parameter id="Project"/>
<parameter id="Timing"/>
<parameter id="Drc" label="Drc" tooltip= "Enable problems with [Drc to be reported" <parameter id="Pwropt"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/> <parameter id="OtherProblems"/>
<parameter id="Vivado_Tcl" label="Vivado_Tcl" tooltip= "Enable problems with [Vivado_Tcl to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Route" label="Route" tooltip= "Enable problems with [Route to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<!-- Other patterns copied from other commands, maybe not applicablwe here -->
<parameter id="Memdata" label="Memdata" tooltip= "Enable problems with [Memdata to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Netlist" label="Netlist" tooltip= "Enable problems with [Netlist to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Opt" label="Opt" tooltip= "Enable problems with [Opt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Project" label="Project" tooltip= "Enable problems with [Project to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Timing" label="Timing" tooltip= "Enable problems with [Timing to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Pwropt" label="Pwropt" tooltip= "Enable problems with [Pwropt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="OtherProblems" label="Other problems" tooltip= "Other problem patterns (after opening '[') to be suppressed)"
default="" visible="true" omit="" type="Stringlist" format="GrepFilterProblemOtherSyntax"/>
<!-- hidden (calculated) parameters --> <!-- hidden (calculated) parameters -->
...@@ -138,24 +117,6 @@ ...@@ -138,24 +117,6 @@
"quiet_bit" "quiet_bit"
"verbose_bit" "verbose_bit"
</group> </group>
<group name="Parser">
"NoFileProblem"
"Drc"
"Vivado_Tcl"
"Route"
"Memdata"
"Netlist"
"Opt"
"Project"
"Timing"
"Pwropt"
"OtherProblems"
"---"
"PatternErrors"
"PatternWarnings"
"PatternInfo"
</group>
</input> </input>
<output> <output>
...@@ -180,7 +141,7 @@ ...@@ -180,7 +141,7 @@
prompt="@@FINISH@@" prompt="@@FINISH@@"
failure="ERROR" failure="ERROR"
log="" log=""
stdout="parser_VivadoBitstream"> stdout="parser_Vivado">
"cd ~/%VivadoProjectRoot\n" "cd ~/%VivadoProjectRoot\n"
"set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n" "set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n"
"file mkdir $outputDir\n" "file mkdir $outputDir\n"
...@@ -217,32 +178,6 @@ ...@@ -217,32 +178,6 @@
"%RemoteUser@%RemoteHost:%VivadoProjectRoot/%VivadoRemoteDir/%rawfile.*" "%RemoteUser@%RemoteHost:%VivadoProjectRoot/%VivadoRemoteDir/%rawfile.*"
"%VivadoLocalResultDir/" "%VivadoLocalResultDir/"
</line> </line>
<line name="parser_VivadoBitstream"
errors= "PatternErrors"
warnings= "PatternWarnings"
info= "PatternInfo">
"-c"
"%GrepEWI"
"| %SedPaths"
<if NoBabyTalk="true">
"| grep --line-buffered -v \"license\""
</if>
"%Drc"
"%Vivado_Tcl"
"%Route"
"%Memdata"
"%Netlist"
"%Opt"
"%Project"
"%Timing"
"%Pwropt"
"%OtherProblems"
<!-- TODO: change Placement to Routing? or such -->
<if NoFileProblem="true">
<!-- Add [Placement:0000] to lines that do not have [file:line] - then "Placement" will appear in "Problems" location-->
"| sed -u 's@^[^\[]*\[[^\[]*$@&amp;\[Bitstream:0000\]@'"
</if>
</line>
</output> </output>
</tool> </tool>
</vdt-project> </vdt-project>
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
disable="DisableVivadoOpt" disable="DisableVivadoOpt"
autosave="AutosaveVivadoOpt" autosave="AutosaveVivadoOpt"
save="SaveVivadoOpt" save="SaveVivadoOpt"
inherits="VivadoToolPrototype"
> >
<action-menu> <action-menu>
<action label="Optimize" resource="" icon="opt_blue.png" /> <action label="Optimize" resource="" icon="opt_blue.png" />
...@@ -86,39 +86,22 @@ ...@@ -86,39 +86,22 @@
default="false" visible="true" omit="false" type="Boolean" format="DashName"/> default="false" visible="true" omit="false" type="Boolean" format="DashName"/>
<parameter id="verbose_opt" outid="verbose" label="verbose" tooltip= "Temporarily override message limits set with set_msg_config" <parameter id="verbose_opt" outid="verbose" label="verbose" tooltip= "Temporarily override message limits set with set_msg_config"
default="false" visible="true" omit="False" type="Boolean" format="DashName"/> default="false" visible="true" omit="False" type="Boolean" format="DashName"/>
<!-- parser parameters - will have different values than the base tool -->
<!-- parser parameters --> <parameter id="PatternErrors"/>
<parameter id="PatternErrors" label="Errors" tooltip= "Regular expression for error messages" <parameter id="PatternWarnings"/>
default=".*ERROR: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="PatternInfo"/>
visible="true" type="String" format="CopyValue"/> <parameter id="NoFileProblem"/>
<parameter id="PatternWarnings" label="Warnings" tooltip= "Regular expression for warnings messages" <parameter id="Drc"/>
default=".*WARNING: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Vivado_Tcl"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Route"/>
<parameter id="PatternInfo" label="Info" tooltip= "Regular expression for info messages" <parameter id="Memdata"/>
default=".*INFO: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Synth"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Netlist"/>
<parameter id="NoFileProblem" label="No-file problems" tooltip= "Report problems that do not specify particular source file/line" <parameter id="Opt"/>
default="true" visible="true" omit="false" type="Boolean" format="None"/> <parameter id="Project"/>
<parameter id="Drc" label="Drc" tooltip= "Enable problems with [Drc to be reported" <parameter id="Timing"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/> <parameter id="Pwropt"/>
<parameter id="Memdata" label="Memdata" tooltip= "Enable problems with [Memdata to be reported" <parameter id="OtherProblems"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Netlist" label="Netlist" tooltip= "Enable problems with [Netlist to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Opt" label="Opt" tooltip= "Enable problems with [Opt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Project" label="Project" tooltip= "Enable problems with [Project to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Timing" label="Timing" tooltip= "Enable problems with [Timing to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Pwropt" label="Pwropt" tooltip= "Enable problems with [Pwropt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Vivado_Tcl" label="Vivado_Tcl" tooltip= "Enable problems with [Vivado_Tcl to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="OtherProblems" label="Other problems" tooltip= "Other problem patterns (after opening '[') to be suppressed)"
default="" visible="true" omit="" type="Stringlist" format="GrepFilterProblemOtherSyntax"/>
<!-- hidden (calculated) parameters --> <!-- hidden (calculated) parameters -->
<!-- not really used now, always "0" --> <!-- not really used now, always "0" -->
<parameter id="VivadoOptActionIndex" default="%%ChosenActionIndex" <parameter id="VivadoOptActionIndex" default="%%ChosenActionIndex"
...@@ -126,8 +109,6 @@ ...@@ -126,8 +109,6 @@
<!-- invisible/calculated parameters --> <!-- invisible/calculated parameters -->
<parameter id="AutosaveVivadoOpt" default="?%%ChosenActionIndex=0 ^ %SkipSnapshotOpt=false : true, false" <parameter id="AutosaveVivadoOpt" default="?%%ChosenActionIndex=0 ^ %SkipSnapshotOpt=false : true, false"
visible="false" type="Boolean" format="None"/> visible="false" type="Boolean" format="None"/>
<input> <input>
<group name="General"> <group name="General">
"SkipPreOptimization" "SkipPreOptimization"
...@@ -155,23 +136,6 @@ ...@@ -155,23 +136,6 @@
"quiet_opt" "quiet_opt"
"verbose_opt" "verbose_opt"
</group> </group>
<group name="Parser">
"NoFileProblem"
"Drc"
"Memdata"
"Netlist"
"Opt"
"Project"
"Timing"
"Pwropt"
"Vivado_Tcl"
"OtherProblems"
"---"
"PatternErrors"
"PatternWarnings"
"PatternInfo"
</group>
</input> </input>
<output> <output>
<line name="vivado_run_opt" <line name="vivado_run_opt"
...@@ -181,7 +145,7 @@ ...@@ -181,7 +145,7 @@
prompt="@@FINISH@@" prompt="@@FINISH@@"
success="opt_design completed successfully" success="opt_design completed successfully"
log="" log=""
stdout="parser_VivadoOpt"> stdout="parser_Vivado">
"cd ~/%VivadoProjectRoot\n" "cd ~/%VivadoProjectRoot\n"
"set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n" "set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n"
"file mkdir $outputDir\n" "file mkdir $outputDir\n"
...@@ -211,30 +175,6 @@ ...@@ -211,30 +175,6 @@
</if> </if>
"puts \"@@FINISH@@\"\n" "puts \"@@FINISH@@\"\n"
</line> </line>
<line name="parser_VivadoOpt"
errors= "PatternErrors"
warnings= "PatternWarnings"
info= "PatternInfo">
"-c"
"%GrepEWI"
"| %SedPaths"
<if NoBabyTalk="true">
"| grep --line-buffered -v \"license\""
</if>
"%Drc"
"%Memdata"
"%Netlist"
"%Opt"
"%Project"
"%Timing"
"%Pwropt"
"%Vivado_Tcl"
"%OtherProblems"
<if NoFileProblem="true">
<!-- Add [Placement:0000] to lines that do not have [file:line] - then "Placement" will appear in "Problems" location-->
"| sed -u 's@^[^\[]*\[[^\[]*$@&amp;\[Optimization:0000\]@'"
</if>
</line>
</output> </output>
</tool> </tool>
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
disable="DisableVivadoOptPhys" disable="DisableVivadoOptPhys"
autosave="AutosaveVivadoOptPhys" autosave="AutosaveVivadoOptPhys"
save="SaveVivadoOptPhys" save="SaveVivadoOptPhys"
inherits="VivadoToolPrototype"
> >
<action-menu> <action-menu>
<action label="Post placement optimize" resource="" icon="opt_yellow.png" /> <action label="Post placement optimize" resource="" icon="opt_yellow.png" />
...@@ -98,36 +99,22 @@ ...@@ -98,36 +99,22 @@
<parameter id="verbose_phys_opt" outid="verbose" label="Verbose" tooltip= "Temporarily override message limits set with set_msg_config" <parameter id="verbose_phys_opt" outid="verbose" label="Verbose" tooltip= "Temporarily override message limits set with set_msg_config"
default="false" visible="true" omit="false" type="Boolean" format="DashName"/> default="false" visible="true" omit="false" type="Boolean" format="DashName"/>
<!-- parser parameters --> <!-- parser parameters - will have different values than the base tool -->
<parameter id="PatternErrors" label="Errors" tooltip= "Regular expression for error messages" <parameter id="PatternErrors"/>
default=".*ERROR: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="PatternWarnings"/>
visible="true" type="String" format="CopyValue"/> <parameter id="PatternInfo"/>
<parameter id="PatternWarnings" label="Warnings" tooltip= "Regular expression for warnings messages" <parameter id="NoFileProblem"/>
default=".*WARNING: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Drc"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Vivado_Tcl"/>
<parameter id="PatternInfo" label="Info" tooltip= "Regular expression for info messages" <parameter id="Route"/>
default=".*INFO: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Memdata"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Synth"/>
<parameter id="NoFileProblem" label="No-file problems" tooltip= "Report problems that do not specify particular source file/line" <parameter id="Netlist"/>
default="true" visible="true" omit="false" type="Boolean" format="None"/> <parameter id="Opt"/>
<parameter id="Drc" label="Drc" tooltip= "Enable problems with [Drc to be reported" <parameter id="Project"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/> <parameter id="Timing"/>
<parameter id="Memdata" label="Memdata" tooltip= "Enable problems with [Memdata to be reported" <parameter id="Pwropt"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/> <parameter id="OtherProblems"/>
<parameter id="Netlist" label="Netlist" tooltip= "Enable problems with [Netlist to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Opt" label="Opt" tooltip= "Enable problems with [Opt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Project" label="Project" tooltip= "Enable problems with [Project to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Timing" label="Timing" tooltip= "Enable problems with [Timing to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Pwropt" label="Pwropt" tooltip= "Enable problems with [Pwropt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Vivado_Tcl" label="Vivado_Tcl" tooltip= "Enable problems with [Vivado_Tcl to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="OtherProblems" label="Other problems" tooltip= "Other problem patterns (after opening '[') to be suppressed)"
default="" visible="true" omit="" type="Stringlist" format="GrepFilterProblemOtherSyntax"/>
<!-- hidden (calculated) parameters --> <!-- hidden (calculated) parameters -->
<!-- not really used now, always "0" --> <!-- not really used now, always "0" -->
...@@ -170,23 +157,6 @@ ...@@ -170,23 +157,6 @@
"quiet_phys_opt" "quiet_phys_opt"
"verbose_phys_opt" "verbose_phys_opt"
</group> </group>
<group name="Parser">
"NoFileProblem"
"Drc"
"Memdata"
"Netlist"
"Opt"
"Project"
"Timing"
"Pwropt"
"Vivado_Tcl"
"OtherProblems"
"---"
"PatternErrors"
"PatternWarnings"
"PatternInfo"
</group>
</input> </input>
<output> <output>
...@@ -198,7 +168,7 @@ ...@@ -198,7 +168,7 @@
prompt="@@FINISH@@" prompt="@@FINISH@@"
success="phys_opt_design completed successfully" success="phys_opt_design completed successfully"
log="" log=""
stdout="parser_VivadoOptPhys"> stdout="parser_Vivado">
"cd ~/%VivadoProjectRoot\n" "cd ~/%VivadoProjectRoot\n"
"set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n" "set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n"
"file mkdir $outputDir\n" "file mkdir $outputDir\n"
...@@ -234,30 +204,6 @@ ...@@ -234,30 +204,6 @@
</if> </if>
"puts \"@@FINISH@@\"\n" "puts \"@@FINISH@@\"\n"
</line> </line>
<line name="parser_VivadoOptPhys"
errors= "PatternErrors"
warnings= "PatternWarnings"
info= "PatternInfo">
"-c"
"%GrepEWI"
"| %SedPaths"
<if NoBabyTalk="true">
"| grep --line-buffered -v \"license\""
</if>
"%Drc"
"%Memdata"
"%Netlist"
"%Opt"
"%Project"
"%Timing"
"%Pwropt"
"%Vivado_Tcl"
"%OtherProblems"
<if NoFileProblem="true">
<!-- Add [Placement:0000] to lines that do not have [file:line] - then "Placement" will appear in "Problems" location-->
"| sed -u 's@^[^\[]*\[[^\[]*$@&amp;\[PhysOpt:0000\]@'"
</if>
</line>
</output> </output>
</tool> </tool>
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
disable="DisableVivadoOptPower" disable="DisableVivadoOptPower"
autosave="AutosaveVivadoOptPower" autosave="AutosaveVivadoOptPower"
save="SaveVivadoOptPower" save="SaveVivadoOptPower"
inherits="VivadoToolPrototype"
> >
<action-menu> <action-menu>
<action label="Power optimize" resource="" icon="fire.png" /> <action label="Power optimize" resource="" icon="fire.png" />
...@@ -54,36 +55,22 @@ ...@@ -54,36 +55,22 @@
<parameter id="verbose_pwr_opt" outid="verbose" label="Verbose" tooltip= "Temporarily override message limits set with set_msg_config" <parameter id="verbose_pwr_opt" outid="verbose" label="Verbose" tooltip= "Temporarily override message limits set with set_msg_config"
default="false" visible="true" omit="false" type="Boolean" format="DashName"/> default="false" visible="true" omit="false" type="Boolean" format="DashName"/>
<!-- parser parameters --> <!-- parser parameters - will have different values than the base tool -->
<parameter id="PatternErrors" label="Errors" tooltip= "Regular expression for error messages" <parameter id="PatternErrors"/>
default=".*ERROR: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="PatternWarnings"/>
visible="true" type="String" format="CopyValue"/> <parameter id="PatternInfo"/>
<parameter id="PatternWarnings" label="Warnings" tooltip= "Regular expression for warnings messages" <parameter id="NoFileProblem"/>
default=".*WARNING: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Drc"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Vivado_Tcl"/>
<parameter id="PatternInfo" label="Info" tooltip= "Regular expression for info messages" <parameter id="Route"/>
default=".*INFO: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Memdata"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Synth"/>
<parameter id="NoFileProblem" label="No-file problems" tooltip= "Report problems that do not specify particular source file/line" <parameter id="Netlist"/>
default="true" visible="true" omit="false" type="Boolean" format="None"/> <parameter id="Opt"/>
<parameter id="Drc" label="Drc" tooltip= "Enable problems with [Drc to be reported" <parameter id="Project"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/> <parameter id="Timing"/>
<parameter id="Memdata" label="Memdata" tooltip= "Enable problems with [Memdata to be reported" <parameter id="Pwropt"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/> <parameter id="OtherProblems"/>
<parameter id="Netlist" label="Netlist" tooltip= "Enable problems with [Netlist to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Opt" label="Opt" tooltip= "Enable problems with [Opt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Project" label="Project" tooltip= "Enable problems with [Project to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Timing" label="Timing" tooltip= "Enable problems with [Timing to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Pwropt" label="Pwropt" tooltip= "Enable problems with [Pwropt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Vivado_Tcl" label="Vivado_Tcl" tooltip= "Enable problems with [Vivado_Tcl to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="OtherProblems" label="Other problems" tooltip= "Other problem patterns (after opening '[') to be suppressed)"
default="" visible="true" omit="" type="Stringlist" format="GrepFilterProblemOtherSyntax"/>
<!-- hidden (calculated) parameters --> <!-- hidden (calculated) parameters -->
<!-- not really used now, always "0" --> <!-- not really used now, always "0" -->
...@@ -109,22 +96,6 @@ ...@@ -109,22 +96,6 @@
"quiet_pwr_opt" "quiet_pwr_opt"
"verbose_pwr_opt" "verbose_pwr_opt"
</group> </group>
<group name="Parser">
"NoFileProblem"
"Drc"
"Memdata"
"Netlist"
"Opt"
"Project"
"Timing"
"Pwropt"
"Vivado_Tcl"
"OtherProblems"
"---"
"PatternErrors"
"PatternWarnings"
"PatternInfo"
</group>
</input> </input>
<output> <output>
<line name="vivado_run_opt_pwr" <line name="vivado_run_opt_pwr"
...@@ -134,7 +105,7 @@ ...@@ -134,7 +105,7 @@
prompt="@@FINISH@@" prompt="@@FINISH@@"
success="power_opt_design completed successfully" success="power_opt_design completed successfully"
log="" log=""
stdout="parser_VivadoOptPwr"> stdout="parser_Vivado">
"cd ~/%VivadoProjectRoot\n" "cd ~/%VivadoProjectRoot\n"
"set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n" "set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n"
"file mkdir $outputDir\n" "file mkdir $outputDir\n"
...@@ -156,30 +127,6 @@ ...@@ -156,30 +127,6 @@
</if> </if>
"puts \"@@FINISH@@\"\n" "puts \"@@FINISH@@\"\n"
</line> </line>
<line name="parser_VivadoOptPwr"
errors= "PatternErrors"
warnings= "PatternWarnings"
info= "PatternInfo">
"-c"
"%GrepEWI"
"| %SedPaths"
<if NoBabyTalk="true">
"| grep --line-buffered -v \"license\""
</if>
"%Drc"
"%Memdata"
"%Netlist"
"%Opt"
"%Project"
"%Timing"
"%Pwropt"
"%Vivado_Tcl"
"%OtherProblems"
<if NoFileProblem="true">
<!-- Add [Placement:0000] to lines that do not have [file:line] - then "Placement" will appear in "Problems" location-->
"| sed -u 's@^[^\[]*\[[^\[]*$@&amp;\[Power:0000\]@'"
</if>
</line>
</output> </output>
</tool> </tool>
......
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
disable="DisableVivadoPlace" disable="DisableVivadoPlace"
autosave="AutosaveVivadoPlace" autosave="AutosaveVivadoPlace"
save="SaveVivadoPlace" save="SaveVivadoPlace"
inherits="VivadoToolPrototype"
> >
<action-menu> <action-menu>
<action label="Place" resource="" icon="mondrian2x2.png" /> <action label="Place" resource="" icon="mondrian2x2.png" />
...@@ -93,36 +94,22 @@ ...@@ -93,36 +94,22 @@
<parameter id="verbose_place" outid="verbose" label="Verbose" tooltip= "Temporarily override message limits set with set_msg_config" <parameter id="verbose_place" outid="verbose" label="Verbose" tooltip= "Temporarily override message limits set with set_msg_config"
default="false" visible="true" omit="false" type="Boolean" format="DashName"/> default="false" visible="true" omit="false" type="Boolean" format="DashName"/>
<!-- parser parameters --> <!-- parser parameters - will have different values than the base tool -->
<parameter id="PatternErrors" label="Errors" tooltip= "Regular expression for error messages" <parameter id="PatternErrors"/>
default=".*ERROR: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="PatternWarnings"/>
visible="true" type="String" format="CopyValue"/> <parameter id="PatternInfo"/>
<parameter id="PatternWarnings" label="Warnings" tooltip= "Regular expression for warnings messages" <parameter id="NoFileProblem"/>
default=".*WARNING: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Drc"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Vivado_Tcl"/>
<parameter id="PatternInfo" label="Info" tooltip= "Regular expression for info messages" <parameter id="Route"/>
default=".*INFO: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Memdata"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Synth"/>
<parameter id="NoFileProblem" label="No-file problems" tooltip= "Report problems that do not specify particular source file/line" <parameter id="Netlist"/>
default="true" visible="true" omit="false" type="Boolean" format="None"/> <parameter id="Opt"/>
<parameter id="Drc" label="Drc" tooltip= "Enable problems with [Drc to be reported" <parameter id="Project"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/> <parameter id="Timing"/>
<parameter id="Memdata" label="Memdata" tooltip= "Enable problems with [Memdata to be reported" <parameter id="Pwropt"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/> <parameter id="OtherProblems"/>
<parameter id="Netlist" label="Netlist" tooltip= "Enable problems with [Netlist to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Opt" label="Opt" tooltip= "Enable problems with [Opt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Project" label="Project" tooltip= "Enable problems with [Project to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Timing" label="Timing" tooltip= "Enable problems with [Timing to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Pwropt" label="Pwropt" tooltip= "Enable problems with [Pwropt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Vivado_Tcl" label="Vivado_Tcl" tooltip= "Enable problems with [Vivado_Tcl to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="OtherProblems" label="Other problems" tooltip= "Other problem patterns (after opening '[') to be suppressed)"
default="" visible="true" omit="" type="Stringlist" format="GrepFilterProblemOtherSyntax"/>
<!-- hidden (calculated) parameters --> <!-- hidden (calculated) parameters -->
...@@ -155,22 +142,6 @@ ...@@ -155,22 +142,6 @@
"quiet_place" "quiet_place"
"verbose_place" "verbose_place"
</group> </group>
<group name="Parser">
"NoFileProblem"
"Drc"
"Memdata"
"Netlist"
"Opt"
"Project"
"Timing"
"Pwropt"
"Vivado_Tcl"
"OtherProblems"
"---"
"PatternErrors"
"PatternWarnings"
"PatternInfo"
</group>
</input> </input>
<output> <output>
<line name="vivado_run_place" <line name="vivado_run_place"
...@@ -180,7 +151,7 @@ ...@@ -180,7 +151,7 @@
prompt="@@FINISH@@" prompt="@@FINISH@@"
success="place_design completed successfully" success="place_design completed successfully"
log="" log=""
stdout="parser_VivadoPlace"> stdout="parser_Vivado">
"cd ~/%VivadoProjectRoot\n" "cd ~/%VivadoProjectRoot\n"
"set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n" "set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n"
"file mkdir $outputDir\n" "file mkdir $outputDir\n"
...@@ -206,30 +177,6 @@ ...@@ -206,30 +177,6 @@
</if> </if>
"puts \"@@FINISH@@\"\n" "puts \"@@FINISH@@\"\n"
</line> </line>
<line name="parser_VivadoPlace"
errors= "PatternErrors"
warnings= "PatternWarnings"
info= "PatternInfo">
"-c"
"%GrepEWI"
"| %SedPaths"
<if NoBabyTalk="true">
"| grep --line-buffered -v \"license\""
</if>
"%Drc"
"%Memdata"
"%Netlist"
"%Opt"
"%Project"
"%Timing"
"%Pwropt"
"%Vivado_Tcl"
"%OtherProblems"
<if NoFileProblem="true">
<!-- Add [Placement:0000] to lines that do not have [file:line] - then "Placement" will appear in "Problems" location-->
"| sed -u 's@^[^\[]*\[[^\[]*$@&amp;\[Placement:0000\]@'"
</if>
</line>
</output> </output>
</tool> </tool>
......
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
<!-- TODO: change Placement to Routing? or such --> <!-- TODO: change Placement to Routing? or such -->
<if NoFileProblem="true"> <if NoFileProblem="true">
<!-- Add [Placement:0000] to lines that do not have [file:line] - then "Placement" will appear in "Problems" location--> <!-- Add [Placement:0000] to lines that do not have [file:line] - then "Placement" will appear in "Problems" location-->
"| sed -u 's@^[^\[]*\[[^\[]*$@&amp;\[Bitstream:0000\]@'" "| sed -u 's@^[^\[]*\[[^\[]*$@&amp;\[%%ToolName:0000\]@'"
</if> </if>
</line> </line>
</output> </output>
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
disable="DisableVivadoRoute" disable="DisableVivadoRoute"
autosave="AutosaveVivadoRoute" autosave="AutosaveVivadoRoute"
save="SaveVivadoRoute" save="SaveVivadoRoute"
inherits="VivadoToolPrototype"
> >
<action-menu> <action-menu>
<action label="Route" resource="" icon="route66.png" /> <action label="Route" resource="" icon="route66.png" />
...@@ -98,43 +99,22 @@ ...@@ -98,43 +99,22 @@
<parameter id="verbose_route" outid="verbose" label="Verbose" tooltip= "Temporarily override message limits set with set_msg_config" <parameter id="verbose_route" outid="verbose" label="Verbose" tooltip= "Temporarily override message limits set with set_msg_config"
default="false" visible="true" omit="false" type="Boolean" format="DashName"/> default="false" visible="true" omit="false" type="Boolean" format="DashName"/>
<!-- parser parameters --> <!-- parser parameters - will have different values than the base tool -->
<parameter id="PatternErrors" label="Errors" tooltip= "Regular expression for error messages" <parameter id="PatternErrors"/>
default=".*ERROR: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="PatternWarnings"/>
visible="true" type="String" format="CopyValue"/> <parameter id="PatternInfo"/>
<parameter id="PatternWarnings" label="Warnings" tooltip= "Regular expression for warnings messages" <parameter id="NoFileProblem"/>
default=".*WARNING: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Drc"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Vivado_Tcl"/>
<parameter id="PatternInfo" label="Info" tooltip= "Regular expression for info messages" <parameter id="Route"/>
default=".*INFO: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Memdata"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Synth"/>
<parameter id="NoFileProblem" label="No-file problems" tooltip= "Report problems that do not specify particular source file/line" <parameter id="Netlist"/>
default="true" visible="true" omit="false" type="Boolean" format="None"/> <parameter id="Opt"/>
<!-- TODO: change to router-specific problems --> <parameter id="Project"/>
<parameter id="Timing"/>
<parameter id="Drc" label="Drc" tooltip= "Enable problems with [Drc to be reported" <parameter id="Pwropt"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/> <parameter id="OtherProblems"/>
<parameter id="Vivado_Tcl" label="Vivado_Tcl" tooltip= "Enable problems with [Vivado_Tcl to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Route" label="Route" tooltip= "Enable problems with [Route to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<!-- Other patterns copied from other commands, maybe not applicablwe here -->
<parameter id="Memdata" label="Memdata" tooltip= "Enable problems with [Memdata to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Netlist" label="Netlist" tooltip= "Enable problems with [Netlist to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Opt" label="Opt" tooltip= "Enable problems with [Opt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Project" label="Project" tooltip= "Enable problems with [Project to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Timing" label="Timing" tooltip= "Enable problems with [Timing to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Pwropt" label="Pwropt" tooltip= "Enable problems with [Pwropt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="OtherProblems" label="Other problems" tooltip= "Other problem patterns (after opening '[') to be suppressed)"
default="" visible="true" omit="" type="Stringlist" format="GrepFilterProblemOtherSyntax"/>
<parameter id="AutosaveVivadoRoute" default="?%%ChosenActionIndex=0 ^ %SkipSnapshotRoute=false : true, false" <parameter id="AutosaveVivadoRoute" default="?%%ChosenActionIndex=0 ^ %SkipSnapshotRoute=false : true, false"
visible="false" type="Boolean" format="None"/> visible="false" type="Boolean" format="None"/>
...@@ -174,25 +154,6 @@ ...@@ -174,25 +154,6 @@
"quiet_route" "quiet_route"
"verbose_route" "verbose_route"
</group> </group>
<group name="Parser">
"NoFileProblem"
"Drc"
"Vivado_Tcl"
"Route"
"---"
"Memdata"
"Netlist"
"Opt"
"Project"
"Timing"
"Pwropt"
"OtherProblems"
"---"
"PatternErrors"
"PatternWarnings"
"PatternInfo"
</group>
</input> </input>
<output> <output>
...@@ -204,7 +165,7 @@ ...@@ -204,7 +165,7 @@
prompt="@@FINISH@@" prompt="@@FINISH@@"
success="route_design completed successfully" success="route_design completed successfully"
log="" log=""
stdout="parser_VivadoRoute"> stdout="parser_Vivado">
"cd ~/%VivadoProjectRoot\n" "cd ~/%VivadoProjectRoot\n"
"set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n" "set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n"
"file mkdir $outputDir\n" "file mkdir $outputDir\n"
...@@ -236,32 +197,6 @@ ...@@ -236,32 +197,6 @@
"\n" "\n"
"puts \"@@FINISH@@\"\n" "puts \"@@FINISH@@\"\n"
</line> </line>
<line name="parser_VivadoRoute"
errors= "PatternErrors"
warnings= "PatternWarnings"
info= "PatternInfo">
"-c"
"%GrepEWI"
"| %SedPaths"
<if NoBabyTalk="true">
"| grep --line-buffered -v \"license\""
</if>
"%Drc"
"%Vivado_Tcl"
"%Route"
"%Memdata"
"%Netlist"
"%Opt"
"%Project"
"%Timing"
"%Pwropt"
"%OtherProblems"
<!-- TODO: change Placement to Routing? or such -->
<if NoFileProblem="true">
<!-- Add [Placement:0000] to lines that do not have [file:line] - then "Placement" will appear in "Problems" location-->
"| sed -u 's@^[^\[]*\[[^\[]*$@&amp;\[Routing:0000\]@'"
</if>
</line>
</output> </output>
</tool> </tool>
......
...@@ -169,57 +169,32 @@ ...@@ -169,57 +169,32 @@
<parameter id="read_xdc" type="Filelist" <parameter id="read_xdc" type="Filelist"
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="VivadoSynthActionIndex" default="%%ChosenActionIndex"
<!-- <parameter id="read_xdc" type="Filelist" format="read_xdc_syntax" label="" tooltip="read_xdc"
default="%ConstraintsFiles" visible="false" /> -->
<!-- <parameter id="top" label="" tooltip= "Top module of the design"
default="%%TopModule" visible="false" omit="" type="String" format="Dash"/> -->
<parameter id="VivadoSynthActionIndex" default="%%ChosenActionIndex"
type="String" format="CopyValue" visible="false" /> type="String" format="CopyValue" visible="false" />
<!-- parser parameters --> <!-- parser parameters - will have different values than the base tool -->
<!-- <parameter id="PatternErrors"/>
<parameter id="PatternErrors" label="Errors" tooltip= "Regular expression for error messages" <parameter id="PatternWarnings"/>
default=".*ERROR: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="PatternInfo"/>
visible="true" type="String" format="CopyValue"/> <parameter id="NoFileProblem"/>
<parameter id="PatternWarnings" label="Warnings" tooltip= "Regular expression for warnings messages" <parameter id="Drc"/>
default=".*WARNING: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Vivado_Tcl"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Route"/>
<parameter id="PatternInfo" label="Info" tooltip= "Regular expression for info messages" <parameter id="Memdata"/>
default=".*INFO: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Synth"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Netlist"/>
<parameter id="NoFileProblem" label="No-file problems" tooltip= "Report problems that do not specify particular source file/line" <parameter id="Opt"/>
default="true" visible="true" omit="false" type="Boolean" format="None"/> <parameter id="Project"/>
<parameter id="Memdata" label="Memdata" tooltip= "Enable problems with [Memdata to be reported" <parameter id="Timing"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/> <parameter id="Pwropt"/>
<parameter id="Synth" label="Synth" tooltip= "Enable problems with [Synth to be reported" <parameter id="OtherProblems"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Netlist" label="Netlist" tooltip= "Enable problems with [Netlist to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Opt" label="Opt" tooltip= "Enable problems with [Opt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Project" label="Project" tooltip= "Enable problems with [Project to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Timing" label="Timing" tooltip= "Enable problems with [Timing to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="OtherProblems" label="Other problems" tooltip= "Other problem patterns (after opening '[') to be suppressed)"
default="" visible="true" omit="" type="Stringlist" format="GrepFilterProblemOtherSyntax"/>
-->
<!-- invisible/calculated parameters --> <!-- invisible/calculated parameters -->
<parameter id="AutosaveVivadoSynthesis" default="?%%ChosenActionIndex=0 ^ %SkipSnapshotSynth=false : true, false" <parameter id="AutosaveVivadoSynthesis" default="?%%ChosenActionIndex=0 ^ %SkipSnapshotSynth=false : true, false"
visible="false" type="Boolean" format="None"/> visible="false" type="Boolean" format="None"/>
<parameter id="condConstraintsFiles" default="?%%ChosenActionIndex=0 : %ConstraintsFiles, " <parameter id="condConstraintsFiles" default="?%%ChosenActionIndex=0 : %ConstraintsFiles, "
visible="false" type="Filelist" format="None"/> visible="false" type="Filelist" format="None"/>
<!--
<parameter id="blabla1" label="blabla1" tooltip= "blabla1"
default="%blabla2"
visible="true" type="String" format="CopyValue"/>
<parameter id="blabla2" label="blabla2" tooltip= "blabla2"
default="%blabla1"
visible="true" type="String" format="CopyValue"/>
-->
<input> <input>
<group name="General"> <group name="General">
...@@ -258,21 +233,6 @@ ...@@ -258,21 +233,6 @@
"quiet" "quiet"
"verbose" "verbose"
</group> </group>
<!--
<group name="Parser">
"NoFileProblem"
"Memdata"
"Synth"
"Netlist"
"Opt"
"Project"
"Timing"
"OtherProblems"
"PatternErrors"
"PatternWarnings"
"PatternInfo"
</group>
-->
</input> </input>
<output> <output>
...@@ -347,31 +307,6 @@ ...@@ -347,31 +307,6 @@
"\n" "\n"
"puts \"@@FINISH@@\"\n" "puts \"@@FINISH@@\"\n"
</line> </line>
<!--
<line name="parser_VivadoSynth"
errors= "PatternErrors"
warnings= "PatternWarnings"
info= "PatternInfo">
"-c"
"%GrepEWI"
"| %SedPaths"
<if NoBabyTalk="true">
"| grep - -line-buffered -v \"license\""
</if>
"%Memdata"
"%Synth"
"%Netlist"
"%Opt"
"%Project"
"%Timing"
"%OtherProblems"
<if NoFileProblem="true">
"| sed -u 's@^[^\[]*\[[^\[]*$@&amp;\[Synthesis:0000\]@'"
</if>
</line>
-->
<!-- Add [Synthesis:0000] to lines that do not have [file:line] - then "Synthesis" will appear in "Problems" location-->
</output> </output>
</tool> </tool>
......
...@@ -32,6 +32,23 @@ ...@@ -32,6 +32,23 @@
<!-- Invisible (calculated) parameters --> <!-- Invisible (calculated) parameters -->
<!-- same value as %file, but will appear withou "-file" prefix --> <!-- same value as %file, but will appear withou "-file" prefix -->
<parameter id="file" default="%VivadoRemoteDir/%rawfile" visible="false" omit="" type="String" format="Dash"/> <parameter id="file" default="%VivadoRemoteDir/%rawfile" visible="false" omit="" type="String" format="Dash"/>
<!-- parser parameters - will have different values than the base tool -->
<parameter id="PatternErrors"/>
<parameter id="PatternWarnings"/>
<parameter id="PatternInfo"/>
<parameter id="NoFileProblem"/>
<parameter id="Drc"/>
<parameter id="Vivado_Tcl"/>
<parameter id="Route"/>
<parameter id="Memdata"/>
<parameter id="Synth"/>
<parameter id="Netlist"/>
<parameter id="Opt"/>
<parameter id="Project"/>
<parameter id="Timing"/>
<parameter id="Pwropt"/>
<parameter id="OtherProblems"/>
</tool> </tool>
</vdt-project> </vdt-project>
...@@ -51,6 +51,8 @@ ...@@ -51,6 +51,8 @@
state-dir="VivadoLocalDir" state-dir="VivadoLocalDir"
disable="DisableVivadoTiming" disable="DisableVivadoTiming"
abstract="true" abstract="true"
inherits="VivadoToolPrototype"
priority="0.5"
> >
<action-menu> <action-menu>
<action label="Report timing" resource="" icon="clock.png" /> <action label="Report timing" resource="" icon="clock.png" />
...@@ -195,39 +197,22 @@ ...@@ -195,39 +197,22 @@
<parameter id="verbose" outid="verbose" label="Verbose" tooltip= "Temporarily override message limits set with set_msg_config" <parameter id="verbose" outid="verbose" label="Verbose" tooltip= "Temporarily override message limits set with set_msg_config"
default="false" visible="true" omit="false" type="Boolean" format="DashName"/> default="false" visible="true" omit="false" type="Boolean" format="DashName"/>
<!-- parser parameters --> <!-- parser parameters - will have different values than the base tool -->
<parameter id="PatternErrors" label="Errors" tooltip= "Regular expression for error messages" <parameter id="PatternErrors"/>
default=".*ERROR: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="PatternWarnings"/>
visible="true" type="String" format="CopyValue"/> <parameter id="PatternInfo"/>
<parameter id="PatternWarnings" label="Warnings" tooltip= "Regular expression for warnings messages" <parameter id="NoFileProblem"/>
default=".*WARNING: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Drc"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Vivado_Tcl"/>
<parameter id="PatternInfo" label="Info" tooltip= "Regular expression for info messages" <parameter id="Route"/>
default=".*INFO: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Memdata"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Synth"/>
<parameter id="NoFileProblem" label="No-file problems" tooltip= "Report problems that do not specify particular source file/line" <parameter id="Netlist"/>
default="true" visible="true" omit="false" type="Boolean" format="None"/> <parameter id="Opt"/>
<parameter id="Drc" label="Drc" tooltip= "Enable problems with [Drc to be reported" <parameter id="Project"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/> <parameter id="Timing"/>
<parameter id="Vivado_Tcl" label="Vivado_Tcl" tooltip= "Enable problems with [Vivado_Tcl to be reported" <parameter id="Pwropt"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/> <parameter id="OtherProblems"/>
<parameter id="Route" label="Route" tooltip= "Enable problems with [Route to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<!-- Other patterns copied from other commands, maybe not applicablwe here -->
<parameter id="Memdata" label="Memdata" tooltip= "Enable problems with [Memdata to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Netlist" label="Netlist" tooltip= "Enable problems with [Netlist to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Opt" label="Opt" tooltip= "Enable problems with [Opt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Project" label="Project" tooltip= "Enable problems with [Project to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Timing" label="Timing" tooltip= "Enable problems with [Timing to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Pwropt" label="Pwropt" tooltip= "Enable problems with [Pwropt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="OtherProblems" label="Other problems" tooltip= "Other problem patterns (after opening '[') to be suppressed)"
default="" visible="true" omit="" type="Stringlist" format="GrepFilterProblemOtherSyntax"/>
<!-- Invisible (calculated) parameters --> <!-- Invisible (calculated) parameters -->
<!-- same value as %file, but will appear withou "-file" prefix --> <!-- same value as %file, but will appear withou "-file" prefix -->
...@@ -278,23 +263,6 @@ ...@@ -278,23 +263,6 @@
"quiet" "quiet"
"verbose" "verbose"
</group> </group>
<group name="Parser">
"NoFileProblem"
"Drc"
"Vivado_Tcl"
"Route"
"Memdata"
"Netlist"
"Opt"
"Project"
"Timing"
"Pwropt"
"OtherProblems"
"---"
"PatternErrors"
"PatternWarnings"
"PatternInfo"
</group>
</input> </input>
<output> <output>
<line name="vivado_run_timing" <line name="vivado_run_timing"
...@@ -304,7 +272,7 @@ ...@@ -304,7 +272,7 @@
prompt="@@FINISH@@" prompt="@@FINISH@@"
failure="ERROR" failure="ERROR"
log="" log=""
stdout="parser_VivadoTiming"> stdout="parser_Vivado">
"cd ~/%VivadoProjectRoot\n" "cd ~/%VivadoProjectRoot\n"
"set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n" "set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n"
"file mkdir $outputDir\n" "file mkdir $outputDir\n"
...@@ -361,32 +329,6 @@ ...@@ -361,32 +329,6 @@
"%RemoteUser@%RemoteHost:%VivadoProjectRoot/%VivadoRemoteDir/%rawfile" "%RemoteUser@%RemoteHost:%VivadoProjectRoot/%VivadoRemoteDir/%rawfile"
"%VivadoLocalResultDir/" "%VivadoLocalResultDir/"
</line> </line>
<line name="parser_VivadoTiming"
errors= "PatternErrors"
warnings= "PatternWarnings"
info= "PatternInfo">
"-c"
"%GrepEWI"
"| %SedPaths"
<if NoBabyTalk="true">
"| grep --line-buffered -v \"license\""
</if>
"%Drc"
"%Vivado_Tcl"
"%Route"
"%Memdata"
"%Netlist"
"%Opt"
"%Project"
"%Timing"
"%Pwropt"
"%OtherProblems"
<!-- TODO: change Placement to Routing? or such -->
<if NoFileProblem="true">
<!-- Add [Placement:0000] to lines that do not have [file:line] - then "Placement" will appear in "Problems" location-->
"| sed -u 's@^[^\[]*\[[^\[]*$@&amp;\[TimingReport:0000\]@'"
</if>
</line>
</output> </output>
</tool> </tool>
</vdt-project> </vdt-project>
...@@ -35,6 +35,8 @@ ...@@ -35,6 +35,8 @@
log-dir="VivadoLogDir" log-dir="VivadoLogDir"
state-dir="VivadoLocalDir" state-dir="VivadoLocalDir"
abstract="true" abstract="true"
inherits="VivadoToolPrototype"
priority="0.4"
> >
<action-menu> <action-menu>
<action label="Report timing summary" resource="" icon="clock_sum.png" /> <action label="Report timing summary" resource="" icon="clock_sum.png" />
...@@ -116,40 +118,22 @@ ...@@ -116,40 +118,22 @@
<parameter id="verbose" outid="verbose" label="Verbose" tooltip= "Temporarily override message limits set with set_msg_config" <parameter id="verbose" outid="verbose" label="Verbose" tooltip= "Temporarily override message limits set with set_msg_config"
default="false" visible="true" omit="false" type="Boolean" format="DashName"/> default="false" visible="true" omit="false" type="Boolean" format="DashName"/>
<!-- parser parameters --> <!-- parser parameters - will have different values than the base tool -->
<parameter id="PatternErrors" label="Errors" tooltip= "Regular expression for error messages" <parameter id="PatternErrors"/>
default=".*ERROR: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="PatternWarnings"/>
visible="true" type="String" format="CopyValue"/> <parameter id="PatternInfo"/>
<parameter id="PatternWarnings" label="Warnings" tooltip= "Regular expression for warnings messages" <parameter id="NoFileProblem"/>
default=".*WARNING: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Drc"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Vivado_Tcl"/>
<parameter id="PatternInfo" label="Info" tooltip= "Regular expression for info messages" <parameter id="Route"/>
default=".*INFO: (\[.*\].*)\[(.*):([0-9]+)\]" <parameter id="Memdata"/>
visible="true" type="String" format="CopyValue"/> <parameter id="Synth"/>
<parameter id="NoFileProblem" label="No-file problems" tooltip= "Report problems that do not specify particular source file/line" <parameter id="Netlist"/>
default="true" visible="true" omit="false" type="Boolean" format="None"/> <parameter id="Opt"/>
<parameter id="Drc" label="Drc" tooltip= "Enable problems with [Drc to be reported" <parameter id="Project"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/> <parameter id="Timing"/>
<parameter id="Vivado_Tcl" label="Vivado_Tcl" tooltip= "Enable problems with [Vivado_Tcl to be reported" <parameter id="Pwropt"/>
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/> <parameter id="OtherProblems"/>
<parameter id="Route" label="Route" tooltip= "Enable problems with [Route to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<!-- Other patterns copied from other commands, maybe not applicablwe here -->
<parameter id="Memdata" label="Memdata" tooltip= "Enable problems with [Memdata to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Netlist" label="Netlist" tooltip= "Enable problems with [Netlist to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Opt" label="Opt" tooltip= "Enable problems with [Opt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Project" label="Project" tooltip= "Enable problems with [Project to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Timing" label="Timing" tooltip= "Enable problems with [Timing to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="Pwropt" label="Pwropt" tooltip= "Enable problems with [Pwropt to be reported"
default="true" visible="true" omit="true" type="Boolean" format="GrepFilterProblemSyntax"/>
<parameter id="OtherProblems" label="Other problems" tooltip= "Other problem patterns (after opening '[') to be suppressed)"
default="" visible="true" omit="" type="Stringlist" format="GrepFilterProblemOtherSyntax"/>
<!-- Invisible (calculated) parameters --> <!-- Invisible (calculated) parameters -->
<!-- same value as %file, but will appear withou "-file" prefix --> <!-- same value as %file, but will appear withou "-file" prefix -->
<parameter id="file" default="%VivadoRemoteDir/%rawfile" visible="false" omit="" type="String" format="Dash"/> <parameter id="file" default="%VivadoRemoteDir/%rawfile" visible="false" omit="" type="String" format="Dash"/>
...@@ -187,23 +171,6 @@ ...@@ -187,23 +171,6 @@
"quiet" "quiet"
"verbose" "verbose"
</group> </group>
<group name="Parser">
"NoFileProblem"
"Drc"
"Vivado_Tcl"
"Route"
"Memdata"
"Netlist"
"Opt"
"Project"
"Timing"
"Pwropt"
"OtherProblems"
"---"
"PatternErrors"
"PatternWarnings"
"PatternInfo"
</group>
</input> </input>
<output> <output>
<line name="vivado_run_timing_summary" <line name="vivado_run_timing_summary"
...@@ -213,7 +180,7 @@ ...@@ -213,7 +180,7 @@
prompt="@@FINISH@@" prompt="@@FINISH@@"
failure="ERROR" failure="ERROR"
log="" log=""
stdout="parser_VivadoTimingSummary"> stdout="parser_Vivado">
"cd ~/%VivadoProjectRoot\n" "cd ~/%VivadoProjectRoot\n"
"set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n" "set outputDir ~/%VivadoProjectRoot/%VivadoRemoteDir\n"
"file mkdir $outputDir\n" "file mkdir $outputDir\n"
...@@ -258,32 +225,6 @@ ...@@ -258,32 +225,6 @@
"%RemoteUser@%RemoteHost:%VivadoProjectRoot/%VivadoRemoteDir/%rawfile" "%RemoteUser@%RemoteHost:%VivadoProjectRoot/%VivadoRemoteDir/%rawfile"
"%VivadoLocalResultDir/" "%VivadoLocalResultDir/"
</line> </line>
<line name="parser_VivadoTimingSummary"
errors= "PatternErrors"
warnings= "PatternWarnings"
info= "PatternInfo">
"-c"
"%GrepEWI"
"| %SedPaths"
<if NoBabyTalk="true">
"| grep --line-buffered -v \"license\""
</if>
"%Drc"
"%Vivado_Tcl"
"%Route"
"%Memdata"
"%Netlist"
"%Opt"
"%Project"
"%Timing"
"%Pwropt"
"%OtherProblems"
<!-- TODO: change Placement to Routing? or such -->
<if NoFileProblem="true">
<!-- Add [Placement:0000] to lines that do not have [file:line] - then "Placement" will appear in "Problems" location-->
"| sed -u 's@^[^\[]*\[[^\[]*$@&amp;\[TimingSummary:0000\]@'"
</if>
</line>
</output> </output>
</tool> </tool>
</vdt-project> </vdt-project>
...@@ -33,6 +33,22 @@ ...@@ -33,6 +33,22 @@
<!-- Invisible (calculated) parameters --> <!-- Invisible (calculated) parameters -->
<!-- same value as %file, but will appear withou "-file" prefix --> <!-- same value as %file, but will appear withou "-file" prefix -->
<parameter id="file" default="%VivadoRemoteDir/%rawfile" visible="false" omit="" type="String" format="Dash"/> <parameter id="file" default="%VivadoRemoteDir/%rawfile" visible="false" omit="" type="String" format="Dash"/>
<!-- parser parameters - will have different values than the base tool -->
<parameter id="PatternErrors"/>
<parameter id="PatternWarnings"/>
<parameter id="PatternInfo"/>
<parameter id="NoFileProblem"/>
<parameter id="Drc"/>
<parameter id="Vivado_Tcl"/>
<parameter id="Route"/>
<parameter id="Memdata"/>
<parameter id="Synth"/>
<parameter id="Netlist"/>
<parameter id="Opt"/>
<parameter id="Project"/>
<parameter id="Timing"/>
<parameter id="Pwropt"/>
<parameter id="OtherProblems"/>
</tool> </tool>
</vdt-project> </vdt-project>
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