Commit d512e941 authored by Mikhail Karpenko's avatar Mikhail Karpenko

Add message filter and separate parser settings to Quartus tools

parent c682d5fe
......@@ -32,10 +32,12 @@ g_topModule = ""
g_toolName = ""
g_mode = ""
g_includeMsgId = True
g_excludeIdList = []
g_disableExcludeList = False
# Lines starting with these markers are of lines of interest
g_msgTypeMarkers = ("Info", "Warning", "Error", "Critical Warning", "Extra Info")
# Command line paramerters, these names should be in sync with those that are passed to the script in XML files (quartus_proto.xml probably)
g_optNames = ["top_module", "tool_name", "parser_mode", "include_msg_id"]
g_optNames = ["top_module", "tool_name", "parser_mode", "include_msg_id", "exclude_id_list", "disable_exclude_list"]
# Search patterns
patternMsgType = re.compile(".*?:")
......@@ -67,6 +69,8 @@ def getParameters():
global g_toolName
global g_mode
global g_includeMsgId
global g_excludeIdList
global g_disableExcludeList
parser = argparse.ArgumentParser()
for opt in g_optNames:
......@@ -83,6 +87,13 @@ def getParameters():
g_includeMsgId = True
else:
g_includeMsgId = False
if args.exclude_id_list:
g_excludeIdList = [int(elem) for elem in args.exclude_id_list.split('-')]
if args.disable_exclude_list:
if args.disable_exclude_list == "true":
g_disableExcludeList = True
else:
g_disableExcludeList = False
def isProblem(line):
"""Check if the line contains meaningful information"""
......@@ -158,8 +169,10 @@ def getMsgText(line, msg):
def filterMessage(msg):
"""Decide whether this message should be redirected to output or filtered out"""
#just a stub
return True
retVal = True
if msg.msgId in g_excludeIdList and not g_disableExcludeList:
retVal = False
return retVal
def assembleLine(msg):
"""Assemble and return output line"""
......@@ -180,6 +193,7 @@ def assembleLine(msg):
return line
if __name__ == "__main__":
isFiltered = False
getParameters()
for line in iter(sys.stdin.readline, ''):
if isProblem(line):
......@@ -191,3 +205,7 @@ if __name__ == "__main__":
if filterMessage(msg):
logLine = assembleLine(msg)
sys.stdout.write(logLine)
else:
isFiltered = True
if isFiltered:
sys.stdout.write("Info: some messages were filtered by python parser in accordance with settings\n")
......@@ -61,6 +61,26 @@
<parameter id="CreateHex" label="Create .hexout" tooltip="Create Hexadecimal (Intel format) Output File (.hexout)"
type="Boolean" default="false" visible="true" readonly="false" format="None"/>
<!-- parser parameters, these can differ from base tool and will be stored separately -->
<parameter id="PatternErrors"/>
<parameter id="PatternWarnings"/>
<parameter id="PatternInfo"/>
<parameter id="InstanceCapture"/>
<parameter id="InstanceSeparator"/>
<parameter id="InstanceSuffix"/>
<parameter id="ShowWarnings"/>
<parameter id="ShowInfo"/>
<parameter id="PreGrepW"/>
<parameter id="PreGrepI"/>
<parameter id="GrepEWI"/>
<parameter id="MaxMsg"/>
<parameter id="parser_mode"/>
<parameter id="parsers_path"/>
<parameter id="parser_name"/>
<parameter id="include_msg_id"/>
<parameter id="exclude_id_list"/>
<parameter id="disable_exclude_list"/>
<input>
<group name="General">
"DisableTool"
......@@ -149,6 +169,13 @@
"%QuartusLocalResultDir/;"
</if>
</line>
<line name="quartus_copy_reports">
"-c"
"mkdir -p %QuartusLocalResultDir ;"
"rsync -av -e ssh"
"%RemoteUser@%RemoteHost:%QuartusProjectRoot/*.rpt"
"%QuartusLocalResultDir/"
</line>
</output>
</tool>
......
......@@ -31,6 +31,7 @@
<syntax name="GrepFilterProblemSyntax" format='| grep --line-buffered -v "\[%%ParamName"' />
<syntax name="GrepFilterProblemOtherSyntax" format='%(| grep --line-buffered -v "\[%%ParamValue"%|\n%)' />
<syntax name="CmdLineParameterSyntax" format="--%%ParamName %%ParamValue"/>
<syntax name="MsgIdList" format="--exclude_id_list %(%%ParamValue%|-%)"/>
<typedef name="ParserModeType">
<paramtype kind= "enum" base="String">
<item value="0" label="Tool output is parsed immediately"/>
......
......@@ -130,6 +130,27 @@ when attempting to optimize the design timing requirements, including fmax"
<parameter id="tdc" label="Timing-driven compilation" tooltip="Option to use timing-driven compilation. This option optimizes place and route based on
timing information"
default="false" visible="true" readonly="false" omit="false" type="Bool_on_off" format="DoubleDash"/>
<!-- parser parameters, these can differ from base tool and will be stored separately -->
<parameter id="PatternErrors"/>
<parameter id="PatternWarnings"/>
<parameter id="PatternInfo"/>
<parameter id="InstanceCapture"/>
<parameter id="InstanceSeparator"/>
<parameter id="InstanceSuffix"/>
<parameter id="ShowWarnings"/>
<parameter id="ShowInfo"/>
<parameter id="PreGrepW"/>
<parameter id="PreGrepI"/>
<parameter id="GrepEWI"/>
<parameter id="MaxMsg"/>
<parameter id="parser_mode"/>
<parameter id="parsers_path"/>
<parameter id="parser_name"/>
<parameter id="include_msg_id"/>
<parameter id="exclude_id_list"/>
<parameter id="disable_exclude_list"/>
<input>
<group name="General">
<!-- Same as in project settings-->
......
......@@ -78,8 +78,12 @@
<parameter id="parser_name" label="Quartus parser name" tooltip="Quartus output parser script path"
default="parser_quartus.py" visible="true" omit="" type="String" format="CopyValue"/>
<parameter id="include_msg_id" label="Inlcude message ID" tooltip="Include message ID to output"
<parameter id="include_msg_id" label="Include message ID" tooltip="Include message ID to output"
type="Boolean" default="true" visible="true" readonly="false" format="CmdLineParameterSyntax"/>
<parameter id="exclude_id_list" label="Exclude message ID" tooltip="Exclude messages with these IDs from output"
type="Stringlist" default="" visible="true" readnonly="false" omit="" format="MsgIdList"/>
<parameter id="disable_exclude_list" label="Disable exclude list" tooltip="This option allows temporary disable exclude ID list"
type="Boolean" default="false" visible="true" readonly="false" omit="false" format="CmdLineParameterSyntax"/>
<!-- Invisible parameters-->
<parameter id="tool_name" type="String" default="%%ToolName" visible="false" format="CmdLineParameterSyntax"/>
......@@ -96,6 +100,8 @@
"GrepEWI"
"---"
"include_msg_id"
"exclude_id_list"
"disable_exclude_list"
"---"
"PatternErrors"
"PatternWarnings"
......@@ -115,7 +121,7 @@
instance-separator="InstanceSeparator"
instance-suffix="InstanceSuffix">
"-c"
"python -u %parsers_path%parser_name %tool_name %top_module %parser_mode %include_msg_id | "
"python -u %parsers_path%parser_name %tool_name %top_module %parser_mode %include_msg_id %exclude_id_list %disable_exclude_list | "
"%GrepEWI"
</line>
</output>
......
......@@ -140,6 +140,26 @@ Note: this feature is not licenced for the Web Edition and this parameter should
type="Stringlist" format="ProgramSyntax" default="" omit=""
readonly="false" visible="true"/>
<!-- parser parameters, these can differ from base tool and will be stored separately -->
<parameter id="PatternErrors"/>
<parameter id="PatternWarnings"/>
<parameter id="PatternInfo"/>
<parameter id="InstanceCapture"/>
<parameter id="InstanceSeparator"/>
<parameter id="InstanceSuffix"/>
<parameter id="ShowWarnings"/>
<parameter id="ShowInfo"/>
<parameter id="PreGrepW"/>
<parameter id="PreGrepI"/>
<parameter id="GrepEWI"/>
<parameter id="MaxMsg"/>
<parameter id="parser_mode"/>
<parameter id="parsers_path"/>
<parameter id="parser_name"/>
<parameter id="include_msg_id"/>
<parameter id="exclude_id_list"/>
<parameter id="disable_exclude_list"/>
<!-- invisible or calculated parameters -->
<parameter id="analysis_and_elaboration" label="Analysis and elaboration" tooltip="Option to check all the design files in a design for syntax and
semantec errors, and perform a netlist exraction."
......
......@@ -124,6 +124,26 @@ the TimeQuest Timing Analyzer"
the TimeQuest Timing Analyzer"
type="Cardinal" default="" visible="true" readonly="false" omit="" format="DoubleDashName"/>
<!-- parser parameters, these can differ from base tool and will be stored separately -->
<parameter id="PatternErrors"/>
<parameter id="PatternWarnings"/>
<parameter id="PatternInfo"/>
<parameter id="InstanceCapture"/>
<parameter id="InstanceSeparator"/>
<parameter id="InstanceSuffix"/>
<parameter id="ShowWarnings"/>
<parameter id="ShowInfo"/>
<parameter id="PreGrepW"/>
<parameter id="PreGrepI"/>
<parameter id="GrepEWI"/>
<parameter id="MaxMsg"/>
<parameter id="parser_mode"/>
<parameter id="parsers_path"/>
<parameter id="parser_name"/>
<parameter id="include_msg_id"/>
<parameter id="exclude_id_list"/>
<parameter id="disable_exclude_list"/>
<input>
<group name="General">
"DisableTool"
......
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