<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="9.6.2">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting keepoldvectorfont="yes"/>
<setting verticaltext="up"/>
</settings>
<grid distance="0.1" unitdist="inch" unit="inch" style="lines" multiple="1" display="no" altdistance="0.01" altunitdist="inch" altunit="inch"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="no"/>
<layer number="2" name="Route2" color="1" fill="3" visible="yes" active="no"/>
<layer number="3" name="Route3" color="4" fill="3" visible="yes" active="no"/>
<layer number="4" name="Route4" color="1" fill="4" visible="yes" active="no"/>
<layer number="5" name="Route5" color="4" fill="4" visible="yes" active="no"/>
<layer number="6" name="Route6" color="1" fill="8" visible="yes" active="no"/>
<layer number="7" name="Route7" color="4" fill="8" visible="yes" active="no"/>
<layer number="8" name="Route8" color="1" fill="2" visible="yes" active="no"/>
<layer number="9" name="Route9" color="4" fill="2" visible="yes" active="no"/>
<layer number="10" name="Route10" color="1" fill="7" visible="yes" active="no"/>
<layer number="11" name="Route11" color="4" fill="7" visible="yes" active="no"/>
<layer number="12" name="Route12" color="1" fill="5" visible="yes" active="no"/>
<layer number="13" name="Route13" color="4" fill="5" visible="yes" active="no"/>
<layer number="14" name="Route14" color="1" fill="6" visible="yes" active="no"/>
<layer number="15" name="Route15" color="4" fill="6" visible="yes" active="no"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="no"/>
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="no"/>
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="no"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="no"/>
<layer number="20" name="Dimension" color="15" fill="1" visible="yes" active="no"/>
<layer number="21" name="tPlace" color="14" fill="1" visible="yes" active="no"/>
<layer number="22" name="bPlace" color="13" fill="1" visible="yes" active="no"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="no"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="no"/>
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="no"/>
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="no"/>
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="no"/>
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="no"/>
<layer number="29" name="tStop" color="7" fill="3" visible="no" active="no"/>
<layer number="30" name="bStop" color="7" fill="6" visible="no" active="no"/>
<layer number="31" name="tCream" color="7" fill="4" visible="no" active="no"/>
<layer number="32" name="bCream" color="7" fill="5" visible="no" active="no"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="no"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="no"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="no"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="no"/>
<layer number="37" name="tTest" color="7" fill="1" visible="yes" active="no"/>
<layer number="38" name="bTest" color="7" fill="1" visible="yes" active="no"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="no" active="no"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="no" active="no"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="no" active="no"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="no" active="no"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="no" active="no"/>
<layer number="44" name="Drills" color="7" fill="1" visible="no" active="no"/>
<layer number="45" name="Holes" color="7" fill="1" visible="no" active="no"/>
<layer number="46" name="Milling" color="3" fill="1" visible="yes" active="no"/>
<layer number="47" name="Measures" color="7" fill="1" visible="yes" active="no"/>
<layer number="48" name="Document" color="7" fill="1" visible="yes" active="no"/>
<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="no"/>
<layer number="50" name="dxf" color="7" fill="1" visible="yes" active="no"/>
<layer number="51" name="tDocu" color="15" fill="1" visible="yes" active="no"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="yes" active="no"/>
<layer number="53" name="tGND_GNDA" color="7" fill="9" visible="yes" active="no"/>
<layer number="54" name="bGND_GNDA" color="1" fill="9" visible="yes" active="no"/>
<layer number="56" name="wert" color="7" fill="1" visible="yes" active="no"/>
<layer number="57" name="tCAD" color="7" fill="1" visible="yes" active="no"/>
<layer number="58" name="b3D" color="7" fill="1" visible="yes" active="no"/>
<layer number="59" name="tCarbon" color="7" fill="1" visible="yes" active="no"/>
<layer number="60" name="bCarbon" color="7" fill="1" visible="yes" active="no"/>
<layer number="61" name="stand" color="7" fill="1" visible="yes" active="no"/>
<layer number="88" name="SimResults" color="9" fill="1" visible="yes" active="yes"/>
<layer number="89" name="SimProbes" color="9" fill="1" visible="yes" active="yes"/>
<layer number="90" name="Modules" color="7" fill="1" visible="yes" active="yes"/>
<layer number="91" name="Nets" color="2" fill="1" visible="yes" active="yes"/>
<layer number="92" name="Busses" color="1" fill="1" visible="yes" active="yes"/>
<layer number="93" name="Pins" color="2" fill="1" visible="no" active="yes"/>
<layer number="94" name="Symbols" color="4" fill="1" visible="yes" active="yes"/>
<layer number="95" name="Names" color="7" fill="1" visible="yes" active="yes"/>
<layer number="96" name="Values" color="7" fill="1" visible="yes" active="yes"/>
<layer number="97" name="Info" color="7" fill="1" visible="yes" active="yes"/>
<layer number="98" name="Guide" color="6" fill="1" visible="yes" active="yes"/>
<layer number="99" name="SpiceOrder" color="7" fill="1" visible="no" active="no"/>
<layer number="100" name="Muster" color="7" fill="1" visible="no" active="no"/>
<layer number="101" name="Patch_Top" color="12" fill="4" visible="yes" active="yes"/>
<layer number="102" name="Vscore" color="7" fill="1" visible="yes" active="yes"/>
<layer number="103" name="fp3" color="7" fill="1" visible="no" active="yes"/>
<layer number="104" name="Name" color="7" fill="1" visible="yes" active="yes"/>
<layer number="105" name="Beschreib" color="9" fill="1" visible="yes" active="yes"/>
<layer number="106" name="BGA-Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="107" name="BD-Top" color="5" fill="1" visible="yes" active="yes"/>
<layer number="108" name="fp8" color="7" fill="1" visible="no" active="yes"/>
<layer number="109" name="fp9" color="7" fill="1" visible="no" active="yes"/>
<layer number="110" name="fp0" color="7" fill="1" visible="no" active="yes"/>
<layer number="111" name="LPC17xx" color="7" fill="1" visible="yes" active="yes"/>
<layer number="112" name="tSilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="113" name="ReferenceLS" color="7" fill="1" visible="no" active="no"/>
<layer number="114" name="tPlaceRed" color="7" fill="1" visible="yes" active="yes"/>
<layer number="115" name="FRNTMAAT2" color="7" fill="1" visible="yes" active="yes"/>
<layer number="116" name="Patch_BOT" color="9" fill="4" visible="yes" active="yes"/>
<layer number="117" name="BACKMAAT1" color="7" fill="1" visible="yes" active="yes"/>
<layer number="118" name="Rect_Pads" color="7" fill="1" visible="no" active="no"/>
<layer number="119" name="KAP_TEKEN" color="7" fill="1" visible="yes" active="yes"/>
<layer number="120" name="KAP_MAAT1" color="7" fill="1" visible="yes" active="yes"/>
<layer number="121" name="_tsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="122" name="_bsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="123" name="tTestmark" color="7" fill="1" visible="no" active="yes"/>
<layer number="124" name="bTestmark" color="7" fill="1" visible="no" active="yes"/>
<layer number="125" name="_tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="126" name="_bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="127" name="_tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="128" name="_bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="129" name="Mask" color="7" fill="1" visible="yes" active="yes"/>
<layer number="130" name="SMDSTROOK" color="7" fill="1" visible="yes" active="yes"/>
<layer number="131" name="tAdjust" color="7" fill="1" visible="no" active="yes"/>
<layer number="132" name="bAdjust" color="7" fill="1" visible="no" active="yes"/>
<layer number="133" name="bottom_silk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="134" name="silk_top" color="7" fill="1" visible="yes" active="yes"/>
<layer number="135" name="silk_bottom" color="7" fill="1" visible="yes" active="yes"/>
<layer number="136" name="silktop" color="7" fill="1" visible="yes" active="yes"/>
<layer number="137" name="silkbottom" color="7" fill="1" visible="yes" active="yes"/>
<layer number="138" name="EEE" color="7" fill="1" visible="yes" active="yes"/>
<layer number="139" name="_tKeepout" color="7" fill="1" visible="yes" active="yes"/>
<layer number="140" name="mbKeepout" color="7" fill="1" visible="yes" active="yes"/>
<layer number="141" name="ASSEMBLY_TOP" color="7" fill="1" visible="yes" active="yes"/>
<layer number="142" name="mbRestrict" color="7" fill="1" visible="yes" active="yes"/>
<layer number="143" name="PLACE_BOUND_TOP" color="7" fill="1" visible="yes" active="yes"/>
<layer number="144" name="Drill_legend" color="7" fill="1" visible="yes" active="yes"/>
<layer number="145" name="DrillLegend_01-16" color="7" fill="1" visible="yes" active="yes"/>
<layer number="146" name="DrillLegend_01-20" color="7" fill="1" visible="yes" active="yes"/>
<layer number="147" name="PIN_NUMBER" color="7" fill="1" visible="yes" active="yes"/>
<layer number="148" name="mDocument" color="7" fill="1" visible="yes" active="yes"/>
<layer number="149" name="DrillLegend_02-15" color="7" fill="1" visible="yes" active="yes"/>
<layer number="150" name="Notes" color="7" fill="1" visible="no" active="yes"/>
<layer number="151" name="HeatSink" color="7" fill="1" visible="yes" active="yes"/>
<layer number="152" name="_bDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="153" name="FabDoc1" color="6" fill="1" visible="no" active="no"/>
<layer number="154" name="FabDoc2" color="2" fill="1" visible="no" active="no"/>
<layer number="155" name="FabDoc3" color="7" fill="15" visible="no" active="no"/>
<layer number="166" name="AntennaArea" color="7" fill="1" visible="yes" active="yes"/>
<layer number="168" name="4mmHeightArea" color="7" fill="1" visible="yes" active="yes"/>
<layer number="191" name="mNets" color="7" fill="1" visible="yes" active="yes"/>
<layer number="192" name="mBusses" color="7" fill="1" visible="yes" active="yes"/>
<layer number="193" name="mPins" color="7" fill="1" visible="yes" active="yes"/>
<layer number="194" name="mSymbols" color="7" fill="1" visible="yes" active="yes"/>
<layer number="195" name="mNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="196" name="mValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="199" name="Contour" color="7" fill="1" visible="yes" active="yes"/>
<layer number="200" name="200bmp" color="1" fill="10" visible="no" active="no"/>
<layer number="201" name="201bmp" color="2" fill="1" visible="no" active="no"/>
<layer number="202" name="202bmp" color="3" fill="1" visible="no" active="no"/>
<layer number="203" name="203bmp" color="4" fill="10" visible="yes" active="yes"/>
<layer number="204" name="204bmp" color="5" fill="10" visible="yes" active="yes"/>
<layer number="205" name="205bmp" color="6" fill="10" visible="yes" active="yes"/>
<layer number="206" name="206bmp" color="7" fill="10" visible="yes" active="yes"/>
<layer number="207" name="207bmp" color="8" fill="10" visible="yes" active="yes"/>
<layer number="208" name="208bmp" color="9" fill="10" visible="yes" active="yes"/>
<layer number="209" name="209bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="210" name="210bmp" color="7" fill="1" visible="no" active="yes"/>
<layer number="211" name="211bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="212" name="212bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="213" name="213bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="214" name="214bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="215" name="215bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="216" name="216bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="217" name="217bmp" color="18" fill="1" visible="no" active="no"/>
<layer number="218" name="218bmp" color="19" fill="1" visible="no" active="no"/>
<layer number="219" name="219bmp" color="20" fill="1" visible="no" active="no"/>
<layer number="220" name="220bmp" color="21" fill="1" visible="no" active="no"/>
<layer number="221" name="221bmp" color="22" fill="1" visible="no" active="no"/>
<layer number="222" name="222bmp" color="23" fill="1" visible="no" active="no"/>
<layer number="223" name="223bmp" color="24" fill="1" visible="no" active="no"/>
<layer number="224" name="224bmp" color="25" fill="1" visible="no" active="no"/>
<layer number="225" name="225bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="226" name="226bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="227" name="227bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="228" name="228bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="229" name="229bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="230" name="230bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="231" name="Eagle3D_PG1" color="7" fill="1" visible="no" active="no"/>
<layer number="232" name="Eagle3D_PG2" color="7" fill="1" visible="no" active="no"/>
<layer number="233" name="Eagle3D_PG3" color="7" fill="1" visible="no" active="no"/>
<layer number="248" name="Housing" color="7" fill="1" visible="yes" active="yes"/>
<layer number="249" name="Edge" color="7" fill="1" visible="yes" active="yes"/>
<layer number="250" name="Descript" color="7" fill="1" visible="no" active="no"/>
<layer number="251" name="SMDround" color="7" fill="1" visible="no" active="no"/>
<layer number="254" name="cooling" color="7" fill="1" visible="yes" active="yes"/>
<layer number="255" name="routoute" color="7" fill="1" visible="yes" active="yes"/>
</layers>
<schematic>
<libraries>
<library name="My Stuff">
<description>Generated from &lt;b&gt;Hiking Log FeatherWing.brd&lt;/b&gt;&lt;p&gt;
by exp-lbrs.ulp</description>
<packages>
</packages>
<symbols>
<symbol name="A4L-LOC">
<wire x1="256.54" y1="3.81" x2="256.54" y2="8.89" width="0.1016" layer="94"/>
<wire x1="256.54" y1="8.89" x2="256.54" y2="13.97" width="0.1016" layer="94"/>
<wire x1="256.54" y1="13.97" x2="256.54" y2="19.05" width="0.1016" layer="94"/>
<wire x1="256.54" y1="19.05" x2="256.54" y2="24.13" width="0.1016" layer="94"/>
<wire x1="184.15" y1="3.81" x2="184.15" y2="24.13" width="0.1016" layer="94"/>
<wire x1="184.15" y1="24.13" x2="215.265" y2="24.13" width="0.1016" layer="94"/>
<wire x1="215.265" y1="24.13" x2="256.54" y2="24.13" width="0.1016" layer="94"/>
<wire x1="234.95" y1="3.81" x2="234.95" y2="8.89" width="0.1016" layer="94"/>
<wire x1="234.95" y1="8.89" x2="256.54" y2="8.89" width="0.1016" layer="94"/>
<wire x1="234.95" y1="8.89" x2="215.265" y2="8.89" width="0.1016" layer="94"/>
<wire x1="215.265" y1="8.89" x2="215.265" y2="3.81" width="0.1016" layer="94"/>
<wire x1="215.265" y1="8.89" x2="215.265" y2="13.97" width="0.1016" layer="94"/>
<wire x1="215.265" y1="13.97" x2="256.54" y2="13.97" width="0.1016" layer="94"/>
<wire x1="215.265" y1="13.97" x2="215.265" y2="19.05" width="0.1016" layer="94"/>
<wire x1="215.265" y1="19.05" x2="256.54" y2="19.05" width="0.1016" layer="94"/>
<wire x1="215.265" y1="19.05" x2="215.265" y2="24.13" width="0.1016" layer="94"/>
<text x="217.17" y="15.24" size="2.54" layer="94">&gt;DRAWING_NAME</text>
<text x="217.17" y="10.16" size="2.286" layer="94">&gt;LAST_DATE_TIME</text>
<text x="228.473" y="5.08" size="2.54" layer="94">&gt;SHEET</text>
<text x="216.916" y="4.953" size="2.54" layer="94">Sheet:</text>
<frame x1="0" y1="0" x2="260.35" y2="179.07" columns="6" rows="4" layer="94"/>
<text x="185.42" y="5.08" size="4.572" layer="94" font="vector" ratio="10">oddly
specific
objects</text>
<text x="217.17" y="20.32" size="2.54" layer="94">by joey castillo</text>
<text x="236.22" y="5.08" size="2.54" layer="94">cc-by-sa 4.0</text>
</symbol>
</symbols>
<devicesets>
<deviceset name="A4L-LOC" prefix="FRAME" uservalue="yes">
<description>&lt;b&gt;FRAME&lt;/b&gt;&lt;p&gt;
DIN A4, landscape with location and doc. field</description>
<gates>
<gate name="G$1" symbol="A4L-LOC" x="0" y="0"/>
</gates>
<devices>
<device name="">
<technologies>
<technology name=""/>
</technologies>
</device>
</devices>
</deviceset>
</devicesets>
</library>
<library name="FH19C-9S-0.5SH">
<description>&lt;b&gt;https://componentsearchengine.com&lt;/b&gt;&lt;p&gt;
&lt;author&gt;Created by SamacSys&lt;/author&gt;</description>
<packages>
<package name="FH19C9S05SH10-FFC">
<description>&lt;b&gt;FH19C-9S-0.5SH(10)-1&lt;/b&gt;&lt;br&gt;
</description>
<smd name="1" x="2" y="-2.25" dx="2.5" dy="0.347" layer="16" rot="R90"/>
<smd name="2" x="1.5" y="-2.25" dx="2.5" dy="0.347" layer="16" rot="R90"/>
<smd name="3" x="1" y="-2.25" dx="2.5" dy="0.347" layer="16" rot="R90"/>
<smd name="4" x="0.5" y="-2.25" dx="2.5" dy="0.347" layer="16" rot="R90"/>
<smd name="5" x="0" y="-2.25" dx="2.5" dy="0.347" layer="16" rot="R90"/>
<smd name="6" x="-0.5" y="-2.25" dx="2.5" dy="0.347" layer="16" rot="R90"/>
<smd name="7" x="-1" y="-2.25" dx="2.5" dy="0.347" layer="16" rot="R90"/>
<smd name="8" x="-1.5" y="-2.25" dx="2.5" dy="0.347" layer="16" rot="R90"/>
<smd name="9" x="-2" y="-2.25" dx="2.5" dy="0.347" layer="16" rot="R90"/>
<wire x1="-2.4892" y1="0" x2="-2.4892" y2="-3.35" width="0" layer="20"/>
<wire x1="-2.3392" y1="-3.5" x2="2.3392" y2="-3.5" width="0" layer="20"/>
<wire x1="2.4892" y1="0" x2="2.4892" y2="-3.35" width="0" layer="20"/>
<wire x1="-2.3392" y1="-3.5" x2="-2.4892" y2="-3.35" width="0" layer="20" curve="-90"/>
<wire x1="2.3392" y1="-3.5" x2="2.4892" y2="-3.35" width="0" layer="20" curve="90"/>
<polygon width="0.1524" layer="30">
<vertex x="-2.4902" y="-0.9742"/>
<vertex x="2.4882" y="-0.9742"/>
<vertex x="2.4892" y="-3.4798"/>
<vertex x="-2.4892" y="-3.4798"/>
</polygon>
</package>
</packages>
<symbols>
<symbol name="FH19C-9S-0.5SH_10-FFC">
<wire x1="-5.08" y1="12.7" x2="7.62" y2="12.7" width="0.254" layer="94"/>
<wire x1="7.62" y1="-12.7" x2="7.62" y2="12.7" width="0.254" layer="94"/>
<wire x1="7.62" y1="-12.7" x2="-5.08" y2="-12.7" width="0.254" layer="94"/>
<wire x1="-5.08" y1="12.7" x2="-5.08" y2="-12.7" width="0.254" layer="94"/>
<text x="8.89" y="17.78" size="1.778" layer="95" align="center-left">&gt;NAME</text>
<text x="8.89" y="15.24" size="1.778" layer="96" align="center-left">&gt;VALUE</text>
<pin name="1" x="12.7" y="10.16" length="middle" rot="R180"/>
<pin name="2" x="12.7" y="7.62" length="middle" rot="R180"/>
<pin name="3" x="12.7" y="5.08" length="middle" rot="R180"/>
<pin name="4" x="12.7" y="2.54" length="middle" rot="R180"/>
<pin name="5" x="12.7" y="0" length="middle" rot="R180"/>
<pin name="6" x="12.7" y="-2.54" length="middle" rot="R180"/>
<pin name="7" x="12.7" y="-5.08" length="middle" rot="R180"/>
<pin name="8" x="12.7" y="-7.62" length="middle" rot="R180"/>
<pin name="9" x="12.7" y="-10.16" length="middle" rot="R180"/>
</symbol>
</symbols>
<devicesets>
<deviceset name="FH19C-9S-0.5SH_10-FFC">
<gates>
<gate name="G$1" symbol="FH19C-9S-0.5SH_10-FFC" x="0" y="0"/>
</gates>
<devices>
<device name="" package="FH19C9S05SH10-FFC">
<connects>
<connect gate="G$1" pin="1" pad="1"/>
<connect gate="G$1" pin="2" pad="2"/>
<connect gate="G$1" pin="3" pad="3"/>
<connect gate="G$1" pin="4" pad="4"/>
<connect gate="G$1" pin="5" pad="5"/>
<connect gate="G$1" pin="6" pad="6"/>
<connect gate="G$1" pin="7" pad="7"/>
<connect gate="G$1" pin="8" pad="8"/>
<connect gate="G$1" pin="9" pad="9"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
</devices>
</deviceset>
</devicesets>
</library>
<library name="Adafruit Feather M0 Express">
<description>Generated from &lt;b&gt;Adafruit Feather M0 Express.sch&lt;/b&gt;&lt;p&gt;
by exp-lbrs.ulp</description>
<packages>
<package name="MICROBUILDER_TESTPOINT_SMT">
<description>Surface Mount Test Point - Compact SMT</description>
<wire x1="-2.75" y1="2" x2="2.75" y2="2" width="0.2032" layer="21"/>
<wire x1="2.75" y1="2" x2="2.75" y2="-2" width="0.2032" layer="21"/>
<wire x1="2.75" y1="-2" x2="-2.75" y2="-2" width="0.2032" layer="21"/>
<wire x1="-2.75" y1="-2" x2="-2.75" y2="2" width="0.2032" layer="21"/>
<smd name="P$1" x="0" y="0" dx="4.7" dy="3.4" layer="1"/>
<text x="3.048" y="-1.143" size="0.8128" layer="25" ratio="18">&gt;NAME</text>
<text x="3.048" y="-1.778" size="0.4064" layer="25" ratio="10">&gt;VALUE</text>
</package>
<package name="MICROBUILDER_1X01_ROUND">
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="51"/>
<pad name="1" x="0" y="0" drill="1" diameter="1.6764" rot="R90"/>
<text x="-1.3462" y="1.8288" size="0.8128" layer="25" ratio="18">&gt;NAME</text>
<text x="-1.27" y="-3.175" size="0.4064" layer="27" ratio="10">&gt;VALUE</text>
</package>
<package name="MICROBUILDER_PAD-1.5X2.0">
<description>1.5 x 2.0mm SMT pad (no solder paste)</description>
<wire x1="-0.95" y1="1.2" x2="0.95" y2="1.2" width="0.127" layer="21"/>
<wire x1="0.95" y1="1.2" x2="0.95" y2="-1.2" width="0.127" layer="21"/>
<wire x1="0.95" y1="-1.2" x2="-0.95" y2="-1.2" width="0.127" layer="21"/>
<wire x1="-0.95" y1="-1.2" x2="-0.95" y2="1.2" width="0.127" layer="21"/>
<smd name="P$1" x="0" y="0" dx="1.5" dy="2" layer="1" cream="no"/>
<text x="1.1" y="0" size="0.8128" layer="25" ratio="18">&gt;NAME</text>
<text x="1.1" y="-0.7" size="0.4064" layer="27" ratio="10">&gt;VALUE</text>
</package>
<package name="MICROBUILDER_TESTPOINT_PAD_1MM">
<wire x1="-0.7" y1="0.7" x2="0.7" y2="0.7" width="0.127" layer="21"/>
<wire x1="0.7" y1="0.7" x2="0.7" y2="-0.7" width="0.127" layer="21"/>
<wire x1="0.7" y1="-0.7" x2="-0.7" y2="-0.7" width="0.127" layer="21"/>
<wire x1="-0.7" y1="-0.7" x2="-0.7" y2="0.7" width="0.127" layer="21"/>
<smd name="P$1" x="0" y="0" dx="1" dy="1" layer="1" cream="no"/>
<text x="1.27" y="0" size="0.8128" layer="25" ratio="18" align="center-left">&gt;NAME</text>
<text x="0" y="0" size="0.4064" layer="27" ratio="10" align="center">&gt;VALUE</text>
</package>
<package name="MICROBUILDER_TESTPOINT_PAD_2MM">
<description>Testpoint - Pad</description>
<wire x1="-1.27" y1="1.27" x2="1.27" y2="1.27" width="0.2032" layer="21"/>
<wire x1="1.27" y1="1.27" x2="1.27" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="1.27" y1="-1.27" x2="-1.27" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="-1.27" y1="-1.27" x2="-1.27" y2="1.27" width="0.2032" layer="21"/>
<smd name="P$1" x="0" y="0" dx="2" dy="2" layer="1" cream="no"/>
<text x="-1.016" y="0" size="0.8128" layer="25" ratio="18">&gt;NAME</text>
<text x="-1.016" y="-0.508" size="0.4064" layer="27" ratio="10">&gt;VALUE</text>
</package>
<package name="MICROBUILDER_TESTPOINT_RECT_0.25X1MM">
<smd name="P$1" x="0" y="0" dx="1" dy="0.25" layer="1" roundness="25"/>
<text x="0.889" y="-0.127" size="0.8128" layer="25" ratio="18" align="center-left">&gt;NAME</text>
<text x="0.889" y="-0.889" size="0.4064" layer="27" ratio="10" align="center-left">&gt;VALUE</text>
</package>
<package name="MICROBUILDER_TESTPOINT_ROUND_0.5MM">
<circle x="0" y="0" radius="0.45" width="0.2032" layer="21"/>
<smd name="P$1" x="0" y="0" dx="0.5" dy="0.5" layer="1" roundness="100" cream="no"/>
<text x="0.889" y="-0.127" size="0.8128" layer="25" ratio="18">&gt;NAME</text>
<text x="0.889" y="-0.635" size="0.4064" layer="27" ratio="10">&gt;VALUE</text>
</package>
<package name="MICROBUILDER_TESTPOINT_ROUND_1.5MM">
<circle x="0" y="0" radius="1" width="0.2032" layer="21"/>
<smd name="P$1" x="0" y="0" dx="1.5" dy="1.5" layer="1" roundness="100" cream="no"/>
<text x="1.143" y="-0.127" size="0.8128" layer="25" ratio="18">&gt;NAME</text>
<text x="1.143" y="-0.635" size="0.4064" layer="27" ratio="10">&gt;VALUE</text>
</package>
<package name="MICROBUILDER_TESTPOINT_ROUND_1MM">
<circle x="0" y="0" radius="0.7" width="0.2032" layer="21"/>
<smd name="P$1" x="0" y="0" dx="1" dy="1" layer="1" roundness="100" cream="no"/>
<text x="1.143" y="-0.127" size="0.8128" layer="25" ratio="18">&gt;NAME</text>
<text x="1.143" y="-0.635" size="0.4064" layer="27" ratio="10">&gt;VALUE</text>
</package>
<package name="MICROBUILDER_TESTPOINT_ROUND_2MM">
<description>Testpoint - Round 2mm</description>
<circle x="0" y="0" radius="1.3029" width="0.2032" layer="21"/>
<smd name="P$1" x="0" y="0" dx="2" dy="2" layer="1" roundness="100" cream="no"/>
<text x="1.651" y="0.127" size="0.8128" layer="25" ratio="18">&gt;NAME</text>
<text x="1.651" y="-0.635" size="0.4064" layer="27" ratio="10">&gt;VALUE</text>
</package>
</packages>
<symbols>
<symbol name="MICROBUILDER_TESTPOINT">
<circle x="0" y="3.81" radius="1.27" width="0.254" layer="94"/>
<pin name="P$1" x="0" y="0" visible="off" length="short" rot="R90"/>
<text x="0" y="5.588" size="1.27" layer="95" rot="R90" align="center-left">&gt;NAME</text>
<text x="1.651" y="5.588" size="1.27" layer="95" rot="R90" align="center-left">&gt;VALUE</text>
</symbol>
</symbols>
<devicesets>
<deviceset name="MICROBUILDER_TESTPOINT" prefix="TP" uservalue="yes">
<description>&lt;b&gt;Test Point&lt;/b&gt;
&lt;p&gt;Various test points for characterisation and PCB testing&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;TESTPOINT_SMT&lt;/b&gt; - Compact Surface Mount Test Point [Digikey: 5016KTR-ND]&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;</description>
<gates>
<gate name="G$1" symbol="MICROBUILDER_TESTPOINT" x="0" y="0"/>
</gates>
<devices>
<device name="" package="MICROBUILDER_TESTPOINT_SMT">
<connects>
<connect gate="G$1" pin="P$1" pad="P$1"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
<device name="0.1&quot;" package="MICROBUILDER_1X01_ROUND">
<connects>
<connect gate="G$1" pin="P$1" pad="1"/>
</connects>
<technologies>
<technology name="">
<attribute name="BOM" value="EXCLUDE" constant="no"/>
</technology>
</technologies>
</device>
<device name="1.5X2.0MM_NOCREAM" package="MICROBUILDER_PAD-1.5X2.0">
<connects>
<connect gate="G$1" pin="P$1" pad="P$1"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
<device name="PAD1MM" package="MICROBUILDER_TESTPOINT_PAD_1MM">
<connects>
<connect gate="G$1" pin="P$1" pad="P$1"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
<device name="PAD2MM" package="MICROBUILDER_TESTPOINT_PAD_2MM">
<connects>
<connect gate="G$1" pin="P$1" pad="P$1"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
<device name="RECT0.25X1MM" package="MICROBUILDER_TESTPOINT_RECT_0.25X1MM">
<connects>
<connect gate="G$1" pin="P$1" pad="P$1"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
<device name="ROUND0.5MM" package="MICROBUILDER_TESTPOINT_ROUND_0.5MM">
<connects>
<connect gate="G$1" pin="P$1" pad="P$1"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
<device name="ROUND1.5MM" package="MICROBUILDER_TESTPOINT_ROUND_1.5MM">
<connects>
<connect gate="G$1" pin="P$1" pad="P$1"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
<device name="ROUND1MM" package="MICROBUILDER_TESTPOINT_ROUND_1MM">
<connects>
<connect gate="G$1" pin="P$1" pad="P$1"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
<device name="ROUND2MM" package="MICROBUILDER_TESTPOINT_ROUND_2MM">
<connects>
<connect gate="G$1" pin="P$1" pad="P$1"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
</devices>
</deviceset>
</devicesets>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
<class number="1" name="power" width="0.254" drill="0">
</class>
<class number="2" name="gnd" width="0" drill="0">
</class>
</classes>
<parts>
<part name="FRAME1" library="My Stuff" deviceset="A4L-LOC" device=""/>
<part name="U$3" library="FH19C-9S-0.5SH" deviceset="FH19C-9S-0.5SH_10-FFC" device=""/>
<part name="3V" library="Adafruit Feather M0 Express" deviceset="MICROBUILDER_TESTPOINT" device="1.5X2.0MM_NOCREAM"/>
<part name="GND" library="Adafruit Feather M0 Express" deviceset="MICROBUILDER_TESTPOINT" device="1.5X2.0MM_NOCREAM"/>
<part name="D1" library="Adafruit Feather M0 Express" deviceset="MICROBUILDER_TESTPOINT" device="1.5X2.0MM_NOCREAM"/>
<part name="D0" library="Adafruit Feather M0 Express" deviceset="MICROBUILDER_TESTPOINT" device="1.5X2.0MM_NOCREAM"/>
<part name="A2" library="Adafruit Feather M0 Express" deviceset="MICROBUILDER_TESTPOINT" device="1.5X2.0MM_NOCREAM"/>
<part name="A1" library="Adafruit Feather M0 Express" deviceset="MICROBUILDER_TESTPOINT" device="1.5X2.0MM_NOCREAM"/>
<part name="SDA" library="Adafruit Feather M0 Express" deviceset="MICROBUILDER_TESTPOINT" device="1.5X2.0MM_NOCREAM"/>
<part name="SCL" library="Adafruit Feather M0 Express" deviceset="MICROBUILDER_TESTPOINT" device="1.5X2.0MM_NOCREAM"/>
<part name="A0" library="Adafruit Feather M0 Express" deviceset="MICROBUILDER_TESTPOINT" device="1.5X2.0MM_NOCREAM"/>
</parts>
<sheets>
<sheet>
<plain>
</plain>
<instances>
<instance part="FRAME1" gate="G$1" x="0" y="0" smashed="yes">
<attribute name="DRAWING_NAME" x="217.17" y="15.24" size="2.54" layer="94"/>
<attribute name="LAST_DATE_TIME" x="217.17" y="10.16" size="2.286" layer="94"/>
<attribute name="SHEET" x="228.473" y="5.08" size="2.54" layer="94"/>
</instance>
<instance part="U$3" gate="G$1" x="45.72" y="73.66" smashed="yes">
<attribute name="NAME" x="54.61" y="91.44" size="1.778" layer="95" align="center-left"/>
<attribute name="VALUE" x="54.61" y="88.9" size="1.778" layer="96" align="center-left"/>
</instance>
<instance part="3V" gate="G$1" x="93.98" y="83.82" smashed="yes" rot="R270">
<attribute name="NAME" x="99.568" y="83.82" size="1.27" layer="95" align="center-left"/>
<attribute name="VALUE" x="99.568" y="82.169" size="1.27" layer="95" align="center-left"/>
</instance>
<instance part="GND" gate="G$1" x="93.98" y="81.28" smashed="yes" rot="R270">
<attribute name="NAME" x="99.568" y="81.28" size="1.27" layer="95" align="center-left"/>
<attribute name="VALUE" x="99.568" y="79.629" size="1.27" layer="95" align="center-left"/>
</instance>
<instance part="D1" gate="G$1" x="93.98" y="78.74" smashed="yes" rot="R270">
<attribute name="NAME" x="99.568" y="78.74" size="1.27" layer="95" align="center-left"/>
<attribute name="VALUE" x="99.568" y="77.089" size="1.27" layer="95" align="center-left"/>
</instance>
<instance part="D0" gate="G$1" x="93.98" y="76.2" smashed="yes" rot="R270">
<attribute name="NAME" x="99.568" y="76.2" size="1.27" layer="95" align="center-left"/>
<attribute name="VALUE" x="99.568" y="74.549" size="1.27" layer="95" align="center-left"/>
</instance>
<instance part="A2" gate="G$1" x="93.98" y="73.66" smashed="yes" rot="R270">
<attribute name="NAME" x="99.568" y="73.66" size="1.27" layer="95" align="center-left"/>
<attribute name="VALUE" x="99.568" y="72.009" size="1.27" layer="95" align="center-left"/>
</instance>
<instance part="A1" gate="G$1" x="93.98" y="71.12" smashed="yes" rot="R270">
<attribute name="NAME" x="99.568" y="71.12" size="1.27" layer="95" align="center-left"/>
<attribute name="VALUE" x="99.568" y="69.469" size="1.27" layer="95" align="center-left"/>
</instance>
<instance part="SDA" gate="G$1" x="93.98" y="68.58" smashed="yes" rot="R270">
<attribute name="NAME" x="99.568" y="68.58" size="1.27" layer="95" align="center-left"/>
<attribute name="VALUE" x="99.568" y="66.929" size="1.27" layer="95" align="center-left"/>
</instance>
<instance part="SCL" gate="G$1" x="93.98" y="66.04" smashed="yes" rot="R270">
<attribute name="NAME" x="99.568" y="66.04" size="1.27" layer="95" align="center-left"/>
<attribute name="VALUE" x="99.568" y="64.389" size="1.27" layer="95" align="center-left"/>
</instance>
<instance part="A0" gate="G$1" x="93.98" y="63.5" smashed="yes" rot="R270">
<attribute name="NAME" x="99.568" y="63.5" size="1.27" layer="95" align="center-left"/>
<attribute name="VALUE" x="99.568" y="61.849" size="1.27" layer="95" align="center-left"/>
</instance>
</instances>
<busses>
</busses>
<nets>
<net name="SCL" class="0">
<segment>
<pinref part="U$3" gate="G$1" pin="8"/>
<wire x1="93.98" y1="66.04" x2="58.42" y2="66.04" width="0.1524" layer="91"/>
<label x="68.58" y="66.04" size="1.778" layer="95"/>
<pinref part="SCL" gate="G$1" pin="P$1"/>
</segment>
</net>
<net name="SDA" class="0">
<segment>
<pinref part="U$3" gate="G$1" pin="7"/>
<wire x1="93.98" y1="68.58" x2="58.42" y2="68.58" width="0.1524" layer="91"/>
<label x="68.58" y="68.58" size="1.778" layer="95"/>
<pinref part="SDA" gate="G$1" pin="P$1"/>
</segment>
</net>
<net name="A2/MOSI" class="0">
<segment>
<pinref part="U$3" gate="G$1" pin="5"/>
<wire x1="93.98" y1="73.66" x2="58.42" y2="73.66" width="0.1524" layer="91"/>
<label x="68.58" y="73.66" size="1.778" layer="95"/>
<pinref part="A2" gate="G$1" pin="P$1"/>
</segment>
</net>
<net name="GND" class="1">
<segment>
<pinref part="U$3" gate="G$1" pin="2"/>
<wire x1="93.98" y1="81.28" x2="58.42" y2="81.28" width="0.1524" layer="91"/>
<label x="68.58" y="81.28" size="1.778" layer="95"/>
<pinref part="GND" gate="G$1" pin="P$1"/>
</segment>
</net>
<net name="VCC" class="1">
<segment>
<pinref part="U$3" gate="G$1" pin="1"/>
<wire x1="93.98" y1="83.82" x2="58.42" y2="83.82" width="0.1524" layer="91"/>
<label x="68.58" y="83.82" size="1.778" layer="95"/>
<pinref part="3V" gate="G$1" pin="P$1"/>
</segment>
</net>
<net name="A1/SCK" class="0">
<segment>
<pinref part="U$3" gate="G$1" pin="6"/>
<wire x1="58.42" y1="71.12" x2="93.98" y2="71.12" width="0.1524" layer="91"/>
<label x="68.58" y="71.12" size="1.778" layer="95"/>
<pinref part="A1" gate="G$1" pin="P$1"/>
</segment>
</net>
<net name="A0" class="0">
<segment>
<pinref part="U$3" gate="G$1" pin="9"/>
<wire x1="58.42" y1="63.5" x2="93.98" y2="63.5" width="0.1524" layer="91"/>
<label x="68.58" y="63.5" size="1.778" layer="95"/>
<pinref part="A0" gate="G$1" pin="P$1"/>
</segment>
</net>
<net name="D0/CS" class="0">
<segment>
<pinref part="U$3" gate="G$1" pin="4"/>
<wire x1="93.98" y1="76.2" x2="58.42" y2="76.2" width="0.1524" layer="91"/>
<label x="68.58" y="76.2" size="1.778" layer="95"/>
<pinref part="D0" gate="G$1" pin="P$1"/>
</segment>
</net>
<net name="D1/MISO" class="0">
<segment>
<pinref part="U$3" gate="G$1" pin="3"/>
<wire x1="93.98" y1="78.74" x2="58.42" y2="78.74" width="0.1524" layer="91"/>
<label x="68.58" y="78.74" size="1.778" layer="95"/>
<pinref part="D1" gate="G$1" pin="P$1"/>
</segment>
</net>
</nets>
</sheet>
</sheets>
<errors>
<approved hash="102,1,124.46,66.04,OUT,3.3V,,,,"/>
<approved hash="104,1,320.04,111.76,IC3,VDDA,3.3V,,,"/>
<approved hash="104,1,320.04,106.68,IC3,VDDIN,3.3V,,,"/>
<approved hash="104,1,320.04,45.72,IC3,GNDA,GND,,,"/>
<approved hash="104,1,406.4,162.56,LED1,VDD,3.3V,,,"/>
<approved hash="104,1,104.14,66.04,U1,IN,VOUT,,,"/>
<approved hash="113,1,139.596,107.846,FRAME1,,,,,"/>
<approved hash="113,1,129.777,128.401,JP3,,,,,"/>
<approved hash="113,1,167.403,125.599,JP4,,,,,"/>
</errors>
</schematic>
</drawing>
<compatibility>
<note version="6.3" minversion="6.2.2" severity="warning">
Since Version 6.2.2 text objects can contain more than one line,
which will not be processed correctly with this version.
</note>
</compatibility>
</eagle>

<a id='n991' href='#n991'>991</a>
<a id='n992' href='#n992'>992</a>
<a id='n993' href='#n993'>993</a>
<a id='n994' href='#n994'>994</a>
<a id='n995' href='#n995'>995</a>
<a id='n996' href='#n996'>996</a>
<a id='n997' href='#n997'>997</a>
<a id='n998' href='#n998'>998</a>
<a id='n999' href='#n999'>999</a>
<a id='n1000' href='#n1000'>1000</a>
<a id='n1001' href='#n1001'>1001</a>
<a id='n1002' href='#n1002'>1002</a>
<a id='n1003' href='#n1003'>1003</a>
<a id='n1004' href='#n1004'>1004</a>
<a id='n1005' href='#n1005'>1005</a>
<a id='n1006' href='#n1006'>1006</a>
<a id='n1007' href='#n1007'>1007</a>
<a id='n1008' href='#n1008'>1008</a>
<a id='n1009' href='#n1009'>1009</a>
<a id='n1010' href='#n1010'>1010</a>
<a id='n1011' href='#n1011'>1011</a>
<a id='n1012' href='#n1012'>1012</a>
<a id='n1013' href='#n1013'>1013</a>
<a id='n1014' href='#n1014'>1014</a>
<a id='n1015' href='#n1015'>1015</a>
<a id='n1016' href='#n1016'>1016</a>
<a id='n1017' href='#n1017'>1017</a>
<a id='n1018' href='#n1018'>1018</a>
<a id='n1019' href='#n1019'>1019</a>
<a id='n1020' href='#n1020'>1020</a>
<a id='n1021' href='#n1021'>1021</a>
<a id='n1022' href='#n1022'>1022</a>
<a id='n1023' href='#n1023'>1023</a>
<a id='n1024' href='#n1024'>1024</a>
<a id='n1025' href='#n1025'>1025</a>
<a id='n1026' href='#n1026'>1026</a>
<a id='n1027' href='#n1027'>1027</a>
<a id='n1028' href='#n1028'>1028</a>
<a id='n1029' href='#n1029'>1029</a>
<a id='n1030' href='#n1030'>1030</a>
<a id='n1031' href='#n1031'>1031</a>
<a id='n1032' href='#n1032'>1032</a>
<a id='n1033' href='#n1033'>1033</a>
<a id='n1034' href='#n1034'>1034</a>
<a id='n1035' href='#n1035'>1035</a>
<a id='n1036' href='#n1036'>1036</a>
<a id='n1037' href='#n1037'>1037</a>
<a id='n1038' href='#n1038'>1038</a>
<a id='n1039' href='#n1039'>1039</a>
<a id='n1040' href='#n1040'>1040</a>
<a id='n1041' href='#n1041'>1041</a>
<a id='n1042' href='#n1042'>1042</a>
<a id='n1043' href='#n1043'>1043</a>
<a id='n1044' href='#n1044'>1044</a>
<a id='n1045' href='#n1045'>1045</a>
<a id='n1046' href='#n1046'>1046</a>
<a id='n1047' href='#n1047'>1047</a>
<a id='n1048' href='#n1048'>1048</a>
<a id='n1049' href='#n1049'>1049</a>
<a id='n1050' href='#n1050'>1050</a>
<a id='n1051' href='#n1051'>1051</a>
<a id='n1052' href='#n1052'>1052</a>
<a id='n1053' href='#n1053'>1053</a>
<a id='n1054' href='#n1054'>1054</a>
<a id='n1055' href='#n1055'>1055</a>
<a id='n1056' href='#n1056'>1056</a>
<a id='n1057' href='#n1057'>1057</a>
<a id='n1058' href='#n1058'>1058</a>
<a id='n1059' href='#n1059'>1059</a>
<a id='n1060' href='#n1060'>1060</a>
<a id='n1061' href='#n1061'>1061</a>
<a id='n1062' href='#n1062'>1062</a>
<a id='n1063' href='#n1063'>1063</a>
<a id='n1064' href='#n1064'>1064</a>
<a id='n1065' href='#n1065'>1065</a>
<a id='n1066' href='#n1066'>1066</a>
<a id='n1067' href='#n1067'>1067</a>
<a id='n1068' href='#n1068'>1068</a>
<a id='n1069' href='#n1069'>1069</a>
<a id='n1070' href='#n1070'>1070</a>
<a id='n1071' href='#n1071'>1071</a>
<a id='n1072' href='#n1072'>1072</a>
<a id='n1073' href='#n1073'>1073</a>
<a id='n1074' href='#n1074'>1074</a>
<a id='n1075' href='#n1075'>1075</a>
<a id='n1076' href='#n1076'>1076</a>
<a id='n1077' href='#n1077'>1077</a>
<a id='n1078' href='#n1078'>1078</a>
<a id='n1079' href='#n1079'>1079</a>
<a id='n1080' href='#n1080'>1080</a>
<a id='n1081' href='#n1081'>1081</a>
<a id='n1082' href='#n1082'>1082</a>
<a id='n1083' href='#n1083'>1083</a>
<a id='n1084' href='#n1084'>1084</a>
<a id='n1085' href='#n1085'>1085</a>
<a id='n1086' href='#n1086'>1086</a>
<a id='n1087' href='#n1087'>1087</a>
<a id='n1088' href='#n1088'>1088</a>
<a id='n1089' href='#n1089'>1089</a>
<a id='n1090' href='#n1090'>1090</a>
<a id='n1091' href='#n1091'>1091</a>
<a id='n1092' href='#n1092'>1092</a>
<a id='n1093' href='#n1093'>1093</a>
<a id='n1094' href='#n1094'>1094</a>
<a id='n1095' href='#n1095'>1095</a>
<a id='n1096' href='#n1096'>1096</a>
<a id='n1097' href='#n1097'>1097</a>
<a id='n1098' href='#n1098'>1098</a>
<a id='n1099' href='#n1099'>1099</a>
<a id='n1100' href='#n1100'>1100</a>
<a id='n1101' href='#n1101'>1101</a>
<a id='n1102' href='#n1102'>1102</a>
<a id='n1103' href='#n1103'>1103</a>
<a id='n1104' href='#n1104'>1104</a>
<a id='n1105' href='#n1105'>1105</a>
<a id='n1106' href='#n1106'>1106</a>
<a id='n1107' href='#n1107'>1107</a>
<a id='n1108' href='#n1108'>1108</a>
<a id='n1109' href='#n1109'>1109</a>
<a id='n1110' href='#n1110'>1110</a>
<a id='n1111' href='#n1111'>1111</a>
<a id='n1112' href='#n1112'>1112</a>
<a id='n1113' href='#n1113'>1113</a>
<a id='n1114' href='#n1114'>1114</a>
<a id='n1115' href='#n1115'>1115</a>
<a id='n1116' href='#n1116'>1116</a>
<a id='n1117' href='#n1117'>1117</a>
<a id='n1118' href='#n1118'>1118</a>
<a id='n1119' href='#n1119'>1119</a>
<a id='n1120' href='#n1120'>1120</a>
<a id='n1121' href='#n1121'>1121</a>
<a id='n1122' href='#n1122'>1122</a>
<a id='n1123' href='#n1123'>1123</a>
<a id='n1124' href='#n1124'>1124</a>
<a id='n1125' href='#n1125'>1125</a>
<a id='n1126' href='#n1126'>1126</a>
<a id='n1127' href='#n1127'>1127</a>
<a id='n1128' href='#n1128'>1128</a>
<a id='n1129' href='#n1129'>1129</a>
<a id='n1130' href='#n1130'>1130</a>
<a id='n1131' href='#n1131'>1131</a>
<a id='n1132' href='#n1132'>1132</a>
<a id='n1133' href='#n1133'>1133</a>
<a id='n1134' href='#n1134'>1134</a>
<a id='n1135' href='#n1135'>1135</a>
<a id='n1136' href='#n1136'>1136</a>
<a id='n1137' href='#n1137'>1137</a>
<a id='n1138' href='#n1138'>1138</a>
<a id='n1139' href='#n1139'>1139</a>
<a id='n1140' href='#n1140'>1140</a>
<a id='n1141' href='#n1141'>1141</a>
<a id='n1142' href='#n1142'>1142</a>
<a id='n1143' href='#n1143'>1143</a>
<a id='n1144' href='#n1144'>1144</a>
<a id='n1145' href='#n1145'>1145</a>
<a id='n1146' href='#n1146'>1146</a>
<a id='n1147' href='#n1147'>1147</a>
<a id='n1148' href='#n1148'>1148</a>
<a id='n1149' href='#n1149'>1149</a>
<a id='n1150' href='#n1150'>1150</a>
<a id='n1151' href='#n1151'>1151</a>
<a id='n1152' href='#n1152'>1152</a>
<a id='n1153' href='#n1153'>1153</a>
<a id='n1154' href='#n1154'>1154</a>
<a id='n1155' href='#n1155'>1155</a>
<a id='n1156' href='#n1156'>1156</a>
<a id='n1157' href='#n1157'>1157</a>
<a id='n1158' href='#n1158'>1158</a>
<a id='n1159' href='#n1159'>1159</a>
<a id='n1160' href='#n1160'>1160</a>
<a id='n1161' href='#n1161'>1161</a>
<a id='n1162' href='#n1162'>1162</a>
<a id='n1163' href='#n1163'>1163</a>
<a id='n1164' href='#n1164'>1164</a>
</pre></td>
<td class='lines'><pre><code><style>pre { line-height: 125%; margin: 0; }
td.linenos pre { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
span.linenos { color: #000000; background-color: #f0f0f0; padding: 0 5px 0 5px; }
td.linenos pre.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding: 0 5px 0 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span><span class="c1">--  Error message handling for vhdl.</span>
<span class="c1">--  Copyright (C) 2002-2019 Tristan Gingold</span>
<span class="c1">--</span>
<span class="c1">--  This program is free software: you can redistribute it and/or modify</span>
<span class="c1">--  it under the terms of the GNU General Public License as published by</span>
<span class="c1">--  the Free Software Foundation, either version 2 of the License, or</span>
<span class="c1">--  (at your option) any later version.</span>
<span class="c1">--</span>
<span class="c1">--  This program is distributed in the hope that it will be useful,</span>
<span class="c1">--  but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<span class="c1">--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<span class="c1">--  GNU General Public License for more details.</span>
<span class="c1">--</span>
<span class="c1">--  You should have received a copy of the GNU General Public License</span>
<span class="c1">--  along with this program.  If not, see &lt;gnu.org/licenses&gt;.</span>

<span class="kn">with</span> <span class="nn">Flags</span><span class="p">;</span> <span class="kn">use</span> <span class="nn">Flags</span><span class="p">;</span>
<span class="kn">with</span> <span class="nn">Name_Table</span><span class="p">;</span>
<span class="kn">with</span> <span class="nn">Files_Map</span><span class="p">;</span>
<span class="kn">with</span> <span class="nn">Vhdl.Utils</span><span class="p">;</span> <span class="kn">use</span> <span class="nn">Vhdl.Utils</span><span class="p">;</span>
<span class="kn">with</span> <span class="nn">Ada.Strings.Unbounded</span><span class="p">;</span>
<span class="kn">with</span> <span class="nn">Std_Names</span><span class="p">;</span>
<span class="kn">with</span> <span class="nn">Logging</span><span class="p">;</span> <span class="kn">use</span> <span class="nn">Logging</span><span class="p">;</span>

<span class="kd">package</span> <span class="kd">body</span> <span class="nc">Vhdl.Errors</span> <span class="kr">is</span>
   <span class="kd">procedure</span> <span class="nf">Error_Kind</span> <span class="p">(</span><span class="nv">Msg</span> <span class="p">: </span><span class="nv">String</span><span class="p">;</span> <span class="nv">N</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">)</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="n">Log_Line</span> <span class="p">(</span><span class="n">Msg</span> <span class="o">&amp;</span> <span class="s">&quot;: cannot handle &quot;</span> <span class="o">&amp;</span> <span class="n">Iir_Kind</span><span class="p">&#39;</span><span class="na">Image</span> <span class="p">(</span><span class="n">Get_Kind</span> <span class="p">(</span><span class="n">N</span><span class="p">))</span>
                  <span class="o">&amp;</span> <span class="s">&quot; (&quot;</span> <span class="o">&amp;</span> <span class="n">Disp_Location</span> <span class="p">(</span><span class="n">N</span><span class="p">)</span> <span class="o">&amp;</span> <span class="s s-Character">&#39;)&#39;</span><span class="p">);</span>
      <span class="kr">raise</span> <span class="n">Internal_Error</span><span class="p">;</span>
   <span class="kr">end</span> <span class="nf">Error_Kind</span><span class="p">;</span>

   <span class="kd">procedure</span> <span class="nf">Error_Kind</span> <span class="p">(</span><span class="nv">Msg</span> <span class="p">: </span><span class="nv">String</span><span class="p">;</span> <span class="nv">Def</span> <span class="p">: </span><span class="nv">Iir_Predefined_Functions</span><span class="p">)</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="n">Log_Line</span>
        <span class="p">(</span><span class="n">Msg</span> <span class="o">&amp;</span> <span class="s">&quot;: cannot handle &quot;</span> <span class="o">&amp;</span> <span class="n">Iir_Predefined_Functions</span><span class="p">&#39;</span><span class="na">Image</span> <span class="p">(</span><span class="n">Def</span><span class="p">));</span>
      <span class="kr">raise</span> <span class="n">Internal_Error</span><span class="p">;</span>
   <span class="kr">end</span> <span class="nf">Error_Kind</span><span class="p">;</span>

   <span class="kd">function</span> <span class="nf">Get_Location_Safe</span> <span class="p">(</span><span class="nv">N</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">)</span> <span class="kr">return</span> <span class="n">Location_Type</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="kr">if</span> <span class="n">N</span> <span class="o">=</span> <span class="n">Null_Iir</span> <span class="kr">then</span>
         <span class="kr">return</span> <span class="n">Location_Nil</span><span class="p">;</span>
      <span class="kr">else</span>
         <span class="kr">return</span> <span class="n">Get_Location</span> <span class="p">(</span><span class="n">N</span><span class="p">);</span>
      <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
   <span class="kr">end</span> <span class="nf">Get_Location_Safe</span><span class="p">;</span>

   <span class="kd">function</span> <span class="nf">&quot;+&quot;</span> <span class="p">(</span><span class="nv">L</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">)</span> <span class="kr">return</span> <span class="n">Location_Type</span> <span class="kr">renames</span> <span class="n">Get_Location_Safe</span><span class="p">;</span>

   <span class="kd">function</span> <span class="nf">&quot;+&quot;</span> <span class="p">(</span><span class="nv">L</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">)</span> <span class="kr">return</span> <span class="n">Source_Coord_Type</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="kr">return</span> <span class="o">+</span><span class="n">Get_Location_Safe</span> <span class="p">(</span><span class="n">L</span><span class="p">);</span>
   <span class="kr">end</span> <span class="nf">&quot;+&quot;</span><span class="p">;</span>

   <span class="kd">procedure</span> <span class="nf">Warning_Msg_Sem</span> <span class="p">(</span><span class="nv">Id</span> <span class="p">: </span><span class="nv">Msgid_Warnings</span><span class="p">;</span>
                              <span class="nv">Loc</span> <span class="p">: </span><span class="nv">Location_Type</span><span class="p">;</span>
                              <span class="nv">Msg</span><span class="p">: </span><span class="nv">String</span><span class="p">;</span>
                              <span class="nv">Args</span> <span class="p">: </span><span class="nv">Earg_Arr</span> <span class="p">:=</span> <span class="nv">No_Eargs</span><span class="p">)</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="kr">if</span> <span class="n">Flags</span><span class="p">.</span><span class="n">Flag_Only_Elab_Warnings</span> <span class="kr">then</span>
         <span class="kr">return</span><span class="p">;</span>
      <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
      <span class="n">Report_Msg</span> <span class="p">(</span><span class="n">Id</span><span class="p">,</span> <span class="n">Semantic</span><span class="p">,</span> <span class="o">+</span><span class="n">Loc</span><span class="p">,</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">Args</span><span class="p">);</span>
   <span class="kr">end</span> <span class="nf">Warning_Msg_Sem</span><span class="p">;</span>

   <span class="kd">procedure</span> <span class="nf">Warning_Msg_Sem</span> <span class="p">(</span><span class="nv">Id</span> <span class="p">: </span><span class="nv">Msgid_Warnings</span><span class="p">;</span>
                              <span class="nv">Loc</span> <span class="p">: </span><span class="nv">Location_Type</span><span class="p">;</span>
                              <span class="nv">Msg</span><span class="p">: </span><span class="nv">String</span><span class="p">;</span>
                              <span class="nv">Arg1</span> <span class="p">: </span><span class="nv">Earg_Type</span><span class="p">)</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="n">Warning_Msg_Sem</span> <span class="p">(</span><span class="n">Id</span><span class="p">,</span> <span class="n">Loc</span><span class="p">,</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">Earg_Arr</span><span class="p">&#39;(</span><span class="mi">1</span> <span class="p">=&gt;</span> <span class="n">Arg1</span><span class="p">));</span>
   <span class="kr">end</span> <span class="nf">Warning_Msg_Sem</span><span class="p">;</span>

   <span class="kd">procedure</span> <span class="nf">Warning_Msg_Elab</span> <span class="p">(</span><span class="nv">Id</span> <span class="p">: </span><span class="nv">Msgid_Warnings</span><span class="p">;</span>
                               <span class="nv">Loc</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">;</span>
                               <span class="nv">Msg</span><span class="p">: </span><span class="nv">String</span><span class="p">;</span>
                               <span class="nv">Arg1</span> <span class="p">: </span><span class="nv">Earg_Type</span><span class="p">)</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="n">Report_Msg</span> <span class="p">(</span><span class="n">Id</span><span class="p">,</span> <span class="n">Elaboration</span><span class="p">,</span> <span class="o">+</span><span class="n">Loc</span><span class="p">,</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">Earg_Arr</span><span class="p">&#39;(</span><span class="mi">1</span> <span class="p">=&gt;</span> <span class="n">Arg1</span><span class="p">));</span>
   <span class="kr">end</span> <span class="nf">Warning_Msg_Elab</span><span class="p">;</span>

   <span class="kd">procedure</span> <span class="nf">Warning_Msg_Elab</span> <span class="p">(</span><span class="nv">Id</span> <span class="p">: </span><span class="nv">Msgid_Warnings</span><span class="p">;</span>
                               <span class="nv">Loc</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">;</span>
                               <span class="nv">Msg</span><span class="p">: </span><span class="nv">String</span><span class="p">;</span>
                               <span class="nv">Args</span> <span class="p">: </span><span class="nv">Earg_Arr</span> <span class="p">:=</span> <span class="nv">No_Eargs</span><span class="p">)</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="n">Report_Msg</span> <span class="p">(</span><span class="n">Id</span><span class="p">,</span> <span class="n">Elaboration</span><span class="p">,</span> <span class="o">+</span><span class="n">Loc</span><span class="p">,</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">Args</span><span class="p">);</span>
   <span class="kr">end</span> <span class="nf">Warning_Msg_Elab</span><span class="p">;</span>

   <span class="kd">procedure</span> <span class="nf">Error_Msg_Sem</span> <span class="p">(</span><span class="nv">Loc</span><span class="p">: </span><span class="nv">Location_Type</span><span class="p">;</span>
                            <span class="nv">Msg</span><span class="p">: </span><span class="nv">String</span><span class="p">;</span>
                            <span class="nv">Args</span> <span class="p">: </span><span class="nv">Earg_Arr</span> <span class="p">:=</span> <span class="nv">No_Eargs</span><span class="p">)</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="n">Report_Msg</span> <span class="p">(</span><span class="n">Msgid_Error</span><span class="p">,</span> <span class="n">Semantic</span><span class="p">,</span> <span class="o">+</span><span class="n">Loc</span><span class="p">,</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">Args</span><span class="p">);</span>
   <span class="kr">end</span> <span class="nf">Error_Msg_Sem</span><span class="p">;</span>

   <span class="kd">procedure</span> <span class="nf">Error_Msg_Sem</span>
     <span class="p">(</span><span class="nv">Loc</span><span class="p">: </span><span class="nv">Location_Type</span><span class="p">;</span> <span class="nv">Msg</span><span class="p">: </span><span class="nv">String</span><span class="p">;</span> <span class="nv">Arg1</span> <span class="p">: </span><span class="nv">Earg_Type</span><span class="p">)</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="n">Report_Msg</span> <span class="p">(</span><span class="n">Msgid_Error</span><span class="p">,</span> <span class="n">Semantic</span><span class="p">,</span> <span class="o">+</span><span class="n">Loc</span><span class="p">,</span> <span class="n">Msg</span><span class="p">,</span> <span class="p">(</span><span class="mi">1</span> <span class="p">=&gt;</span> <span class="n">Arg1</span><span class="p">));</span>
   <span class="kr">end</span> <span class="nf">Error_Msg_Sem</span><span class="p">;</span>

   <span class="n">Relaxed_Hint_Done</span> <span class="p">:</span> <span class="kt">Boolean</span> <span class="p">:=</span> <span class="kc">False</span><span class="p">;</span>

   <span class="kd">procedure</span> <span class="nf">Error_Msg_Relaxed</span> <span class="p">(</span><span class="nv">Origin</span> <span class="p">: </span><span class="nv">Report_Origin</span><span class="p">;</span>
                                <span class="nv">Id</span> <span class="p">: </span><span class="nv">Msgid_Warnings</span><span class="p">;</span>
                                <span class="nv">Msg</span> <span class="p">: </span><span class="nv">String</span><span class="p">;</span>
                                <span class="nv">Loc</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">;</span>
                                <span class="nv">Args</span> <span class="p">: </span><span class="nv">Earg_Arr</span> <span class="p">:=</span> <span class="nv">No_Eargs</span><span class="p">)</span>
   <span class="kr">is</span>
      <span class="n">Level</span> <span class="p">:</span> <span class="n">Msgid_Type</span><span class="p">;</span>
   <span class="kr">begin</span>
      <span class="kr">if</span> <span class="n">Flag_Relaxed_Rules</span> <span class="kr">then</span>
         <span class="kr">if</span> <span class="ow">not</span> <span class="n">Is_Warning_Enabled</span> <span class="p">(</span><span class="n">Id</span><span class="p">)</span> <span class="kr">then</span>
            <span class="kr">return</span><span class="p">;</span>
         <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
         <span class="n">Level</span> <span class="p">:=</span> <span class="n">Id</span><span class="p">;</span>
      <span class="kr">else</span>
         <span class="n">Level</span> <span class="p">:=</span> <span class="n">Msgid_Error</span><span class="p">;</span>
      <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
      <span class="n">Report_Msg</span> <span class="p">(</span><span class="n">Level</span><span class="p">,</span> <span class="n">Origin</span><span class="p">,</span> <span class="o">+</span><span class="n">Loc</span><span class="p">,</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">Args</span><span class="p">);</span>
      <span class="kr">if</span> <span class="ow">not</span> <span class="n">Relaxed_Hint_Done</span> <span class="ow">and then</span> <span class="n">Level</span> <span class="o">=</span> <span class="n">Msgid_Error</span> <span class="kr">then</span>
         <span class="n">Report_Msg</span>
           <span class="p">(</span><span class="n">Msgid_Note</span><span class="p">,</span> <span class="n">Origin</span><span class="p">,</span> <span class="o">+</span><span class="n">Loc</span><span class="p">,</span>
            <span class="s">&quot;(you can use -frelaxed to turn this error into a warning)&quot;</span><span class="p">);</span>
         <span class="c1">--  Emit the message only once, although it applies for many error.</span>
         <span class="c1">--  Maybe do it once per Id ?</span>
         <span class="n">Relaxed_Hint_Done</span> <span class="p">:=</span> <span class="kc">True</span><span class="p">;</span>
      <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
   <span class="kr">end</span> <span class="nf">Error_Msg_Relaxed</span><span class="p">;</span>

   <span class="kd">procedure</span> <span class="nf">Error_Msg_Sem_Relaxed</span> <span class="p">(</span><span class="nv">Loc</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">;</span>
                                    <span class="nv">Id</span> <span class="p">: </span><span class="nv">Msgid_Warnings</span><span class="p">;</span>
                                    <span class="nv">Msg</span> <span class="p">: </span><span class="nv">String</span><span class="p">;</span>
                                    <span class="nv">Args</span> <span class="p">: </span><span class="nv">Earg_Arr</span> <span class="p">:=</span> <span class="nv">No_Eargs</span><span class="p">)</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="n">Error_Msg_Relaxed</span> <span class="p">(</span><span class="n">Semantic</span><span class="p">,</span> <span class="n">Id</span><span class="p">,</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">Loc</span><span class="p">,</span> <span class="n">Args</span><span class="p">);</span>
   <span class="kr">end</span> <span class="nf">Error_Msg_Sem_Relaxed</span><span class="p">;</span>

   <span class="c1">-- Disp a message during elaboration.</span>
   <span class="kd">procedure</span> <span class="nf">Error_Msg_Elab</span>
     <span class="p">(</span><span class="nv">Msg</span><span class="p">: </span><span class="nv">String</span><span class="p">;</span> <span class="nv">Args</span> <span class="p">: </span><span class="nv">Earg_Arr</span> <span class="p">:=</span> <span class="nv">No_Eargs</span><span class="p">)</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="n">Report_Msg</span> <span class="p">(</span><span class="n">Msgid_Error</span><span class="p">,</span> <span class="n">Elaboration</span><span class="p">,</span> <span class="n">No_Source_Coord</span><span class="p">,</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">Args</span><span class="p">);</span>
   <span class="kr">end</span> <span class="nf">Error_Msg_Elab</span><span class="p">;</span>

   <span class="kd">procedure</span> <span class="nf">Error_Msg_Elab</span>
     <span class="p">(</span><span class="nv">Msg</span><span class="p">: </span><span class="nv">String</span><span class="p">;</span> <span class="nv">Arg1</span> <span class="p">: </span><span class="nv">Earg_Type</span><span class="p">)</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="n">Error_Msg_Elab</span> <span class="p">(</span><span class="n">Msg</span><span class="p">,</span> <span class="n">Earg_Arr</span><span class="p">&#39;(</span><span class="mi">1</span> <span class="p">=&gt;</span> <span class="n">Arg1</span><span class="p">));</span>
   <span class="kr">end</span> <span class="nf">Error_Msg_Elab</span><span class="p">;</span>

   <span class="kd">procedure</span> <span class="nf">Error_Msg_Elab</span>
     <span class="p">(</span><span class="nv">Loc</span><span class="p">: </span><span class="nv">Iir</span><span class="p">;</span> <span class="nv">Msg</span><span class="p">: </span><span class="nv">String</span><span class="p">;</span> <span class="nv">Args</span> <span class="p">: </span><span class="nv">Earg_Arr</span> <span class="p">:=</span> <span class="nv">No_Eargs</span><span class="p">)</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="n">Report_Msg</span> <span class="p">(</span><span class="n">Msgid_Error</span><span class="p">,</span> <span class="n">Elaboration</span><span class="p">,</span> <span class="o">+</span><span class="n">Loc</span><span class="p">,</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">Args</span><span class="p">);</span>
   <span class="kr">end</span> <span class="nf">Error_Msg_Elab</span><span class="p">;</span>

   <span class="kd">procedure</span> <span class="nf">Error_Msg_Elab</span>
     <span class="p">(</span><span class="nv">Loc</span><span class="p">: </span><span class="nv">Iir</span><span class="p">;</span> <span class="nv">Msg</span><span class="p">: </span><span class="nv">String</span><span class="p">;</span> <span class="nv">Arg1</span> <span class="p">: </span><span class="nv">Earg_Type</span><span class="p">)</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="n">Error_Msg_Elab</span> <span class="p">(</span><span class="n">Loc</span><span class="p">,</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">Earg_Arr</span><span class="p">&#39;(</span><span class="mi">1</span> <span class="p">=&gt;</span> <span class="n">Arg1</span><span class="p">));</span>
   <span class="kr">end</span> <span class="nf">Error_Msg_Elab</span><span class="p">;</span>

   <span class="kd">procedure</span> <span class="nf">Error_Msg_Elab_Relaxed</span> <span class="p">(</span><span class="nv">Loc</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">;</span>
                                     <span class="nv">Id</span> <span class="p">: </span><span class="nv">Msgid_Warnings</span><span class="p">;</span>
                                     <span class="nv">Msg</span> <span class="p">: </span><span class="nv">String</span><span class="p">;</span>
                                     <span class="nv">Args</span> <span class="p">: </span><span class="nv">Earg_Arr</span> <span class="p">:=</span> <span class="nv">No_Eargs</span><span class="p">)</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="n">Error_Msg_Relaxed</span> <span class="p">(</span><span class="n">Elaboration</span><span class="p">,</span> <span class="n">Id</span><span class="p">,</span> <span class="n">Msg</span><span class="p">,</span> <span class="n">Loc</span><span class="p">,</span> <span class="n">Args</span><span class="p">);</span>
   <span class="kr">end</span> <span class="nf">Error_Msg_Elab_Relaxed</span><span class="p">;</span>

   <span class="c1">-- Disp a bug message.</span>
   <span class="kd">procedure</span> <span class="nf">Error_Internal</span> <span class="p">(</span><span class="nv">Expr</span><span class="p">: </span><span class="nv">in</span> <span class="nv">Iir</span><span class="p">;</span> <span class="nv">Msg</span><span class="p">: </span><span class="nv">String</span> <span class="p">:=</span> <span class="s">&quot;&quot;</span><span class="p">)</span>
   <span class="kr">is</span>
      <span class="kr">pragma</span> <span class="cp">Unreferenced</span> <span class="p">(</span><span class="n">Expr</span><span class="p">);</span>
   <span class="kr">begin</span>
      <span class="n">Log</span> <span class="p">(</span><span class="s">&quot;internal error: &quot;</span><span class="p">);</span>
      <span class="n">Log_Line</span> <span class="p">(</span><span class="n">Msg</span><span class="p">);</span>
      <span class="kr">raise</span> <span class="n">Internal_Error</span><span class="p">;</span>
   <span class="kr">end</span> <span class="nf">Error_Internal</span><span class="p">;</span>

   <span class="kd">function</span> <span class="nf">Disp_Label</span> <span class="p">(</span><span class="nv">Node</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">;</span> <span class="nv">Str</span> <span class="p">: </span><span class="nv">String</span><span class="p">)</span> <span class="kr">return</span> <span class="kt">String</span>
   <span class="kr">is</span>
      <span class="n">Id</span> <span class="p">:</span> <span class="n">Name_Id</span><span class="p">;</span>
   <span class="kr">begin</span>
      <span class="n">Id</span> <span class="p">:=</span> <span class="n">Get_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">);</span>
      <span class="kr">if</span> <span class="n">Id</span> <span class="o">=</span> <span class="n">Null_Identifier</span> <span class="kr">then</span>
         <span class="kr">return</span> <span class="s">&quot;(unlabeled) &quot;</span> <span class="o">&amp;</span> <span class="n">Str</span><span class="p">;</span>
      <span class="kr">else</span>
         <span class="kr">return</span> <span class="n">Str</span> <span class="o">&amp;</span> <span class="s">&quot; labeled &quot;&quot;&quot;</span> <span class="o">&amp;</span> <span class="n">Name_Table</span><span class="p">.</span><span class="n">Image</span> <span class="p">(</span><span class="n">Id</span><span class="p">)</span> <span class="o">&amp;</span> <span class="s">&quot;&quot;&quot;&quot;</span><span class="p">;</span>
      <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
   <span class="kr">end</span> <span class="nf">Disp_Label</span><span class="p">;</span>

   <span class="c1">-- Disp a node.</span>
   <span class="c1">-- Used for output of message.</span>
   <span class="kd">function</span> <span class="nf">Disp_Node</span> <span class="p">(</span><span class="nv">Node</span><span class="p">: </span><span class="nv">Iir</span><span class="p">)</span> <span class="kr">return</span> <span class="kt">String</span> <span class="kr">is</span>
      <span class="kd">function</span> <span class="nf">Disp_Identifier</span> <span class="p">(</span><span class="nv">Node</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">;</span> <span class="nv">Str</span> <span class="p">: </span><span class="nv">String</span><span class="p">)</span> <span class="kr">return</span> <span class="kt">String</span>
      <span class="kr">is</span>
         <span class="n">Id</span> <span class="p">:</span> <span class="n">Name_Id</span><span class="p">;</span>
      <span class="kr">begin</span>
         <span class="n">Id</span> <span class="p">:=</span> <span class="n">Get_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">);</span>
         <span class="kr">return</span> <span class="n">Str</span> <span class="o">&amp;</span> <span class="s">&quot; &quot;&quot;&quot;</span> <span class="o">&amp;</span> <span class="n">Name_Table</span><span class="p">.</span><span class="n">Image</span> <span class="p">(</span><span class="n">Id</span><span class="p">)</span> <span class="o">&amp;</span> <span class="s">&quot;&quot;&quot;&quot;</span><span class="p">;</span>
      <span class="kr">end</span> <span class="nf">Disp_Identifier</span><span class="p">;</span>

      <span class="kd">function</span> <span class="nf">Disp_Type</span> <span class="p">(</span><span class="nv">Node</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">;</span> <span class="nv">Str</span> <span class="p">: </span><span class="nv">String</span><span class="p">)</span> <span class="kr">return</span> <span class="kt">String</span>
      <span class="kr">is</span>
         <span class="n">Decl</span><span class="p">:</span> <span class="n">Iir</span><span class="p">;</span>
      <span class="kr">begin</span>
         <span class="n">Decl</span> <span class="p">:=</span> <span class="n">Get_Type_Declarator</span> <span class="p">(</span><span class="n">Node</span><span class="p">);</span>
         <span class="kr">if</span> <span class="n">Decl</span> <span class="o">=</span> <span class="n">Null_Iir</span> <span class="kr">then</span>
            <span class="kr">return</span> <span class="s">&quot;anonymous &quot;</span> <span class="o">&amp;</span> <span class="n">Str</span>
              <span class="o">&amp;</span> <span class="s">&quot; defined at &quot;</span> <span class="o">&amp;</span> <span class="n">Disp_Location</span> <span class="p">(</span><span class="n">Node</span><span class="p">);</span>
         <span class="kr">else</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Decl</span><span class="p">,</span> <span class="n">Str</span><span class="p">);</span>
         <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
      <span class="kr">end</span> <span class="nf">Disp_Type</span><span class="p">;</span>

      <span class="kd">function</span> <span class="nf">Disp_Nature</span> <span class="p">(</span><span class="nv">Node</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">;</span> <span class="nv">Str</span> <span class="p">: </span><span class="nv">String</span><span class="p">)</span> <span class="kr">return</span> <span class="kt">String</span>
      <span class="kr">is</span>
         <span class="n">Decl</span><span class="p">:</span> <span class="n">Iir</span><span class="p">;</span>
      <span class="kr">begin</span>
         <span class="n">Decl</span> <span class="p">:=</span> <span class="n">Get_Nature_Declarator</span> <span class="p">(</span><span class="n">Node</span><span class="p">);</span>
         <span class="kr">if</span> <span class="n">Decl</span> <span class="o">=</span> <span class="n">Null_Iir</span> <span class="kr">then</span>
            <span class="kr">return</span> <span class="s">&quot;anonymous &quot;</span> <span class="o">&amp;</span> <span class="n">Str</span>
              <span class="o">&amp;</span> <span class="s">&quot; defined at &quot;</span> <span class="o">&amp;</span> <span class="n">Disp_Location</span> <span class="p">(</span><span class="n">Node</span><span class="p">);</span>
         <span class="kr">else</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Decl</span><span class="p">,</span> <span class="n">Str</span><span class="p">);</span>
         <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
      <span class="kr">end</span> <span class="nf">Disp_Nature</span><span class="p">;</span>

   <span class="kr">begin</span>
      <span class="kr">case</span> <span class="n">Get_Kind</span> <span class="p">(</span><span class="n">Node</span><span class="p">)</span> <span class="kr">is</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_String_Literal8</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;string literal&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Character_Literal</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;character literal &quot;</span> <span class="o">&amp;</span> <span class="n">Image_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Integer_Literal</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;integer literal&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Floating_Point_Literal</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;floating point literal&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Physical_Int_Literal</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Physical_Fp_Literal</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;physical literal&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Enumeration_Literal</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;enumeration literal &quot;</span> <span class="o">&amp;</span> <span class="n">Image_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Element_Declaration</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Nature_Element_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;element&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Record_Element_Constraint</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;record element constraint &quot;</span> <span class="o">&amp;</span> <span class="n">Image_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Array_Element_Resolution</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;array element resolution&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Record_Resolution</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;record resolution&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Record_Element_Resolution</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;record element resolution&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Null_Literal</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;null literal&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Overflow_Literal</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Node</span> <span class="p">(</span><span class="n">Get_Literal_Origin</span> <span class="p">(</span><span class="n">Node</span><span class="p">));</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Unaffected_Waveform</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;unaffected waveform&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Aggregate</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;aggregate&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Unit_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;physical unit&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Simple_Aggregate</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;locally static array literal&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Operator_Symbol</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;operator name&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Aggregate_Info</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;aggregate info&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Signature</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;signature&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Waveform_Element</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;waveform element&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Conditional_Waveform</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;conditional waveform&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Conditional_Expression</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;conditional expression&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Association_Element_Open</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;open association element&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Association_Element_By_Individual</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;individual association element&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Association_Element_By_Expression</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Association_Element_By_Name</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Association_Element_Package</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Association_Element_Type</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Association_Element_Subprogram</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Association_Element_Terminal</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;association element&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Overload_List</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;overloaded name or expression&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Integer_Type_Definition</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Enumeration_Type_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Image_Identifier</span> <span class="p">(</span><span class="n">Get_Type_Declarator</span> <span class="p">(</span><span class="n">Node</span><span class="p">));</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Wildcard_Type_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&lt;any&gt;&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Array_Type_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;array type&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Array_Subtype_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;array subtype&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Record_Type_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;record type&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Record_Subtype_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;record subtype&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Enumeration_Subtype_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;enumeration subtype&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Integer_Subtype_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;integer subtype&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Physical_Type_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;physical type&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Physical_Subtype_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;physical subtype&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_File_Type_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;file type&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_File_Subtype_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;file subtype&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Access_Type_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;access type&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Access_Subtype_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;access subtype&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Floating_Subtype_Definition</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Floating_Type_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;floating type&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Incomplete_Type_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;incomplete type&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Type_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;interface type&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Protected_Type_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;protected type&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Protected_Type_Body</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Type</span> <span class="p">(</span><span class="n">Get_Protected_Type_Declaration</span> <span class="p">(</span><span class="n">Node</span><span class="p">),</span>
                              <span class="s">&quot;protected type body&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Subtype_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;subtype definition&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Foreign_Vector_Type_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;foreign vector type definition&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Scalar_Nature_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Nature</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;scalar nature&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Array_Nature_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Nature</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;array nature&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Array_Subnature_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Nature</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;array subnature&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Record_Nature_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Nature</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;record nature&quot;</span><span class="p">);</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Choice_By_Expression</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;choice by expression&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Choice_By_Range</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;choice by range&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Choice_By_Name</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;choice by name&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Choice_By_Others</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;others choice&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Choice_By_None</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;positionnal choice&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Function_Call</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;function call&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Procedure_Call_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;procedure call statement&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Procedure_Call</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;procedure call&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Selected_Name</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="p">&#39;&#39;&#39;</span> <span class="o">&amp;</span> <span class="n">Name_Table</span><span class="p">.</span><span class="n">Image</span> <span class="p">(</span><span class="n">Get_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">))</span> <span class="o">&amp;</span> <span class="p">&#39;&#39;&#39;;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Simple_Name</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="p">&#39;&#39;&#39;</span> <span class="o">&amp;</span> <span class="n">Name_Table</span><span class="p">.</span><span class="n">Image</span> <span class="p">(</span><span class="n">Get_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">))</span> <span class="o">&amp;</span> <span class="p">&#39;&#39;&#39;;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Reference_Name</span> <span class="p">=&gt;</span>
            <span class="c1">--  Shouldn&#39;t happen.</span>
            <span class="kr">return</span> <span class="s">&quot;name&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_External_Constant_Name</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;external constant name&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_External_Signal_Name</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;external signal name&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_External_Variable_Name</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;external variable name&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Package_Pathname</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;package pathname&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Absolute_Pathname</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;absolute pathname&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Relative_Pathname</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;relative pathname&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Pathname_Element</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;pathname element&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Entity_Aspect_Entity</span> <span class="p">=&gt;</span>
            <span class="kr">declare</span>
               <span class="no">Arch</span> <span class="p">:</span> <span class="kr">constant</span> <span class="n">Iir</span> <span class="p">:=</span> <span class="n">Get_Architecture</span> <span class="p">(</span><span class="n">Node</span><span class="p">);</span>
               <span class="no">Ent</span> <span class="p">:</span> <span class="kr">constant</span> <span class="n">Iir</span> <span class="p">:=</span> <span class="n">Get_Entity</span> <span class="p">(</span><span class="n">Node</span><span class="p">);</span>
            <span class="kr">begin</span>
               <span class="kr">if</span> <span class="n">Arch</span> <span class="o">=</span> <span class="n">Null_Iir</span> <span class="kr">then</span>
                  <span class="kr">return</span> <span class="s">&quot;aspect &quot;</span> <span class="o">&amp;</span> <span class="n">Disp_Node</span> <span class="p">(</span><span class="n">Ent</span><span class="p">);</span>
               <span class="kr">else</span>
                  <span class="kr">return</span> <span class="s">&quot;aspect &quot;</span> <span class="o">&amp;</span> <span class="n">Disp_Node</span> <span class="p">(</span><span class="n">Ent</span><span class="p">)</span>
                    <span class="o">&amp;</span> <span class="s s-Character">&#39;(&#39;</span> <span class="o">&amp;</span> <span class="n">Image_Identifier</span> <span class="p">(</span><span class="n">Arch</span><span class="p">)</span> <span class="o">&amp;</span> <span class="s s-Character">&#39;)&#39;</span><span class="p">;</span>
               <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
            <span class="kr">end</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Entity_Aspect_Configuration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;configuration entity aspect&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Entity_Aspect_Open</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;open entity aspect&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Hierarchical_Name</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;hierarchical name&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kinds_Monadic_Operator</span>
           <span class="p">|</span> <span class="n">Iir_Kinds_Dyadic_Operator</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;operator &quot;&quot;&quot;</span>
              <span class="o">&amp;</span> <span class="n">Name_Table</span><span class="p">.</span><span class="n">Image</span> <span class="p">(</span><span class="n">Get_Operator_Name</span> <span class="p">(</span><span class="n">Node</span><span class="p">))</span> <span class="o">&amp;</span> <span class="s">&quot;&quot;&quot;&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Parenthesis_Expression</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;expression&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Qualified_Expression</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;qualified expression&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Type_Conversion</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;type conversion&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Allocator_By_Subtype</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Allocator_By_Expression</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;allocator&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Indexed_Name</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;indexed name&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Range_Expression</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;range expression&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Implicit_Dereference</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;implicit access dereference&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Dereference</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;access dereference&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Selected_Element</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;selected element&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Selected_By_All_Name</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;.all name&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Expression</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;PSL instantiation&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Break_Element</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;break element&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Constant_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">if</span> <span class="n">Get_Parent</span> <span class="p">(</span><span class="n">Node</span><span class="p">)</span> <span class="o">=</span> <span class="n">Null_Iir</span> <span class="kr">then</span>
               <span class="c1">--  For constant interface of predefined operator.</span>
               <span class="kr">return</span> <span class="s">&quot;anonymous interface&quot;</span><span class="p">;</span>
            <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
            <span class="kr">case</span> <span class="n">Get_Kind</span> <span class="p">(</span><span class="n">Get_Parent</span> <span class="p">(</span><span class="n">Node</span><span class="p">))</span> <span class="kr">is</span>
               <span class="kr">when</span> <span class="n">Iir_Kind_Entity_Declaration</span>
                 <span class="p">|</span> <span class="n">Iir_Kind_Block_Statement</span>
                 <span class="p">|</span> <span class="n">Iir_Kind_Block_Header</span> <span class="p">=&gt;</span>
                  <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;generic&quot;</span><span class="p">);</span>
               <span class="kr">when</span> <span class="kr">others</span> <span class="p">=&gt;</span>
                  <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;constant interface&quot;</span><span class="p">);</span>
            <span class="kr">end</span> <span class="kr">case</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Signal_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">case</span> <span class="n">Get_Kind</span> <span class="p">(</span><span class="n">Get_Parent</span> <span class="p">(</span><span class="n">Node</span><span class="p">))</span> <span class="kr">is</span>
               <span class="kr">when</span> <span class="n">Iir_Kind_Entity_Declaration</span>
                 <span class="p">|</span> <span class="n">Iir_Kind_Block_Statement</span>
                 <span class="p">|</span> <span class="n">Iir_Kind_Block_Header</span> <span class="p">=&gt;</span>
                  <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;port&quot;</span><span class="p">);</span>
               <span class="kr">when</span> <span class="kr">others</span> <span class="p">=&gt;</span>
                  <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;signal interface&quot;</span><span class="p">);</span>
            <span class="kr">end</span> <span class="kr">case</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Variable_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;variable interface&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Interface_File_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;file interface&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Quantity_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;quantity interface&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Terminal_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;terminal interface&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Package_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;package interface&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Type_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;type interface&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Signal_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;signal&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Variable_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;variable&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Iterator_Declaration</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Constant_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;constant&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_File_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;file&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Object_Alias_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;alias&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Non_Object_Alias_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;non-object alias&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Guard_Signal_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;GUARD signal&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Attribute_Implicit_Declaration</span> <span class="p">=&gt;</span>
            <span class="c1">--  Should not appear.</span>
            <span class="kr">return</span> <span class="s">&quot;implicit declaration&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Suspend_State_Declaration</span> <span class="p">=&gt;</span>
            <span class="c1">--  Should not appear.</span>
            <span class="kr">return</span> <span class="s">&quot;suspend state variable&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Group_Template_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;group template&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Group_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;group&quot;</span><span class="p">);</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Library_Declaration</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Library_Clause</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;library&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Design_File</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;design file&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Procedure_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;procedure&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Function_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;function&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Function_Instantiation_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;function instantiation&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Procedure_Instantiation_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;procedure instantiation&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Procedure_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;interface procedure&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Function_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;interface function&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Procedure_Body</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Function_Body</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;subprogram body&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Foreign_Module</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;foreign module&quot;</span><span class="p">);</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Package_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;package&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Package_Body</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;package body&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Entity_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;entity&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Architecture_Body</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;architecture&quot;</span><span class="p">)</span> <span class="o">&amp;</span>
              <span class="s">&quot; of&quot;</span> <span class="o">&amp;</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Get_Entity_Name</span> <span class="p">(</span><span class="n">Node</span><span class="p">),</span> <span class="s">&quot;&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Configuration_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">declare</span>
               <span class="n">Id</span> <span class="p">:</span> <span class="n">Name_Id</span><span class="p">;</span>
               <span class="n">Ent</span> <span class="p">:</span> <span class="n">Iir</span><span class="p">;</span>
               <span class="n">Arch</span> <span class="p">:</span> <span class="n">Iir</span><span class="p">;</span>
            <span class="kr">begin</span>
               <span class="n">Id</span> <span class="p">:=</span> <span class="n">Get_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">);</span>
               <span class="kr">if</span> <span class="n">Id</span> <span class="o">/=</span> <span class="n">Null_Identifier</span> <span class="kr">then</span>
                  <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;configuration&quot;</span><span class="p">);</span>
               <span class="kr">else</span>
                  <span class="n">Ent</span> <span class="p">:=</span> <span class="n">Get_Entity</span> <span class="p">(</span><span class="n">Node</span><span class="p">);</span>
                  <span class="n">Arch</span> <span class="p">:=</span> <span class="n">Get_Block_Specification</span>
                    <span class="p">(</span><span class="n">Get_Block_Configuration</span> <span class="p">(</span><span class="n">Node</span><span class="p">));</span>
                  <span class="kr">return</span> <span class="s">&quot;default configuration of &quot;</span>
                    <span class="o">&amp;</span> <span class="n">Image_Identifier</span> <span class="p">(</span><span class="n">Ent</span><span class="p">)</span>
                    <span class="o">&amp;</span> <span class="s s-Character">&#39;(&#39;</span> <span class="o">&amp;</span> <span class="n">Image_Identifier</span> <span class="p">(</span><span class="n">Arch</span><span class="p">)</span> <span class="o">&amp;</span> <span class="s s-Character">&#39;)&#39;</span><span class="p">;</span>
               <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
            <span class="kr">end</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Context_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;context&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Package_Instantiation_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;instantiation package&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Vmode_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;vmode&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Vprop_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;vprop&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Vunit_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;vunit&quot;</span><span class="p">);</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Package_Header</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;package header&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Component_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;component&quot;</span><span class="p">);</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Design_Unit</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Node</span> <span class="p">(</span><span class="n">Get_Library_Unit</span> <span class="p">(</span><span class="n">Node</span><span class="p">));</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Use_Clause</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;use clause&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Context_Reference</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;context reference&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_PSL_Inherit_Spec</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;PSL inherit&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Disconnection_Specification</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;disconnection specification&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Step_Limit_Specification</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;step limit specification&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Slice_Name</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;slice&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Parenthesis_Name</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;function call, slice or indexed name&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Type_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;type&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Anonymous_Type_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;type&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Subtype_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;subtype&quot;</span><span class="p">);</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Nature_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;nature&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Subnature_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;subnature&quot;</span><span class="p">);</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Component_Instantiation_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;component instance&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Configuration_Specification</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;configuration specification&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Component_Configuration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;component configuration&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Concurrent_Procedure_Call_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;concurrent procedure call&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_For_Generate_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;for generate statement&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_If_Generate_Statement</span>
           <span class="p">|</span> <span class="n">Iir_Kind_If_Generate_Else_Clause</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;if generate statement&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Case_Generate_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;case generate statement&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Generate_Statement_Body</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;generate statement body&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Simple_Simultaneous_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;simple simultaneous statement&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Simultaneous_Null_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;simultaneous null statement&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Simultaneous_Procedural_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;simultaneous procedural statement&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Simultaneous_Case_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;simultaneous case statement&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Simultaneous_If_Statement</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Simultaneous_Elsif</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;simultaneous if statement&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;PSL declaration&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Boolean_Parameter</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;PSL boolean parameter&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Endpoint_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;PSL endpoint declaration&quot;</span><span class="p">);</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Terminal_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;terminal declaration&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Free_Quantity_Declaration</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Across_Quantity_Declaration</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Through_Quantity_Declaration</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Spectrum_Quantity_Declaration</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Noise_Quantity_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;quantity declaration&quot;</span><span class="p">);</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Attribute_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Identifier</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;attribute&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Attribute_Specification</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;attribute specification&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Entity_Class</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;entity class&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Attribute_Value</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;attribute value&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Attribute_Name</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Base_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;base attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Across_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;across attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Through_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;through attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Nature_Reference_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;reference attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Length_Array_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;length attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Range_Array_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;range attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Reverse_Range_Array_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;reverse_range attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Subtype_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;subtype attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Element_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;element attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Ascending_Type_Attribute</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Ascending_Array_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;ascending attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Left_Type_Attribute</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Left_Array_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;left attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Right_Type_Attribute</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Right_Array_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;right attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Low_Type_Attribute</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Low_Array_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;low attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Leftof_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;leftof attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Rightof_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;rightof attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Pred_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;pred attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Succ_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;succ attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Pos_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;pos attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Val_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;val attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Image_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;image attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Value_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;value attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_High_Type_Attribute</span>
           <span class="p">|</span> <span class="n">Iir_Kind_High_Array_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;high attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Signal_Slew_Attribute</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Quantity_Slew_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;slew attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Zoh_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;zoh attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Ltf_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;ltf attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Ztf_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;ztf attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Ramp_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;ramp attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Dot_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;dot attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Integ_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;integ attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Above_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;above attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Transaction_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;transaction attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Stable_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;stable attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Quiet_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;quiet attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Delayed_Attribute</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Quantity_Delayed_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;delayed attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Driving_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;driving attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Driving_Value_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;driving_value attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Event_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;event attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Active_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;active attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Last_Event_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;last_event attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Last_Active_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;last_active attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Last_Value_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;last_value attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Behavior_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;behavior attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Structure_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;structure attribute&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Path_Name_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;path_name attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Instance_Name_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;instance_name attribute&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Simple_Name_Attribute</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;&#39;simple_name attribute&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_For_Loop_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;for loop statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_While_Loop_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;loop statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Process_Statement</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Sensitized_Process_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;process&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Block_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;block statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Block_Header</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;block header&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Concurrent_Simple_Signal_Assignment</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span>
              <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;concurrent simple signal assignment&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Concurrent_Conditional_Signal_Assignment</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span>
              <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;concurrent conditional signal assignment&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Concurrent_Selected_Signal_Assignment</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span>
              <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;concurrent selected signal assignment&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Concurrent_Assertion_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;concurrent assertion&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Concurrent_Break_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;concurrent break statement&quot;</span><span class="p">);</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Assert_Directive</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;PSL assertion&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Assume_Directive</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;PSL assumption&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Cover_Directive</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;PSL cover&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Restrict_Directive</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;PSL restrict&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Default_Clock</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;PSL default clock&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Prev</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;PSL prev function&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Stable</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;PSL stable function&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Rose</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;PSL rose function&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Fell</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;PSL fell function&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Onehot</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;PSL onehot function&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Onehot0</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;PSL onehot0 function&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_If_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;if statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Elsif</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;else/elsif statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Next_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;next statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Exit_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;exit statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Case_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;case statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Return_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;return statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Simple_Signal_Assignment_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;signal assignment statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Conditional_Signal_Assignment_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span>
              <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;conditional signal assignment statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Selected_Waveform_Assignment_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span>
              <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;selected waveform assignment statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Signal_Force_Assignment_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;signal force assignment&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Signal_Release_Assignment_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;signal release assignment&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Variable_Assignment_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;variable assignment statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Conditional_Variable_Assignment_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span>
              <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;conditional variable assignment statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Null_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;null statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Wait_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;wait statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Assertion_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;assertion statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Report_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;report statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Break_Statement</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Disp_Label</span> <span class="p">(</span><span class="n">Node</span><span class="p">,</span> <span class="s">&quot;break statement&quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Suspend_State_Statement</span> <span class="p">=&gt;</span>
            <span class="c1">--  Should not appear.</span>
            <span class="kr">return</span> <span class="s">&quot;suspend state statement&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Block_Configuration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;block configuration&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Binding_Indication</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;binding indication&quot;</span><span class="p">;</span>

         <span class="kr">when</span> <span class="n">Iir_Kind_Error</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;error&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Unused</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;*unused*&quot;</span><span class="p">;</span>
      <span class="kr">end</span> <span class="kr">case</span><span class="p">;</span>
   <span class="kr">end</span> <span class="nf">Disp_Node</span><span class="p">;</span>

   <span class="c1">-- Disp a node location.</span>
   <span class="c1">-- Used for output of message.</span>

   <span class="kd">function</span> <span class="nf">Disp_Location</span> <span class="p">(</span><span class="nv">Node</span><span class="p">: </span><span class="nv">Iir</span><span class="p">)</span> <span class="kr">return</span> <span class="kt">String</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="kr">return</span> <span class="n">Files_Map</span><span class="p">.</span><span class="n">Image</span> <span class="p">(</span><span class="n">Get_Location</span> <span class="p">(</span><span class="n">Node</span><span class="p">));</span>
   <span class="kr">end</span> <span class="nf">Disp_Location</span><span class="p">;</span>

   <span class="kd">function</span> <span class="nf">Disp_Name</span> <span class="p">(</span><span class="nv">Kind</span> <span class="p">: </span><span class="nv">Iir_Kind</span><span class="p">)</span> <span class="kr">return</span> <span class="kt">String</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="kr">case</span> <span class="n">Kind</span> <span class="kr">is</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Constant_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;constant declaration&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Signal_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;signal declaration&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Variable_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;variable declaration&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_File_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;file declaration&quot;</span><span class="p">;</span>
         <span class="kr">when</span> <span class="kr">others</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="s">&quot;???&quot;</span> <span class="o">&amp;</span> <span class="n">Iir_Kind</span><span class="p">&#39;</span><span class="na">Image</span> <span class="p">(</span><span class="n">Kind</span><span class="p">);</span>
      <span class="kr">end</span> <span class="kr">case</span><span class="p">;</span>
   <span class="kr">end</span> <span class="nf">Disp_Name</span><span class="p">;</span>

   <span class="kd">function</span> <span class="nf">Image</span> <span class="p">(</span><span class="nv">N</span> <span class="p">: </span><span class="nv">Int64</span><span class="p">)</span> <span class="kr">return</span> <span class="kt">String</span>
   <span class="kr">is</span>
      <span class="no">Res</span> <span class="p">:</span> <span class="kr">constant</span> <span class="kt">String</span> <span class="p">:=</span> <span class="n">Int64</span><span class="p">&#39;</span><span class="na">Image</span> <span class="p">(</span><span class="n">N</span><span class="p">);</span>
   <span class="kr">begin</span>
      <span class="kr">if</span> <span class="n">Res</span> <span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">=</span> <span class="s s-Character">&#39; &#39;</span> <span class="kr">then</span>
         <span class="kr">return</span> <span class="n">Res</span> <span class="p">(</span><span class="mi">2</span> <span class="p">..</span> <span class="n">Res</span><span class="p">&#39;</span><span class="na">Last</span><span class="p">);</span>
      <span class="kr">else</span>
         <span class="kr">return</span> <span class="n">Res</span><span class="p">;</span>
      <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
   <span class="kr">end</span> <span class="nf">Image</span><span class="p">;</span>

   <span class="kd">function</span> <span class="nf">Disp_Discrete</span> <span class="p">(</span><span class="nv">Dtype</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">;</span> <span class="nv">Pos</span> <span class="p">: </span><span class="nv">Int64</span><span class="p">)</span> <span class="kr">return</span> <span class="kt">String</span> <span class="kr">is</span>
   <span class="kr">begin</span>
      <span class="kr">case</span> <span class="n">Get_Kind</span> <span class="p">(</span><span class="n">Dtype</span><span class="p">)</span> <span class="kr">is</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Integer_Type_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Image</span> <span class="p">(</span><span class="n">Pos</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Enumeration_Type_Definition</span> <span class="p">=&gt;</span>
            <span class="kr">return</span> <span class="n">Name_Table</span><span class="p">.</span><span class="n">Image</span>
              <span class="p">(</span><span class="n">Get_Identifier</span> <span class="p">(</span><span class="n">Get_Nth_Element</span>
                               <span class="p">(</span><span class="n">Get_Enumeration_Literal_List</span> <span class="p">(</span><span class="n">Dtype</span><span class="p">),</span>
                                <span class="kt">Natural</span> <span class="p">(</span><span class="n">Pos</span><span class="p">))));</span>
         <span class="kr">when</span> <span class="kr">others</span> <span class="p">=&gt;</span>
            <span class="n">Error_Kind</span> <span class="p">(</span><span class="s">&quot;disp_discrete&quot;</span><span class="p">,</span> <span class="n">Dtype</span><span class="p">);</span>
      <span class="kr">end</span> <span class="kr">case</span><span class="p">;</span>
   <span class="kr">end</span> <span class="nf">Disp_Discrete</span><span class="p">;</span>

   <span class="kd">function</span> <span class="nf">Disp_Subprg</span> <span class="p">(</span><span class="nv">Subprg</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">)</span> <span class="kr">return</span> <span class="kt">String</span>
   <span class="kr">is</span>
      <span class="kn">use</span> <span class="nn">Ada.Strings.Unbounded</span><span class="p">;</span>
      <span class="n">Res</span> <span class="p">:</span> <span class="n">Unbounded_String</span><span class="p">;</span>

      <span class="c1">--  Cf code in evaluation for &#39;instance_name ?</span>
      <span class="kd">procedure</span> <span class="nf">Append_Type</span> <span class="p">(</span><span class="nv">Def</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">)</span>
      <span class="kr">is</span>
         <span class="kn">use</span> <span class="nn">Name_Table</span><span class="p">;</span>
         <span class="n">Decl</span> <span class="p">:</span> <span class="n">Iir</span> <span class="p">:=</span> <span class="n">Get_Type_Declarator</span> <span class="p">(</span><span class="n">Def</span><span class="p">);</span>
      <span class="kr">begin</span>
         <span class="kr">if</span> <span class="n">Decl</span> <span class="o">=</span> <span class="n">Null_Iir</span> <span class="kr">then</span>
            <span class="n">Decl</span> <span class="p">:=</span> <span class="n">Get_Type_Declarator</span> <span class="p">(</span><span class="n">Get_Base_Type</span> <span class="p">(</span><span class="n">Def</span><span class="p">));</span>
            <span class="kr">if</span> <span class="n">Decl</span> <span class="o">=</span> <span class="n">Null_Iir</span> <span class="kr">then</span>
               <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">&quot;*unknown*&quot;</span><span class="p">);</span>
               <span class="kr">return</span><span class="p">;</span>
            <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
         <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
         <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="n">Image</span> <span class="p">(</span><span class="n">Get_Identifier</span> <span class="p">(</span><span class="n">Decl</span><span class="p">)));</span>
      <span class="kr">end</span> <span class="nf">Append_Type</span><span class="p">;</span>

   <span class="kr">begin</span>
      <span class="kr">case</span> <span class="n">Get_Kind</span> <span class="p">(</span><span class="n">Subprg</span><span class="p">)</span> <span class="kr">is</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Enumeration_Literal</span> <span class="p">=&gt;</span>
            <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">&quot;enumeration literal &quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Function_Declaration</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Interface_Function_Declaration</span> <span class="p">=&gt;</span>
            <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">&quot;function &quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Procedure_Declaration</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Interface_Procedure_Declaration</span> <span class="p">=&gt;</span>
            <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">&quot;procedure &quot;</span><span class="p">);</span>
         <span class="kr">when</span> <span class="kr">others</span> <span class="p">=&gt;</span>
            <span class="n">Error_Kind</span> <span class="p">(</span><span class="s">&quot;disp_subprg&quot;</span><span class="p">,</span> <span class="n">Subprg</span><span class="p">);</span>
      <span class="kr">end</span> <span class="kr">case</span><span class="p">;</span>

      <span class="kr">declare</span>
         <span class="kn">use</span> <span class="nn">Name_Table</span><span class="p">;</span>

         <span class="no">Id</span> <span class="p">:</span> <span class="kr">constant</span> <span class="n">Name_Id</span> <span class="p">:=</span> <span class="n">Get_Identifier</span> <span class="p">(</span><span class="n">Subprg</span><span class="p">);</span>
      <span class="kr">begin</span>
         <span class="kr">case</span> <span class="n">Id</span> <span class="kr">is</span>
            <span class="kr">when</span> <span class="n">Std_Names</span><span class="p">.</span><span class="n">Name_Id_Operators</span>
              <span class="p">|</span> <span class="n">Std_Names</span><span class="p">.</span><span class="n">Name_Word_Operators</span>
              <span class="p">|</span> <span class="n">Std_Names</span><span class="p">.</span><span class="n">Name_Xnor</span>
              <span class="p">|</span> <span class="n">Std_Names</span><span class="p">.</span><span class="n">Name_Shift_Operators</span> <span class="p">=&gt;</span>
               <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">&quot;&quot;&quot;&quot;</span><span class="p">);</span>
               <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="n">Image</span> <span class="p">(</span><span class="n">Id</span><span class="p">));</span>
               <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">&quot;&quot;&quot;&quot;</span><span class="p">);</span>
            <span class="kr">when</span> <span class="kr">others</span> <span class="p">=&gt;</span>
               <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="n">Image</span> <span class="p">(</span><span class="n">Id</span><span class="p">));</span>
         <span class="kr">end</span> <span class="kr">case</span><span class="p">;</span>
      <span class="kr">end</span><span class="p">;</span>

      <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">&quot; [&quot;</span><span class="p">);</span>

      <span class="kr">case</span> <span class="n">Get_Kind</span> <span class="p">(</span><span class="n">Subprg</span><span class="p">)</span> <span class="kr">is</span>
         <span class="kr">when</span> <span class="n">Iir_Kinds_Subprogram_Declaration</span>
           <span class="p">|</span> <span class="n">Iir_Kinds_Interface_Subprogram_Declaration</span> <span class="p">=&gt;</span>
            <span class="kr">declare</span>
               <span class="n">El</span> <span class="p">:</span> <span class="n">Iir</span><span class="p">;</span>
            <span class="kr">begin</span>
               <span class="n">El</span> <span class="p">:=</span> <span class="n">Get_Interface_Declaration_Chain</span> <span class="p">(</span><span class="n">Subprg</span><span class="p">);</span>
               <span class="kr">while</span> <span class="n">El</span> <span class="o">/=</span> <span class="n">Null_Iir</span> <span class="kr">loop</span>
                  <span class="n">Append_Type</span> <span class="p">(</span><span class="n">Get_Type</span> <span class="p">(</span><span class="n">El</span><span class="p">));</span>
                  <span class="n">El</span> <span class="p">:=</span> <span class="n">Get_Chain</span> <span class="p">(</span><span class="n">El</span><span class="p">);</span>
                  <span class="kr">exit</span> <span class="kr">when</span> <span class="n">El</span> <span class="o">=</span> <span class="n">Null_Iir</span><span class="p">;</span>
                  <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">&quot;, &quot;</span><span class="p">);</span>
               <span class="kr">end</span> <span class="kr">loop</span><span class="p">;</span>
            <span class="kr">end</span><span class="p">;</span>
         <span class="kr">when</span> <span class="kr">others</span> <span class="p">=&gt;</span>
            <span class="kc">null</span><span class="p">;</span>
      <span class="kr">end</span> <span class="kr">case</span><span class="p">;</span>

      <span class="kr">case</span> <span class="n">Get_Kind</span> <span class="p">(</span><span class="n">Subprg</span><span class="p">)</span> <span class="kr">is</span>
         <span class="kr">when</span> <span class="n">Iir_Kind_Function_Declaration</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Interface_Function_Declaration</span>
           <span class="p">|</span> <span class="n">Iir_Kind_Enumeration_Literal</span> <span class="p">=&gt;</span>
            <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">&quot; return &quot;</span><span class="p">);</span>
            <span class="n">Append_Type</span> <span class="p">(</span><span class="n">Get_Return_Type</span> <span class="p">(</span><span class="n">Subprg</span><span class="p">));</span>
         <span class="kr">when</span> <span class="kr">others</span> <span class="p">=&gt;</span>
            <span class="kc">null</span><span class="p">;</span>
      <span class="kr">end</span> <span class="kr">case</span><span class="p">;</span>

      <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">&quot;]&quot;</span><span class="p">);</span>

      <span class="kr">return</span> <span class="n">To_String</span> <span class="p">(</span><span class="n">Res</span><span class="p">);</span>
   <span class="kr">end</span> <span class="nf">Disp_Subprg</span><span class="p">;</span>

   <span class="c1">--  DEF must be any type definition.</span>
   <span class="c1">--  Return the type name of DEF, handle anonymous subtypes.</span>
   <span class="kd">function</span> <span class="nf">Disp_Type_Name</span> <span class="p">(</span><span class="nv">Def</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">)</span> <span class="kr">return</span> <span class="kt">String</span>
   <span class="kr">is</span>
      <span class="n">Decl</span> <span class="p">:</span> <span class="n">Iir</span><span class="p">;</span>
   <span class="kr">begin</span>
      <span class="kr">if</span> <span class="n">Is_Error</span> <span class="p">(</span><span class="n">Def</span><span class="p">)</span> <span class="kr">then</span>
         <span class="kr">return</span> <span class="s">&quot;an erroneous type&quot;</span><span class="p">;</span>
      <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
      <span class="n">Decl</span> <span class="p">:=</span> <span class="n">Get_Type_Declarator</span> <span class="p">(</span><span class="n">Def</span><span class="p">);</span>
      <span class="kr">if</span> <span class="n">Decl</span> <span class="o">/=</span> <span class="n">Null_Iir</span> <span class="kr">then</span>
         <span class="kr">return</span> <span class="n">Image_Identifier</span> <span class="p">(</span><span class="n">Decl</span><span class="p">);</span>
      <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
      <span class="n">Decl</span> <span class="p">:=</span> <span class="n">Get_Type_Declarator</span> <span class="p">(</span><span class="n">Get_Base_Type</span> <span class="p">(</span><span class="n">Def</span><span class="p">));</span>
      <span class="kr">if</span> <span class="n">Decl</span> <span class="o">/=</span> <span class="n">Null_Iir</span> <span class="kr">then</span>
         <span class="kr">return</span> <span class="s">&quot;a subtype of &quot;</span> <span class="o">&amp;</span> <span class="n">Image_Identifier</span> <span class="p">(</span><span class="n">Decl</span><span class="p">);</span>
      <span class="kr">else</span>
         <span class="kr">return</span> <span class="s">&quot;an unknown type&quot;</span><span class="p">;</span>
      <span class="kr">end</span> <span class="kr">if</span><span class="p">;</span>
   <span class="kr">end</span> <span class="nf">Disp_Type_Name</span><span class="p">;</span>

   <span class="kd">function</span> <span class="nf">Disp_Type_Of</span> <span class="p">(</span><span class="nv">Node</span> <span class="p">: </span><span class="nv">Iir</span><span class="p">)</span> <span class="kr">return</span> <span class="kt">String</span>
   <span class="kr">is</span>
      <span class="n">A_Type</span> <span class="p">:</span> <span class="n">Iir</span><span class="p">;</span>
   <span class="kr">begin</span>
      <span class="n">A_Type</span> <span class="p">:=</span> <span class="n">Get_Type</span> <span class="p">(</span><span class="n">Node</span><span class="p">);</span>
      <span class="kr">if</span> <span class="n">A_Type</span> <span class="o">=</span> <span class="n">Null_Iir</span> <span class="kr">then</span>
         <span class="kr">return</span> <span class="s">&quot;unknown&quot;</span><span class="p">;</span>
      <span class="kr">elsif</span> <span class="n">Get_Kind</span> <span class="p">(</span><span class="n">A_Type</span><span class="p">)</span> <span class="o">=</span> <span class="n">Iir_Kind_Overload_List</span> <span class="kr">then</span>
         <span class="kr">declare</span>
            <span class="kn">use</span> <span class="nn">Ada.Strings.Unbounded</span><span class="p">;</span>
            <span class="no">List</span> <span class="p">:</span> <span class="kr">constant</span> <span class="n">Iir_List</span> <span class="p">:=</span> <span class="n">Get_Overload_List</span> <span class="p">(</span><span class="n">A_Type</span><span class="p">);</span>
            <span class="no">Nbr</span> <span class="p">:</span> <span class="kr">constant</span> <span class="kt">Natural</span> <span class="p">:=</span> <span class="n">Get_Nbr_Elements</span> <span class="p">(</span><span class="n">List</span><span class="p">);</span>
            <span class="n">Res</span> <span class="p">:</span> <span class="n">Unbounded_String</span><span class="p">;</span>
            <span class="n">El</span> <span class="p">:</span> <span class="n">Iir</span><span class="p">;</span>
            <span class="n">It</span> <span class="p">:</span> <span class="n">List_Iterator</span><span class="p">;</span>