<?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 <b>Hiking Log FeatherWing.brd</b><p> 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">>DRAWING_NAME</text> <text x="217.17" y="10.16" size="2.286" layer="94">>LAST_DATE_TIME</text> <text x="228.473" y="5.08" size="2.54" layer="94">>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><b>FRAME</b><p> 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><b>https://componentsearchengine.com</b><p> <author>Created by SamacSys</author></description> <packages> <package name="FH19C9S05SH10-FFC"> <description><b>FH19C-9S-0.5SH(10)-1</b><br> </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">>NAME</text> <text x="8.89" y="15.24" size="1.778" layer="96" align="center-left">>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 <b>Adafruit Feather M0 Express.sch</b><p> 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">>NAME</text> <text x="3.048" y="-1.778" size="0.4064" layer="25" ratio="10">>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">>NAME</text> <text x="-1.27" y="-3.175" size="0.4064" layer="27" ratio="10">>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">>NAME</text> <text x="1.1" y="-0.7" size="0.4064" layer="27" ratio="10">>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">>NAME</text> <text x="0" y="0" size="0.4064" layer="27" ratio="10" align="center">>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">>NAME</text> <text x="-1.016" y="-0.508" size="0.4064" layer="27" ratio="10">>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">>NAME</text> <text x="0.889" y="-0.889" size="0.4064" layer="27" ratio="10" align="center-left">>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">>NAME</text> <text x="0.889" y="-0.635" size="0.4064" layer="27" ratio="10">>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">>NAME</text> <text x="1.143" y="-0.635" size="0.4064" layer="27" ratio="10">>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">>NAME</text> <text x="1.143" y="-0.635" size="0.4064" layer="27" ratio="10">>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">>NAME</text> <text x="1.651" y="-0.635" size="0.4064" layer="27" ratio="10">>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">>NAME</text> <text x="1.651" y="5.588" size="1.27" layer="95" rot="R90" align="center-left">>VALUE</text> </symbol> </symbols> <devicesets> <deviceset name="MICROBUILDER_TESTPOINT" prefix="TP" uservalue="yes"> <description><b>Test Point</b> <p>Various test points for characterisation and PCB testing</p> <p> <ul> <li><b>TESTPOINT_SMT</b> - Compact Surface Mount Test Point [Digikey: 5016KTR-ND]</li> </ul> </p></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"" 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 <gnu.org/licenses>.</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">&</span> <span class="s">": cannot handle "</span> <span class="o">&</span> <span class="n">Iir_Kind</span><span class="p">'</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">&</span> <span class="s">" ("</span> <span class="o">&</span> <span class="n">Disp_Location</span> <span class="p">(</span><span class="n">N</span><span class="p">)</span> <span class="o">&</span> <span class="s s-Character">')'</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">&</span> <span class="s">": cannot handle "</span> <span class="o">&</span> <span class="n">Iir_Predefined_Functions</span><span class="p">'</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">"+"</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">"+"</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">"+"</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">'(</span><span class="mi">1</span> <span class="p">=></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">'(</span><span class="mi">1</span> <span class="p">=></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">=></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">"(you can use -frelaxed to turn this error into a warning)"</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">'(</span><span class="mi">1</span> <span class="p">=></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">'(</span><span class="mi">1</span> <span class="p">=></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">""</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">"internal error: "</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">"(unlabeled) "</span> <span class="o">&</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">&</span> <span class="s">" labeled """</span> <span class="o">&</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">&</span> <span class="s">""""</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">&</span> <span class="s">" """</span> <span class="o">&</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">&</span> <span class="s">""""</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">"anonymous "</span> <span class="o">&</span> <span class="n">Str</span> <span class="o">&</span> <span class="s">" defined at "</span> <span class="o">&</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">"anonymous "</span> <span class="o">&</span> <span class="n">Str</span> <span class="o">&</span> <span class="s">" defined at "</span> <span class="o">&</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">=></span> <span class="kr">return</span> <span class="s">"string literal"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Character_Literal</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"character literal "</span> <span class="o">&</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">=></span> <span class="kr">return</span> <span class="s">"integer literal"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Floating_Point_Literal</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"floating point literal"</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">=></span> <span class="kr">return</span> <span class="s">"physical literal"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Enumeration_Literal</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"enumeration literal "</span> <span class="o">&</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">=></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">"element"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Record_Element_Constraint</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"record element constraint "</span> <span class="o">&</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">=></span> <span class="kr">return</span> <span class="s">"array element resolution"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Record_Resolution</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"record resolution"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Record_Element_Resolution</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"record element resolution"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Null_Literal</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"null literal"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Overflow_Literal</span> <span class="p">=></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">=></span> <span class="kr">return</span> <span class="s">"unaffected waveform"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Aggregate</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"aggregate"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Unit_Declaration</span> <span class="p">=></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">"physical unit"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Simple_Aggregate</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"locally static array literal"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Operator_Symbol</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"operator name"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Aggregate_Info</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"aggregate info"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Signature</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"signature"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Waveform_Element</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"waveform element"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Conditional_Waveform</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"conditional waveform"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Conditional_Expression</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"conditional expression"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Association_Element_Open</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"open association element"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Association_Element_By_Individual</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"individual association element"</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">=></span> <span class="kr">return</span> <span class="s">"association element"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Overload_List</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"overloaded name or expression"</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">=></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">=></span> <span class="kr">return</span> <span class="s">"<any>"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Array_Type_Definition</span> <span class="p">=></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">"array type"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Array_Subtype_Definition</span> <span class="p">=></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">"array subtype"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Record_Type_Definition</span> <span class="p">=></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">"record type"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Record_Subtype_Definition</span> <span class="p">=></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">"record subtype"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Enumeration_Subtype_Definition</span> <span class="p">=></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">"enumeration subtype"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Integer_Subtype_Definition</span> <span class="p">=></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">"integer subtype"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Physical_Type_Definition</span> <span class="p">=></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">"physical type"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Physical_Subtype_Definition</span> <span class="p">=></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">"physical subtype"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_File_Type_Definition</span> <span class="p">=></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">"file type"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_File_Subtype_Definition</span> <span class="p">=></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">"file subtype"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Access_Type_Definition</span> <span class="p">=></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">"access type"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Access_Subtype_Definition</span> <span class="p">=></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">"access subtype"</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">=></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">"floating type"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Incomplete_Type_Definition</span> <span class="p">=></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">"incomplete type"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Type_Definition</span> <span class="p">=></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">"interface type"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Protected_Type_Declaration</span> <span class="p">=></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">"protected type"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Protected_Type_Body</span> <span class="p">=></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">"protected type body"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Subtype_Definition</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"subtype definition"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Foreign_Vector_Type_Definition</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"foreign vector type definition"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Scalar_Nature_Definition</span> <span class="p">=></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">"scalar nature"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Array_Nature_Definition</span> <span class="p">=></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">"array nature"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Array_Subnature_Definition</span> <span class="p">=></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">"array subnature"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Record_Nature_Definition</span> <span class="p">=></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">"record nature"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Choice_By_Expression</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"choice by expression"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Choice_By_Range</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"choice by range"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Choice_By_Name</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"choice by name"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Choice_By_Others</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"others choice"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Choice_By_None</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"positionnal choice"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Function_Call</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"function call"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Procedure_Call_Statement</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"procedure call statement"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Procedure_Call</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"procedure call"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Selected_Name</span> <span class="p">=></span> <span class="kr">return</span> <span class="p">'''</span> <span class="o">&</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">&</span> <span class="p">''';</span> <span class="kr">when</span> <span class="n">Iir_Kind_Simple_Name</span> <span class="p">=></span> <span class="kr">return</span> <span class="p">'''</span> <span class="o">&</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">&</span> <span class="p">''';</span> <span class="kr">when</span> <span class="n">Iir_Kind_Reference_Name</span> <span class="p">=></span> <span class="c1">-- Shouldn't happen.</span> <span class="kr">return</span> <span class="s">"name"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_External_Constant_Name</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"external constant name"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_External_Signal_Name</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"external signal name"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_External_Variable_Name</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"external variable name"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Package_Pathname</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"package pathname"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Absolute_Pathname</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"absolute pathname"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Relative_Pathname</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"relative pathname"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Pathname_Element</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"pathname element"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Entity_Aspect_Entity</span> <span class="p">=></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">"aspect "</span> <span class="o">&</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">"aspect "</span> <span class="o">&</span> <span class="n">Disp_Node</span> <span class="p">(</span><span class="n">Ent</span><span class="p">)</span> <span class="o">&</span> <span class="s s-Character">'('</span> <span class="o">&</span> <span class="n">Image_Identifier</span> <span class="p">(</span><span class="n">Arch</span><span class="p">)</span> <span class="o">&</span> <span class="s s-Character">')'</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">=></span> <span class="kr">return</span> <span class="s">"configuration entity aspect"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Entity_Aspect_Open</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"open entity aspect"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Hierarchical_Name</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"hierarchical name"</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">=></span> <span class="kr">return</span> <span class="s">"operator """</span> <span class="o">&</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">&</span> <span class="s">""""</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Parenthesis_Expression</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"expression"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Qualified_Expression</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"qualified expression"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Type_Conversion</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"type conversion"</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">=></span> <span class="kr">return</span> <span class="s">"allocator"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Indexed_Name</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"indexed name"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Range_Expression</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"range expression"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Implicit_Dereference</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"implicit access dereference"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Dereference</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"access dereference"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Selected_Element</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"selected element"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Selected_By_All_Name</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">".all name"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Expression</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"PSL instantiation"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Break_Element</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"break element"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Constant_Declaration</span> <span class="p">=></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">"anonymous interface"</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">=></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">"generic"</span><span class="p">);</span> <span class="kr">when</span> <span class="kr">others</span> <span class="p">=></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">"constant interface"</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">=></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">=></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">"port"</span><span class="p">);</span> <span class="kr">when</span> <span class="kr">others</span> <span class="p">=></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">"signal interface"</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">=></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">"variable interface"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Interface_File_Declaration</span> <span class="p">=></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">"file interface"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Quantity_Declaration</span> <span class="p">=></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">"quantity interface"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Terminal_Declaration</span> <span class="p">=></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">"terminal interface"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Package_Declaration</span> <span class="p">=></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">"package interface"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Type_Declaration</span> <span class="p">=></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">"type interface"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Signal_Declaration</span> <span class="p">=></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">"signal"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Variable_Declaration</span> <span class="p">=></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">"variable"</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">=></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">"constant"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_File_Declaration</span> <span class="p">=></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">"file"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Object_Alias_Declaration</span> <span class="p">=></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">"alias"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Non_Object_Alias_Declaration</span> <span class="p">=></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">"non-object alias"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Guard_Signal_Declaration</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"GUARD signal"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Attribute_Implicit_Declaration</span> <span class="p">=></span> <span class="c1">-- Should not appear.</span> <span class="kr">return</span> <span class="s">"implicit declaration"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Suspend_State_Declaration</span> <span class="p">=></span> <span class="c1">-- Should not appear.</span> <span class="kr">return</span> <span class="s">"suspend state variable"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Group_Template_Declaration</span> <span class="p">=></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">"group template"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Group_Declaration</span> <span class="p">=></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">"group"</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">=></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">"library"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Design_File</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"design file"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Procedure_Declaration</span> <span class="p">=></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">"procedure"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Function_Declaration</span> <span class="p">=></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">"function"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Function_Instantiation_Declaration</span> <span class="p">=></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">"function instantiation"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Procedure_Instantiation_Declaration</span> <span class="p">=></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">"procedure instantiation"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Procedure_Declaration</span> <span class="p">=></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">"interface procedure"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Interface_Function_Declaration</span> <span class="p">=></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">"interface function"</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">=></span> <span class="kr">return</span> <span class="s">"subprogram body"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Foreign_Module</span> <span class="p">=></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">"foreign module"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Package_Declaration</span> <span class="p">=></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">"package"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Package_Body</span> <span class="p">=></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">"package body"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Entity_Declaration</span> <span class="p">=></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">"entity"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Architecture_Body</span> <span class="p">=></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">"architecture"</span><span class="p">)</span> <span class="o">&</span> <span class="s">" of"</span> <span class="o">&</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">""</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Configuration_Declaration</span> <span class="p">=></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">"configuration"</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">"default configuration of "</span> <span class="o">&</span> <span class="n">Image_Identifier</span> <span class="p">(</span><span class="n">Ent</span><span class="p">)</span> <span class="o">&</span> <span class="s s-Character">'('</span> <span class="o">&</span> <span class="n">Image_Identifier</span> <span class="p">(</span><span class="n">Arch</span><span class="p">)</span> <span class="o">&</span> <span class="s s-Character">')'</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">=></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">"context"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Package_Instantiation_Declaration</span> <span class="p">=></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">"instantiation package"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Vmode_Declaration</span> <span class="p">=></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">"vmode"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Vprop_Declaration</span> <span class="p">=></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">"vprop"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Vunit_Declaration</span> <span class="p">=></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">"vunit"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Package_Header</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"package header"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Component_Declaration</span> <span class="p">=></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">"component"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Design_Unit</span> <span class="p">=></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">=></span> <span class="kr">return</span> <span class="s">"use clause"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Context_Reference</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"context reference"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_PSL_Inherit_Spec</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"PSL inherit"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Disconnection_Specification</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"disconnection specification"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Step_Limit_Specification</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"step limit specification"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Slice_Name</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"slice"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Parenthesis_Name</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"function call, slice or indexed name"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Type_Declaration</span> <span class="p">=></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">"type"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Anonymous_Type_Declaration</span> <span class="p">=></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">"type"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Subtype_Declaration</span> <span class="p">=></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">"subtype"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Nature_Declaration</span> <span class="p">=></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">"nature"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Subnature_Declaration</span> <span class="p">=></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">"subnature"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Component_Instantiation_Statement</span> <span class="p">=></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">"component instance"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Configuration_Specification</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"configuration specification"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Component_Configuration</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"component configuration"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Concurrent_Procedure_Call_Statement</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"concurrent procedure call"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_For_Generate_Statement</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"for generate statement"</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">=></span> <span class="kr">return</span> <span class="s">"if generate statement"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Case_Generate_Statement</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"case generate statement"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Generate_Statement_Body</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"generate statement body"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Simple_Simultaneous_Statement</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"simple simultaneous statement"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Simultaneous_Null_Statement</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"simultaneous null statement"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Simultaneous_Procedural_Statement</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"simultaneous procedural statement"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Simultaneous_Case_Statement</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"simultaneous case statement"</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">=></span> <span class="kr">return</span> <span class="s">"simultaneous if statement"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Declaration</span> <span class="p">=></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">"PSL declaration"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Boolean_Parameter</span> <span class="p">=></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">"PSL boolean parameter"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Endpoint_Declaration</span> <span class="p">=></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">"PSL endpoint declaration"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Terminal_Declaration</span> <span class="p">=></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">"terminal declaration"</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">=></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">"quantity declaration"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Attribute_Declaration</span> <span class="p">=></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">"attribute"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Attribute_Specification</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"attribute specification"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Entity_Class</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"entity class"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Attribute_Value</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"attribute value"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Attribute_Name</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Base_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'base attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Across_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'across attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Through_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'through attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Nature_Reference_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'reference attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Length_Array_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'length attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Range_Array_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'range attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Reverse_Range_Array_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'reverse_range attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Subtype_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'subtype attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Element_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'element attribute"</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">=></span> <span class="kr">return</span> <span class="s">"'ascending attribute"</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">=></span> <span class="kr">return</span> <span class="s">"'left attribute"</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">=></span> <span class="kr">return</span> <span class="s">"'right attribute"</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">=></span> <span class="kr">return</span> <span class="s">"'low attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Leftof_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'leftof attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Rightof_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'rightof attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Pred_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'pred attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Succ_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'succ attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Pos_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'pos attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Val_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'val attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Image_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'image attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Value_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'value attribute"</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">=></span> <span class="kr">return</span> <span class="s">"'high attribute"</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">=></span> <span class="kr">return</span> <span class="s">"'slew attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Zoh_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'zoh attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Ltf_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'ltf attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Ztf_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'ztf attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Ramp_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'ramp attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Dot_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'dot attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Integ_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'integ attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Above_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'above attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Transaction_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'transaction attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Stable_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'stable attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Quiet_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'quiet attribute"</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">=></span> <span class="kr">return</span> <span class="s">"'delayed attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Driving_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'driving attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Driving_Value_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'driving_value attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Event_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'event attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Active_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'active attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Last_Event_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'last_event attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Last_Active_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'last_active attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Last_Value_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'last_value attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Behavior_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'behavior attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Structure_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'structure attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Path_Name_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'path_name attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Instance_Name_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'instance_name attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Simple_Name_Attribute</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"'simple_name attribute"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_For_Loop_Statement</span> <span class="p">=></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">"for loop statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_While_Loop_Statement</span> <span class="p">=></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">"loop statement"</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">=></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">"process"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Block_Statement</span> <span class="p">=></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">"block statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Block_Header</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"block header"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Concurrent_Simple_Signal_Assignment</span> <span class="p">=></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">"concurrent simple signal assignment"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Concurrent_Conditional_Signal_Assignment</span> <span class="p">=></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">"concurrent conditional signal assignment"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Concurrent_Selected_Signal_Assignment</span> <span class="p">=></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">"concurrent selected signal assignment"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Concurrent_Assertion_Statement</span> <span class="p">=></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">"concurrent assertion"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Concurrent_Break_Statement</span> <span class="p">=></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">"concurrent break statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Assert_Directive</span> <span class="p">=></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">"PSL assertion"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Assume_Directive</span> <span class="p">=></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">"PSL assumption"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Cover_Directive</span> <span class="p">=></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">"PSL cover"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Restrict_Directive</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"PSL restrict"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Default_Clock</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"PSL default clock"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Prev</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"PSL prev function"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Stable</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"PSL stable function"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Rose</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"PSL rose function"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Fell</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"PSL fell function"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Onehot</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"PSL onehot function"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Psl_Onehot0</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"PSL onehot0 function"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_If_Statement</span> <span class="p">=></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">"if statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Elsif</span> <span class="p">=></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">"else/elsif statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Next_Statement</span> <span class="p">=></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">"next statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Exit_Statement</span> <span class="p">=></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">"exit statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Case_Statement</span> <span class="p">=></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">"case statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Return_Statement</span> <span class="p">=></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">"return statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Simple_Signal_Assignment_Statement</span> <span class="p">=></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">"signal assignment statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Conditional_Signal_Assignment_Statement</span> <span class="p">=></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">"conditional signal assignment statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Selected_Waveform_Assignment_Statement</span> <span class="p">=></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">"selected waveform assignment statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Signal_Force_Assignment_Statement</span> <span class="p">=></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">"signal force assignment"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Signal_Release_Assignment_Statement</span> <span class="p">=></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">"signal release assignment"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Variable_Assignment_Statement</span> <span class="p">=></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">"variable assignment statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Conditional_Variable_Assignment_Statement</span> <span class="p">=></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">"conditional variable assignment statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Null_Statement</span> <span class="p">=></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">"null statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Wait_Statement</span> <span class="p">=></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">"wait statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Assertion_Statement</span> <span class="p">=></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">"assertion statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Report_Statement</span> <span class="p">=></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">"report statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Break_Statement</span> <span class="p">=></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">"break statement"</span><span class="p">);</span> <span class="kr">when</span> <span class="n">Iir_Kind_Suspend_State_Statement</span> <span class="p">=></span> <span class="c1">-- Should not appear.</span> <span class="kr">return</span> <span class="s">"suspend state statement"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Block_Configuration</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"block configuration"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Binding_Indication</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"binding indication"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Error</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"error"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Unused</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"*unused*"</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">=></span> <span class="kr">return</span> <span class="s">"constant declaration"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Signal_Declaration</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"signal declaration"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_Variable_Declaration</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"variable declaration"</span><span class="p">;</span> <span class="kr">when</span> <span class="n">Iir_Kind_File_Declaration</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"file declaration"</span><span class="p">;</span> <span class="kr">when</span> <span class="kr">others</span> <span class="p">=></span> <span class="kr">return</span> <span class="s">"???"</span> <span class="o">&</span> <span class="n">Iir_Kind</span><span class="p">'</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">'</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">' '</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">'</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">=></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">=></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">=></span> <span class="n">Error_Kind</span> <span class="p">(</span><span class="s">"disp_discrete"</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 '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">"*unknown*"</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">=></span> <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">"enumeration literal "</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">=></span> <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">"function "</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">=></span> <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">"procedure "</span><span class="p">);</span> <span class="kr">when</span> <span class="kr">others</span> <span class="p">=></span> <span class="n">Error_Kind</span> <span class="p">(</span><span class="s">"disp_subprg"</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">=></span> <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">""""</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">""""</span><span class="p">);</span> <span class="kr">when</span> <span class="kr">others</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="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">" ["</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">=></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">", "</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">=></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">=></span> <span class="n">Append</span> <span class="p">(</span><span class="n">Res</span><span class="p">,</span> <span class="s">" return "</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">=></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">"]"</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">"an erroneous type"</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">"a subtype of "</span> <span class="o">&</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">"an unknown type"</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">"unknown"</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>