For internal messages, use <command-line> and <built-in> to match GCC.

This commit is contained in:
Wilson Snyder 2019-06-29 07:39:17 -04:00
parent ef02678305
commit ba9af4aabf
7 changed files with 110 additions and 111 deletions

View File

@ -6118,7 +6118,7 @@ private:
AstExecGraph* m_execGraphp; // Execution MTask graph for threads>1 mode AstExecGraph* m_execGraphp; // Execution MTask graph for threads>1 mode
public: public:
AstNetlist() AstNetlist()
: AstNode(new FileLine("AstRoot", 0)) : AstNode(new FileLine(FileLine::builtInFilename(), 0))
, m_typeTablep(NULL) , m_typeTablep(NULL)
, m_dollarUnitPkgp(NULL) , m_dollarUnitPkgp(NULL)
, m_evalp(NULL) , m_evalp(NULL)

View File

@ -28,6 +28,7 @@
# include "V3Global.h" # include "V3Global.h"
# include "V3Stats.h" # include "V3Stats.h"
# include "V3Config.h" # include "V3Config.h"
# include "V3File.h"
#endif #endif
#include <cstdarg> #include <cstdarg>
@ -68,13 +69,12 @@ int FileLineSingleton::nameToNumber(const string& filename) {
} }
//! Support XML output //! Support XML output
//! Experimental. Updated to also put out the language. //! Experimental. Updated to also put out the language.
void FileLineSingleton::fileNameNumMapDumpXml(std::ostream& os) { void FileLineSingleton::fileNameNumMapDumpXml(std::ostream& os) {
os<<"<files>\n"; os<<"<files>\n";
for (FileNameNumMap::const_iterator it = m_namemap.begin(); it != m_namemap.end(); ++it) { for (FileNameNumMap::const_iterator it = m_namemap.begin(); it != m_namemap.end(); ++it) {
os<<"<file id=\""<<filenameLetters(it->second) os<<"<file id=\""<<filenameLetters(it->second)
<<"\" filename=\""<<it->first <<"\" filename=\""<<V3OutFormatter::quoteNameControls(it->first, V3OutFormatter::LA_XML)
<<"\" language=\""<<numberToLang(it->second).ascii()<<"\"/>\n"; <<"\" language=\""<<numberToLang(it->second).ascii()<<"\"/>\n";
} }
os<<"</files>\n"; os<<"</files>\n";
@ -86,7 +86,7 @@ void FileLineSingleton::fileNameNumMapDumpXml(std::ostream& os) {
FileLine::FileLine(FileLine::EmptySecret) { FileLine::FileLine(FileLine::EmptySecret) {
// Sort of a singleton // Sort of a singleton
m_lineno = 0; m_lineno = 0;
m_filenameno = singleton().nameToNumber("AstRoot"); m_filenameno = singleton().nameToNumber(FileLine::builtInFilename());
m_parent = NULL; m_parent = NULL;
m_warnOn = 0; m_warnOn = 0;

View File

@ -130,7 +130,7 @@ public:
string ascii() const; string ascii() const;
const string filename() const { return singleton().numberToName(m_filenameno); } const string filename() const { return singleton().numberToName(m_filenameno); }
bool filenameIsGlobal() const { return (filename() == commandLineFilename() bool filenameIsGlobal() const { return (filename() == commandLineFilename()
|| filename() == internalDefineFilename()); } || filename() == builtInFilename()); }
const string filenameLetters() const { return singleton().filenameLetters(m_filenameno); } const string filenameLetters() const { return singleton().filenameLetters(m_filenameno); }
const string filebasename() const; const string filebasename() const;
const string filebasenameNoExt() const; const string filebasenameNoExt() const;
@ -155,8 +155,9 @@ public:
void tracingOn(bool flag) { warnOn(V3ErrorCode::I_TRACING, flag); } void tracingOn(bool flag) { warnOn(V3ErrorCode::I_TRACING, flag); }
// METHODS - Global // METHODS - Global
static string commandLineFilename() { return "COMMAND_LINE"; } // <command-line> and <built-in> match what GCC outputs
static string internalDefineFilename() { return "INTERNAL_VERILATOR_DEFINE"; } static string commandLineFilename() { return "<command-line>"; }
static string builtInFilename() { return "<built-in>"; }
static void globalWarnLintOff(bool flag) { static void globalWarnLintOff(bool flag) {
defaultFileLine().warnLintOff(flag); } defaultFileLine().warnLintOff(flag); }
static void globalWarnStyleOff(bool flag) { static void globalWarnStyleOff(bool flag) {

View File

@ -38,7 +38,7 @@ void test(const string& lhss, const string& op, const string& rhss, const string
char* r1 = strdup(rhss.c_str()); char* r1 = strdup(rhss.c_str());
char* e1 = strdup(exps.c_str()); char* e1 = strdup(exps.c_str());
FileLine fl = new FileLine(FileLine::internalDefineFinename(), 0); FileLine fl = new FileLine(FileLine::builtInFinename(), 0);
V3Number lhnum (fl, l1); V3Number lhnum (fl, l1);
V3Number rhnum (fl, r1); V3Number rhnum (fl, r1);

View File

@ -64,7 +64,7 @@ protected:
s_preprocp = V3PreProc::createPreProc(cmdfl); s_preprocp = V3PreProc::createPreProc(cmdfl);
s_preprocp->debug(debug()); s_preprocp->debug(debug());
// Default defines // Default defines
FileLine* prefl = new FileLine(FileLine::internalDefineFilename(), 0); FileLine* prefl = new FileLine(FileLine::builtInFilename(), 0);
s_preprocp->defineCmdLine(prefl, "VERILATOR", "1"); // LEAK_OK s_preprocp->defineCmdLine(prefl, "VERILATOR", "1"); // LEAK_OK
s_preprocp->defineCmdLine(prefl, "verilator", "1"); // LEAK_OK s_preprocp->defineCmdLine(prefl, "verilator", "1"); // LEAK_OK
s_preprocp->defineCmdLine(prefl, "verilator3", "1"); // LEAK_OK s_preprocp->defineCmdLine(prefl, "verilator3", "1"); // LEAK_OK

View File

@ -2,78 +2,77 @@
<!-- DESCRIPTION: Verilator output: XML representation of netlist --> <!-- DESCRIPTION: Verilator output: XML representation of netlist -->
<verilator_xml> <verilator_xml>
<files> <files>
<file id="a" filename="AstRoot" language="1800-2017"/> <file id="a" filename="&lt;built-in&gt;" language="1800-2017"/>
<file id="b" filename="COMMAND_LINE" language="1800-2017"/> <file id="b" filename="&lt;command-line&gt;" language="1800-2017"/>
<file id="c" filename="INTERNAL_VERILATOR_DEFINE" language="1800-2017"/> <file id="c" filename="input.vc" language="1800-2017"/>
<file id="d" filename="input.vc" language="1800-2017"/> <file id="d" filename="t/t_xml_first.v" language="1800-2017"/>
<file id="e" filename="t/t_xml_first.v" language="1800-2017"/>
</files> </files>
<module_files> <module_files>
<file id="e" filename="t/t_xml_first.v" language="1800-2017"/> <file id="d" filename="t/t_xml_first.v" language="1800-2017"/>
</module_files> </module_files>
<cells> <cells>
<cell fl="e6" name="t" submodname="t" hier="t"> <cell fl="d6" name="t" submodname="t" hier="t">
<cell fl="e18" name="cell1" submodname="mod1" hier="t.cell1"/> <cell fl="d18" name="cell1" submodname="mod1" hier="t.cell1"/>
<cell fl="e24" name="cell2" submodname="mod2" hier="t.cell2"/> <cell fl="d24" name="cell2" submodname="mod2" hier="t.cell2"/>
</cell> </cell>
</cells> </cells>
<netlist> <netlist>
<module fl="e6" name="t" origName="t" topModule="1"> <module fl="d6" name="t" origName="t" topModule="1">
<var fl="e12" name="clk" dtype_id="1" dir="input" vartype="logic" origName="clk"/> <var fl="d12" name="clk" dtype_id="1" dir="input" vartype="logic" origName="clk"/>
<var fl="e13" name="d" dtype_id="2" dir="input" vartype="logic" origName="d"/> <var fl="d13" name="d" dtype_id="2" dir="input" vartype="logic" origName="d"/>
<var fl="e14" name="q" dtype_id="2" dir="output" vartype="logic" origName="q"/> <var fl="d14" name="q" dtype_id="2" dir="output" vartype="logic" origName="q"/>
<var fl="e16" name="between" dtype_id="2" vartype="logic" origName="between"/> <var fl="d16" name="between" dtype_id="2" vartype="logic" origName="between"/>
<instance fl="e18" name="cell1" defName="mod1" origName="cell1"> <instance fl="d18" name="cell1" defName="mod1" origName="cell1">
<port fl="e18" name="q" direction="out" portIndex="1"> <port fl="d18" name="q" direction="out" portIndex="1">
<varref fl="e18" name="between" dtype_id="2"/> <varref fl="d18" name="between" dtype_id="2"/>
</port> </port>
<port fl="e21" name="clk" direction="in" portIndex="2"> <port fl="d21" name="clk" direction="in" portIndex="2">
<varref fl="e21" name="clk" dtype_id="1"/> <varref fl="d21" name="clk" dtype_id="1"/>
</port> </port>
<port fl="e22" name="d" direction="in" portIndex="3"> <port fl="d22" name="d" direction="in" portIndex="3">
<varref fl="e22" name="d" dtype_id="2"/> <varref fl="d22" name="d" dtype_id="2"/>
</port> </port>
</instance> </instance>
<instance fl="e24" name="cell2" defName="mod2" origName="cell2"> <instance fl="d24" name="cell2" defName="mod2" origName="cell2">
<port fl="e24" name="d" direction="in" portIndex="1"> <port fl="d24" name="d" direction="in" portIndex="1">
<varref fl="e24" name="between" dtype_id="2"/> <varref fl="d24" name="between" dtype_id="2"/>
</port> </port>
<port fl="e27" name="q" direction="out" portIndex="2"> <port fl="d27" name="q" direction="out" portIndex="2">
<varref fl="e27" name="q" dtype_id="2"/> <varref fl="d27" name="q" dtype_id="2"/>
</port> </port>
<port fl="e29" name="clk" direction="in" portIndex="3"> <port fl="d29" name="clk" direction="in" portIndex="3">
<varref fl="e29" name="clk" dtype_id="1"/> <varref fl="d29" name="clk" dtype_id="1"/>
</port> </port>
</instance> </instance>
</module> </module>
<module fl="e33" name="mod1" origName="mod1"> <module fl="d33" name="mod1" origName="mod1">
<var fl="e35" name="clk" dtype_id="1" dir="input" vartype="logic" origName="clk"/> <var fl="d35" name="clk" dtype_id="1" dir="input" vartype="logic" origName="clk"/>
<var fl="e36" name="d" dtype_id="2" dir="input" vartype="logic" origName="d"/> <var fl="d36" name="d" dtype_id="2" dir="input" vartype="logic" origName="d"/>
<var fl="e37" name="q" dtype_id="2" dir="output" vartype="logic" origName="q"/> <var fl="d37" name="q" dtype_id="2" dir="output" vartype="logic" origName="q"/>
<always fl="e39"> <always fl="d39">
<sentree fl="e39"> <sentree fl="d39">
<senitem fl="e39" edgeType="POS"> <senitem fl="d39" edgeType="POS">
<varref fl="e39" name="clk" dtype_id="1"/> <varref fl="d39" name="clk" dtype_id="1"/>
</senitem> </senitem>
</sentree> </sentree>
<assigndly fl="e40" dtype_id="2"> <assigndly fl="d40" dtype_id="2">
<varref fl="e40" name="d" dtype_id="2"/> <varref fl="d40" name="d" dtype_id="2"/>
<varref fl="e40" name="q" dtype_id="2"/> <varref fl="d40" name="q" dtype_id="2"/>
</assigndly> </assigndly>
</always> </always>
</module> </module>
<module fl="e44" name="mod2" origName="mod2"> <module fl="d44" name="mod2" origName="mod2">
<var fl="e46" name="clk" dtype_id="1" dir="input" vartype="logic" origName="clk"/> <var fl="d46" name="clk" dtype_id="1" dir="input" vartype="logic" origName="clk"/>
<var fl="e47" name="d" dtype_id="2" dir="input" vartype="logic" origName="d"/> <var fl="d47" name="d" dtype_id="2" dir="input" vartype="logic" origName="d"/>
<var fl="e48" name="q" dtype_id="2" dir="output" vartype="logic" origName="q"/> <var fl="d48" name="q" dtype_id="2" dir="output" vartype="logic" origName="q"/>
<contassign fl="e51" dtype_id="2"> <contassign fl="d51" dtype_id="2">
<varref fl="e51" name="d" dtype_id="2"/> <varref fl="d51" name="d" dtype_id="2"/>
<varref fl="e51" name="q" dtype_id="2"/> <varref fl="d51" name="q" dtype_id="2"/>
</contassign> </contassign>
</module> </module>
<typetable fl="a0"> <typetable fl="a0">
<basicdtype fl="e46" id="1" name="logic"/> <basicdtype fl="d46" id="1" name="logic"/>
<basicdtype fl="e13" id="2" name="logic" left="3" right="0"/> <basicdtype fl="d13" id="2" name="logic" left="3" right="0"/>
</typetable> </typetable>
</netlist> </netlist>
</verilator_xml> </verilator_xml>

View File

@ -2,82 +2,81 @@
<!-- DESCRIPTION: Verilator output: XML representation of netlist --> <!-- DESCRIPTION: Verilator output: XML representation of netlist -->
<verilator_xml> <verilator_xml>
<files> <files>
<file id="a" filename="AstRoot" language="1800-2017"/> <file id="a" filename="&lt;built-in&gt;" language="1800-2017"/>
<file id="b" filename="COMMAND_LINE" language="1800-2017"/> <file id="b" filename="&lt;command-line&gt;" language="1800-2017"/>
<file id="c" filename="INTERNAL_VERILATOR_DEFINE" language="1800-2017"/> <file id="c" filename="input.vc" language="1800-2017"/>
<file id="d" filename="input.vc" language="1800-2017"/> <file id="d" filename="t/t_xml_tag.v" language="1800-2017"/>
<file id="e" filename="t/t_xml_tag.v" language="1800-2017"/>
</files> </files>
<module_files> <module_files>
<file id="e" filename="t/t_xml_tag.v" language="1800-2017"/> <file id="d" filename="t/t_xml_tag.v" language="1800-2017"/>
</module_files> </module_files>
<cells> <cells>
<cell fl="e11" name="m" submodname="m" hier="m"> <cell fl="d11" name="m" submodname="m" hier="m">
<cell fl="e28" name="itop" submodname="ifc" hier="m.itop"/> <cell fl="d28" name="itop" submodname="ifc" hier="m.itop"/>
</cell> </cell>
</cells> </cells>
<netlist> <netlist>
<module fl="e11" name="m" origName="m" topModule="1"> <module fl="d11" name="m" origName="m" topModule="1">
<var fl="e13" name="clk_ip" tag="clk_ip" dtype_id="1" dir="input" vartype="logic" origName="clk_ip"/> <var fl="d13" name="clk_ip" tag="clk_ip" dtype_id="1" dir="input" vartype="logic" origName="clk_ip"/>
<var fl="e14" name="rst_ip" dtype_id="1" dir="input" vartype="logic" origName="rst_ip"/> <var fl="d14" name="rst_ip" dtype_id="1" dir="input" vartype="logic" origName="rst_ip"/>
<var fl="e15" name="foo_op" tag="foo_op" dtype_id="1" dir="output" vartype="logic" origName="foo_op"/> <var fl="d15" name="foo_op" tag="foo_op" dtype_id="1" dir="output" vartype="logic" origName="foo_op"/>
<typedef fl="e19" name="my_struct" tag="my_struct" dtype_id="2"/> <typedef fl="d19" name="my_struct" tag="my_struct" dtype_id="2"/>
<instance fl="e28" name="itop" defName="ifc" origName="itop"/> <instance fl="d28" name="itop" defName="ifc" origName="itop"/>
<var fl="e28" name="itop__Viftop" dtype_id="3" vartype="ifaceref" origName="itop__Viftop"/> <var fl="d28" name="itop__Viftop" dtype_id="3" vartype="ifaceref" origName="itop__Viftop"/>
<var fl="e30" name="this_struct" tag="this_struct" dtype_id="4" vartype="" origName="this_struct"/> <var fl="d30" name="this_struct" tag="this_struct" dtype_id="4" vartype="" origName="this_struct"/>
<var fl="e32" name="dotted" dtype_id="5" vartype="logic" origName="dotted"/> <var fl="d32" name="dotted" dtype_id="5" vartype="logic" origName="dotted"/>
<contassign fl="e32" dtype_id="5"> <contassign fl="d32" dtype_id="5">
<varxref fl="e32" name="value" dtype_id="6" dotted="itop"/> <varxref fl="d32" name="value" dtype_id="6" dotted="itop"/>
<varref fl="e32" name="dotted" dtype_id="5"/> <varref fl="d32" name="dotted" dtype_id="5"/>
</contassign> </contassign>
<func fl="e34" name="f" dtype_id="1"> <func fl="d34" name="f" dtype_id="1">
<var fl="e34" name="f" dtype_id="1" dir="output" vartype="logic" origName="f"/> <var fl="d34" name="f" dtype_id="1" dir="output" vartype="logic" origName="f"/>
<var fl="e34" name="m" dtype_id="7" dir="input" vartype="string" origName="m"/> <var fl="d34" name="m" dtype_id="7" dir="input" vartype="string" origName="m"/>
<display fl="e35" displaytype="$display"> <display fl="d35" displaytype="$display">
<sformatf fl="e35" name="%@" dtype_id="7"> <sformatf fl="d35" name="%@" dtype_id="7">
<varref fl="e35" name="m" dtype_id="7"/> <varref fl="d35" name="m" dtype_id="7"/>
</sformatf> </sformatf>
</display> </display>
</func> </func>
<initial fl="e38"> <initial fl="d38">
<begin fl="e38"> <begin fl="d38">
<taskref fl="e40" name="f"> <taskref fl="d40" name="f">
<arg fl="e40"> <arg fl="d40">
<const fl="e40" name="&quot;&#1;&#2;&#3;&#4;&#5;&#6;&#7;&#8;&#9;&#10;&#11;&#12;&#13;&#14;&#15;&#16;&#17;&#18;&#19;&#20;&#21;&#22;&#23;&#24;&#25;&#26;&#27;&#28;&#29;&#30;&#31; !&quot;#$%&amp;&apos;()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~&#127;&#128;&#129;&#130;&#131;&#132;&#133;&#134;&#135;&#136;&#137;&#138;&#139;&#140;&#141;&#142;&#143;&#144;&#145;&#146;&#147;&#148;&#149;&#150;&#151;&#152;&#153;&#154;&#155;&#156;&#157;&#158;&#159;&#160;&#161;&#162;&#163;&#164;&#165;&#166;&#167;&#168;&#169;&#170;&#171;&#172;&#173;&#174;&#175;&#176;&#177;&#178;&#179;&#180;&#181;&#182;&#183;&#184;&#185;&#186;&#187;&#188;&#189;&#190;&#191;&#192;&#193;&#194;&#195;&#196;&#197;&#198;&#199;&#200;&#201;&#202;&#203;&#204;&#205;&#206;&#207;&#208;&#209;&#210;&#211;&#212;&#213;&#214;&#215;&#216;&#217;&#218;&#219;&#220;&#221;&#222;&#223;&#224;&#225;&#226;&#227;&#228;&#229;&#230;&#231;&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;&#240;&#241;&#242;&#243;&#244;&#245;&#246;&#247;&#248;&#249;&#250;&#251;&#252;&#253;&#254;&#255;&quot;" dtype_id="7"/> <const fl="d40" name="&quot;&#1;&#2;&#3;&#4;&#5;&#6;&#7;&#8;&#9;&#10;&#11;&#12;&#13;&#14;&#15;&#16;&#17;&#18;&#19;&#20;&#21;&#22;&#23;&#24;&#25;&#26;&#27;&#28;&#29;&#30;&#31; !&quot;#$%&amp;&apos;()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~&#127;&#128;&#129;&#130;&#131;&#132;&#133;&#134;&#135;&#136;&#137;&#138;&#139;&#140;&#141;&#142;&#143;&#144;&#145;&#146;&#147;&#148;&#149;&#150;&#151;&#152;&#153;&#154;&#155;&#156;&#157;&#158;&#159;&#160;&#161;&#162;&#163;&#164;&#165;&#166;&#167;&#168;&#169;&#170;&#171;&#172;&#173;&#174;&#175;&#176;&#177;&#178;&#179;&#180;&#181;&#182;&#183;&#184;&#185;&#186;&#187;&#188;&#189;&#190;&#191;&#192;&#193;&#194;&#195;&#196;&#197;&#198;&#199;&#200;&#201;&#202;&#203;&#204;&#205;&#206;&#207;&#208;&#209;&#210;&#211;&#212;&#213;&#214;&#215;&#216;&#217;&#218;&#219;&#220;&#221;&#222;&#223;&#224;&#225;&#226;&#227;&#228;&#229;&#230;&#231;&#232;&#233;&#234;&#235;&#236;&#237;&#238;&#239;&#240;&#241;&#242;&#243;&#244;&#245;&#246;&#247;&#248;&#249;&#250;&#251;&#252;&#253;&#254;&#255;&quot;" dtype_id="7"/>
</arg> </arg>
</taskref> </taskref>
</begin> </begin>
</initial> </initial>
</module> </module>
<iface fl="e6" name="ifc" origName="ifc"> <iface fl="d6" name="ifc" origName="ifc">
<var fl="e7" name="value" dtype_id="6" vartype="integer" origName="value"/> <var fl="d7" name="value" dtype_id="6" vartype="integer" origName="value"/>
<modport fl="e8" name="out_modport"> <modport fl="d8" name="out_modport">
<modportvarref fl="e8" name="value" direction="out"/> <modportvarref fl="d8" name="value" direction="out"/>
</modport> </modport>
</iface> </iface>
<typetable fl="a0"> <typetable fl="a0">
<basicdtype fl="e30" id="5" name="logic" left="31" right="0"/> <basicdtype fl="d30" id="5" name="logic" left="31" right="0"/>
<basicdtype fl="e7" id="6" name="integer" left="31" right="0"/> <basicdtype fl="d7" id="6" name="integer" left="31" right="0"/>
<basicdtype fl="e13" id="1" name="logic"/> <basicdtype fl="d13" id="1" name="logic"/>
<structdtype fl="e19" id="2" name="m.my_struct"> <structdtype fl="d19" id="2" name="m.my_struct">
<memberdtype fl="e20" id="8" name="clk" tag="this is clk" sub_dtype_id="9"/> <memberdtype fl="d20" id="8" name="clk" tag="this is clk" sub_dtype_id="9"/>
<memberdtype fl="e21" id="10" name="k" sub_dtype_id="11"/> <memberdtype fl="d21" id="10" name="k" sub_dtype_id="11"/>
<memberdtype fl="e22" id="12" name="enable" tag="enable" sub_dtype_id="13"/> <memberdtype fl="d22" id="12" name="enable" tag="enable" sub_dtype_id="13"/>
<memberdtype fl="e23" id="14" name="data" tag="data" sub_dtype_id="15"/> <memberdtype fl="d23" id="14" name="data" tag="data" sub_dtype_id="15"/>
</structdtype> </structdtype>
<basicdtype fl="e20" id="9" name="logic"/> <basicdtype fl="d20" id="9" name="logic"/>
<basicdtype fl="e21" id="11" name="logic"/> <basicdtype fl="d21" id="11" name="logic"/>
<basicdtype fl="e22" id="13" name="logic"/> <basicdtype fl="d22" id="13" name="logic"/>
<basicdtype fl="e23" id="15" name="logic"/> <basicdtype fl="d23" id="15" name="logic"/>
<ifacerefdtype fl="e28" id="3" modportname=""/> <ifacerefdtype fl="d28" id="3" modportname=""/>
<unpackarraydtype fl="e30" id="4" sub_dtype_id="2"> <unpackarraydtype fl="d30" id="4" sub_dtype_id="2">
<range fl="e30"> <range fl="d30">
<const fl="e30" name="32&apos;h1" dtype_id="5"/> <const fl="d30" name="32&apos;h1" dtype_id="5"/>
<const fl="e30" name="32&apos;h0" dtype_id="5"/> <const fl="d30" name="32&apos;h0" dtype_id="5"/>
</range> </range>
</unpackarraydtype> </unpackarraydtype>
<refdtype fl="e30" id="16" name="my_struct" sub_dtype_id="2"/> <refdtype fl="d30" id="16" name="my_struct" sub_dtype_id="2"/>
<basicdtype fl="e34" id="7" name="string"/> <basicdtype fl="d34" id="7" name="string"/>
</typetable> </typetable>
</netlist> </netlist>
</verilator_xml> </verilator_xml>