Aa!&dV  ŀP@ P  `P @P0 @`p  HH $ @d HHHH̀̀̀ff@  d Footnote TableFootnote**.\t.\t/ - :;,.!?  j (  j@TOCHeading1Heading2\AbbiBassamBerkingChas DecompilationDovichElem FrancoiseJimVStructs SystemVerilog UnionTypespecarrayvarbitElemclassvarconstdatatype datatypes decompile decompileddefnendclass endpackageexprfoointintVar logicElemmybit mybundlesmytypemyvarobjps rightmoststruct structElemtypedeftypedefstypespec typespecs varselectvec vpiActual vpiArrayDim vpiArrayDimsvpiArrayMember vpiArrayNetvpiArrayTypespec vpiArrayVarvpiBitvpiBitTypespec vpiBitVarvpiElemTypespecvpiIndexedPartSelectvpiIndexedSlice vpiLogicNetvpiLogicTypespec vpiLogicVar vpiMembervpiNamevpiPackedArrayNetvpiPackedArrayTypespecvpiPackedArrayTypespecsvpiPackedArrayVar vpiPackedDim vpiPackedDims vpiParameter vpiParent vpiPartSelect vpiPrefixvpiRangevpiReg vpiScalarvpiSizevpiSlice vpiStruct vpiStructNetvpiStructTypespec vpiStructVar vpiSubPartvpiSubTypespecvpiSubpartTypespec vpiTypespec vpiUnionNetvpiUnionTypespec vpiUnionVar vpiVarSelect vpiVectorvpi_compare_objectsvpi_free_objectvpi_handle(vpiSubTypespec   EquationVariables3.0aF56677,7E7<$lastpagenum><$monthname> <$daynum>, <$year>"<$monthnum>/<$daynum>/<$shortyear>;<$monthname> <$daynum>, <$year> <$hour>:<$minute00> <$ampm>"<$monthnum>/<$daynum>/<$shortyear><$monthname> <$daynum>, <$year>"<$monthnum>/<$daynum>/<$shortyear> <$fullfilename> <$filename> <$paratext[Title]> <$paratext[Heading1]> <$curpagenum> <$marker1> <$marker2> (Continued)+ (Sheet <$tblsheetnum> of <$tblsheetcount>)Heading & Page <$paratext> on page<$pagenum>Pagepage<$pagenum>See Heading & Page%See <$paratext> on page<$pagenum>. Table All7Table<$paranumonly>, <$paratext>, on page<$pagenum>Table Number & Page'Table<$paranumonly> on page<$pagenum> &HTML Headings++A--A//1133557PA/55555555555555555555588555555555555555555555555555555555559X9Z666666 6 66666666996 6"6$6&6(996,6.60626466686:6<6>6@6B6D6F6H6J6L6N6P6R6T6V6X6Z6\6^6`6b6d6f6h6j6l6n6p6r6t6v6x6z6|6~66666666666666666666666666666666666666666666666666666666666666677777 7 7 7777777777!7#7%7'7)7+7.70727476787:7<7>7@7B7D7G7I7K7M7O7Q7S7U7W7Y7[7]7_7a7c7e7g7i7k7m7o7q7s7u7w7y7{7| 77777777%777'777)777)777)77 :e:g:i;# ;& ;)*;,*;/*;2*;5+;:, Cu Dn C Do D D D D D D C C C C C C C C C C EF C C C C C C Ea C C JD D D D*D+ D, D- D/ D0 D3 D4 D5 D6 D7 D8 D9 D: D; D> D? D@ DA DB DC DD DI DN Dp DY DZ D[ Db Dj Dq Dr Ds Dt Du Dv Dw D{ D| D} D E ED D D D D ED D D D D D D D E9 E: F7 F/ F0 F8 FNFOFVFWF^FqFrFy VB B B, B B B B B, B B B C C C C C C C C  C C C C C  C( C) C* C+ 1.C0 2.C3 C< CO CP CQ CY CZ C` CaCb Cd CeCg CmCn@dq5+dq1-d7##d5y HmR5zHmRHRHRFootnote Hr@5{Hr@HzHz Single LineH5| Footnote 5}  HD5~ HDHH Double LineH5 Double Line5 5 H5  Single Line5 HZ5  TableFootnoted5p77 EGxR5EGxREPwEPw TableFootnoted5$$5$$l $$5$$-_-`ejoty~  #'&*.26:>BFJNQTWZ]`dhlorux{~W{ Bl }$6 5$6 WdHTML Mapping Table }6 56 We }6 56 We }26 526 We }_6 5_6 We }$F.5$F.W dFrameMaker Source Item }F~5F~W d HTML Item }F65F6W e }2F-.52F-. $Include PEAuto# }_F?.5 _F?.W  d Comments }$V5$VW  e }VH5!VHW  dElement }V65 $V6 $New Web PEPage? }2V-52V-W e }_V?5_V?W e }$t5!%$tW dP:Body }tH5$&tHW dP }t65%'t6W dN }2t-5&(2t-W dN }_t?5')_t?W d }$,5(*$,W d P:Bulleted }H,5)+H,,dLI e Parent = UL Qe Depth = 0 }6,5*,6,W dN }2-,5+-2-,W dN }_?,5,._?,W d }$5-/$W d P:CellBody }H5.0HW dP }65/16W dN }2-5022-W dN }_?513_?W  d }$524$W! dP:CellHeading }H535HW" dP }65466W# dN }2-5572-W$ dN }_?568_?W% d }$579$W& d P:Footnote }H58:HW' dP }659;6W( dN }2-5:<2-W) dN }_?5;=_?W* d }$5<>$ W+ d P:Heading1 }H5=?H W, dH* }65>@6 W- dN }2-5?A2- W. dN }_?5@B_? W/ d }$5AC$ W0 d P:Heading2 }H5BDH W1 dH* }65CE6 W2 dN }2-5DF2- W3 dN }_?5EG_? W4 d }$5FH$ W5 dP:HeadingRunIn }H5GIH W6 dH* }65HJ6 W7 dN }2-5IK2- W8 dN }_?5JL_? W9 d }$,5KM$, W: d P:Indented }H,5LNH,, =dP ;e Parent = UL Q<e Depth = 0 }6,6MO6, W> dN }2-,6NP2-, W? dN }_?,6OQ_?, W@ d }$<6PR$< WA dP:Mapping Table Cell }<H6 QS<H WB dP }<66 RT<6 WC dN }2<-6 SU2<- WD dN }_<?6TV_<? WE d }$L6UW$LWF dP:Mapping Table Title }LH6VXLHWG dP }L66WYL6WH dN }2L-6XZ2L-WI dN }_L?6Y[_L?WJ d }$\,6Z\$\,WK d P:Numbered }\H,6[]\H,,NdLI Le Parent = OL QMe Depth = 0 }\6,6!\^\6,WO dN }2\-,6#]_2\-,WP dN }_\?,6%^_\?,WQ d }$b,6'a$b, WR d P:Numbered1 }bH,6)`bbH,, UdLI Se Parent = OL QTe Depth = 0 }b6,6-acb6, WV dN }2b-,6/bd2b-, WW dN }_b?,61ce_b?, WX d }$63df$ WY dP:TableFootnote }H65egH WZ dP }667fh6 W[ dN }2-69gi2- W\ dN }_?6;hj_? W] d }$6=ik$ W^ d P:TableTitle }H6?jlH W_ dH* }66Akm6 W` dN }2-6Cln2- Wa dN }_?6Emo_? Wb d }$6Gnp$ Wc dP:Title }H6IoqH Wd dH* }66Kpr6 We dN }2-6Mqs2- Wf dN }_?6Ort_? Wg d }$6Qsu$ Wh d C:Emphasis }H6StvH Wi dEM }66Uuw6 Wj dN }2-6Wvx2- Wk dN }_?6Ywy_? Wl d }$6[xz$ Wm dC:EquationVariables }H6]y{H Wn dEM }66_z|6 Wo dN }2-6a{}2- Wp dN }_?6c|~_? Wq d }$6e}$ Wr dX:Heading & Page }H6g~H Ws dHeading }66i6 Wt dN }2-6k2- Wu dN }_?6m_? Wv d }$6o$ Ww dX:Page }H6qH Wx dHeading }66s6 Wy dN }2-6u2- Wz dN }_?6w_? W{ d }$6y $ W| dX:See Heading & Page }H6{ H W} d See Also }66} 6 W~ dN }2-6 2- W dN }_?6 _? W d }$6 $ W d X:Table All }H6 H W d Table All }666 W dN }2-62- W dN }_?6_? W d }$6$ W dX:Table Number & Page }H6H $Table PENumber }666 W dN }2-62- W  dN }_?6_? W  d }$R 6$R  W dHTML Options Table }R 6R  W e }hR 6hR  W e }$b6$b W dControl }b6b W dValue }hbH6hbH W d Comments }$r6$r W d Image Format }r6r W d0001IMAGGIF GIF }hrH6 hrH W d }$6!$ W d!Copy Files Imported by Reference }6 " W dN }hH6!#hH W d }$6"$$ W dExport Encoding }6#% W d ISO-8859-1 }hH6$'hH W d }$$ 6*$$ " WdSystem Macros }$ 6$ " We }$ 6$ " We }\$ 6\$ " We }$4h6&+$4h"!W d Macro Name }4h6*,4h"!W d Replace With }4h6+-4h"!W  dHead }\4B6,.\4B"!W! d Comments }$Dh,6-/$Dh,""W" d StartOfDoc }Dh,6.0Dh,""W# d }Dh,6/1Dh,,""$ % ��<$defaulttitle></P��ETITLE> }\��DB,��6�02��\��DB,"�"W% ��d }$ph��6�13��$ph"�#�W& ��d EndOfDoc }��ph��6�24����ph"�#W' ��d }��ph��6�35����ph"�#W( ��d }\��pB��6�46��\��pB"�#W) ��d }$��h,��6�57��$��h,"�$�W* ��dStartOfSubDoc }����h,��6�68������h,"�$W+ ��d }����h,��6�79������h,,"�$, ��%<TITLE> ��<$defaulttitle></P��ETITLE> }\����B,��6�8:��\����B,"�$W- ��d }$��h��6�9;��$��h"�%�W. ��d EndOfSubDoc }����h��6�:<������h"�%W/ ��d }����h��6�;=������h"�%W0 ��d }\����B��6�<>��\����B"�%W1 ��d }$��h,��6�=?��$��h,"�&�W2 ��dStartOfFirstSubDoc }����h,��6�>@������h,"�&W3 ��d }����h,��6�?A������h,,"�&4 ��%<TITLE> ��<$defaulttitle></P��ETITLE> }\����B,��6�@B��\����B,"�&W5 ��d }$��h��6�AC��$��h"�'�W6 ��dEndOfFirstSubDoc }����h��6�BD������h"�'W7 ��d }����h��6�CE������h"�'W8 ��d }\����B��6�DF��\����B"�'W9 ��d }$��h,��6�EG��$��h,"�(�W: ��dStartOfLastSubDoc }����h,��6�FH������h,"�(W; ��d }����h,��6�GI������h,,"�(< ��%<TITLE> ��<$defaulttitle></P��ETITLE> }\����B,��6�HJ��\����B,"�(W= ��d }$$��h��6�IK��$$��h"�)�W> ��dEndOfLastSubDoc }��$��h��7�JL����$��h"�)W? ��d }��$��h��7�KM����$��h"�)W@ ��d }\��$��B��7�LN��\��$��B"�)WA ��d }$:���� ��7�MQ��$:���� "�*�WB��dCross-Reference Macros }��:���� ��7 �������:���� "�*WC��e }D��:���� ��7 �����D��:���� "�*WD��e }$J������7�NR��$J����"�+�WE ��d Macro Name }��J������7�QS����J����"�+WF ��d Replace With }D��J��?��7�RT��D��J��?"�+WG ��d Comments }$Z������7�SU��$Z����"�,�WH ��dHeading }��Z������7�TV����Z����"�,WI ��d <$paratext> }D��Z��?��7�UW��D��Z��?"�,WJ ��d }$j������7�VX��$j����"�-�WK ��d See Also }��j������7�WY����j����"�-WL ��dSee <$paratext>. }D��j��?��7�XZ��D��j��?"�-WM ��d }$z������7 �Y[��$z����"�.�WN ��d Table All }��z������7"�Z\����z����"�.O ��%Table <$paranumonly>, P��E <$paratext> }D��z��?��7$�[]��D��z��?"�.WP ��d }$������7&�\^��$����"�/�WQ ��d Table Number }��������7(�]_��������"�/WR ��dTable <$paranumonly> }D����?��7*�^���D����?"�/WS ��d }$Z�� ��7-�$�d��$Z�� %�0�WT��dGeneral Macros }vZ�� ��7/�$����vZ�� %�0WU��e }Z�� ��71�$����Z�� %�0WV��e }2��Z�� ��73�$����2��Z�� %�0WW��e }$jev��75�$`e��$jev%�1�WX ��d Macro Name }vjev��77�$df��vjev%�1WY ��d Replace With }jC��79�$eg��jC%�1WZ ��dHead }2��jQ��7;�$fh��2��jQ%�1W[ ��d Comments }$zev��7=�$gi��$zev%�2�W\ ��d }vzev��7?�$hj��vzev%�2W] ��d }zC��7A�$ik��zC%�2W^ ��d }2��zQ��7C�$jl��2��zQ%�2W_ ��d }$���� ��7F�$ko��$���� %�3�W`��dCharacter Macros }l���� ��7H�$����l���� %�3Wa��e }������ ��7J�$���������� %�3Wb��e }$��H��7L�$lp��$��H%�4�Wc ��d Character }l������7N�$oq��l����%�4Wd ��d Replace With }����?��7P�$pr������?%�4We ��d Comments }$��H��7R�$qs��$��H%�5�Wf ��d }l������7T�$rt��l����%�5Wg ��d¢ }����?��7V�$su������?%�5Wh ��d }$��H��7X�$tv��$��H%�6�Wi ��d }l������7Z�$uw��l����%�6Wj ��d© }����?��7\�$vx������?%�6Wk ��d }$��H��7^�$wy��$��H%�7�Wl ��d }l������7`�$xz��l����%�7Wm ��d® }����?��7b�$y{������?%�7Wn ��d }$��H��7d�$z|��$��H%�8�Wo ��d }l������7f�${}��l����%�8Wp ��d° }����?��7h�$|~������?%�8Wq ��d }$��H��7j�$}��$��H%�9�Wr ��d }l������7l�$~���l����%�9Ws ��d-- }����?��7n�$������?%�9Wt ��d }$���H��7p�$���$���H%�:�Wu ��d }l�������7r�$��l�����%�:Wv ��d- }�����?��7t�$�������?%�:Ww ��d }$��H��7v�$��$��H%�;�Wx ��d }l������7x�$��l����%�;Wy ��d... }����?��7z�$�������?%�;Wz ��d ��d������7~����������������$$������7�����$$����# ����l��� $$������7�����$$�����������`)�`ejoty~  #'&*.26:>BFJNQTWZ]`dhlorux{~����d������7�������� ��������$$h������7� ����$$h������ ����l��� $$h������7� ����$$h���������� ! ����W ��Bl }$h�� ��7� ���$h��  �<�W|��dHeadings Table }��h�� ��7� ������h��  �<W}��e }��h�� ��7� ������h��  �<W~��e }$Cl��7� ��$Cl �=�W ��dHeading Level }��Cu��7� ����Cu �=W� ��dParagraph Format }��CH��7� ����CH �=W ��d Comments }$Sl��7� ��$Sl �>�W ��d1 }��Su��7� ����Su �>W ��dTitle }��SH��7� ����SH �>W ��d }$il��7� ��$il �?�W ��d2 }��iu��7� ����iu �?W UTUT��d Heading1 }��iH��7� ����iH �?W ��d }${l��7� ��${l �@�W ��d3 }��{u��7� ����{u �@W  ��d Heading2 }��{H��7� ����{H �@W  ��d }$l��7� ��$l �A�W  ��d4 }��u��7� ����u �AW ��d HeadingRunIn }��H��7� ����H �AW  ��d }$l��7�  ��$l �B�W ��d4 }��u��7� !����u �BW  ��d TableTitle }��H��7� �����H �BW ��d $$������7�����$$�������� ���&_#�&*.26:>BFJNQTWZ] `dhlorux{~��$$������7�����$$����&""����l�����d������7��������&& �������� $$������7�$����$$�������� ����`&� `dhlorux{~���$$������7�$����$$����#�%%����l���}������:d�%(������ �C�G��eCSS Export Encoding }������:f�')������ �CG��e ISO-8859-1 }��H��:h�(�����H �CG��e HH��ˆ����;"�����HH��ˆ�� ��������+����G ��e HH��ˆ����;$�3���HH��ˆ����**����l��� HH��ˆ����;%�����HH��ˆ�� ��������-����G ��e HH��ˆ����;'�/���HH��ˆ����,,����l��� HUV�� ��;(�����HUV�� ��������/����W���` HUV�� ��;*�1-��HUV�� ��..����l��� H$�� ��;+�����H$�� ��������1����W���` H$�� ��;-��/��H$�� ��00����l��� HUV�� ��;.�����HUV�� ��������3����G��e HUV�� ��;0�5+��HUV�� ��22����l��� H$�� ��;1�����H$�� ��������5����G��e H$�� ��;3��3��H$�� ��44����l��� HH��ˆ����;4�����HH��ˆ��€�*���*����7����UTUT��� GSV-CC Proposal for Consideration: VPI Standard (1800-2005) Changes for UR���@/Packed-Arrays and Related Properties & Methods ] ���`C. Berking 11/17/2006  G���` Introduction ` X��� ^The following proposal had begun as several loosely-related proposals for improvements to the 0f����cVPI data model to handle packed-arrays, and eliminate related limitations of the current model. It ����Ybecame clear very quickly that these improvements would not be fully appreciated without ����ldescribing them as a � set�  of features, since their implications are closely interrelated, and best ����gunderstood together, i.e. as a system. It is therefore suggested that you consider the proposal in its ���@+entirety before raising specific concerns. r���` !s��� ZGiven the new complexities present in SV designs, features have been chosen to facilitate ����fefficient application design. This is the critical factor that should motivate creation of additional ���@Dobjects, methods and properties when compatibility is not affected. _ ���`Glossary of essential terms ��� gSlice � An indexed contiguous part of a packed-array that includes one or more dimensions itself, 2 ����bi.e.,from declaration logic [1:0][2:5][6:8] myvar, a slice could be myvar[1], or myvar[0][2:3], ����detc. Note that this is not to be confused with the proposed vpiSlice object, which is intended to ���@ represent only the latter form. @ ��� qSubpart � A � slice�  with no part-select-like ranges specified, i.e. the first form described above,  ���@ myvar[1].  ��� lElement � The smallest unit of an array that has a datatype consistent with its declaration, i.e. with " ����aeither all explicit unpacked ranges removed (if array is unpacked) or all explicit packed ranges ����cremoved. Another way of saying this is the � subpart�  of an array with the fewest number of ���@:dimensions of its own whose vpiParent is still the array. d ���`MA) The Case For New Objects to Represent Packed-Arrays of Structs and Unions e ���` 1f��� _The current VPI model has no separate objects to designate packed-arrays of variable-width net/����bvariable objects. The implications of this are that the object net/variable types themselves must ���@Yrepresent both scalar and/or multi-dimensional vector (packed-array) forms. For example: i���` h���`logic logicElem; i���`logic [1:0] logic1dim; j���`logic [1:0][2:5] logic2dim; p���` l���` bit bitElem; m���`bit [1:0] bit1dim; n���`bit [1:0][2:5] bit2dim; p���` j���`;struct packed { bit [7:0] b1; logic [2:0] r1 } structElem; q���`Astruct packed { bit [7:0] b1; logic [2:0] r1 } [1:0] struct1dim; At���`Fstruct packed { bit [7:0] b1; logic [2:0] r1 } [1:0][2:5] struct2dim; HH��ˆ����;6�����HH��ˆ���:66 ����l�����d������?X��������:: �������� HH��ˆ����?Y�8����HH��ˆ��‚���.���.����:����u ���` v���`XThere is no alternative in 1800-2005 to representing the above declarations as follows: r���`=logicElem, logic1dim, logic2dim: vpiLogicVar (vpiReg) s���`6bitElem, bit1dim, bit2dim: vpiBitVar v���`4structElem, struct1dim, struct2dim: vpiStructVar ^���` !{��� \It has been suggested in Mantis item #01230 that all the above forms except structElem be ����Xrepresented as either vpiBitVar or vpiLogicVar (and presumably vpiLogicNet) types, thus ���@Bpreserving the vector-like qualities of all three object types. |���` !}��� ]This works fine for vpiLogicVar (and vpiLogicNet), and vpiBitVar, but the system breaks down ����[when applied to vpiStructVars (and similarly for vpiUnionVar, vpiStructNet, vpiUnionNet). ���@ Consider for these types, that: ~���` !��� ^The bottom-most range (rightmost packed-dimension) is � implicit� , unlike vpiBit/Logic ����\types. For example struct1dim[1][0] is a bit-select, but like integer and byte types, ���@Uthere is no explicit range for index [0] (does struct1dim have 2 ranges or 1 ?). !��� QRepresenting these as vpiBit/Logic type objects would be inconsistent with their ����Zdeclarations. This means, for example, that applications that need to characterize packed-����narrays as such would be � forced�  to extract the � element � type of each vpiBit/Logic object to ����Ydo so (every vpiReg would be a potential packed-array of packed-structs !). This has the ����Xpotential complicate the upgrading of older 1364-compatible applications, and slow down ���@2both new and old applications, at the very least. ���` !��� \The following new object types should be considered for adding to the standard to represent ���@:packed-arrays of struct and union variable and net types: ���`  ���`vpiPackedArrayVar ���`vpiPackedArrayNet ���`  ���`.And their corresponding typespec object type:  ���` ���`vpiPackedArrayTypespec a ���` !��� _Most existing transitions and properties that apply to vpiArrayVar and vpiArrayNet would apply ���@Asimilarly to these new types, with some implications as follows: |���` !}�� bvpiSizeThis property would return the total � number of bits�  of the packed-array, rather ����Hthan the number of elements. It is deemed slightly more important to be ����Jconsistent with the other packed-array types (vpiLogicVar, vpiBitVar, and ����LvpiLogicNet), rather than with vpiArrayVar, for which vpiSize indicates the ���@number of � element� s. ���` !�� ZvpiVectorThis property will always return 1 (true) for the new packed-array types (and ���@6thus vpiScalar would return 0 (false) accordingly). A���` HH��ˆ����?[�8����HH��ˆ��7=99 ����l�����d������@��������== �������� HH��ˆ����@�;����HH��ˆ��‚���.���.����=����� �� ^vpiRegThis transition would allow iteration over the � element� s of the packed-array, ���@(just as it does with an unpacked-array. ���` !�� cvpiArrayMemberThis property will return 1 (true) for all � element� s of the packed-array ���@ objects. ���` !�� bvpiMemberThis transition would � not�  apply to the new packed-array objects directly, but ���@0would clearly be applicable to an � element. {���` !~��� bChanges to the behavior of other transitions and new properties applicable to these new types are ���@%described in the following sections. b���` c ���`9B) The Case For Clarifying and Extending vpiElemTypespec ���` # ��� ZGetting typespec handles for packed array � element� s is problematic. The existing ����^vpiElemTypespec transition (see 27.17) would appear to be the correct method to use for this, ����[however this is only legal for unpacked array typespecs (vpiArrayTypespec). Moreover, its ����_function is not clearly defined; the data model has no detail information as to what an Elem ����cmeans. It is suggested that this should be clearly defined as � element� , as defined in the ����XTerminology section. This would imply that vpiElemTypespec would extract the typespec ����lhandle for the � element � of an array in one step, given an array typespec handle. Furthermore, this ����cshould be extended to operate on packed-arrays as well, allowing applications to extract bit-level ����TvpiLogicTypespec, or vpiBitTypespec handles, respectively, from vpiLogicTypespec or ����\vpiBitTypespec handles representing packed-arrays, and vpiStruct/UnionTypespec handles from ����avpiPackedArrayTypespecs (see table below). Note that the choice of what is meant by � element ����`avoids bypassing struct/union levels for the new packed-array typespec object, i.e. a bit-level ���@dtypespec should not be returned for an � element�  of a packed-array of struct/union objects! *���` +��`Multi-Dim Object�  � Typespec�  � Element�  � vpiElemTypespec , ���` ;���`P ........... Unpacked Array Types ............ -���`f vpiArrayVar vpiArrayTypespec < variable object > <variable typespec> /���`e vpiArrayNet vpiArrayTypespec < net object > < net typespec > =���` >���`O ............ Packed Array Types ............ 1���`f vpiLogicVar vpiLogicTypespec vpiLogicVar vpiLogicTypespec 4���`f vpiLogicNet vpiLogicTypespec vpiLogicNet vpiLogicTypespec 3���` .���`k vpiBitVar vpiBitTypespec vpiBitVar vpiBitTypespec )���` 6���`\ vpiPackedArrayVar vpiPackedArrayTypespec vpiStructVar vpiStructTypespec y���`y vpiUnionVar vpiUnionTypespec z���` 7���`[ vpiPackedArrayNet vpiPackedArrayTypespec vpiStructNet vpiStructTypespec 8���`x vpiUnionNet vpiUnionTypespec A5���` HH��ˆ����@�;����HH��ˆ��:@<< ����l�����d������@��������@@ �������� HH��ˆ����@�>����HH��ˆ��‚���.���.����@����2 ���` : ���`GC) The Case For Adding New Subpart Methods, Especially vpiSubTypespec.  ���` !'��� hSystemVerilog allows partial indexing of packed-arrays to denote � subpart� s, as we have defined ���@them here. For example: !���` "���`" logic [1:0][2:5][6:8] myvar; #���` $���` initial %���` myvar[1] = 0; &���` !?��� WThe vpiLogicVar packed-array myvar is indexed only in the first range, implying that ����mmyvar[1] is actually a 12-bit vector � subpart�  with two ranges below this level. In terms of its ����hproperties as a design object, it is itself indistinguishable from a two-dimensional vector, thus it is ���@6consistent in this regard to call this a vpiLogicVar. A���` !B��� _Characterizing datatypes for multidimensional objects (packed or unpacked) becomes inaccurate, ����]or at best difficult, when their datatypes are constructed incrementally using typedefs from ����\different sources. For example, if the above myvar declaration was instead constructed as ���@ follows: C���` F���` package P; G���`+ typedef logic [2:5][6:8] mytype; H���` endpackage I���` J���` module m; K���` import P::* D���` mytype [1:0] myvar; E���` !L��� `The typespec handle for myvar is of type vpiLogicTypespec, but we cannot accurately represent ����bits vpiName property (the name of the typedef used to define it, or NULL) as mytype here, since ����pthis is not complete (the explicit range [1:0] is not included in the � definition�  for mytype). The ����TvpiLogicTypespec handle cannot be decompiled to indicate this form of incrementally ����cconstructed type without portraying the mytype typedef inaccurately, or ignoring the fact that a ���@typedef was used here. N���` !O��� \vpiSubTypespec (or vpiSubpartTypespec if preferred) is proposed to remedy this. This method ����Yallows incremental unwinding of multi-dimensional typespecs, such that compound datatype ����adefinitions of this type can be accurately decompiled. This allows VPI applications to decompile ���@Qsuch declarations accurately in terms of the way they were originally specified. P���` !Q��� [For example, applying the vpiSubTypespec method progressively to a vpiLogicTypespec handle ���@for myvar above, we get: R���` S��`$ � Ranges�  � vpiSize�  � vpiName AM���` HH��ˆ����@�>����HH��ˆ��=P?? ����l��� ��d������@��������PP �������� HH��ˆ����@�N����HH��ˆ��t���-���-����P����T $���dy TSH0: Initial typespec for myvar [1:0][2:5][6:8] 24 NULL U2���ds TSH1: vpi_handle(vpiSubTypespec, TSH0) [2:5][6:8] 12 mytype (���dt TSH2: vpi_handle(vpiSubTypespec, TSH1) [6:8] 3 NULL V���dq TSH3: vpi_handle(vpiSubTypespec, TSH2) -- none -- 1 NULL W���d !Y���$dSimilarly, the vpiSubTypespec method should allow incremental unwinding of � unpacked�  array ���Dobject datatypes too. Z���d ![���$sOptionally, to allow full VPI access to � subpart� s of � objects�  (that do not appear as such in the ���D8design), an analogous method vpiSubPart could be added. !]���$_This would allow incremental indexing of packed-array (and unpacked array) objects. It would ���aoperate much like vpiReg iterations do for vpiArrayVars, except that it would iterate over only ���DKone index (dimension level) of the reference object for a given iteration. \���d  ���d!D) New Property Recommendations  ���d !���$aGiven the proliferation of new objects, and their possible multi-dimensional combinations, it is ���_surprising that there is no property that relates directly to dimensionality. It seems grossly ���einefficient to require the application developer to create a vpiRange iteration and their respective ���DWhandles to determine if there is one or more dimensions, or worse, determine how many. X���d ^���dDThe following two new properties are proposed to address this need: _���d `���dm � vpiArrayDims�  Returns number of � unpacked�  dimensions of vpiArrayVar, vpiArrayNet, a���d6 or vpiArrayTypespec d���d b���d^ � vpiPackedDims�  Returns number of packed dimensions of any packed-array object c���d^ (vpiLogicVar, vpiLogicNet, vpiBitVar, vpiPackedArrayVar, or e���dg vpiPackedArrayNet) or typespec (vpiLogicTypespec, vpiBitTypespec, or f���dr vpiPackedArrayTypespec). In addition, it is allowed on � unpacked�  array 9���dm objects (listed above) as well, in order to characterize packed-dimensions g���dK � underneath�  unpacked ones.�  h���d k���d Examples: l���d m���dD bit [1:0][2:5] mybit; // vpiPackedDims == 2 n���d o���dV bit [1:0][2:5] mybundles [3:0]; // vpiArrayDims == 1, and vpiPackedDims == 2  ���d q���d struct packed { x���d bit [7:0] b1; w���dL logic [2:0] r1 } [1:0][2:5] struct2dim; // vpiPackedDims == 2 t���d u��� sNote that vpiPackedDims for struct2dim does � not�  include the � implicit�  vector dimension of the P���Dstruct itself. HH��ˆ����A�N����HH��ˆ��@�OO ����l���� �d����������Left�d����������Right�d��������� Reference�d������� �����d�������HTML�d�������HTML�d����� � ��Headings�d����� ��HTML�d�����$��HTML�d����� 8�����d����� ;�����d����� >�����d����� �N�������������@��@��������������������� ���������������������������Mapping Table Title������. ������@��@��������������������� ���������������������������Body������. ������@��@��������������������� ��������������������������Mapping Table Cell������. ����f�@���������A���������� ������������������������� ��� indented numbered����<n+>.\tindented numbered�����f�@��������A���������� ���������������������������� indented numbered1����<n=1>.\tindented numbered����f�@��������������������� ������������������������� �� Indented�����������f�@��������A���������� ���������������������������� indented numbered����<n+>.\tindented numbered����f�@��������������������� ���������������� ��������� �� Indented�����������f�@��������������������� ������������������������� �Body������������f�@�������������������� ������������������������� �Body�����������f�@��������������������� ������������������������� �Body������������f�@��������������������� ������������������������� �Body�������F����f�@��������������������� ������������������������� F#�.�Body������������f�@���������������������� ����������������������������Body������. �����f�@����������������� �������������������������� CellFooting������. \@����f�@��������������������� ������������������������� ]�)�.�Body������������f�@����������������� �������������������������� CellHeading������������f�@���������������������� ����������������������������Body������. �����f�@��������������������� ���������������� ��������� �Body������������f�@��������T��������� ���������������� ��������� � TableTitle����T:Table <n+>: �������f�@�������������������������������������� ����������� �Body������. �����f�@�������������������������������������� ����������� �Body������. �����f�@���������������������� ���������������� ����������� �Body������. �����f�@����������������������� ������������������������������������Body������. ���f�@����������P�������������������������� ����������Body�����Body���� f�@����������P���������� ���������������� ��������� �Body�����Body�����f�@���������P�������� ���������������� ���������� HeadingRunIn�����Body. �����f�@�������������������� ��������������������������Body�����������f�@������������������� ��������������������������� Bulleted����\t�������f�@�������������������� ��������������������������CellBody������������f�@��������������������� ������������������������� �CellBody������������f�@����������������� �������������������������� CellHeading����������f�@�������������������� ���������������������������� Footnote����������f�@���������P������������������������� ����������Heading1�����Body���� f�@���������P��������� ���������������� ����������Heading2�����Body����f�@�������������������� ��������������������������� Indented�����������f�@����������������� ��������������������������� Numbered����<n+>.\t������f�@��������A��������� ��������������������������� Numbered1����<n=1>.\tNumbered����f�@�������������������� ���������������������������� TableFootnote������������f�@��������T��������� ���������������� ���������� TableTitle����T:Table <n+>: ����� f�@���������P������������������������� ����������Title�����Body������������������ �������Emphasis��������������� �������EquationVariables ��������������� �������� ����������������������� �������������� � ��������� ������������������������� �������vp������������������������������ ����������������3 8���� ������������������3 8���� ����������� �������3 8���� ����������� ��������������� ��������� �������vp������������� ������������������������ ����������������������������������������������������������������������������������������������Thin����Medium����Double����Thick�@���� Very Thin�������������������� ��"��������H2��H2��H2��H2��H2�Format A� ����"�������H2��H2��H2��H2��H2�Format B��������������H� Mapping Table���z��>����������������H����6����-����?������ @��C������������������H����z�� ���� )������h����h����h����B����_�� N��*/������������������?����_�� ��02������ev����ev����C����Q������ p��3;������H����������?����)�� W��<B������l����u����H�����C�$6z�� �������������������$Fz�����������������������$Vz�������������� ��!��"�#�$tz������������$���%��&��'��(��$��z��,����������)���*��+��,��-��$��z������������.���/��0��1��2��$��z������������3���4��5��6��7��$��z������ ������8���9��:��;��<��$��z������ ������= ���> ��? ��@ ��A ��$��z������ ������B ���C ��D ��E ��F ��$���z������ ������G ���H ��I ��J ��K ��$��z��,���� ������L ���M ��N ��O ��P ��$<��z������ ������Q ���R ��S ��T ��U ��$L��z������ ������V���W��X��Y��Z��$\��z��,����������[���\��]��^��_��$bz��,���� ������`���a��b��c��d��$��z������ ������e���f��g��h��i��$��z������ ������j���k��l��m��n��$��z������ ������o���p��q��r��s��$��z������ ������t���u��v��w��x��$��z������ ������y���z��{��|��}��$��z������ ������~������������$��z������ �����������������$��z������ ��������� �� �� �� ��$��z������ ������ �����������$��z������� ����������������$R���� ����� ������������$b�������� ��������������$r�������� �������������$�������� ������ ���!��"��$��������C ������#���$��%��$$z�� �����!"�������& ���' �( �) �$4z������ ""�������*!���+!��,!��-!��$Dz��,����!#"������."���/"��0"��1"��$pz������"$"������2#���3#��4#��5#��$��z��,����#%"������6$���7$��8$��9$��$��z������$&"������:%���;%��<%��=%��$��z��,����%'"������>&���?&��@&��A&��$��z������&("������B'���C'��D'��E'��$��z��,����')"������F(���G(��H(��I(��$$��z������(�"������J)���K)��L)��M)��$:��_�� �����+"�������N*���O*�P*�$J��_������*,"�������Q+���R+��S+��$Z��_������+-"������T,���U,��V,��$j��_������,."������W-���X-��Y-��$z��_������-/"������Z.���[.��\.��$��_������.�"������]/���^/��_/��$Z_�� �����1%�������`0���a0�b0�c0�$j_������02%�������d1���e1��f1��g1��$z_������1�%������h2���i2��j2��k2��$���� �����4%�������l3���m3�n3�$��������35%�������o4���p4��q4��$��������46%������r5���s5��t5��$��������57%������u6���v6��w6��$��������68%������x7���y7��z7��$��������79%������{8���|8��}8��$��������8:%������~9���9���9��$���������9;%������:���:��:��$��������:�%������;���;��;��$)�� �����= ������� <���<�<�$C)������<> �������=���=��=��$S)������=? ������>���>��>��$i)������>@ ������?���?��?��${)������?A ������@���@��@��$)������@B ������A���A��A��$)������A� ������B��� B��!B����������� ������'C���(C��)C�����Comment������d� �Black�������T!�White����dd���A�Red���dd�����Green���d�d��� �Blue���d�����Cyan�����d���Magenta����d���� �Yellow������Header/Footer $1Header/Footer $1Header/Footer $2Header/Footer $2IndexIndexCommentCommentSubjectSubjectAuthorAuthorGlossaryGlossaryEquationEquation Hypertext Hypertext  Cross-Ref Cross-Ref Conditional TextConditional TextPositionFMPrivatePositionFMPrivateRangeEndFMPrivateRangeEndFMPrivate HTML Macro HTML Macro�����W.Times New Roman.R.400�� FrameRoman�W.Times New Roman.R.700�� FrameRoman� W.Times.R.400�� FrameRoman� W.Arial.R.700�� FrameRoman�W.Times New Roman.I.400�� FrameRoman�Times ArialTimes New Roman Regular Regular BoldRegularItalic�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������6IرG `CuI>%lrJHX9q3SXk$yRॖ[fxOO{iP'Iä4FXPiKIRXk"f2~rqҜ+H'Pڈfjq^$6иI*5�>_,n\#UKw}?'o39v#CLE`W����