Commit a3c8f614 authored by Andrey Filippov's avatar Andrey Filippov

Added Vivado , removed some old tools

parent b6bfc326
...@@ -6,6 +6,10 @@ ...@@ -6,6 +6,10 @@
<interface name = "BasicInterface"> <interface name = "BasicInterface">
<!-- Basic types --> <!-- Basic types -->
<typedef name = "Boolean">
<paramtype kind="bool" formatTrue="true" formatFalse="false" />
</typedef>
<typedef name = "BoolYesNo"> <typedef name = "BoolYesNo">
<paramtype kind="bool" formatTrue="YES" formatFalse="NO" /> <paramtype kind="bool" formatTrue="YES" formatFalse="NO" />
</typedef> </typedef>
......
...@@ -9,37 +9,20 @@ ...@@ -9,37 +9,20 @@
<menu name="Verilog" <menu name="Verilog"
label="Verilog Development Tools" label="Verilog Development Tools"
icon="newmod_wiz.gif"> icon="newmod_wiz.gif">
<menuitem name="cver"
label="CVer simulator"
icon="cver.gif"
call="cver"/>
<menuitem name="modelsim"
label="ModelSIM simulator"
icon="modelsim.gif"
call="ModelSIM"/>
<menuitem name="xst"
label="XST (Synthesis)"
icon="xst.gif"
call="XST"/>
<menuitem name="IVerilog" <menuitem name="IVerilog"
label="Icarus Verilog Simulator" label="Icarus Verilog Simulator"
icon="iverilog.ico" icon="iverilog.ico"
call="iverilog"/> call="iverilog"/>
<menuitem name="IVerilog Debug"
label="Icarus Verilog (Debugging TSL)"
icon="iverilog.ico"
call="iverilog_dbg"/>
<menuitem name="GTKWave" <menuitem name="GTKWave"
label="GTKWave (Waves viewer)" label="GTKWave (Waves viewer)"
icon="gtkwave.ico" icon="gtkwave.ico"
call="iverilog"/> call="iverilog"/>
</menu> </menu>
<menu name="Python tests"
label="Tests with remote Python console"
icon="python.png">
<menuitem name="RemotePython" <menuitem name="RemotePython"
label="Run remote Python session" label="Run remote Python session"
icon="python.png" icon="python.png"
...@@ -48,8 +31,11 @@ ...@@ -48,8 +31,11 @@
label="Send a command to the remote Python session" label="Send a command to the remote Python session"
icon="my_tool.gif" icon="my_tool.gif"
call="RemotePythonCommand"/> call="RemotePythonCommand"/>
</menu>
<menuitem name="Vivado" <menu name="Vivado"
label="Vivado Tools"
icon="xilinx.png">
<menuitem name="Vivado Server"
label="Run remote Vivado session" label="Run remote Vivado session"
icon="xilinx.png" icon="xilinx.png"
call="Vivado"/> call="Vivado"/>
...@@ -57,42 +43,19 @@ ...@@ -57,42 +43,19 @@
label="Send a command to the remote Vivado session" label="Send a command to the remote Vivado session"
icon="my_tool.gif" icon="my_tool.gif"
call="VivadoTest"/> call="VivadoTest"/>
<menuitem name="VivadoLoadSource" <menuitem name="VivadoSynthesis"
label="Load source files to Vivado" label="Run Vivado synthesis"
icon="xilinx.png" icon="xilinx.png"
call="VivadoLoadSource"/> call="VivadoSynthesis"/>
</menu>
<menu name="XDS" </menu>
label="Demo XDS Tools"
icon="xds.gif"> <menu name="MainDesignMenu2"
label="Design Menu 2"
<menu name="menuXC" icon="sample.gif"
label="Native Complilation" tip="This is an user menu"
icon="xds.gif"> inherits="MainDesignMenu">
<menuitem name="toolXDS-XC"
label="Run XDS Native Compiler"
icon="xds.gif"
call="toolXDS-XC"/>
</menu>
<menu name="menuXM"
label="Via C Complilation"
icon="xds.gif">
<menuitem name="toolXDS-XM"
label="Run XDS Convertor"
visible="false"
icon="xds.gif"
call="toolXDS-XM"/>
</menu>
<menuitem name="toolXDS-XD"
label="Run XDS Debugger"
icon="xds.gif"
call="toolXDS-XD"/>
</menu>
<menu name="OtherStuff" <menu name="OtherStuff"
label="Various Sample Tools"> label="Various Sample Tools">
...@@ -113,21 +76,6 @@ ...@@ -113,21 +76,6 @@
</menu> </menu>
</menu> </menu>
<menu name="MainDesignMenu2"
label="Design Menu 2"
icon="sample.gif"
tip="This is an user menu"
inherits="MainDesignMenu">
<menu name="OtherStuff">
<menuitem name="tool4"
label="Run My Tool (4)"
icon="my_tool.gif"
call="MyTool"/>
</menu>
</menu>
<menu name="MainDesignMenu3" <menu name="MainDesignMenu3"
label="Design Menu 3" label="Design Menu 3"
...@@ -139,11 +87,24 @@ ...@@ -139,11 +87,24 @@
label="Just Another Stuff" label="Just Another Stuff"
icon="sample.gif" icon="sample.gif"
inherits="MainDesignMenu2" inherits="MainDesignMenu2"
after="XDS"/> after="Python tests"/>
<menuitem name="GREP" <menuitem name="GREP"
label="Run GREP" label="Run GREP"
call="grep"/> call="grep"/>
<menu name="Python tests"
label="Tests with remote Python console"
icon="python.png">
<menuitem name="RemotePython"
label="Run remote Python session"
icon="python.png"
call="RemotePython"/>
<menuitem name="RemotePythonCommand"
label="Send a command to the remote Python session"
icon="my_tool.gif"
call="RemotePythonCommand"/>
</menu>
</menu> </menu>
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<syntax name="RemoteRootSyntax" format="%%ParamValue/%%ProjectName" /> <syntax name="RemoteRootSyntax" format="%%ParamValue/%%ProjectName" />
<syntax name="SourceListSyntax" format="%(%%SourceList%| %)" /> <syntax name="SourceListSyntax" format="%(%%SourceList%| %)" />
<syntax name="FilteredSourceListSyntax" format="%(%%FilteredSourceList%| %)" /> <syntax name="FilteredSourceListSyntax" format="%(%%FilteredSourceList%| %)" />
<!-- typedef -->
</interface> </interface>
<package name="FPGA_package" <package name="FPGA_package"
label="Common parameters for all FPGA projects" label="Common parameters for all FPGA projects"
...@@ -38,7 +38,9 @@ ...@@ -38,7 +38,9 @@
<parameter id="VivadoConsole" default="Vivado" label="Vivado console name" <parameter id="VivadoConsole" default="Vivado" label="Vivado console name"
type="String" format="CopyValue" visible="true" readonly="false"/> type="String" format="CopyValue" visible="true" readonly="false"/>
<!--
-->
<input> <input>
<group name="VivadoServer" label="Vivado server setup"> <group name="VivadoServer" label="Vivado server setup">
...@@ -66,37 +68,54 @@ ...@@ -66,37 +68,54 @@
readonly="false" /> readonly="false" />
<parameter id="SimulationTopModule" label="Project top simulation module" <parameter id="SimulationTopModule" label="Project top simulation module"
type="String" default="" format="CopyValue" readonly="false" /> type="String" default="" format="CopyValue" readonly="false" />
<parameter id="BuildDir" label="project build directory" <parameter id="SimulDir" label="project simulation directory"
type="Pathname" default="simulation" format="CopyValue" readonly="false" /> type="Pathname" default="simulation" format="CopyValue" readonly="false" />
<!-- Vivado parameters --> <!-- Vivado parameters -->
<parameter id="VivadoProjectRoot" label="Relative (to user home directory) path of the workspace on Vivado server" <parameter id="VivadoProjectRoot" label="Relative (to user home directory) path of the workspace on Vivado server"
type="String" default="vdt" format="RemoteRootSyntax" readonly="false" /> type="String" default="vdt" format="RemoteRootSyntax" readonly="false" />
<parameter id="VivadoLocalDir" label="Project subdirectroy for Vivado files"
type="Pathname" default="vivado" format="CopyValue" readonly="false" />
<parameter id="VivadoIgnoreSource" label="Ignore source files that match this regular expression" <parameter id="VivadoIgnoreSource" label="Ignore source files that match this regular expression"
type="String" default=".*unisims.*" format="CopyValue" readonly="false" /> type="String" default=".*unisims.*" format="CopyValue" readonly="false" />
<!-- Calculated --> <!-- Calculated -->
<parameter id="VivadoProjectRoot" label="Relative (to user home directory) path of the project on Vivado server" <parameter id="VivadoProjectRoot" label="Relative (to user home directory) path of the project on Vivado server"
type="String" default="vdt" format="RemoteRootSyntax" readonly="false" /> type="String" default="vdt" format="RemoteRootSyntax" readonly="false" />
<parameter id="SnapshotSynth"
label="name of Vivado snapshot archive after synthesis"
default="%%ProjectName-synth.dcp"
type="String" format="CopyValue" />
<!-- Invisible (calculated) project-wide parameters --> <!-- Invisible (calculated) project-wide parameters -->
<parameter id="BuildDirSlash" type="Pathname" visible="false" <parameter id="SimulDirSlash" type="Pathname" visible="false"
default="?%BuildDir=:,%BuildDir/" format="CopyValue"/> default="?%SimulDir=:,%SimulDir/" format="CopyValue"/>
<parameter id="SedPaths" type="String" format="CopyValue"
label="Remote file prefix to be removed for the local error parser"
default="sed -u 's@/home/%RemoteUser/%VivadoProjectRoot/%%ProjectName/@@'"/>
<input> <input>
<group name="Simulation" label="Simulation properties"> <group name="Simulation" label="Simulation properties">
"SimulationTopFile" "SimulationTopFile"
"SimulationTopModule" "SimulationTopModule"
"BuildDir" "SimulDir"
</group> </group>
<group name="Vivado" label="Vivado general properties"> <group name="Vivado" label="Vivado general properties">
"VivadoProjectRoot" "VivadoProjectRoot"
"VivadoLocalDir"
"VivadoIgnoreSource" "VivadoIgnoreSource"
"SedPaths"
</group>
<!-- TODO: make time-stamped and "latest" for snapshots -->
<group name="VivadoSnapshots" label="Vivado snapshot archive names">
"SnapshotSynth"
</group> </group>
</input> </input>
<output> <output>
</output> </output>
</project> </project>
</vdt-project> </vdt-project>
<!-- "| sed -u 's@/home/xilinx/vdt/npmtest/@@'" -->
\ No newline at end of file
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
</tool> </tool>
<tool name="RemotePythonCommand" project="FPGA_project" label="RemotePythonCommand" <tool name="RemotePythonCommand" project="FPGA_project" label="RemotePythonCommand"
package="FPGA_package" package="FPGA_package"
shell="/bin/bash" interface="RemoteInterface" shell="bash" interface="RemoteInterface"
description="Sending command to a ermote Python session" errors="(.*):([0-9]+): [a-z ]*error: (.*)" description="Sending command to a ermote Python session" errors="(.*):([0-9]+): [a-z ]*error: (.*)"
warnings="(.*):([0-9]+): warning: (.*)" info="(.*):([0-9]+): info: (.*)"> <!--does not actually exist --> warnings="(.*):([0-9]+): warning: (.*)" info="(.*):([0-9]+): info: (.*)"> <!--does not actually exist -->
<extensions-list> <extensions-list>
......
...@@ -44,13 +44,13 @@ ...@@ -44,13 +44,13 @@
<item value="25"/> <item value="25"/>
</paramtype> </paramtype>
</typedef> </typedef>
<!--
<typedef name="Boolean"> <typedef name="Boolean">
<paramtype kind="bool" <paramtype kind="bool"
formatTrue="TRUE" formatTrue="TRUE"
formatFalse="FALSE"/> formatFalse="FALSE"/>
</typedef> </typedef>
-->
<typedef name="MyType4"> <typedef name="MyType4">
<paramtype kind="string" <paramtype kind="string"
maxlength="40" maxlength="40"
...@@ -167,7 +167,7 @@ ...@@ -167,7 +167,7 @@
<tool name = "MyTool" <tool name = "MyTool"
project = "SampleProject" project = "SampleProject"
label = "My Tool" label = "My Tool"
shell = "?%%OS: Windows=, Linux=/bin/bash" shell = "?%%OS: Windows=, Linux=bash"
interface = "MyControlInterface" interface = "MyControlInterface"
description = "Tool that does small minor things" description = "Tool that does small minor things"
errors = "(.*):([0-9]+): [a-z ]*error: (.*)" errors = "(.*):([0-9]+): [a-z ]*error: (.*)"
......
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
</interface> </interface>
<tool name="iverilog" project="FPGA_project" label="Icarus Verilog compiler" <tool name="iverilog" project="FPGA_project" label="Icarus Verilog compiler"
exe="iverilog" shell="?%%OS: Windows=shell:, Linux=/bin/bash" shell="bash"
package="FPGA_package" package="FPGA_package"
interface="IVerilog" errors="(.*):([0-9]+): [a-z_\- ]*error: (.*)" interface="IVerilog" errors="(.*):([0-9]+): [a-z_\- ]*error: (.*)"
warnings="(.*):([0-9]+): [a-z_\- ]*warning: (.*)" info="(.*):([0-9]+): [a-z_\- ]*info: (.*)"> <!--do not actually exist --> warnings="(.*):([0-9]+): [a-z_\- ]*warning: (.*)" info="(.*):([0-9]+): [a-z_\- ]*info: (.*)"> <!--do not actually exist -->
...@@ -140,7 +140,7 @@ ...@@ -140,7 +140,7 @@
default="false" label="Show output with no errors/warnings" /> default="false" label="Show output with no errors/warnings" />
<parameter id="ShowWarnings" type="BoolYesNo" format="None" <parameter id="ShowWarnings" type="BoolYesNo" format="None"
default="false" label="Show output warnings" /> default="true" label="Show output warnings" />
<parameter id="RemoveBugs" type="BoolYesNo" format="None" <parameter id="RemoveBugs" type="BoolYesNo" format="None"
default="false" label="Remove buggy simulator output" /> default="false" label="Remove buggy simulator output" />
......
<?xml version="1.0" encoding="UTF-8"?>
<vdt-project>
<interface name="IVerilogDebug" extends="FPGAPprojectInterface">
<!-- Syntax definitions -->
<syntax name="D_ParamSyntax" format="-D%%ParamName" />
<syntax name="g_ParamSyntax" format="-g%%ParamName" />
<syntax name="NospecifySyntax" format="-gno-specify" />
<syntax name="TopModuleSyntax" format="-s%%TopModule" />
<syntax name="TopModulesOtherSyntax" format="%(-s%%ParamValue%| %)" />
<syntax name="ModuleLibrarySyntax" format="%(-y%%ParamValue%| %)" />
<syntax name="ExtraFilesSyntax" format="%(%%ParamValue%| %)" />
<syntax name="SwitchSyntax" format="-%%ParamName" />
<syntax name="GrepFindSyntax"
format="| { grep --line-buffered -E &quot;%%ParamValue&quot; || true; }" />
<syntax name="GrepSkipSyntax"
format="| { grep --line-buffered -v &quot;%%ParamValue&quot; || true; }" />
<syntax name="LogFileSyntax" format="%%ParamValue-%%BuildStamp.log" />
<syntax name="OutputFileSyntax" format="%%ParamValue-%%BuildStamp.ivlg" />
<syntax name="LxtFileSyntax" format="%%ParamValue-%%BuildStamp.lxt" />
<syntax name="LogFileLatestSyntax" format="ln -sf %%ParamValue-%%BuildStamp.log %%ParamValue-latest.log;" />
<syntax name="OutputFileLatestSyntax" format="ln -sf %%ParamValue-%%BuildStamp.ivlg %%ParamValue-latest.ivlg;" />
<syntax name="LxtFileLatestSyntax" format="ln -sf %%ParamValue-%%BuildStamp.lxt %%ParamValue-latest.lxt;" />
<syntax name="LxtParamFileSyntax"
format="parameter lxtname=&quot;%%ParamValue-%%BuildStamp.lxt&quot;;" />
<syntax name="IncludeParamSyntax" format="%(%%ParamValue%|\n%)" />
<!-- Types definitions -->
<typedef name="ModuleLibraryType" list="true">
<paramtype kind="string" default="" textkind="dir"
maxlength="256" sensitivity="sensitive" />
</typedef>
<typedef name="SwitchType">
<paramtype kind="bool" formatTrue="-%%ParamName"
formatFalse="" />
</typedef>
<typedef name="D_ParamType">
<paramtype kind="bool" formatTrue="-D%%ParamName"
formatFalse="" />
</typedef>
<typedef name="g_ParamType">
<paramtype kind="bool" formatTrue="-g%%ParamName"
formatFalse="" />
</typedef>
</interface>
<!--
<project name="FPGA_project" label="Project parameters for FPGA_project"
interface="project_interface">
<parameter id="SimulationTopFile" label="Project top simulation file"
type="Filename" default="default_top (testing)" format="CopyValue"
readonly="false" />
<parameter id="SimulationTopModule" label="Project top simulation module"
type="String" default="" format="CopyValue" readonly="false" />
<parameter id="BuildDir" label="project build directory"
type="Pathname" default="build" format="CopyValue" readonly="false" />
<input>
<group name="General" label="Project properties">
"SimulationTopFile"
"SimulationTopModule"
"BuildDir"
</group>
</input>
<output>
</output>
</project>
-->
<tool name="iverilog_dbg" project="FPGA_project" label="Icarus Verilog compiler - debug"
exe="iverilog" shell="?%%OS: Windows=shell:, Linux=/bin/bash"
package="FPGA_package"
interface="IVerilogDebug" errors="(.*):([0-9]+): [a-z_\- ]*error: (.*)"
warnings="(.*):([0-9]+): [a-z_\- ]*warning: (.*)" info="(.*):([0-9]+): [a-z_\- ]*info: (.*)"> <!--do not actually exist -->
<extensions-list>
<extension mask="v" />
<extension mask="tf" />
</extensions-list>
<action-menu>
<action label="Simulate" resource="%SimulationTopFile"
check-extension="false" check-existence="true" icon="iverilog.ico" />
<action label="Simulate for" resource="%%SelectedFile"
check-extension="true" check-existence="true" />
<action label="Verify" resource="%%SelectedFile"
check-extension="true" check-existence="true" icon="newmod_wiz.gif" />
<action label="Empty" resource="" icon="sample.gif" />
<action label="Just try for" resource="%%OS" />
</action-menu>
<parameter id="Param_Shell_Options" label="Param_Shell_Options"
type="String" format="CopyValue" default="-c" readonly="false"
visible="true" />
<parameter id="Param_PreExe" label="Param_PreExe" type="String"
format="CopyValue" default="" readonly="false" visible="true" />
<parameter id="Param_Exe" label="Param_Exe" type="Filename"
format="CopyValue" default="/usr/bin/iverilog" readonly="false"
visible="true" />
<parameter id="Param_TopModule" label="Top module extracted from the chosen target file"
type="String" format="TopModuleSyntax" default="%%TopModule"
readonly="true" visible="true" />
<parameter id="TopModulesOther" type="Stringlist"
format="TopModulesOtherSyntax" default="" omit=""
label="Select top modules not referenced by the chosen target"
readonly="false" visible="true" />
<parameter id="ModuleLibrary" type="ModuleLibraryType"
format="ModuleLibrarySyntax" default="" label="Select additional libraries to include"
omit="" readonly="false" visible="true" />
<parameter id="ExtraFiles" type="Filelist" format="ExtraFilesSyntax"
default="" label="Select additional files to include" readonly="false"
visible="true" />
<parameter id="legacy_model" outid="legacy_model" type="D_ParamType"
format="D_ParamSyntax" default="true" label="Use legacy model" />
<parameter id="no_specify" outid="no-specify" type="g_ParamType"
format="NospecifySyntax" default="true" label="Use no-specify" />
<!-- -->
<parameter id="v" type="SwitchType" format="SwitchSyntax"
default="true" label="Verbose" />
<parameter id="Param_SourceList" label="Param_SourceList"
type="Stringlist" format="SourceListSyntax" default="" readonly="true"
visible="true" />
<parameter id="ShowNoProblem" type="BoolYesNo" format="None"
default="false" label="Show output with no errors/warnings" />
<parameter id="ShowWarnings" type="BoolYesNo" format="None"
default="false" label="Show output warnings" />
<parameter id="RemoveBugs" type="BoolYesNo" format="None"
default="false" label="Remove buggy simulator output" />
<parameter id="SaveLogsPreprocessor" type="BoolYesNo"
format="None" default="false" label="Save simulator preprocessor log output" />
<parameter id="SaveLogsSimulator" type="BoolYesNo" format="None"
default="false" label="Save simulator log output" />
<parameter id="ShowWaves" type="BoolYesNo" format="None"
default="true" label="Show simulation result in waveform viewer" />
<!-- Advanced Section -->
<parameter id="LogFile" label="Simulator log file prefix"
type="String" default="%%CurrentFileBase" format="LogFileSyntax"
readonly="false" />
<parameter id="OutFile" label="Simulator intermediate file prefix"
type="String" default="%%CurrentFileBase" format="OutputFileSyntax"
readonly="false" />
<parameter id="LxtDumpFile" label="Simulator LXT dump file prefix"
type="String" default="%%CurrentFileBase" format="LxtFileSyntax"
readonly="false" />
<parameter id="GTKWaveSavFile" label="GTKWave sav file"
type="Filename" default="%%CurrentFileBase.sav" format="CopyValue"
omit="" readonly="false" />
<parameter id="GrepFindErr" label="Grep pattern for errors only"
type="String" format="GrepFindSyntax" default="error" readonly="false"
visible="true" />
<parameter id="GrepFindErrWarn" label="Grep pattern for both errors and warnings"
type="String" format="GrepFindSyntax" default="error|warning"
readonly="false" visible="true" />
<parameter id="GrepSkip1" label="Grep skip pattern" type="String"
format="GrepSkipSyntax" default="(null)" readonly="false" visible="true" />
<parameter id="IVerilogOther" label="Other IVerilog options"
type="String" format="CopyValue" default="" omit=""
readonly="false" visible="true" />
<parameter id="IncludeParametersList" type="Stringlist"
format="IncludeParamSyntax" default="" omit=""
label="Verilog parameters definition to be included in the test fixture"
readonly="false" visible="true" />
<!-- Temporary inserted into the command line, will be removed -->
<parameter id="Param_1" label="Param_1" type="String"
format="CopyValue" default="" omit="" readonly="false" visible="true" />
<parameter id="Param_2" label="Param_2" type="String"
format="CopyValue" default="" omit="" readonly="false" visible="true" />
<parameter id="Param_3" label="Param_3" type="String"
format="CopyValue" default="" omit="" readonly="false" visible="true" />
<parameter id="Param_4" label="Param_4" type="String"
format="CopyValue" default="" omit="" readonly="false" visible="true" />
<!-- Invisible parameters, just pass calculated default values -->
<parameter id="IVerilogActionIndex" type="String"
format="CopyValue" visible="false" default="%%ChosenActionIndex" />
<parameter id="SourceList" type="Stringlist" format="SourceListSyntax"
default="" readonly="true" visible="false" />
<parameter id="iverilog_include_file" type="Filename"
default="IVERILOG_INCLUDE.v" format="CopyValue" visible="false" />
<parameter id="LxtDumpFileParameter" type="String"
default="%LxtDumpFile" format="LxtParamFileSyntax" visible="false" />
<parameter id="LogFileLatest" type="String"
default="%LogFile" format="LogFileLatestSyntax" visible="false" />
<parameter id="OutFileLatest" type="String"
default="%OutFile" format="OutputFileLatestSyntax" visible="false" />
<parameter id="LxtDumpFileLatest" type="String"
default="%LxtDumpFile" format="LxtFileLatestSyntax" visible="false" />
<input>
<group name="files" label="Files">
<!-- "SimulationTopFile" -->
"Param_TopModule"
"TopModulesOther"
"ExtraFiles"
"ModuleLibrary"
"GTKWaveSavFile"
"IncludeParametersList"
</group>
<group name="options" label="Options">
"ShowWaves"
"ShowNoProblem"
"ShowWarnings"
"RemoveBugs"
"SaveLogsPreprocessor"
"SaveLogsSimulator"
"v"
"legacy_model"
"no_specify"
</group>
<group name="Advanced" label="Advanced">
"Param_PreExe"
"Param_Exe"
"Param_Shell_Options"
"IVerilogOther"
"LogFile"
"OutFile"
"LxtDumpFile"
"GrepFindErr"
"GrepFindErrWarn"
"GrepSkip1"
"Param_1"
"Param_2"
"Param_3"
"Param_4"
</group>
</input>
<output>
<!-- TODO: watch for new lines inserted inside quoted tokens during autoformat - they break output
Maybe add filter to the code to transform white spaces -->
<line name="command_line" sep=" ">
"%Param_Shell_Options"
"%Param_PreExe"
<if SaveLogsPreprocessor="true"
SaveLogsSimulator="true">
"touch"
"%LogFile"
";"
"%LogFileLatest"
</if>
"trap 'killall iverilog; ' EXIT;"
"echo 'current PID='$$;"
"%Param_Exe"
"-o"
<if IVerilogActionIndex="2">
"/dev/null"
</if>
<if-not IVerilogActionIndex="2">
"%OutFile"
</if-not>
" -D IVERILOG"
"%IVerilogOther"
"%Param_TopModule"
"%TopModulesOther"
"%ModuleLibrary"
"%legacy_model"
"%no_specify"
"%v"
"%SourceList"
"%ExtraFiles"
<if ShowNoProblem="false">
"2&gt;&amp;1"
</if>
<if SaveLogsPreprocessor="true">
"| tee -a"
"%LogFile"
</if>
<if ShowNoProblem="false">
<if ShowWarnings="true">
"%GrepFindErrWarn"
</if>
<if ShowWarnings="false">
"%GrepFindErr"
</if>
<if RemoveBugs="true">
"%GrepSkip1"
</if>
</if>
"|| { echo '*** iverilog failed ***'; exit 1; } ;"
"trap '' EXIT;"
<if-not IVerilogActionIndex="2">
"%OutFileLatest"
<!-- "time vvp -v" -->
"%Param_1"
"trap 'killall vvp; ' EXIT;"
"vvp -v"
"%Param_2"
"%OutFile"
"-lxt2 "
<if SaveLogsSimulator="true">
"| tee -a"
"%LogFile"
</if>
"|| { echo '*** vvp failed ***'; exit 1; } ;"
"%LxtDumpFileLatest"
<!-- no trap for GTKWave -->
"trap '' EXIT;"
<!-- "%Param_2" -->
"%Param_3"
<if ShowWaves="true">
"gtkwave"
"%LxtDumpFile"
"%GTKWaveSavFile"
"&amp; "
</if>
"%Param_4"
</if-not>
</line>
<line name="IverilogIncludeFile" dest="iverilog_include_file"
sep="\n">
"%LxtDumpFileParameter"
"%IncludeParametersList"
</line>
</output>
</tool>
</vdt-project>
<?xml version="1.0" encoding="UTF-8"?>
<vdt-project>
<!-- ===== XDS interface ===== -->
<interface name = "intfDemoXDS">
<typedef name = "EnumDbgFmt">
<paramtype kind="enum" base="String">
<item value="CODEVIEW" />
<item value="HLL" />
<item value="DWARF" />
</paramtype>
</typedef>
<typedef name = "EnumCComp">
<paramtype kind="enum" base="String">
<item value="MSVC" />
<item value="Watcom" />
</paramtype>
</typedef>
<!-- Syntax definitions -->
<syntax name="Equation" format="-%%ParamName=%%ParamValue" />
<syntax name="EquationList" format="-%%ParamName=%(%%ParamValue%|;%)" />
<syntax name="EquationNew" format="-%%ParamName:=%%ParamValue" />
<syntax name="EquationListNew" format="-%%ParamName:=%(%%ParamValue%|;%)" />
<syntax name="Option" format="-%%ParamName%%ParamValue" />
<syntax name="OptionNew" format="-%%ParamName:%%ParamValue" />
<syntax name="SimplestOption" format="%%ParamValue" />
</interface>
<!-- ===== XDS Package section ===== -->
<package name="XDSPackage"
label="XDS Package"
interface="intfDemoXDS">
<!-- Parameters defintions -->
<!-- XDS directory -->
<parameter id = "xdsdir"
label = "XDS Directory"
type = "Pathname"
default = ""
format = "Equation" />
<!-- File Extensions -->
<parameter id = "extmod"
label = "MODULA-2 Module File Type"
type = "String"
default = "mod"
format = "Equation" />
<parameter id = "extdef"
label = "MODULA-2 Definition File Type"
type = "String"
default = "def"
format = "Equation" />
<parameter id = "extob2"
label = "OBERON-2 Module File Type"
type = "String"
default = "ob2"
format = "Equation" />
<parameter id = "extcode"
label = "Target C File Type"
type = "String"
default = "c"
format = "Equation" />
<parameter id = "exthead"
label = "Target C Header File Type"
type = "String"
default = "h"
format = "Equation" />
<parameter id = "extasm"
label = "Assembly Language File Type"
type = "String"
default = "asm"
format = "Equation" />
<parameter id = "extobj"
label = "Object File Type"
type = "String"
default = "obj"
format = "Equation" />
<parameter id = "extsym"
label = "Symbolic Info File Type"
type = "String"
default = "sym"
format = "Equation" />
<parameter id = "extexe"
label = "Target Executable File Type"
type = "String"
default = "exe"
format = "Equation" />
<parameter id = "extdll"
label = "Target DLL File Type"
type = "String"
default = "dll"
format = "Equation" />
<parameter id = "extexp"
label = "DLL Export File Type"
type = "String"
default = "exp"
format = "Equation" />
<parameter id = "mkfextc"
outid = "mkfext"
label = "XM Make File Type"
type = "String"
default = "mkf"
format = "Equation" />
<parameter id = "extmkfn"
outid = "mkfext"
label = "XC Make File Type"
type = "String"
default = "lnk"
format = "Equation" />
<parameter id = "mkfname"
label = "Make File Name"
type = "String"
default = "tmp"
format = "Equation" />
<!-- Source options -->
<parameter id = "m2extensions" readonly="true"
label = "MODULA-2 Language Extensions"
type = "BoolPlusMinus"
default = "false"
format = "Option" />
<parameter id = "m2addtypes" readonly="true"
label = "MODULA-2 Extra Types"
type = "BoolPlusMinus"
default = "false"
format = "Option" />
<parameter id = "m2base16"
label = "16-bit INTEGER/CARDINAL"
type = "BoolPlusMinus"
default = "false"
format = "Option" />
<parameter id = "o2extensions" readonly="true"
label = "OBERON-2 Language Extensions"
type = "BoolPlusMinus"
default = "false"
format = "Option" />
<parameter id = "o2isopragma" readonly="true"
label = "OBERON-2 ISO-Style Pragmae"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "o2numext"
label = "OBERON-2 Extended Numbers"
type = "BoolPlusMinus"
default = "false"
format = "Option" />
<!-- Make Settings -->
<parameter id = "exename" visible="false"
label = "Executable File Name"
type = "String"
default = ""
format = "EquationNew" />
<parameter id = "libname" visible="false"
label = "Library File Name"
type = "String"
default = ""
format = "EquationNew" />
<parameter id = "genlib" visible="false"
label = "Target Is Library"
type = "BoolPlusMinus"
default = "false"
format = "OptionNew" />
<!-- XC Compiler Settings -->
<parameter id = "compilerheap"
label = "Compiler Heap Limit"
type = "LongCardinal"
default = "4000000"
format = "Equation" />
<parameter id = "compilerthres"
label = "Compiler Threshold Limit"
type = "LongCardinal"
default = "24000000"
format = "Equation" />
<parameter id = "dbgfmt"
label = "Debug Info Format"
type = "EnumDbgFmt"
default = "HLL"
format = "Equation" />
<parameter id = "genhistory"
label = "Generate Post-Mortem History"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<!-- XM Converter Settings -->
<parameter id = "cc"
label = "Target C/C++ Compiler"
type = "EnumCComp"
default = "MSVC"
format = "Equation" />
<parameter id = "include"
label = "Extra Include Directories"
type = "Pathlist"
default = ""
format = "EquationListNew" />
<!-- C Generation Settings -->
<parameter id = "cstdlib"
label = "Use C Standard Libraries"
type = "BoolPlusMinus"
default = "false"
format = "Option" />
<parameter id = "comment"
label = "Preserve Comments"
type = "BoolPlusMinus"
default = "false"
format = "Option" />
<parameter id = "longname"
label = "No Crunch of Long Names"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "noheader"
label = "No Header Files Generation"
type = "BoolPlusMinus"
default = "false"
format = "Option" />
<parameter id = "genkrc"
label = "KR-C Compliance"
type = "BoolPlusMinus"
default = "false"
format = "Option" />
<parameter id = "genctypes"
label = "Generate C Types"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "gencpp"
label = "Generate C++ Code"
type = "BoolPlusMinus"
default = "false"
format = "Option" />
<parameter id = "genproclass"
label = "Generate Classes Prototypes"
type = "BoolPlusMinus"
default = "false"
format = "Option" />
<parameter id = "lineno"
label = "Generate Line Numbers"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<!-- Target Program Settings -->
<parameter id = "gui" visible="false"
label = "With GUI"
type = "BoolPlusMinus"
default = "false"
format = "Option" />
<parameter id = "heaplimit"
label = "Program Heap Limit"
type = "LongCardinal"
default = "4000000"
format = "Equation" />
<parameter id = "stacklimit"
label = "Stack Heap Limit"
type = "LongCardinal"
default = "100000"
format = "Equation" />
<parameter id = "gcthreshold"
label = "GC Threshold Limit"
type = "LongCardinal"
default = "20000000"
format = "Equation" />
<parameter id = "gcauto"
label = "Auto GC"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "gendebug"
label = "Generate Debug Info"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "alignment"
label = "Alignment (bytes)"
type = "Cardinal"
default = "4"
format = "Equation" />
<parameter id = "multithread"
label = "Multithreaded"
type = "BoolPlusMinus"
default = "false"
format = "OptionNew" />
<!-- Decoration Settings -->
<parameter id = "decor"
label = "Protocole Decoration Style"
type = "String"
default = "rht"
format = "Equation" />
<parameter id = "errlim"
label = "Errors Limit"
type = "Cardinal"
default = "16"
format = "Equation" />
<parameter id = "errfmt"
label = "Error Message Format"
type = "String"
default = "16"
format = "Equation" />
<!-- &qt;\n* [%s&qt;,file; %d&qt;,line;.%02d&qt;,column; %.1s&qt;,mode;%03d]\n&qt;,errno;* %s\n&qt;,errmsg"
-->
<!-- Run-Time Checks -->
<parameter id = "checkindex"
label = "Index Range Check"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "checkdindex"
label = "Dynamic Index Range"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "checkrange"
label = "Range Overflow"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "checknil"
label = "Null Pointer Dereference"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "checktype"
label = "Types Control"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "checkset"
label = "Sets Control"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "checkdiv"
label = "Zero Division"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "checkproc"
label = "Procedure Pointers"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "ioverflow"
label = "Integer Overflow"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "coverflow"
label = "Complex Overflow"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "foverflow"
label = "Float Overflow"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<parameter id = "assert"
label = "ASSERT Enable"
type = "BoolPlusMinus"
default = "true"
format = "Option" />
<!-- Output placements -->
<parameter id = "lookup_def"
outid = "lookup=*.def"
label = "Directories for DEF files"
type = "Pathlist"
default = ""
format = "EquationList"
omit = "" />
<parameter id = "lookup_mod"
outid = "lookup=*.mod"
label = "Directories for MOD files"
type = "Pathlist"
default = ""
format = "EquationList"
omit = "" />
<parameter id = "lookup_ob2"
outid = "lookup=*.ob2"
label = "Directories for OB2 files"
type = "Pathlist"
default = ""
format = "EquationList"
omit = "" />
<parameter id = "lookup_sym"
outid = "lookup=*.sym"
label = "Directories for SYM files"
type = "Pathlist"
default = ""
format = "EquationList"
omit = "" />
<parameter id = "lookup_obj"
outid = "lookup=*.obj"
label = "Directories for OBJ files"
type = "Pathlist"
default = ""
format = "EquationList"
omit = "" />
<parameter id = "lookup_lib"
outid = "lookup=*.lib"
label = "Directories for LIB files"
type = "Pathlist"
default = ""
format = "EquationList"
omit = "" />
<if OSName="Windows">
<parameter id = "lookup_exe"
outid = "lookup=*.exe"
label = "Output directory for generated EXE files"
type = "Pathname"
default = ""
format = "Equation"
omit = "" />
</if>
<if-not OSName="Windows">
<parameter id = "lookup_exe"
outid = "lookup=*"
label = "Output directory for generated executable files"
type = "Pathname"
default = ""
format = "Equation"
omit = "" />
</if-not>
<!-- Config files -->
<parameter id = "xc_config_file"
type = "Filename"
default = "xc.cfg"
format = "Option"
visible = "false" />
<parameter id = "xm_config_file"
type = "Filename"
default = "xm.cfg"
format = "Option"
visible = "false" />
<!-- Input definitions -->
<input label="XDS Configuration">
<group label="Setup">
"xdsdir"
</group>
<group label="Source">
"extdef"
"extmod"
"extob2"
"extasm"
"extobj"
"extsym"
"m2extensions"
"m2addtypes"
"m2base16"
"o2extensions"
"o2isopragma"
"o2numext"
</group>
<group label="XC Compiler">
"compilerheap"
"compilerthres"
"dbgfmt"
"genhistory"
</group>
<group label="XM Convertor">
"cc"
"include"
"extcode"
"exthead"
"gencpp"
"genkrc"
"genctypes"
"genproclass"
"cstdlib"
"comment"
"longname"
"lineno"
"noheader"
</group>
<group label="Make">
"mkfname"
<!-- "extmkfc" -->
"extmkfn"
</group>
<group label="Target">
"multithread"
"heaplimit"
"stacklimit"
"gcthreshold"
"gcauto"
"gendebug"
"alignment"
"checkindex"
"checknil"
"checkdindex"
"checktype"
"checkrange"
"checkset"
"checkdiv"
"checkproc"
"assert"
"ioverflow"
"coverflow"
"foverflow"
</group>
<group label="Decor">
"decor"
"errlim"
"errfmt"
</group>
</input>
<!-- Output definitions -->
<output>
<line name = "xc_cfg"
dest = "xc_config_file"
sep="\n">
"-backend=X86"
<!-- setup -->
"%xdsdir"
<!-- source -->
"%extmod" "%extob2" "%extdef" "%extasm" "%extobj" "%extsym"
"%extexe" "%extdll" "%extexp"
"%m2extensions" "%m2addtypes" "%o2extensions" "%o2isopragma" "%o2numext" "%m2base16"
<!-- make -->
"-template=xc.tem"
"-linker:=xds"
"-makefile+" "%mkfname" "%extmkfn"
"%genlib" "%exename" "%libname"
<!-- compiler -->
"%compilerheap" "%compilerthres"
"%dbgfmt"
"%genhistory"
<!-- target -->
"%gui" "%multithread"
"%heaplimit" "%stacklimit" "%gcthreshold" "%gcauto" "%gendebug" "%alignment"
"%checkindex" "%checknil" "%checkdindex" "%checktype" "%checkrange" "%checkset"
"%checkdiv" "%checkproc" "%assert" "%ioverflow" "%coverflow"
<!-- decor -->
"%decor" "%errlim" "%errfmt"
</line>
<line name = "xm_cfg"
dest = "xm_config_file"
sep="\n">
"-backend=C"
<!-- setup -->
"%xdsdir"
<!-- source -->
"%extmod" "%extob2" "%extdef" "%extasm" "%extobj" "%extsym"
"%extcode" "%exthead" "%extexe" "%extdll" "%extexp"
"%m2extensions" "%m2addtypes" "%o2extensions" "%o2isopragma" "%o2numext" "%m2base16"
<!-- make -->
"-template=xm.tem"
"%makefile" "%mkfname" "%extmkfc"
"%genlib" "%exename" "%libname"
<!-- converter -->
"%cc" "%include"
"%gencpp" "%genkrc" "%genctypes" "%genproclass" "%cstdlib"
"%comment" "%longname" "%lineno" "%noheader"
<!-- target -->
"%gui" "%multithread"
"%heaplimit" "%stacklimit" "%gcthreshold" "%gcauto" "%gendebug" "%alignment"
"%checkindex" "%checknil" "%checkdindex" "%checktype" "%checkrange" "%checkset"
"%checkdiv" "%checkproc" "%assert" "%ioverflow" "%coverflow" "%foverflow"
<!-- decor -->
"%decor" "%errlim" "%errfmt"
</line>
</output>
</package>
<project name="XDSProject"
label="XDS Project"
package="XDSPackage"
interface="intfDemoXDS">
</project>
<!-- ===== Tools Definitions section ===== -->
<tool name ="toolXDS-XC"
label ="XDS-XC"
project ="XDSProject"
package ="XDSPackage"
exe ="?%%OS: Windows=xc.exe, Linux=xc"
interface="intfDemoXDS" >
<extensions-list>
<extension mask="%extdef"/>
<extension mask="%extmod"/>
<extension mask="%extob2"/>
</extensions-list>
<parameter id = "CompilationModule"
visible = "false"
type = "String"
default = "%%CurrentFile"
format = "SimplestOption"
readonly= "true" />
<!-- Overriding parameters -->
<parameter id = "exename" visible="true"
format = "Equation" />
<parameter id = "libname" visible="true"
format = "Equation" />
<parameter id = "genlib" visible="true"
format = "Option" />
<parameter id = "multithread"
format = "Option" />
<!-- Input definitions -->
<input label="XC Call">
<group label="Source">
"m2extensions"
"m2addtypes"
"m2base16"
"o2extensions"
"o2isopragma"
"o2numext"
</group>
<group label="XC Compiler">
"compilerheap"
"compilerthres"
"dbgfmt"
"genhistory"
</group>
<group label="Make">
"extexe"
"extdll"
"extexp"
</group>
<group label="Target">
"multithread"
"genlib"
"exename"
"libname"
"heaplimit"
"stacklimit"
"gcthreshold"
"gcauto"
"gendebug"
"alignment"
"checkindex"
"checknil"
"checkdindex"
"checktype"
"checkrange"
"checkset"
"checkdiv"
"checkproc"
"assert"
"ioverflow"
"coverflow"
"foverflow"
</group>
<group label="Decor">
"decor"
"errlim"
"errfmt"
</group>
<group label="Project Options">
"lookup_def"
"lookup_mod"
"lookup_ob2"
"lookup_sym"
"lookup_obj"
"lookup_lib"
"lookup_exe"
</group>
</input>
<!-- Output definitions -->
<output>
<line name = "cmdline" sep=" ">
"=a" "=m" "%CompilationModule"
"%m2extensions" "%m2addtypes" "%o2extensions" "%o2isopragma" "%o2numext" "%m2base16"
"%genlib" "%exename" "%libname"
"%compilerheap" "%compilerthres"
"%dbgfmt"
"%genhistory"
"%gui" "%multithread"
"%heaplimit" "%stacklimit" "%gcthreshold" "%gcauto" "%gendebug" "%alignment"
"%checkindex" "%checknil" "%checkdindex" "%checktype" "%checkrange" "%checkset"
"%checkdiv" "%checkproc" "%assert" "%ioverflow" "%coverflow"
"%decor" "%errlim" "%errfmt"
"%lookup_def" "%lookup_mod" "%lookup_ob2"
"%lookup_sym" "%lookup_obj" "%lookup_lib"
"%lookup_exe"
</line>
</output>
</tool>
<!-- =============================== -->
<tool name ="toolXDS-XM"
label ="XDS-XM"
project ="XDSProject"
package ="XDSPackage"
exe ="?%%OS: Windows=xm.exe, Linux=xm"
interface="intfDemoXDS" >
<extensions-list>
<extension mask="%extdef"/>
<extension mask="%extmod"/>
<extension mask="%extob2"/>
</extensions-list>
<parameter id = "CompilationModule"
visible = "false"
type = "String"
default = "%%CurrentFile"
format = "SimplestOption"
readonly= "true" />
<!-- Overriding parameters -->
<parameter id = "exename" visible="true"
format = "Equation" />
<parameter id = "libname" visible="true"
format = "Equation" />
<parameter id = "genlib" visible="true"
format = "Option" />
<parameter id = "multithread"
format = "Option" />
<parameter id = "include"
label = "Extra Include Directories"
type = "Pathlist"
default = ""
format = "EquationList" />
<!-- Input definitions -->
<input label="XM Call">
<group label="Source">
"m2extensions"
"m2addtypes"
"m2base16"
"o2extensions"
"o2isopragma"
"o2numext"
</group>
<group label="XM Convertor">
"cc"
"include"
"gencpp"
"genkrc"
"genctypes"
"genproclass"
"cstdlib"
"comment"
"longname"
"lineno"
"noheader"
</group>
<group label="Make">
"extexe"
"extdll"
"extexp"
</group>
<group label="Target">
"multithread"
"genlib"
"exename"
"libname"
"heaplimit"
"stacklimit"
"gcthreshold"
"gcauto"
"gendebug"
"alignment"
"checkindex"
"checknil"
"checkdindex"
"checktype"
"checkrange"
"checkset"
"checkdiv"
"checkproc"
"assert"
"ioverflow"
"coverflow"
"foverflow"
</group>
<group label="Decor">
"decor"
"errlim"
"errfmt"
</group>
<group label="Project Options">
"lookup_def"
"lookup_mod"
"lookup_ob2"
"lookup_sym"
"lookup_obj"
"lookup_lib"
"lookup_exe"
</group>
</input>
<!-- Output definitions -->
<output>
<line name="cmdline" sep=" ">
"=a" "=m" "%CompilationModule"
"%m2extensions" "%m2addtypes" "%o2extensions" "%o2isopragma" "%o2numext" "%m2base16"
"%genlib" "%exename" "%libname"
"%include"
"%gencpp" "%genkrc" "%genctypes" "%genproclass" "%cstdlib"
"%comment" "%longname" "%lineno" "%noheader"
"%gui" "%multithread"
"%heaplimit" "%stacklimit" "%gcthreshold" "%gcauto" "%gendebug" "%alignment"
"%checkindex" "%checknil" "%checkdindex" "%checktype" "%checkrange" "%checkset"
"%checkdiv" "%checkproc" "%assert" "%ioverflow" "%coverflow" "%foverflow"
"%decor" "%errlim" "%errfmt"
"%lookup_def" "%lookup_mod" "%lookup_ob2"
"%lookup_sym" "%lookup_obj" "%lookup_lib"
"%lookup_exe"
</line>
</output>
</tool>
<!-- =============================== -->
<tool name ="toolXDS-XD"
label ="XDS-XD"
project ="XDSProject"
package ="XDSPackage"
exe ="xd.exe"
interface="intfDemoXDS" >
<parameter id = "debugged_file"
label = "Executable file to debug"
type = "Filename"
default = ""
format = "SimplestOption" />
<input label="XD Call">
<group label="Debugging options">
"debugged_file"
</group>
</input>
<output>
<line name="cmdline">
"%debugged_file"
</line>
</output>
</tool>
</vdt-project>
<!-- ===== Menu section ===== -->
<!--
<menu name="menuXDS" label="Demo XDS Tools">
<menu name="menuXC" label="Native Complilation">
<menuitem name ="itemCompileXC"
label="Compile"
call ="callXCcomp"/>
<menuitem name ="itemBuildXC"
label="Build"
call ="callXCmake"/>
</menu>
<menu name="menuXM" label="Via C Complilation">
<menuitem name ="itemConvertXM"
label="Convert"
call ="callXMcomp"/>
<menuitem name ="itemBuildXM"
label="Build"
call ="callXMmake"/>
</menu>
<menuitem name ="itemDebug"
label="Debug"
call ="callXD"/>
</menuitem>
</menu>
-->
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