Aa  `P0P p P0P 0  `0Ppp  Author AccelleraTitleSystemVerilog 3.1/draft 1Subject9PRELIMINARY draft of SystemVerilog 3.1, SUBJECT TO CHANGEH $ d HHZZ̀̀̀ff@  'd Footnote TableFootnote**/ - :;,.!? g) gATOCHeading1Heading2LAPIsLimitedInteractiveMaxTime SystemVerilogVCsVerilog*assert(vpi_data_read_isinloadlist(loadlist"assert(vpi_get(vpiDataReadLoadListcbcbEndofCompile cbValueChangecollectionloadCollectiondata_busdata_write_objdatafile debuggers delieanatedesignCollection designObjenumfnamegoto implementorsinstanceHandleintinteroperabilityiteratoritrloadCollection loadedObj loadedVarloadlistminobj object_handleobjs p_vpi_time p_vpi_valueref_h scaleunit scopetype some_portsome_regstruct sub)scope subscopestime_ptime_p;timelinetrvsCollectiontrvsHndltrvsObjvalue_pvar(s varCollection var_handle vc_trvs_hdlversion:Versionvpi vpiAccessvpiAccessInteractivevpiAccessLimitedInteractivevpiAccessPostProcess vpiCollection vpiDataLoadedvpiDataReadAccessvpiDataReadAccessInteractivevpiDataReadAccessPostProcessvpiDataReadGotoNextVCvpiDataReadIsLoadedvpiDataReadLoadListvpiDataReadMinTimevpiDataReadTrvsGotoNextVCvpiDataReadTrvsGotoPrevVCvpiDataReadTrvsHasVCvpiDataReadTrvsHndlvpiDataReadTrvsMaxTimevpiDataReadTrvsMinTimevpiDataReadTrvsTimevpiDataWriteFileTypevpiDataWriteType vpiHandlevpiName vpiParentvpiPortvpiRegvpiTrvsCollection vpiTrvsHasVCvpiTrvsMaxTimevpiTrvsMinTime vpiTrvsNextVC vpiTrvsObj vpiTrvsPrevVC vpiTrvsTimevpiTypevpiTypes vpi_control!vpi_control(vpiDataReadGotoNextVCvpi_control(vpiDataReadMinTimevpi_control(vpiTrvsMinTimevpi_control(vpiTrvsNextVCvpi_control(vpiTrvsTimevpi_control(vpiType vpi_createvpi_create(vpiCollectionvpi_create(vpiTrvsCollectionvpi_create(vpiTypevpi_data_addtoloadlistvpi_data_createloadlistvpi_data_isinloadlist vpi_data_read_addtolist(loadlistvpi_data_read_addtoloadlist%vpi_data_read_addtoloadlist(vpiHandlevpi_data_read_createloadlistvpi_data_read_get_timevpi_data_read_get_time(vpiTypevpi_data_read_get_versionvpi_data_read_getversionvpi_data_read_init$vpi_data_read_init(vpiDataReadAccess/vpi_data_read_init(vpiDataReadAccessPostProcessvpi_data_read_init(vpiTypevpi_data_read_isinloadlist$vpi_data_read_isinloadlist(vpiHandlevpi_data_read_jump&vpi_data_read_jump(vpiDataReadTrvsTimevpi_data_read_jump(vpiTypevpi_data_read_loadvpi_data_read_load(loadlistvpi_data_read_load(var_handlevpi_data_read_load(vpiHandlevpi_data_read_readloadlistvpi_data_read_resetloadlistvpi_data_read_unloadvpi_data_read_unload(vpiHandlevpi_data_resetloadlistvpi_data_write_begintree"vpi_data_write_begintree(vpiHandlevpi_data_write_closevpi_data_write_close(vpiHandlevpi_data_write_createscope$vpi_data_write_createscope(vpiHandlevpi_data_write_createtime#vpi_data_write_createtime(vpiHandlevpi_data_write_createupscope&vpi_data_write_createupscope(vpiHandlevpi_data_write_createvalue$vpi_data_write_createvalue(vpiHandlevpi_data_write_createvar"vpi_data_write_createvar(vpiHandlevpi_data_write_endtree vpi_data_write_endtree(vpiHandlevpi_data_write_get_versionvpi_data_write_openvpi_data_write_open(charvpi_data_write_openfilevpi_data_write_setscaleunit%vpi_data_write_setscaleunit(vpiHandlevpi_free_objectvpi_getvpi_get(vpiDataLoadedvpi_get(vpiDataReadIsLoadedvpi_get(vpiDataReadTrvsHasVCvpi_get(vpiTrvsHasVC vpi_get_timevpi_get_time(vc_trvs_hdl vpi_get_valuevpi_get_value(vc_trvs_hdl$vpi_get_value(vpiType,R`'YC<Y Y IIII I I IFJFLFMFOF_yFt Fv Fw Fy F F F F K Y_4Z<Z=[&[([)[_z_|_}E_[\m] ]]s]u]v]]]_5 `)`* 31675: H2,1.1: 29.6 Reading data( *34910: H3,1.1.1: 29.6.3 Reading an object ) H90003: TableTitle: Table291: Usage extensions to existing VPI routines, +35454: H4,1.1.1.1: 29.6.3.2 Jump Behavior / $25024: H3,1.1.1: 29.1.1 Requirements7 .46458: H3,1.1.1: 29.6.6 Time-ordered traversal: &34758: H2,1.1: 29.7 Unloading the data '44643: H3,1.1.1: 29.3.1 Traverse object         ?B A $*34910: H3,1.1.1: 29.6.3 Reading an object ?B A H90003: TableTitle: Table291: Usage extensions to existing VPI routines?B A$+35454: H4,1.1.1.1: 29.6.3.2 Jump Behavior ?B A$$25024: H3,1.1.1: 29.1.1 Requirements?B A$*34910: H3,1.1.1: 29.6.3 Reading an object ?B A$.46458: H3,1.1.1: 29.6.6 Time-ordered traversal?B A$&34758: H2,1.1: 29.7 Unloading the data?B A$'44643: H3,1.1.1: 29.3.1 Traverse object$ <$curpagenum><$monthname> <$daynum>, <$year>"<$monthnum>/<$daynum>/<$shortyear>;<$monthname> <$daynum>, <$year> <$hour>:<$minute00> <$ampm>"<$monthnum>/<$daynum>/<$shortyear><$monthname> <$daynum>, <$year>"<$monthnum>/<$daynum>/<$shortyear> <$fullfilename> <$filename> <$paratext[ChapterTitle]> <$paratext[SectionTitle]> <$curpagenum> <$paranumonly[Chapter]><$paranum[Chapter]> (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> Draft Number (Draft 1) Draft_title7SystemVerilog 3.1, Accellera Extensions to Verilog-2001VerilogXL version #VerilogXL 1.5c <$volnum>copy2003std#SystemVerilog 3.1 <$chapnum>AnnexAnnex<$paranumonly> $paranumonly<$paranumonly>SectionSection<$paranumonly>TableTable<$paranumonly> $paratext <$paratext>FigureFigure<$paranumonly>ExampleExample<$paranumonly>$paranum <$paranum> (HTML Headings++A..A00hh33557AaacceeAkkmmooArrAuuAww||~~A   AATOC~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGG G GGGGGGGGGGG G"G$G&G(G*G,G.G0G2G4G5G6G8G:G<G>G@GAGBGDGFGHGJGLGNGPGRGTGVGXGZG\G^G`GbGdGfGhGjGlGnGpGrGtGvGxGzG|G~GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHH H HHHHHHHHHH H"H%H'H)H+H-H/H1H3H5H7H9H;H=H?HAHCHEHGHJHLHNHPHRHTHVHXHZH\H^H`HcHeHgHiHkHmHoHqHsHuHwHyH{H}HHHHHHHHHHHHHHHHHHHHHH%HHH*HHH*HHH*HHLHHHLF$LF7LF8F?F%F&I$ Section 29HFIFPFQ;LZ729.7.5 M29.2.2 JD29.2.1 Jr29.7.1 KpLL<=LVLL)>3>>>I>T>_>jLWOLZ8LLR5ZCLZZLLZ`29.8 ]G!!ZdLLR.ZrLLZtLLZx!!Z!LZ!!Z!!Z!!Z!!Z!!Z!!Z!!Z!!Z!!Z!!R5R.R 5X29.3.1 zR&.R(.R)L Table292: XL1)X 2)X 3)U29.1.1 X&X..X 29.3.2.1 XLLXLLXLYYLY!L]H!!ULRs 2)Ru a)XLUR R R UUUXLLY& b)Z!!Y$!!Y%!!]I!!Y'!!Y(!!Y)L!]jLLY+!!Y0!!Y1LLY2!!Y4!!Z!!ULLVLZ!LZ!!Z!!Z!!YLLV LV 29.7.2.2 YY5!!Vb.X5_t29.5 _e.Y@LLVd5XLLV 29.7.2.1 VLLX229.7.3 YCLLVVVZ!!V_f..W!Z!!W!W!X!LX"LLX&XUL_h._j5_l.X>LXgLZ!!X.Z!Z!!Z!Z!!Z LLZLLZ!Z!!ZLL_v29.4 [ LFigure 291 _wLL_x"_y_L_ Figure 292 ]29.7.6 _L _LL_ Figure 293 \LL]LL] LL]kL]oL]LL] 29.9 ]LL]LL^L^ 29.9.1 _m Table291: `LL` LL`LNLLC<%HFFFLF-FRLFWF^LFbFcFdFeFfFrFsFzF{F|LFFFFFLFLH!H"H#H$H%H&H'H(HLI729.2 I29.1 ILI29.1.2 ILIIIIJLJ 29.7.3.1 JJJJJJJJJLMLM 29.2.2.1 J29.2.3 J K  29.2.2.2 K- 29.2.2.2.1 MKuL29.3 K.K5K.K5K.K5K  Table293: K.K.K5K.K5K.K5K.K5Ln429.7.4 M! a)M"M'&b)M(dF*5}seZRQ8seZR GWW3 `To dFdH HN`@H HN`@HRHRAFootnote Hq<@`@H Hq<@`@HzHzA Single LineH'H  Footnote$H$% HH W, dH* }6F=?6 W- dN }2-F>@2- W. dN }_?F?A_? W/ d }$F@B$ W0 d P:Heading2 }HFACH W1 dH* }6GBD6 W2 dN }2-GCE2- W3 dN }_?GDF_? W4 d }$GEG$ W5 dP:HeadingRunIn }HG FHH W6 dH* }6G GI6 W7 dN }2-G HJ2- W8 dN }_?GIK_? W9 d }$ ,GJL$ , W: d P:Indented } H,GKM H,, ; dP <d Parent = UL A=d Depth = 0 } 6,GLN 6, W> dN }2 -,GMO2 -, W? dN }_ ?,GNP_ ?, W@ d }$9GOQ$9 WA dP:Mapping Table Cell }9HGPR9H WB dP }96G!QS96 WC dN }29-G#RT29- WD dN }_9?G%SU_9? WE d }$IG'TV$IWF dP:Mapping Table Title }IHG)UWIHWG dP }I6G+VXI6WH dN }2I-G-WY2I-WI dN }_I?G/XZ_I?WJ d }$Y,G1Y[$Y,WK d P:Numbered }YH,G3Z\YH,,L dLI Md Parent = OL ANd Depth = 0 }Y6,G7[]Y6,WO dN }2Y-,G9\^2Y-,WP dN }_Y?,G;]_Y?,WQ d }$b,G= `$b,#WR e P:Numbered1 }bH,G? _abH,,#S eLI Te Parent = OL AUe Depth = 0 }b6,GC `bb6,#WV eN }2b-,GE ac2b-,#WW eN }_b?,GG bd_b?,#WX e }$GI ce$#WY eP:TableFootnote }HGK dfH#WZ eP }6GM eg6#W[ eN }2-GO fh2-#W\ eN }_?GQ gi_?#W] e }$GS hj$#W^ e P:TableTitle }HGU ikH#W_ eH* }6GW jl6#W` eN }2-GY km2-#Wa eN }_?G[ ln_?#Wb e }$G] mo$#Wc eP:Title }HG_ npH#Wd eH* }6Ga oq6#We eN }2-Gc pr2-#Wf eN }_?Ge qs_?#Wg e }$Gg rt$#Wh e C:Emphasis }HGi suH#Wi eEM }6Gk tv6#Wj eN }2-Gm uw2-#Wk eN }_?Go vx_?#Wl e }$Gq wy$#Wm eC:EquationVariables }HGs xzH#Wn eEM }6Gu y{6#Wo eN }2-Gw z|2-#Wp eN }_?Gy {}_?#Wq e }$G{ |~$#Wr eX:Heading & Page }HG} }H#Ws eHeading }6G ~6#Wt eN }2-G 2-#Wu eN }_?G _?#Wv e }$G $#Ww eX:Page }HG H#Wx eHeading }6G 6#Wy eN }2-G 2-#Wz eN }_?G _?#W{ e }$G $#W| eX:See Heading & Page }HG  H#W} e See Also }6G  6#W~ eN }2-G 2-#W eN }_?G _?#W e }$G $#W e X:Table All }HG H#W e Table All }6G 6#W eN }2-G 2-#W eN }_?G _?#W e }$G $#W eX:Table Number & Page }HG H# %Table PENumber }6G 6#W eN }2-G 2-#W  eN }_?G _?#W  e }$B G $B #W eHTML Options Table }B G B #W e }hB G hB #W e }$RG $R#W eControl }RG R#W eValue }hRHG hRH#W e Comments }$bG $b#W e Image Format }bG b#W e0001IMAGGIF GIF }hbHG hbH#W e }$rG  $r#W e!Copy Files Imported by Reference }rG !r#W eN }hrHG "hrH#W e }$G !#$#W eExport Encoding }G "$#W e ISO-8859-1 }hHG #%hH#W e }$G $&$# W eCSS Export Encoding }G %'# W e ISO-8859-1 }hHG &hH# W e }$$ G$,$$ &!WeSystem Macros }$ G$$ &!We }$ G$$ &!We }\$ G$\$ &!W e }$4hG$(-$4h&"W! e Macro Name }4hG$,.4h&"W" e Replace With }4hG$-/4h&"W# eHead }\4BG$.0\4B&"W$ e Comments }$Dh,G$/1$Dh,&#W% e StartOfDoc }Dh,G$02Dh,&#W& e }Dh,G$13Dh,,&#' % p���<$defaulttitle></���ETITLE> }\��DB,��G�$24���\��DB,&�#W( ���e }$ph��G�$35���$ph&�$�W) ���e EndOfDoc }��ph��G�$46�����ph&�$W* ���e }��ph��G�$57�����ph&�$W+ ���e }\��pB��G�$68���\��pB&�$W, ���e }$��h,��G�$79���$��h,&�%�W- ���eStartOfSubDoc }����h,��G�$8:�������h,&�%W. ���e }����h,��G�$9;�������h,,&�%/ ���%<TITLE> p���<$defaulttitle></���ETITLE> }\����B,��G�$:<���\����B,&�%W0 ���e }$��h��G�$;=���$��h&�&�W1 ���e EndOfSubDoc }����h��G�$<>�������h&�&W2 ���e }����h��G�$=?�������h&�&W3 ���e }\����B��H�$>@���\����B&�&W4 ���e }$��h,��H�$?A���$��h,&�'�W5 ���eStartOfFirstSubDoc }����h,��H�$@B�������h,&�'W6 ���e }����h,��H�$AC�������h,,&�'7 ���%<TITLE> p���<$defaulttitle></���ETITLE> }\����B,��H �$BD���\����B,&�'W8 ���e }$��h��H �$CE���$��h&�(�W9 ���eEndOfFirstSubDoc }����h��H �$DF�������h&�(W: ���e }����h��H�$EG�������h&�(W; ���e }\����B��H�$FH���\����B&�(W< ���e }$��h,��H�$GI���$��h,&�)�W= ���eStartOfLastSubDoc }����h,��H�$HJ�������h,&�)W> ���e }����h,��H�$IK�������h,,&�)? ���%<TITLE> p���<$defaulttitle></���ETITLE> }\����B,��H�$JL���\����B,&�)W@ ���e }$$��h��H�$KM���$$��h&�*�WA ���eEndOfLastSubDoc }��$��h��H�$LN�����$��h&�*WB ���e }��$��h��H�$MO�����$��h&�*WC ���e }\��$��B��H!�$NP���\��$��B&�*WD ���e }$:���� ��H$�$OS���$:���� &�+�WE���eCross-Reference Macros }��:���� ��H&�$�������:���� &�+WF���e }D��:���� ��H(�$�����D��:���� &�+WG���e }$J������H*�$PT���$J����&�,�WH ���e Macro Name }��J������H,�$SU�����J����&�,WI ���e Replace With }D��J��?��H.�$TV���D��J��?&�,WJ ���e Comments }$Z������H0�$UW���$Z����&�-�WK ���eHeading }��Z������H2�$VX�����Z����&�-WL ���e <$paratext> }D��Z��?��H4�$WY���D��Z��?&�-WM ���e }$j������H6�$XZ���$j����&�.�WN ���e See Also }��j������H8�$Y[�����j����&�.WO ���eSee <$paratext>. }D��j��?��H:�$Z\���D��j��?&�.WP ���e }$z������H<�$[]���$z����&�/�WQ ���e Table All }��z������H>�$\^�����z����&�/R ���%Table <$paranumonly>, P���E <$paratext> }D��z��?��H@�$]_���D��z��?&�/WS ���e }$������HB�$^`���$����&�0�WT ���e Table Number }��������HD�$_a���������&�0WU ���eTable <$paranumonly> }D����?��HF�$`����D����?&�0WV ���e }$$�� ��HI�'�f���$$�� )�1�WW���eGeneral Macros }v$�� ��HK�'�����v$�� )�1WX���e }$�� ��HM�'�����$�� )�1WY���e }2��$�� ��HO�'�����2��$�� )�1WZ���e }$4ev��HQ�'bg���$4ev)�2�W[ ���e Macro Name }v4ev��HS�'fh���v4ev)�2W\ ���e Replace With }4C��HU�'gi���4C)�2W] ���eHead }2��4Q��HW�'hj���2��4Q)�2W^ ���e Comments }$Dev��HY�'ik���$Dev)�3�W_ ���e }vDev��H[�'jl���vDev)�3W` ���e }DC��H]�'km���DC)�3Wa ���e }2��DQ��H_�'ln���2��DQ)�3Wb ���e }$Z�� ��Hb�'mq���$Z�� )�4�Wc���eCharacter Macros }lZ�� ��Hd�'�����lZ�� )�4Wd���e }��Z�� ��Hf�'�������Z�� )�4We���e }$jH��Hh�'nr���$jH)�5�Wf ���e Character }lj����Hj�'qs���lj��)�5Wg ���e Replace With }��j?��Hl�'rt�����j?)�5Wh ���e Comments }$zH��Hn�'su���$zH)�6�Wi ���e }lz����Hp�'tv���lz��)�6Wj ���e¢ }��z?��Hr�'uw�����z?)�6Wk ���e }$��H��Ht�'vx���$��H)�7�Wl ���e }l������Hv�'wy���l����)�7Wm ���e© }����?��Hx�'xz�������?)�7Wn ���e }$��H��Hz�'y{���$��H)�8�Wo ���e }l������H|�'z|���l����)�8Wp ���e® }����?��H~�'{}�������?)�8Wq ���e }$��H��H�'|~���$��H)�9�Wr ���e }l������H�'}���l����)�9Ws ���e° }����?��H�'~��������?)�9Wt ���e }$��H��H�'���$��H)�:�Wu ���e }l������H�'����l����)�:Wv ���e-- }����?��H�'�������?)�:Ww ���e }$��H��H�'���$��H)�;�Wx ���e }l������H�'���l����)�;Wy ���e- }����?��H�'�������?)�;Wz ���e }$��H��H�'���$��H)�C�W{ ���e }l������H�'���l����)�CW ���e... }����?��H�'��������?)�CW ���e ��d������H���������""����������d������H��������� ��������$$h������H� �����$$h������ �����l��� $$h������H� �����$$h���������� ! ����W��@l }$h�� ��H� ����$h��  �<�W|���dHeadings Table }��h�� ��H� �������h��  �<W}���e }��h�� ��H� �������h��  �<W~���e }$Cl��H� ���$Cl �=�W ���dHeading Level }��Cu��H� �����Cu �=W� ���dParagraph Format }��CH��H� �����CH �=W ���d Comments }$Sl��H� ���$Sl �>�W ���d1 }��Su��H� �����Su �>W ���dTitle }��SH��H� �����SH �>W ���d }$il��H� ���$il �?�W ���d2 }��iu��H� �����iu �?W UTUT���d Heading1 }��iH��H� �����iH �?W ���d }${l��H� ���${l �@�W ���d3 }��{u��H� �����{u �@W  ���d Heading2 }��{H��H� �����{H �@W  ���d }$l��H� ���$l �A�W  ���d4 }��u��H� �����u �AW  ���d HeadingRunIn }��H��H� �����H �AW  ���d }$l��H�  ���$l �B�W ���d4 }��u��H� !�����u �BW  ���d TableTitle }��H��H� ������H �BW ���d $$������H� �����$$����%##����l��� $$������H� �����$$�����������_'"�_dinsx} "%(,048<@DHLPSVY\_bfjnqtwz}�����d������H���������%%��������$$������H�$�����$$����"(&&�����l��� $$������H�$�����$$�������� ���(a%�(,048<@DHLPSVY\_ bfjnqtwz}�����d������H���������(( ��������$$������H�'�����$$����%�))����l��� $$������H�'�����$$�������� ����b(� bfjnqtwz}���� ���~��F� �+������~���������>�UH��ˆ����F� *3���UH��ˆ�����22 ����l�����d������F/���������-h�������� ���~��F0� ,�.������~���������>�Zl��d����F1� ,-0���Zl��d�����//����l��� Zl��d����F2�,�����Zl��d����������.����W���e U$����F3� ,.h���U$�����11����l��� U$����F4�,�����U$����������0����W���d UH��ˆ����F������UH��ˆ����������+����W���d U$����F � +5���U$�����44 ����l��� U$����F!������U$����������3�������` Accellera Q��`-Extensions to Verilog-2001SystemVerilog 3.1 U�w��R��F"� 3����U�w��R���gg ����l��� UH��ˆ����;������UH��ˆ��„� ��� mm��7����UTUT���  UR���@SystemVerilog Data Read API  ��� oThis chapter extends the SystemVerilog VPI with read facilities so that the Verilog Procedural Interface (VPI) 0����hacts as an Application Programming Interface (API) for data access and tool interaction irrespective of ����qwhether the data is in memory or a persistent form such as a file, and also irrespective of the tool the user is ���@interacting with. 9UTqUL���` Motivation :��� mSystemVerilog is both a design and verification language consequently its VPI has a wealth of design and ver0����oification data access mechanisms. This makes the VPI an ideal vehicle for tool integration in order to replace ����oarcane, inefficient, and error-prone file-based data exchanges with a new mechanism for tool to tool, and user ����nto tool interface. Moreover, a single access API eases the interoperability investments for vendors and users ����nalike. Reducing interoperability barriers allows vendors to focus on tool implementation. Users, on the other ����nhand, will be able to create integrated design flows from a multitude of best-in-class offerings spanning the ��@jrealms of design and verification such as simulators, debuggers, formal, coverage or test bench tools.  9⪙���h/Requirements ���`ISystemVerilog adds several design and verification constructs including:  ���`[C data types such as � int� , � struct� , � union� , and � enum� . ���`7Advanced built-in data types such as � string� . ���`User defined data types. ���`&Test bench data types and facilities. U��� mThe access API shall be implemented by all tools as a minimal set for a standard means for user-tool or tool-0`����rtool interaction that involves SystemVerilog object data querying (reading). In other words, there is no need for ����ua simulator to be running for this API to be in effect; it is a set of API routines that can be used for any interac����wtion for example between a user and a waveform tool to � read�  the data stored in its file database. This usage ���@#flow is shown in the figure below. k�� h4 a9=��`Data read VPI usage model =U��� oOur focus in the API is the user view of access. While the API does provide varied facilities to give the user p`����tthe ability to effectively architect his or her application, it does not address the tool level efficiency concerns ����qsuch as time-based incremental load of the data, and/or predicting or learning the user access. It is left up to ����limplementors to make this as easy and seamless as possible on the user. To make this easy on tools, the API ����qprovides an initialization routine where the user specifies access type and design scope. The user should be priUH��ˆ����;� �����UH��ˆ����D66 ����l���}6pey��R�Qo���6peyR �GWX3 ���`Use ��d������Q���������== �������� UH��ˆ����Q�9�����UH��ˆ��rX� +���+��<<= ����B���} 0���/* Get Max */ ���A/* vpi_trvs_get_time(vpiTrvsMaxTime, vc_trvs_hdl, time_p); */ ���Gvpi_get_time(vc_trvs_hdl, time_p);/* Time of VC*/ ��@Fvpi_get_value(vc_trvs_hdl, value_p);/* VC data*/ !A�� } ���} ����} ����/* free handles */ ���@vpi_free_object(...); J~��� lThe code segment above declares an interactive access scheme, where only a limited history of values is pro0����kvided by the tool (e.g. simulator). It then creates a Value Change (VC) traverse handle associated with an ����uobject whose handle is represented by � var_handle�  but only after the object is loaded into memory first. It ����|then creates a traverse handle, � vc_trvs_hdl� . With this traverse handle, it first calls � vpi_control()�  to ����igo to the minimum time where the value has changed and moves the handle (internal index) to that time by ����{calling � vpi_control� () with a � vpiTrvsMinTime�  argument. It then repeatedly calls � vpi_control()�  ����rwith a�  vpiTrvsNextVC�  to move the internal index forward repeatedly until there is no value change left. ���@nvpi_get_time()�  gets the actual time where this VC is, and data is obtained by � vpi_get_value()� . Kઢ��� VThe traverse and collection handles can be freed when they are no longer needed using 몡���@vpi_free_object()� . U9���h,Jump Behavior V��� vJump behavior refers to the behavior of � vpi_control() � with a � vpiTrvsTime�  property and a jump time 0����qargument. The user specifies a time to which he or she would like the traverse handle to jump, but the specified ����otime may or not have value changes. In that case, the traverse handle shall point to the latest VC equal to or ���@less than the time requested. _J��� In the example below, the whole simulation run is from time� 0�  to time � 65� , and a variable has value changes at 0U����time � 0� , � 15�  and � 50� . If we create a value change traverse handle associated with this variable and try to jump to ���@>a different time, the result will be determined as follows: \q���`CJump to � 10� ; traverse handle return time is � 0� . ]���`EJump to � 15� ; traverse handle return time is � 15� . ^���`EJump to � 65� ; traverse handle return time is � 50� . _���`EJump to � 30� ; traverse handle return time is � 15� . `���`FJump to (� -1� ); traverse handle return time is � 0� . a���`EJump to � 50� ; traverse handle return time is � 50� . b᪒��� mIf the jump time has a value change, then the internal index of the traverse handle will point to that time. 쪑���@BTherefore, the return time is exactly the same as the jump time. p��� mIf the jump time does not have a value change, and if the jump time is not less than the minimum time of the p ��pwhole trace run, then the return time is aligned backward. If the jump time is less than the minimum time, ����vthen the return time will be the minimum time. In case the object has � hold value semantics�  between the VCs ����vsuch as static variables, then the return code of � vpi_control()�  (with a specified time argument to jump to) ����tshould indicate � success� . In case the time is greater than the trace maximum time, or we have an automatic ����mobject or an assertion or any other object that does not hold its value between the VCs then the return code ���@Xshould indicate � failure�  (and the backward time alignment is still performed). }UeT��_6�N�(���UeTO=�O�W/3 ���`To ~U³;��X��C�9�����U³;��XŚX:���(��� k The word trace can be replaced by simulation; we use trace here for generality since a dump file can be \終(0���@generated by several tools. UH��ˆ����Q� 9�����UH��ˆ���\L:: ����l���}sZ��R�Q`?���sZR �L�WZ3 ���`Get read interface version }6py��R�Q>]���6pyR �LWf ���`vpi_read_get_version() }33��K�TA���33U'�D�\3 ��� $Obtain a handle to a word or bit in P���@ an array }1��K�T@���1U'�D] ��� vpi_handle_by_multi_indeP���@x() ��d������E���������DD �������� UH��ˆ����E�B�����UH��ˆ��‡�&���&����D����=���@fmarily concerned with the API specified here, and efficiency issues are dealt with behind the scenes. ;9���`Naming conventions @���`\All elements added by this interface shall conform to the VPI interface naming conventions. BC���`+ All names are prefixed by � vpi� . CT��� } All � type names � shall start with � vpi� , followed by initially capitalized words with no separators, e.g., `���@ vpiName. Eq�� w All callback names shall start with � cb� , followed by initially capitalized words with no separators, e.g., }���@cbValueChange� . G��� y All � function names � shall start with � vpi� _, followed by all lowercase words separated by underscores ���@-(� _� ), e.g., � vpi_handle()� . 8UTUJ���`Extensions to VPI enumerations HѪ��� qThese extensions shall be appended to the contents of the � vpi_user.h � file, described in IEEE Std. 1364-ܪ���@v2001, Annex G. The numbers in the range�  800 - 899�  are reserved for the read data access portion of the VPI. #9���` Object type properties - ��� qAll objects have a � vpiType�  property. This API adds a new object type for data traversal, and two other ���@Dobjects types for object collection and traverse object collection. F$��� 2/* vpiHandle type for the data traverse object */ 00���D#define vpiTrvsObj 800 /* use in vpi_handle()*/ ���L#define vpiCollection801 /* Collection of design objs*/ ��@Q#define vpiTrvsCollection802 /* Collection of vpiTrvsObjs*/ ,^��� rThe other object types that this API references, for example to get a value at a specific time, are all the valid i����utypes in the VPI that can be used as arguments in the � VPI routines for logic and strength value processing such ���@Oas � vpi_get_value(vpiType,<object_handle>)� . � These types include: J���` Constants P���`Nets and net arrays K���`Regs and reg arrays L���` Variables M���`Memory N���` Parameters O���` Primitives Q���` Assertions R��� mIn other words, any limitation in � vpiType�  of � vpi_get_value(vpiType,<object_handle>)�  will $���@*also be reflected in this data access API "9;���`Object properties SQ���`2This section lists the object property VPI calls. T9d���` Static info Zx��� /* Check type */ P„���=#define vpiDataLoaded 803 /* use in vpi_get() */ UH��ˆ����E� B�����UH��ˆ���7GCC  ����l�����d������E���������GG �������� UH��ˆ����E�E�����UH��ˆ��}�+���+����G����Z���;#define vpiTrvsHasVC804 /* use in vpi_get() */ 0���� ����/* Access type */ ���L#define vpiAccessLimitedInteractive805 /* interactive */ ���G#define vpiAccessInteractive806 /* interactive: history */ ��@B#define vpiAccessPostProcess807 /* data file*/ X9V���` Dynamic info Y���`Control constants V��� -/* Control Traverse: use in vpi_control() */ 0���:#define vpiTrvsMinTime808/* min time*/ ���:#define vpiTrvsMaxTime809/* max time*/ ���'#define vpiTrvsPrevVC  810 ���&#define vpiTrvsNextVC 811 ��@9#define vpiTrvsTime 812/* time jump*/ ;9Ϊ���`Get properties =䪛��� jThe following properties are intended to enhance the access efficiency. The function can be alternatively 0漢����vobtained indirectly through a combination of � vpi_control()�  call to go to the min, max, or specific time, or ����jwithout calling � vpi_control()�  use the place the handle is already pointing at (if valid), and a ����rvpi_get_time()�  call. No new properties are added here, the same � vpiType� s can be used where the con���@0text (get or go to) can distinguish the intent. < ��� &/* Get: Use in vpi_trvs_get_time() */ 0,����/* ���3#define vpiTrvsMinTime808// min time ���3#define vpiTrvsMaxTime809// max time ���<#define vpiTrvsTime812// traverse handle time ���@*/ U9t���`System callbacks %��� kThe access API adds no new system callbacks. The reader routines (methods) can be called whenever the user ���@3application has control and wishes to access data. [UTU7���`VPI object type additions ~9˪���hTraverse object w᪊��� iTo access the value changes of an object over time, the notion of a Value Change (VC) traverse handle is 0쪉����ladded. A value change traverse object is used to traverse and access value changes not just for the current ����xvalue (as calling � vpi_get_time()�  or � vpi_get_value()�  on the object would) but for any point in time: ����wpast, present, or future. To create a value change traverse handle the routine � vpi_handle()�  is called with a ���@vpiTrvsObj vpiType� : y���  2)����-vpiHandle object_handle; /* design object */ ����8vpiHandle trvsHndl = vpi_handle(/*vpiType*/vpiTrvsObj, ��@(/*vpiHandle*/ object_handle); ,9Y���`Collection object xo��� nIn order to read data efficiently, we may need to specify a group of objects for example when loading (or traPz����tversing) data we may wish to specify a list of objects that we want to mark as targets of data load (or traversal). UH��ˆ����E� E�����UH��ˆ���DJFF ����l�����d������E���������JJ �������� UH��ˆ����E�H�����UH��ˆ��~�.���.����J����x���@lSuch a grouping we refer to as a � collection� . We add the notion of a collection of objects to VPI.  ��� qThe collection object of type � vpiCollection�  represents a user-defined collection of VPI objects in the 0����tdesign; these cannot be traverse objects of type � vpiTrvsObj� . The collection contains a set of VPI objects ����oand can take on an arbitrary size. The collection may be created at any time and existing objects can be added ����qto it. The purpose of a collection is to group design objects and permit operating on each element with a single ����woperation applied to the whole collection group. � vpi_scan()�  is used to iterate on the elements of the collec���@tion.  g���``A � vpiTrvsCollection�  is a collection of traverse objects of type � vpiTrvsObj� . \���`-Our usage here in the read API is of either:  ��� mDesign object collections: Used for example in � vpi_read_load()�  to load data for all the objects. A 0����lcollection of objects if of type � vpiCollection�  in general (the elements can be any object type in ���@Bthe design except traverse objects of type � vpiTrvsObj� ).  ��� kData traverse objects: Used for example in � vpi_control()�  to move the traverse handles of all the ê���@^objects in the collection. A collection of traverse objects is a � vpiTrvsCollection� . ٪��� A collection object is created with � vpi_create()� . The first call gives � NULL�  handles to the collection object 0䪛����oand the object to be added. Following calls, which can be performed at any time, provide the collection handle ���@cand a handle to the object for addition. The return argument is a handle to the collection object. (���` For example: ���`vpiHandle designCollection; ���`vpiHandle designObj; '���`vpiHandle trvsCollection; "���`vpiHandle trvsObj;  ��`9/* Create a collection of design objects*/ &���`:designCollection = vpi_create(vpiCollection, NULL, NULL); j��`7/* Add design object designObj into it*/ ���`KdesignCollection = vpi_create(vpiCollection, designCollection, designObj); !���` #��`5/* Create a collection of traverse objects*/ *���`<trvsCollection = vpi_create(vpiTrvsCollection, NULL, NULL); 6��`8/* Add traverse object trvsObj into it */ )���`ItrvsCollection = vpi_create(vpiTrvsCollection, trvsCollection, trvsObj); $��� uA collection objects exists from the time it is created until its handle is released. It is the applications respon���@dsibility to keep a handle to the created collection, and to release it when it is no longer needed.  9ƪ���`Operations on collections ;ܪ��� tWe define a method for loading data of objects in a collection: � vpi_read_load()� . This operation loads all 0窔����tthe objects in the collection. It is equivalent to performing a � vpi_read_load()�  on every single handle of ���@'the object elements in the collection. %��� qA traverse collection can be obtained (i.e. created) from a design collection using vpi_handle(). The call would ���@take on the form of: n"��� vpiHandle loadCollection; 0.����</* Obtain a traverse collection from the load collection */ ���@/vpi_handle(vpiTrvsCollection, loadCollection); oP���hGThe usage of this capability is discussed in Section 929.7.68. Ae��� qWe also define a method on collections of traverse handles i.e. collections of type � vpiTrvsCollection� . pp����uThis method is � vpi_control()� . Its function is equivalent to applying � vpi_control()�  with the same ���@]time control arguments to move the traverse handle of every single object in the collection. UH��ˆ����E� H�����UH��ˆ���GMII  ����l�����d������E���������MM�������� UH��ˆ����E�K�����UH��ˆ��%�����E[��M����`UTUT���`Object model diagram additions b��� zA traverse object of type � vpiTrvsObj�  is related to its parent object; it is a means to access the value data of 0����lsaid object. An object can have many traverse objects each pointing and moving in a different way along the ����lvalue data horizon. This is shown graphically in the model diagram below. The named valued class is a rep���@6resentational grouping consisting of any object that: cQ���` Has a name dc��� [Can take on a value accessible with � vpi_get_value(vpiType,<object_handle>) � where o���HjvpiType�  is the type of the named object; one that can take on a value. See Section 029.1.11. e�� h2 f9���`!Model diagram of traverse object h��� vA collection object of type � vpiCollection�  groups together a set of design objects (of any type). A traverse ����tcollection object of type � vpiTrvsCollection�  groups together a set of traverse objects of type � vpiTrv���@ sObj� . i9�� h3 j9ƪ���`#Model diagram of object collection 9UTU^���`!Usage extensions to VPI routines -��� mSeveral VPI routines have been extended in usage with the addition of new object properties. While the exten���@osions are fairly obvious, they are emphasized here again to turn the readers attention to the extended usage. W. !����` UH��ˆ����E� K�����UH��ˆ���JPLL ����l�����d������E���������PP�������� UH��ˆ����E�N�����UH��ˆ��� �����;AP����v/��@h4)Usage extensions to existing VPI routines= *UTxUS���`New additions to VPI routines ���`6This section lists all the new VPI routine additions. Q+���` UH��ˆ����E� N�����UH��ˆ���MSOO  ����l�����d������E���������SS�������� UH��ˆ����E�Q�����UH��ˆ��…������%S����/��@h New Reader VPI routines YUTUS���hReading data 9���`&Reading data is performed in 3 steps: )���`mA design object must be � selected�  for loading from a database (or from memory) into active memory. =��� vOnce an object is selected, it can then be � loaded�  into memory. This step creates the traverse object handle I���@1used to traverse the design objects stored data. ]��� nAt this point the object is available for reading. A traverse object must be created to permit the data value i���@traversal and access. $9���`Object selection for loading &���`(Selecting an object is done in 3 steps: (���`f The first step is to initialize the read access with a call to � vpi_read_init()�  by setting: ���`7Access type: The vpi properties set the type of access ��� `vpiAccessLimitedInteractive� : Means that the access will be done for the data stored in the 2ު����ktool memory (e.g. simulator), the history (or future) that the tool stores is implementation dependent. If ����ithe tool does not store the requested info then the querying routines shall return a fail. The file argu���@]ment to � vpi_read_init()�  in this mode will be ignored (even if not � NULL� ). ��� dvpiAccessInteractive� : Means that the access will be done interactively. The tool will then use 2����rthe data file specified as a flush file for its data. This mode is very similar to the � vpiAccess� Limit����gedInteractive with the additional requirement that all the past history (before current time) shall be ���@jstored (for the specified scope/collection, see the � Access Scope/Collection�  description below). >��� cvpiAccessPostProcess� : Means that the access will be done through the specified file. All data 2J����jqueries shall return the data stored in the specified file. Data history depends on what is stored in the ���@)file, and can be nothing (i.e. no data). j��� cSpecifying the elements that will be accessed is accomplished by specifying a scope and/or an item pv����kcollection. At least one of the two needs to be specified. If both are specified then the union of all the ���@Eobject elements forms the entire set of objects the user may access. UH��ˆ����E� Q�����UH��ˆ���PVRR ����l�����d������E���������VV�������� UH��ˆ����E�T�����UH��ˆ��t������'"V������� fAccess scope: The specified scope handle, and nesting mode govern the scope that access returns. Data 0����kqueries outside this scope (and its sub-scopes as governed by the nesting mode) shall return a fail in the ����uaccess routines unless the object belongs to � access collection � described below. It can be used either in a ����zcomplementary or in an exclusive fashion to � access collection� . � NULL�  is to be passed to the collection ���@=when � access scope�  is used in an exclusive fashion. )H��� gAccess collection: The specified collection stores the traverse object handles to be loaded. It can be 0T����{used either in a complementary or in an exclusive fashion to � access scope� . � NULL�  is to be passed to the ���@Hscope when � access collection � is used in an exclusive fashion. tv��� nvpi_read_init() � can be called multiple times. The access specification of a call remains valid until the ���@next call is executed. ��� fThe next step entails obtaining the object handle. This can be done using any of the VPI routines for 0����ltraversing the HDL hierarchy and obtaining an object handle based on the type of object relationship to the ���@Cstarting handle. These routines are listed in the following table. f/��@hB'VPI routines for obtaining handle from hierarchy or property 79���`Loading objects ?ͪ��� pOnce the object handle is obtained then we can use the VPI data load routine � vpi_read_load()�  with the 0ت����xobjects � vpiHandle�  to load the data for the specific object onto memory. Alternatively, for efficiency consid����perations, � vpi_read_load()�  can be called with a design object collection handle of type � vpiCollec����vtion� . The collection must have already been created using � vpi_create()�  and the selected object handles "����sadded to the load collection using � vpi_create()�  with the created collection list passed as argument. The ����uobject(s) data is not accessible as of yet to the users read queries; a traverse handle must still be created. This ���H*is presented in Section 29.7.3. '$��� rNote that loading the object means loading the object from a file into memory, or marking it for active use if it p/����mis already in the memory hierarchy. Object loading is the portion that tool implementors need to look at for ����nefficiency considerations. Reading the data of an object, if loaded in memory, is a simple consequence of the ����nload. The API does not specify here any memory hierarchy or caching strategy that governs the access (load or ����pread) speed. It is left up to tool implementation to choose the appropriate scheme. It is recommended that this ����qhappens in a fashion invisible to the user. The API does provide the tool with the chance to prepare itself with ����sthe � vpi_read_init()� . With this call, the tool can examine what type of access, and what signals the user ���@Fwishes to access before the actual load and then read access is made. UH��ˆ����E� T�����UH��ˆ���SYUU  ����l�����d������E���������YY�������� UH��ˆ����E�W�����UH��ˆ��…�-���-����Y ����>9���`,Iterating the design for the loaded objects 3��� dThe user shall be allowed to iterate for the loaded objects in a specific instantiation scope using ����qvpi_iterate()� . This shall be accomplished by calling � vpi_iterate()�  with the appropriate reference ���@Mhandle, and using the property � vpiDataLoaded� . This is shown below. zE��� oIterate all data read loaded objects in the design: use a � NULL � reference handle (� ref_h� ) to Q���@vpi_iterate()� , e.g., {e��� 4itr = vpi_iterate(vpiDataLoaded, /* ref_h */ NULL); 0q����$while (loadedObj = vpi_scan(itr)) { ����/* process loadedObj */ ���@} |��� iIterate all data read loaded objects in an instance: pass the appropriate instance handle as a reference ���@)handle to � vpi_iterate()� , e.g., }��� >itr = vpi_iterate(vpiDataLoaded, /* ref_h */ instanceHandle); 0ɪ����$while (loadedObj = vpi_scan(itr)) { ����/* process loadedObj */ ���@} 49���`=Iterating the load collection for its element loaded objects S ��� tThe user shall be allowed to iterate for the loaded objects in the load collection using � vpi_scan()� . This ���@mshall be accomplished by using the load collection handle as a reference handle to � vpi_scan()�  e.g. O&���  22���6vpiHandle var_handle;/* some object*/ ���?vpiHandle varCollection;/* object collection*/ ���>vpiHandle loadedVar;/* Loaded object handle*/ ���3/* Create load object collection*/ ����AvarCollection = vpi_create(� vpiCollection, NULL, NULL� ); ���;/* Add elements to the object collection*/ ���@FvarCollection = vpi_create(vpiCollection, varCollection, var_handle); 5���  R����./* Iterating a collection for its elements */ "���Swhile (loadedVar = vpi_scan(varCollection)) {/* scan the list*/ ����/* process loadedVar */ ���@} @9Ӫ���h(Reading an object 8骉���`So far we have outlined: ���`aHow to select an object for loading, in other words, marking this object as a target for access. N ��� eHow to load an object into memory by obtaining a handle and then either loading objects individually ���@)or as a group using the load collection. L*���`^How to iterate the design scope and the load collection to find the loaded objects if needed. M@��� oReading an object means obtaining its value changes. VPI, before this extension, had allowed a user to query a pK����svalue at a specific point in time--namely the current time, and its access does not require the extra step of load����ling the object data. We add that step here because we extend VPI with a temporal access component: The user ����scan ask about all the values in time (regardless of whether that value is available to a particular tool, or found ����min memory or a file, the mechanism is provided). Since accessing this value horizon involves a larger memory ����nexpense, and possibly a considerable access time, we have added also in this Chapter the notion of loading an ����dobjectss data for read. Lets see now how to access and traverse this value timeline of an object. UH��ˆ����E� W�����UH��ˆ���V\XX ����l�����d������E���������\\�������� UH��ˆ����E�Z�����UH��ˆ���7���7����\ ����M���� 0����jTo access the value changes of an object over time we use a traverse object introduced earlier in Section ���u?29.3.1>. Several VPI routines are also added to traverse the value changes (using this new handle) back and ����sforth. This mechanism is very different from the iteration notion of VPI that accesses properties of an object, ����pthe traversal here can walk or jump back and forth on the value change timeline of an object. To create a value ����bchange traverse handle the routine � vpi_handle()�  must be called in the following manner: ���� ����<vpiHandle trvsHndl = vpi_handle(vpiTrvsObj, object_handle); "���� ����lNote that the user (or tool) application can create more than one value change traverse handle for the same ����lobject, thus providing different views of the value changes. Each value change traverse handle shall have a ����omeans to have an internal index, which is used to point to its current time and value change of the place it ����spoints. In fact, the value change traversal can be done by increasing or decreasing this internal index. What this ����qindex is, and how its function is performed is left up to tools implementation; we only use it as a concept for ���@explanation here. 2��� nOnce created the traverse handle can point anywhere along the timeline; its initial location is left for tool ���@zimplementation. It is up to the user to call an initial � vpi_control()�  to the desired initial pointing location. I9Ӫ���`$Traversing value changes of objects h骘��� uAfter getting a traverse � vpiHandle� , the application can do a forward or backward walk or jump traversal by ���@Ausing � vpi_control()�  with the new traverse properties. [ ���`\Here is a sample code segment for the complete process from handle creation to traversal. :�� OvpiHandle instanceHandle; /* Some scope object is inside*/ 0���>vpiHandle var_handle; /* Object handle*/ ���AvpiHandle vc_trvs_hdl; /* Traverse handle */ ����vpiHandle itr; ���<p_vpi_value value_p; /* Value storage*/ ��@9p_vpi_time time_p; /* Time storage*/ ?���`... !@ ��� !/* Initialize the read interface ���CAccess data from (say simulator) memory, for scope instanceHandle ���and its subscopes */ ����9/* Call marks access for all the objects in the scope */ ����Kvpi_read_init(vpiAccessLimitedInteractive, NULL, NULL, instanceHandle, 0); ���� ����1itr = vpi_iterate(vpiVariables, instanceHandle); ����%while (var_handle = vpi_scan(itr)) { ���Aif (vpi_get(vpiDataLoaded, var_handle) == 0) { /* not loaded*/ ���1/* Load data: object-based load, one by one */ ���Lif (!vpi_read_load(var_handle)); /* Data not found !*/ ��@ break; P��`} Y��`1/* Create a traverse handle for read queries */ !R �� 3vc_trvs_hdl = vpi_handle(vpiTrvsObj, var_handle); ���/* Go to minimum time */ ���+vpi_control(vpiTrvsMinTime, vc_trvs_hdl); ��� /* Get info at the min time */ ���7vpi_get_time(vc_trvs_hdl, time_p); /* Minimum time */ ���vpi_printf(...); ���2vpi_get_value(vc_trvs_hdl, value_p); /* Value */ ���vpi_printf(...); ���<if (vpi_get(vpiTrvsHasVC, vc_trvs_hdl)) { /* Have VCs ? */ ��@1for (;;) { /* scan all the elements in time */ aB�� 7if (vpi_control(vpiTrvsNextVC, vc_trvs_hdl) == 0) { ���/* already at MaxTime */ ���#break; /* cannot go further */ UH��ˆ����E� Z�����UH��ˆ���Y=[[  ����l���}sZ��R�Q?^���sZR �M�Wl3 ���`Initialize read interface }6py��R�Q]_���6pyR �MW{ ���`vpi_read_init() }sZ��R�Q^���sZR �N�|3 ��� 7Load data (for a single design object or a collection) P���@ onto memory ��d������F ���������ae��������U$����F � `�c���U$�����bb ����l��� U$����F �`�����U$����������a������` Accellera Q��`-SystemVerilog 3.1Extensions to Verilog-2001 Uw��R��F� `ae���Uw��R���dd ����l��� Uw��R��F�`�����Uw��R��������c����W��lH15Copyright 2003 Accellera. All rights reserved. UH��ˆ����F� `c����UH��ˆ�����ff ����l��� UH��ˆ����F�`�����UH��ˆ����������e����W���d�  U�w��R��F#������U�w��R��������5����W��hHCopyright 2003 Accellera. All rights reserved.14 Zw��R��F5� ,0����Zw��R���ii����l��� Zw��R��F6�,�����Zw��R��������h����W��lU Running H/F 4 Copyright 2003 Accellera. All rights reserved.. #  ��d������FA���������ko��������U$����FB� j�m���U$�����ll ����l��� U$����FC�j�����U$����������k������d Accellera Q��dSystemVerilog 3.1 Uw��R��FD� jko���Uw��R���nn ����l��� Uw��R��FE�j�����Uw��R��������m������lU#Copyright 2003 Accellera. All rights reserved..Running H/F 4 Q���d UH��ˆ����FF� jm����UH��ˆ�����pp ����l��� UH��ˆ����FG�j�����UH��ˆ����������o����W���d ��d������FT���������rr��������UH��ˆ����FU� q�����UH��ˆ�����ss����l��� UH��ˆ����FV�q�����UH��ˆ����������r����W?UTUT���e ��d������FY���������uw��������UH��ˆ����FZ� t�w���UH��ˆ�����vv����l��� UH��ˆ����F[� t�����UH��ˆ����������u����W���d U8I��6y��F\� tu����U8I��6y���xx����l��� U8I��6y��F]� t�����U8I��6yOJ� ���yy��w����@�� l  i���d !h���d "���d #���$cAll rights reserved. No part of this document may be reproduced or distributed in any medium whatPKe���DHsoever to any third parties without prior written consent of Accellera. UBI��J��F`�t�������zz�x�����h ���Fa� y������h ���h…��d������Fh���������|��������U$����Fi� {�~���U$�����}}����l��� U$����Fj�{�����U$����������|����$��d Accellera Q%��d-SystemVerilog 3.1Extensions to Verilog-2001 Uw��R��Fk� {|����Uw��R�������l��� Uw��R��Fl�{�����Uw��R��������~����&��lT# Copyright 2003 Accellera. All rights reserved.!Running H/F 4" Q'���d D�;Hˆ����Fm� {~���D�;Hˆ��������l��� D�;Hˆ����Fn�{�����D�;Hˆ�������������������UHˆ����Fo� {�����UHˆ���������l��� UHˆ����Fp�{�����UHˆ��������������W(���d UH�ˆ����Fq�{����UH�ˆ�����d������F~����������������� ��_���F� ������_����������>�D�;Hˆ����F�  � ��D�;Hˆ��� � ����l��� D�;Hˆ����F������D�;Hˆ������������������U$����F�  ���U$�����  ����l��� U$����F������U$���������� ����)���d Accellera Q*��d-Extensions to Verilog-2001SystemVerilog 3.1 U�w��R��F�  ���U�w��R���  ����l��� U�w��R��F������U�w��R�������� ����+��lU#Running H/F 4$Copyright 2003 Accellera. All rights reserved..%#& Q,���d UHˆ����F�  ���UHˆ���� ����l��� UHˆ����F������UHˆ���������� ����W-���d UH�ˆ����F� ����UH�ˆ�� ��d������F�����������������UH��ˆ����F� �����UH��ˆ���������l��� UH��ˆ����F������UH��ˆ��������������W.���d ��d������H�����������������HH��ˆ����H� �����HH��ˆ����������l��� HH��ˆ����H� �����HH��ˆ��� ��� ��������/��d"<$paranum><$paratext><$pagenum> 0��d#<$paranum><$paratext><$pagenum> 1��d#<$paranum><$paratext><$pagenum> 2��d#<$paranum><$paratext><$pagenum> 3Z��d$<$paranum><$paratext><$pagenum> 4��d#<$paranum><$paratext><$pagenum> 5~��d"<$paranum><$paratext><$pagenum> 6��d"<$paranum><$paratext><$pagenum> C7���d }33h��K�T���33hU'�E�^3 ��� Obtain a handle for an indexed P���@object }1h��K�T@���1hU'�EW_ ���`vpi_handle_by_index() }33S��K�T���33SU'�F�W`3 ���`#Obtain a handle for a named object }1S��K�T���1SU'�FWa ���`vpi_handle_by_name() }6py��R�Q_b���6pyR �NW} ���`vpi_read_load() ��d������Ze���������&&��������}1��K�T'���1U'�HWg3 ���`Use }334��K�T���334U'�I�h3 ��� %Obtain a handle for an object with a P���@one-to-one relationship }14��K�T���14U'�IWi ���` vpi_handle() }33��K�TA ���33U'�J�j3 ��� $Obtain handles for objects in a one-P���@to-many relationship }1��K�T!���1U'�Jk ���`vpi_iterate() Qp���` vpi_scan() }33��K�T "���33U'�K�l3 ��� #Obtain a handle for an object in a P���@many-to-one relationship }1��K�T!����1U'�KWm ���`vpi_handle_multi() UH��ˆ����Zf������UH��ˆ��…�4���4����& ����T���@Lloaded objects, and perform its querying and data processing as it desires. !9���`Object-based traversal l��� mObject based traversal can be performed by creating a traverse handle for the object and then moving it back 0����mand forth to the next or previous Value Change (VC) or by performing jumps in time. A traverse object handle ����xfor any object in the design can be obtained by calling � vpi_handle()�  with a � vpiTrvsObj�  type, and an ���Hobject � vpiHandle� . This is the method described in Section 629.7.35, and used in all the code examples thus far. mi��� nUsing this method, the traversal would be object-based because the individual object traverse handles are cre0t����nated, and then the application can query the (value, time) pairs for each VC. This method works well when the ���@Ydesign is being navigated and there is a need to access the (stored) data of an object. g9���h7Time-ordered traversal k��� oAlternatively, we may wish to do a time-ordered traversal i.e. a time-based scan of values of several objects. 0����}We can do this by using a collection. We first create a � traverse collection�  of type � vpiTrvsCollection�  of ����tthe objects we are interested in traversing from the design object collection of type � vpiCollection�  using "����kvpi_handle()�  with a � vpiTrvsCollection�  type and collection handle argument. We can then call ����pvpi_control()�  on the traverse collection to move to next or previous or do jump in time for the collection "����vas a whole. A move to next (previous) VC means move to the next (previous) � earliest�  VC among the objects in ����othe collection; any traverse handle that does not have any VC is ignored. A jump to a specific time aligns the ����rhandles of all the objects in the collection (as if we had done this object by object, but here it is done in one-���@shot for all elements). m��� kWe can choose to loop in time by incrementing the time, and doing a jump to those time increments. This is $���@%shown in the following code snippet. p.���` vpiHandle loadCollection = ...; y9���`vpiHandle trvsCollection; w���`p_vpi_time time_p; r���` z���`?/* Obtain (create) traverse collection from load collection */ q���`@trvsCollection = vpi_handle(vpiTrvsCollection, loadCollection); s���`,/* Loop in time: increments of 100 units */ t���`%for (i = 0; i < 1000; i = i + 100) { u��`time_p = ...; x��`/* Go to point in time */ ��`3vpi_control(vpiTrvsTime, trvsCollection, time_p); v���`} n��� sAlternatively we may wish to go to the next VC of the traverse collection defined to be the � VC with the smallȪ����vest time�  among the VCs in the traverse object in the collection; again traverse objects with no VCs are ignored. ���@-This is shown in the following code snippet. .���` vpiHandle loadCollection = ...; /���`vpiHandle trvsCollection; 0���`p_vpi_time time_p; 1���` E���`!/* Create traverse collection */ I���`@trvsCollection = vpi_handle(vpiTrvsCollection, loadCollection); Z���` U���`//* Go to earliest next VC in the collection */ W���`/for (;;) { /* scan all the elements in time */ !]�� 8if (vpi_control(vpiTrvsNextVC, trvsCollection) == 0) { ���/* already at MaxTime */ ���!break; /* cannot go further */ ���} ���Avpi_get_time(vc_trvs_hdl, time_p);/* Time of VC */ ��@@vpi_get_value(vc_trvs_hdl, value_p);/* VC data */ AX��`%/* Do something at this VC point */ }s Z��R%�Qc%���s ZR �X��3 ��� 2Get the traverse handle min, max, or current time P���@where it points. }6p y��R'�Q$����6p yR �XW ���`vpi_trvs_get_time() UH��ˆ����Zh� �����UH��ˆ���LD## ����l���}33��K�T����33U'�H�Wo3 ���`To }SeT��_8�N;)���SeTO=�OW03 ���`Use }qeT��_:�N(*���qeTO=�OW13 ���` New Usage }UzT��_<�N)+���UzTO=�P�W23 ���`Iterate on all loaded objects }SzT��_>�N*,���SzTO=�PW3 ���`vpi_iterate() }qzT��_@�N+-���qzTO=�PW43 ���` Add property � vpiDataLoaded }UT��_B�N,.���UTO=�Q�53 ��� &Obtain a traverse (collection) handle P���@#from an object (collection) handle }ST��_D�N-/���STO=�QW6 ���` vpi_handle() }qT��_F�N.0���qTO=�Q>3 ��� (Add a new property � vpiTrvsObj�  P���@and � vpiTrvsCollection }UT3��_H�N/1���UT3O=�R�C3 ��� (Scan the (traverse) objects in a collecP���@tion }ST3��_J�N02���ST3O=�RWD ���` vpi_scan() }qT3��_L�N13���qT33O=�RE3 ��� #Add a (traverse) object collection 2����#(vpiTrvsCollection� ) � vpiC����'ollection�  as a handle argument to B3���@get its elements }UT)��_N�N24���UT)O=�S�WF3 ���`Obtain a property }ST)��_P�N35���ST)O=�SWG ���` vpi_get() }qT)��_R�N46���qT))O=�SH3 ��� #Extended with the new check proper����"ties: � vpiDataLoaded�  and B���@ vpiTrvsHasVC }U T��_T�N57���U TO=�T�WI3 ���` Get a value }S T��_V�N68���S TO=�TWL ���`vpi_get_value() }q T��_X�N79���q TO=�TM3 ��� #Use traverse handle as argument to P���@get value where handle points }U)T��_Z�N8:���U)TO=�U�WN3 ���`#Get time traverse handle points at }S)T��_\�N9;���S)TO=�UWO ���`vpi_get_time() }q)T��_^�N:<���q)TO=�UQ3 ��� #Use traverse handle as argument to P���@get time where handle points }UHT)��_`�N;=���UHT)O=�V�S3 ��� Free traverse handle P���@"Free (traverse) collection handle }SHT)��_b�N<>���SHT)O=�VWT ���`vpi_free_object() }qHT)��_d�N=?���qHT))O=�V:3 ���` Use traverse handle as argument qG��� $Use (traverse) collection handle as ���@ argument }UqT3��_g�N>@���UqT3O=�W�P3 ��� %Move traverse (collection) handle to P���@min, max, or specific time }SqT3��_i�N?A���SqT3O=�WWQ ���`vpi_control() }qqT3��_k�N@����qqT33O=�WR3 ��� "Use traverse (collection) handles/p����!properties. Extended with a time ����%argument in case of jump to specific ���@time. ��d������[���������DD�������� UH��ˆ����[�B�����UH��ˆ��|�-���-����D����^��`... +���`} iUTUT���h:Unloading the data rG��� sOnce the user application is done with accessing the data it had loaded, it shall call � vpi_read_unload()�  0R����oto unload the data from (active) memory. Failure to call this unload may affect the tool performance and capac����mity and its consequences are not addressed here since managing the data caching and memory hierarchy is left ���@to tool implementation. s}��� sCalling � vpi_read_unload()�  before releasing (freeing) traverse (collection) handles that are manipulating ����qthe data using � vpi_free_object()�  is not recommended practice by users; the behavior of traversal using ����yexisting�  handles is not defined here. It is left up to tool implementation to decide how best to handle this. Tools "����oshall, however, prevent creation of new traverse handles by returning the appropriate fail codes in the respec����qtive creation routines; this situation is similar to attempting to create traverse handles before doing any data ���@Qloads with � vpi_read_load()� , and shall be treated in a similar fashion. qUTUH���`Reader VPI routines u9ꪜ���` Extensions to existing routines e����(tThis section describes the extensions to existing VPI routines. Most are obvious and shown in +Table291*.  ���@=vpi_control()�  is described here again for clarity.�  g��� � vpi_control() '����s� Synopsis: � Try to move value change traverse index to min, max or specified time. If the request is for a "����knext or previous VC and there is none (for collection this means no VC for any object) a fail is returned, ����iotherwise a success is returned. If there is no value change at specified time in a jump, then the value ���schange traverse index is aligned based on the jump behavior defined earlier in Section .29.7.3.2-, and the ����ftime will be updated based on the aligned traverse point. If there is a value change occurring at the ����lrequested time, then the value change traverse index is moved to that tag with success return, otherwise if ����qthe object does not have hold semantics a fail is returned. In the case of a collection, a fail is only returned ����9when none of the objects in its group can return a true. P����ISyntax: � vpi_control(vpiType prop, vpiHandle obj, p_vpi_time time_p) ����C� Returns:�  � PLI_INT32� , 1 for success, 0 for fail. ����� Arguments: ���$� vpiType�  � prop� : "���F� vpiTrvsMinTime� : Goto the minimum time of traverse handle. ���F� vpiTrvsMaxTime� : Goto the maximum time of traverse handle. ���D� vpiTrvsTime� : Jump to the time specified in � time_p. "���T� � vpiHandle obj� : Handle to a traverse object of type � vpiTrvsObj. ���v� � p_vpi_time time_p� : Pointer to a structure containing time information. Used only if � prop�  is "���9of type � vpiTrvsTime� , otherwise it is ignored. ���@"� Related routines� : None. [9���`Additional routines d-���`>This section describes the additional VPI routines in detail. c=��� vpi_read_getversion() 2PI����,Synopsis� : � Get the reader version. ����(Syntax� : � vpi_read_getversion() I����1Returns: � char*� , for the version string b����Arguments� : None ����Related routines� : None UH��ˆ����[ � B�����UH��ˆ���&xCC  ����l���U��Z���_~�K�[�����FZ�L2���� ��K�]��_�E�G�����K�]��-��-��H~-��_�EFH���H~- Q�b.F��_�EGI���Q�b.FQQ�named valued class��6Z���_�EHM�����6Z����6 ��6��d������RO���������LL�������� UH��ˆ����RP�J�����UH��ˆ��„�9���9����L ����x9���`9Sample code using (load and traverse) object collections H�� GvpiHandle scope; /* Some scope we are looking at*/ 0���?vpiHandle var_handle; /* Object handle*/ ���AvpiHandle some_port;/* Handle of some port*/ ���?vpiHandle some_reg;/* Handle of some reg*/ ���AvpiHandle vc_trvs_hdl1; /* Traverse handle*/ ���AvpiHandle vc_trvs_hdl2; /* Traverse handle*/ ���2vpiHandle itr; /* Iterator */ ��@BvpiHandle loadCollection;/* Load collection*/ !o�� FvpiHandle trvsCollection;/* Traverse collection*/ ���� ���0char *datafile = ...;/* data file*/ ��@)p_vpi_time time_p; /* time*/ !J��� ... ����/* Create load collection */ ����8loadCollection = vpi_create(vpiCollection, NULL, NULL); ���� ����5/* Add data to collection: All the ports in scope */ ����#itr = vpi_iterate(vpiPort, scope); ����%while (var_handle = vpi_scan(itr)) { ���IloadCollection = vpi_create(vpiCollection, loadCollection, var_handle); ����} ����4/* Add data to collection: All the regs in scope */ ����"itr = vpi_iterate(vpiReg, scope); ����%while (var_handle = vpi_scan(itr)) { ���IloadCollection = vpi_create(vpiCollection, loadCollection, var_handle); ���@} !K��� G/* Initialize the read interface: Post process mode, read from a file, ���Iand focus only on the signals in the load collection: loadCollection */ ����Hvpi_read_init(vpiAccessPostProcess, datafile, loadCollection, NULL, 0); ���� ����(/* Demo scanning the load collection */ ����0while (var_handle = vpi_scan(loadCollection)) { ���... ����} ���� ����6/* Load the data in one shot using load collection */ ����vpi_read_load(loadCollection); ���� ����/* Application code here */ ����some_port = ...; ����time_p = ...; ����some_reg = ...; ����.... ����2vc_trvs_hdl1 = vpi_handle(vpiTrvsObj, some_port); ����1vc_trvs_hdl2 = vpi_handle(vpiTrvsObj, some_reg); ����-vpi_control(vpiTrvsTime, some_port, time_p); ����(/* Data querying and processing here */ ����.... ���� ���/* free handles*/ ���@vpi_free_object(...); TU��� tThe code segment above creates an object load collection� loadCollection�  then adds to it all the objects in `����scope�  of type � vpiPort�  and � vpiReg� . It then initializes the read interface for post process read access from b����file � datafile�  with access to the objects listed in � loadCollection� . � loadCollection�  can be scanned ����susing � vpi_scan()�  if need be. The selected objects are then loaded in one shot using � vpi_read_load() ����pwith � loadCollection�  as argument. The application code is then free to obtain traverse handles for the UH��ˆ����RR� J�����UH��ˆ���=&KK  ����l�����6Q���_�EIN�����6Q����6��6 ��~-��_�EMO��� ��~- P *F��_�ENP���P *FP hP h� traverse ��Ah}��_�EOQ�����Ah}��@c��@c� vpiParent��6Z���_�EPR�����6Z�� ��6��6 ��A}��_�EQS�����A}��E@c��E@c� vpiTrvsObj ��K�]��_�ERT�����K�]��-��-�� q��K�]��_�ESU���q��K�]q��6q��6��?��?��_�ETV���?��? uPZMF��_�EUW���uPZMFu6u6�object ��PZ�F��_�EVY�����PZ�F�� �� ����d������\���������xx�������� ��@ �}��_�EWZ�����@ �}��H��H�� �� �}��_�EY������ �}��-��-��U� ��u��_�KE������\��L3���� ZI�]��_�[�]���ZI�]ZZ��~-��_�[\^���~-��Z���_�[]_�����Z��������Q���_�[^a�����Q������}6pzy)��X�Qo>���6pzy)R �aW8 ���` vpi_create() ��~-��_�[_d�����~-}sZ��Va�Qc���sZR �h�73 ��� 4Unload data (for a single design object or a collecP���@tion) from memory }6py��Vc�Qb$���6pyR �hW< ���`vpi_read_unload() ?|MF��_�[ae���?|MF?|?|�object z��G�]��_�[df���z��G�]z��z���� ?*F��_�[eg���?*F?h?h� collection ��H�]��_�[fh�����H�]������ 6p$�F��_�[gj���6p$�F6zԀ6zԀ� � UH��ˆ����\�X�����UH��ˆ��~�5���5����x����c���� ����vpi_read_init() "P����kSynopsis� : � Initialize the reader with access type and access scope, and/or collection of objects. ����PSyntax� : � vpi_read_init(vpiType prop, char* filename, vpiHandle loadCol����+lection, vpiHandle scope, PLI_INT32 level) I����9Returns: � PLI_INT32� , 1 for success, 0 for fail. ����Arguments� : " ���#� vpiType�  � prop� : ���`� vpiAccessLimitedInteractive� : Access data in tool memory, with limited history. The ���Ktool shall at least have the current time value, no history is required. ���_� vpiAccessInteractive� : Access data interactively. Tool shall keep value history up ���to the current time. ���M� vpiAccessPostProcess� : Access data stored in specified data file. ���&� char* filename� : Data file. ���f� vpiHandle loadCollection: � Load collection of type � vpiCollection� , a collection of ���design objects. ���/� vpiHandle scope� : Scope of the read. ���f� PLI_INT32 level� : If 0 then enables access to scope and all its subscopes, 1 means just the ���scope. ����Related routines� : None. ���� ����vpi_trvs_get_time() "P����YSynopsis: � Retrieve the time of the object or collection of objects traverse handle. ����GSyntax: � vpi_trvs_get_time(vpiType prop, vpiHandle obj, p_vpi_time ����time_p) I����Returns: � void "���� Arguments: ���$� vpiType�  � prop� : "���]� vpiTrvsMinTime� : Gets the minimum time of traverse handle or traverse collection. ���]� vpiTrvsMaxTime� : Gets the maximum time of traverse handle or traverse collection. ���h� vpiTrvsTime� : Gets the time where traverse handle points. If the object handle is a traverse ���Ncollection, then the behavior is undefined and left to tool implementation. "���p� vpiHandle obj� : Handle to a traverse object of type � vpiTrvsObj�  or a traverse collection of ���type � vpiTrvsCollection. ���_� p_vpi_time time_p� : Pointer to a structure containing the returned time information. ����rRelated routines� : � vpi_get_time()� . Difference is that � vpi_trvs_get_time()�  is more general ����fin that it allows an additional � vpiType�  argument to get the min/max/current time of handle. ����Fvpi_get_time()�  can only get the current time of traverse handle. &���� ����vpi_read_load() P����kSynopsis: � Load the data of the given object into memory for data access and traversal if object is an ����mobject handle; load the whole collection (i.e. set of objects) if passed handle is a load collection of type ����vpiCollection� . P����(Syntax: � vpi_read_load(vpiHandle h) I����9Returns: � PLI_INT32� , 1 for success, 0 for fail. ���� Arguments: "���_� vpiHandle h� : Handle to a design object (of any valid type) or object collection of ���type � vpiCollection. ���@Related routines� : None BWy��� vpi_read_unload() Pcx����kSynopsis: � Unload the given object data from (active) memory if object is an object handle, unload the b���twhole collection if passed object is a collection of type � vpiCollection� . See Section <29.8; for a ����description of data unloading. 6}k�F��_�[hk���6}k�F6V6V� � ��AM}��_�[jl�����AM}��@c��@c� vpiCollection��[Z���_�[kq�����[Z����[��[U������\��������n�64����~ -u��\�m�p���~ -u�}szZ)��X�Q8`���szZ))R �a�V3 ��� Create a new handle: used to ���@5- create an object (traverse) collection for loading A���`4- Add a (traverse) object to an existing collection �� ZQ��\�mns����� ZQ���[Q���_�[lr�����[Q����[��[��A~-��_�[qz�����A~-��6��\�mpt�����6�;��?6��\�msu���;��?6�Z?$���\�mtv���Z?$��~?Z?---$��\�muw���---$ ���_��\�mvy������_��E1��E1�"�UH��ˆ����\� X�����UH��ˆ���Dii ����l��� ��n�_��\�mw�����n�_�����"� ;��QF��_�[r{���;��QF;��[;��[� traverse z��J�]��_�[z|���z��J�]z��Sz��S�� ��@�]��_�[{}�����@�]��I��I�� ��aAe񨊾}��_�[|~�����aAe񨊾}��i@c��i@c�vpiTrvsCollection�����_�[}��������������6��_�[~�������6���[�� V��Gy�)��_�[����V��Gy�)V��QV��Q�� ��֐DX)p��\�my�����֐DX)p�����? SystemVerilog CD֐)p��\�m���CD֐)pV��NCN?Foreign��H-���\�m�����H-��;��H��H��cZ$��\�m�����cZ$ ˰bk N<��\�m���˰bk N<��s˰bs6Waveform Database;��l6��\�m���;��l6 Gp��\�m���GpV��y�Gy�6Foreign��u$���\�m �����u$��;��u��u��-���\�m �����-����-��-��u���\�m �����u����u��u��u ��\�m �����u  QH\N_��\�m ���QH\N_�SQS"VPI KP6i`)p��\�m ���KP6i`)p�?KP??Read &ޠ]��\�m ����&ޠ]C�CsۺCsUser��d������]��������� �������� UH��ˆ����]������UH��ˆ��������������BP����*Syntax: � vpi_read_unload(vpiHandle h) I����9Returns: � PLI_INT32� , 1 for success, 0 for fail. ���� Arguments: ���]� vpiHandle h� : Handle to an object or collection (of type � vpiCollection� ). ���@Related routines� : None. CG��� vpi_create() 2PS����?Synopsis: � Create or add to a load or traverse collection. ����BSyntax: � vpi_create(vpiType prop, vpiHandle h, vpiHandle obj) I���dReturns: � vpiHandle�  of type � vpiCollection�  for success, � NULL�  for fail. "���� Arguments: ���$� vpiType�  � prop� : "���Q� vpiCollection� : Create (or add to) load (� vpiCollection� ) or ���5traverse (� vpiTrvsCollection� ) collection. ���c� vpiHandle h� : Handle to a (object) traverse collection of type (� vpiCollection� ) ���8vpiTrvsCollection� , NULL for first call (creation) ���b� vpiHandle obj� : Handle of object to add, NULL if for first time creation of collection. ���@Related routines� : None. SDܪ���` UH��ˆ����]� �����UH��ˆ���x�  ����l���� �d�������`��Left�d�������Right�d������� Reference�d������� �����d���������HTML�d����� ��HTML�d�����  ��Headings�d����� $��HTML�d�����'��HTML�d���� �9�����d����� B�����d����� E�����d����� H�����d����� K�����d�����N�����d�����Q�����d�����T�����d�����W�����d���� � Z�����d���� � J�����d�����,��First�d�����j�� last left�d�����q�� boilerplate�d�����t�� title page�d�����{�� Index.left�d������� Index.right�d��������Cover�d��������TOC�d���� ������d���� �B�����d����� X�����d������������"�������@��@��������������������� ���������������������������Mapping Table Title������. ������@��@��������������������� ���������������������������Body������. ��� f�@��������H�U��� ������� ���������������� ���������9 $���H���l����������������������� �����D�����h����������H3,1.1.1���H3H:<$chapnum>.<n>.<n+> Body. ���� �@��@��������HQ������������ =������������� ����������SectionHeading����H:Section <$chapnum> SectionTitle. ���� �@��@��������H�Q������������ =������������� ����������SectionHeading����H:Section <$chapnum> SectionTitle. �����f�@��������������������� ������������������������� $� �H� �l� ���� ���� ���� ���� � ��� �D��� �h��� ���� ���� �Normal������. ��� f�@��������H�U���������� ���������������� ��������� $���H���l����������������������� �����D�����h����������H2,1.1���H2H:<$chapnum>.<n+> Body. ���f�@��������H�U��� ������� ���������������� ���������9 $���H���l����������������������� �����D�����h���������� H4,1.1.1.1���H4H:<$chapnum>.<n>.<n>.<n+> Body. ��� f�@��������F�E������������ ���������������� ���������9� FigureCaption����F:Figure <$chapnum><n+> FigCaptionCont. ��� f�@���������P�������������������������� ��������� $� �H� �l� ���� ���� ���� ���� � ��� �D��� �h��� ���� ���� � heading 1�����Normal. ��f�@��������L������������ ��������������������������. NumberedList2���� L:<n+>)\t�. ��� f�@���������P�������������������������� ��������� $� �H� �l� ���� ���� ���� ���� � ��� �D��� �h��� ���� ���� � heading 2�����Normal. ��� f�@���������P���������� ���������������� ��������� $� �H� �l� ���� ���� ���� ���� � ��� �D��� �h��� ���� ���� � heading 3�����Normal. �����f�@��������������������� ������������������������� $� �H� �l� ���� ���� ���� ���� � ��� �D��� �h��� ���� ���� �Default������. ���f�@���������@����������� ������������������������� $� �H� �l� ���� ���� ���� ���� � ��� �D��� �h��� ���� ���� �..�����Default. �����f�@��������������������� ����������������������������.����.�header������. �����f�@��������������������� ����������������������������.����.�footer������. ��� �f�@������������������� ������������������������� �Body������. �����f�@��������������������� ������������������������� $� �H� �l� ���� ���� ���� ���� � ��� �D��� �h��� ���� ���� � footnote text������. ���&f33f�@���������@����������� ���������������;���������� $� �H� �l� ���� ���� ���� ���� � ��� �D��� �h��� ���� ���� �.. 2�����Default. ���f�@���������@����������� ���������������� ��������� $� �H� �l� ���� ���� ���� ���� � ��� �D��� �h��� ���� ���� �caption�����Normal. �f�@��������Z�A����������� ������������������������� �� NumberedLista���� Z:<a=1>)\t NumberedList2. ���33f�@���������@����������� ���������������;���������� $� �H� �l� ���� ���� ���� ���� � ��� �D��� �h��� ���� ���� �.. 3�����Default. ��f�@���������������������� �������������������������(�.�<�.�P�.�d�.�x�.����.����.����.����.����.����.����.����.�,���.�@���.�T���.�h���.�|���.����.����.����.����.�Body.Indented.1������. �����f�@���������@����������� ���������������;���������� $� �H� �l� ���� ���� ���� ���� � ��� �D��� �h��� ���� ���� � Heading Base�����Default. ��f�@��������D������������� ��������������������������.�DashedList.indented����D:\t�. ������@��@��������������������� ����������������������������Mapping Table Title������. ��f�@��������L�A����������� ��������������������������. NumberedList1���� L:<n=1>)\tL,NumberedListb. ������@��@��������������������� ����������������������������Mapping Table Cell������. ��f�@���������������������� �������������������������(�.�<�.�P�.�d�.�x�.����.����.����.����.����.����.����.����.�,���.�@���.�T���.�h���.�|���.����.����.����.����.�Body.Indented.1������. ������@��@������������������������������������� ����������� �Mapping Table Cell������. 33�f�@��������Z������������ ��������������������������� NumberedListii���� Z:<r+>)\t�. ���f�@����������������������� �������������������������$�.�4�.�D�.�T�.�d�.�t�.����.����.����.����.����.����.����.����.����.����.�$���.�4���.�D���.�T���.�d���.�t���.����.����.����.����.����.����.�ExampleCode.Indented������. ��� �f�@������������������� ���������������� ���������Body������. ������@��@������������������������������������� ����������� �Mapping Table Cell������. �f�@��������Z������������ ������������������������� �� NumberedListb���� Z:<a+>)\t�. ������@��@��������������������� ���������������� ����������� �Mapping Table Cell������. ���f�@��������H�U��� ������� ���������������� ���������9 $���H���l����������������������� �����D�����h���������� H5,1.1.1.1.1���H5H:<$chapnum>.<n>.<n>.<n>.<n+> Body. �����f�@������������������� �������������������������3� TableText������. �����f�@���������������������� ������������������������� $� �H� �l� ���� ���� ���� ���� � ��� �D��� �h��� ���� ���� �Normal������. �����f�@������������������� �������������������������� TableText������. �����f�@���������������������� ������������������������� $� �H� �l� ���� ���� ���� ���� � ��� �D��� �h��� ���� ���� � footnote text������. ��� �f�@������������������� ��������������������������Body������. ������@��@��������TA������������ ���������������|� ���������� TableTitle.1����T:Table<$chapnum><n=1>: Body. �����f�@��������AE������������ ���������������� ����������x.Annex.TableTitle.1����A:Table <A><n=1>T,Text. �����f�@��������AE������������ ���������������� ����������x.Annex.TableTitle����A:Table <A><n+1>T,Text. ���f�@��������D������������ ��������������������������.� DashedList����D:\t�. ��� �@��@��������SA������������ ��������������� �����������SyntaxBoxCaption.1����S:Syntax<$chapnum><n=1>Body. (���f�@�������������������� �������������������������.�.�=�.�BNF_SyntaxItem������. �����f�@�������������������� �������������������������� �� M���� CommitteeList������. ��f�@��������LA����������� ��������������������������. NumberedList1���� L:<n=1>)\tL,NumberedListb. �����f�@���������������������� ����������������������������� PageHeader.right������. ��� �@��@��������SA������������ ��������������� �����������SyntaxBoxCaption����S:Syntax<$chapnum><n+>Body. ������@��@��������TA���� ������� ���������������|� ���������� TableTitle����T:Table<$chapnum><n+>: Body. ��� f�@��������HU��� ������� ���������������� ��������� $���H���l����������������������� �����D�����h����������H3,1.1.1���H3H:<$chapnum>.<n>.<n+> Body. ����f�@��������������������� �������������������������� CellBody.X������. ��� �f�@������������������ ��������������������������Body������. ��� �f�@��������AU����������� ���������������� ����������x.Annex.H1,A.1���� A:<A>.<n+> T,Text. ������f�@���������������������� ����������������������������� PageHeader.left������. ��f�@��������L����������� ��������������������������. NumberedList2���� L:<n+>)\t�. ��f�@��������������������� �������������������������(�.�<�.�P�.�d�.�x�.����.����.����.����.����.����.����.����.�,���.�@���.�T���.�h���.�|���.����.����.����.����.�Body.Indented.1������. ����f�@��������AE����������� ���������������� ��������� $���H���l����������������������� �����D�����h����������x.Annex.H2,A.1.1���AH2A:<A>.<n>.<n+> T,Text. ����f�@������������������� ��������������������������x.Annex.normative������. �����f�@���������������������� ����������������������������� ���� PageFooter.left������. �����@��@��������AQ����������� =������������� ����������x.Annex.Heading���� A:Annex <A+> SectionTitle. ��� f�@���������D����������� ������������������������� $���H���l����������������������� �����D�����h����������Note����� P1,Normal. �����f�@���������������������� ����������������������������� ���� PageFooter.right������. ����f�@��������AE����������� ���������������� ��������� $���H���l����������������������� �����D�����h����������x.Annex.H3,A.1.1.1���AH3A:<A>.<n>.<n>.<n+> T,Text. ��� �f�@��������BE����������� �������������������������� Bibliography���� B:[B<n+>] �. ���f�@���������������������� �������������������������$�.�4�.�D�.�T�.�d�.�t�.����.����.����.����.����.����.����.����.����.����.�$���.�4���.�D���.�T���.�d���.�t���.����.����.����.����.����.����.�ExampleCode.Indented������. �����f�@���������������������� ��������������������������.� �.�0�.�@�.�P�.�`�.�p�.����.����.����.����.����.����.����.����.�����.����.� ���.�0���.�@���.�P���.�`���.�p���.����.����.����.����.����.����.� ExampleCode������. �����f�@�������������������� ��������������������������CellBody������. ���f�@��������HU��� ������� ���������������� ��������� $���H���l����������������������� �����D�����h���������� H4,1.1.1.1���H4H:<$chapnum>.<n>.<n>.<n+> Body. ���f�@��������HU��� ������� ���������������� ��������� $���H���l����������������������� �����D�����h���������� H5,1.1.1.1.1���H5H:<$chapnum>.<n>.<n>.<n>.<n+> Body. 3�����f�@������������������ ���������������� ���������� CellHeading������. ��� f�@���������T��������������������������� ���������� SectionTitle�����Body. �����f�@������������������ �������������������������� TableText������. ��f�@��������D������������ ��������������������������.�DashedList.indented����D:\t�. ��� �f�@��������AE����������� ���������������� ��������� $���H���l����������������������� �����D�����h����������x.Annex.H4,A.1.1.1.1���AH4A:<A>.<n>.<n>.<n>.<n+> T,Text. ��� �f�@��������AE����������� ���������������� ��������� $���H���l����������������������� �����D�����h����������x.Annex.H5,A.1.1.1.1.1���AH5A:<A>.<n>.<n>.<n>.<n>.<n+> T,Text. ��� f�@��������HU���������� ���������������� ��������� $���H���l����������������������� �����D�����h����������H2,1.1���H2H:<$chapnum>.<n+> Body. ��� �f�@��������HE������������ ������������������������� $���H���l����������������������� �����D�����h����������x.BNF.H2��� definition H:<n>.<n+> P1,Normal. ���f�@����������������������������������������������Footnote������. ��� �f�@��������HE������������ ������������������������� $���H���l����������������������� �����D�����h����������x.BNF.H3��� definitionH:<n>.<n>.<n+> P1,Normal. ��� �f�@��������HE������������ ������������������������� $���H���l����������������������� �����D�����h����������x.BNF.H4��� definitionH:<n>.<n>.<n>.<n+> P1,Normal. ��� �f�@��������HE������������ ������������������������� $���H���l����������������������� �����D�����h����������x.BNF.H5��� definitionH:<n>.<n>.<n>.<n>.<n+> P1,Normal. �f�@��������ZA����������� ������������������������� �� NumberedLista���� Z:<a=1>)\t NumberedList2. �f�@��������Z����������� ������������������������� �� NumberedListb���� Z:<a+>)\t�. 33�f�@��������ZA����������� ��������������������������� NumberedListi���� Z:<r=1>)\tNumberedListii. 33�f�@��������Z����������� ��������������������������� NumberedListii���� Z:<r+>)\t�. ��� �f�@��������AE������������ ���������������� ����������x.Annex.FigureTitle����A:Figure <A><n+>T,Text. ��� �f�@��������AE������������ ���������������� ����������x.Annex.FigureTitle.1����A:Figure <A><n=1>T,Text. 33�f�@��������LA����������� �������������������������33�� NumberedNote1���� L:<n=1>)\tL,NumberedListb. ��� �@��@��������EA������������ �� =������������ �����������ExampleCaption����E:Example<$chapnum><n+> Body. ��� �@��@��������EA������������ �� =������������ �����������ExampleCaption.1����E:Example<$chapnum><n=1> Body. ��� f�@��������FE������������ ���������������� ����������FigureCaption.1����F:Figure <$chapnum><n=1> FigCaptionCont. ��� f�@��������FE������������ ���������������� ���������� FigureCaption����F:Figure <$chapnum><n+> FigCaptionCont. 33�f�@��������L����������� �������������������������33�� NumberedNote2���� L:<n+>)\t�. ���� f�@���������T��������������������������� ���������� x.Annex.Title�����T,Text. ������@��@��������T�A���� ������� ���������������|� ���������/� TableTitle����T:Table<$chapnum><n+>: Body. �����@��@��������������������� �������������������������0�� A�� f�� ���� ���� ���� ���� ���� XCourier12������. �����f�@���������������������� �������������������������3 �� 6�� Q�� l�� ���� ���� ���� ���� ���� ���� )���� D���� _���� CellBody������. �����f�@������������������� ���������������� ���������6� CellHeading������. ��9X���f�@����������������������������������������������8xƨ��� Heading2T��� Chapter #��. �����f�@�������������������� ���������������� ���������9� CellHeading������. ��� �f�@������������������� ��������������������������Body������. �����5\\�@������������d��������� ���������������| ����������:�. 33�. H�. TableCell������. ����5\\�@������������d��������� ���������������|� ���������;Q�. c�. TableHead������. �����f�@���������������������� ��������������������������Table���Figure #��. �����\\�@������������d������������������������| ����������<�. 33�. H�. TabularListBody������. ]��̅\\�@��������A�Q�d�� ����������������������| ����������=]�. ���. TableTitle����A:Table <n>< ><n+>< >Body. ����f�@���������������������� ���������������� ���������� Table Heading������. �����33�@���������������������� ���������������� ���������6� LCellHeading������. ����33�@����������������������� �������������������������3� LCellBody������. �����33�@��������������������� ���������������� ���������9� CellHeading������. ����33�@���������������������� ��������������������������CellBody������. ����f�@���������������������� ������������������������� � RCellBody������. $$� �f�@��������J����������� ���������������� ����������TableTitle 1st����J:Table <n>-< >< ><n=1>. �. ������f�@���������������������� ������������������������� � Table body������. ������f�@����������������������� ����������������������������� ���� PageHeader.left������. �����f�@����������������������� ��������������������������� ���� ���� ���� PageFooter.left������. �����f�@����������������������� ����������������������������� PageHeader.right������. �����f�@����������������������� ��������������������������� ���� ���� ���� PageFooter.right������. � ��<f�@��������������������� ���������������� ���������? $�� H�� l�� ���� ���� ���� ���� ���� D���� h���� ���� P1,Normal������. ����f�@��������������������� ���������������| ����������@ $���H���l����������������������� �����D�����h���������� FL,FlushLeft������. ��� �@��@��������������������� �������������������������0�������..SectionHeadingTOC������. ������@��@��������������������� ��������������������������.�*�.�����.. H2,1.1TOC������. ��� �@��@��������������������� �����������������������������������..H1,1stLevelHeadTOC������. ������@��@��������������������� ����������������������������-�������..AT,AnnexTitleTOC������. ������@��@��������������������� �������������������������-���F���Z�������.. AH2,A.1.1TOC������. ���� �@��@��������������������� �������������������������-���F�������.. AH1,A.1TOC������. ��� �@��@��������������������� �������������������������-�������..x.Annex.HeadingTOC������. ���� �@��@��������������������� �������������������������-�������.. AN,AnnexTOC������. �� ���3��������� ������� Hyperlink ���3��������� �������footnote reference �������������� ����������  ������������������������ ������������������������� �������vp������������������3���������� �������Heading 1 Char��������������� ������������������3 8���� ����������� �������3 8���� ����������� ������������������������ �������vp��������������� =������������ ��������� ������������������������ ������������������������ ���3�����������������Bullet1  ������������������������ ��������������=���������� ��������������=���������� ��������������� ��������� ��������������� ��������� ��������������� ��������� ������������������������ ��������������<���������� ��������������� ��������� ��������������� �������� ���������������������������������������"��������1.DELETE������������������������ BNFitalic ��������������� ��������� ������������� �������Keyword���� ����������� ������� BNFkeyword ��������������;��������������������������������3.FIX ����������������������� Superscript ��������������������Code��������������� ��������2.DRAFT6 ��������������|� ��������� ������������������������ ������������������������ ��������������� ��������� ����������������������� ��������������� ��������� ��������������| ���������� ��������������|� �����������������������| ������������������������| ���������������������������������� ��������������� ��������� ��������������| ���������� ��������������|� ��������� ��������������=� ��������� ��������������<���������� ��������������=� ��������� ��������������� ������������������Z���������������Zd������Zd� �����Zd�����������������������d�����������d����������������Z�������Z������������������������;������������������������ ��Zd������Zd������Zd������Zd�����Zd�������Thin����Medium����Double����Thick�@���� Very Thin���� Blue Line���� Blue thick����� Blue thin����ThinGray����� .75 Weight�����1.5 pt����Weight Four Double���Weight Three Double����Weight Two Double����Weight One Double���� Weight Four��� Weight Three���� Weight Two���� Weight One��������������������� ���������0�33  �33  �33  �33  �Format A�������������d��� AbRoutine��������������H� Mapping Table����� ��������a �;8 � Lines/Title� �����������H  �H  �H  �H  �H  �Format B�33$��MҁMҁ���� �����������H �v̀ �v̀ �v̀ �v̀ �Wide���MҁMҁ� �����������H �L- � = �ȴ �v3b�3333��MҁMҁ���� �����������H �v̀ �v̀ �v̀ �v̀ �WideFN�33$ff�MҁMҁ������ �����������S �S �S �S �S � TextColumn�3333ff�MҁMҁ������ ����������O33 �O33 �O33 �O33 �O33 � TextColumnFN� �����������������������mPU ��� �Clear�33$ff�MM���������� ����������̀�̀�̀� TabularList�������������H � Mapping Table� $ff�MM����������������mPU �3 � Ruled_formal�$����������H�Z�Z�Z�Table 1�$������������ WideTable�$� ����������H �Z �Z �Z �Z � Default_Table� ���� �������������������P" �$@  ��  �dx@  �z؀  �cmdref� ���������������������YP ��� � Clear/Title� �����������s� �` �Lines��������������d�Q �?�Y�� AbRoutine��������������d��� AbRoutine����� ���������d�̀�̀�̀� AbRoutine�� �z��>����������������H����6����-����?������ @�� ������������������H����z�� ����!*������h����h����h����B����_�� N��+0������������������?����_�� ��13������ev����ev����C����Q������ p��4C������H����������?����)�� W��<B������l����u����H����}w���� GX������Z����y��������0'HK������̀�̀�9*����-=OW������T����T����T�����X�$�� �������������������$Cz�����������������������$Sz���������������� ��!�"�$qz������������#���$��%��&��'��$z��,����������(���)��*��+��,��$z������������-���.��/��0��1��$z������������2���3��4��5��6��$z������ ������7���8��9��:��;��$z������ ������< ���= ��> ��? ��@ ��$z������ ������A ���B ��C ��D ��E ��$z������ ������F ���G ��H ��I ��J ��$ z��,���� ������K ���L ��M ��N ��O ��$9z������ ������P ���Q ��R ��S ��T ��$Iz������ ������U���V��W��X��Y��$Yz��,����������Z���[��\��]��^��$bz��,����#�����_���`��a��b��c��$��z������#������d���e��f��g��h��$��z������#������i���j��k��l��m��$��z������#������n���o��p��q��r��$��z������#������s���t��u��v��w��$��z������#������x���y��z��{��|��$��z������#������}���~���������$��z������#�����������������$��z������#����������� �� �� ��$��z������#������ ��� ��������$��z�������#����������������$B���� �����#������������$R��������#��������������$b��������#�������������$r��������#��������� ��!��$�������� #������"���#��$��$���������#������% ���& ��' ��$$�� �����"&�������(!���)!�*!�+!�$4z������!#&�������,"���-"��."��/"��$Dz��,����"$&������0#���1#��2#��3#��$pz������#%&������4$���5$��6$��7$��$��z��,����$&&������8%���9%��:%��;%��$��z������%'&������<&���=&��>&��?&��$��z��,����&(&������@'���A'��B'��C'��$��z������')&������D(���E(��F(��G(��$��z��,����(*&������H)���I)��J)��K)��$$��z������)�&������L*���M*��N*��O*��$:���� �����,&�������P+���Q+�R+�$J��_������+-&�������S,���T,��U,��$Z��_������,.&������V-���W-��X-��$j��_������-/&������Y.���Z.��[.��$z��_������.0&������\/���]/��^/��$��_������/�&������_0���`0��a0��$$�� �����2)�������b1���c1�d1�e1�$4_������13)�������f2���g2��h2��i2��$D_������2�)������j3���k3��l3��m3��$Z�� �����5)�������n4���o4�p4�$j������46)�������q5���r5��s5��$z������57)������t6���u6��v6��$��������68)������w7���x7��y7��$��������79)������z8���{8��|8��$��������8:)������}9���~9��9��$��������9;)�������:���:��:��$��������:C)������;���;��;��$h�� �����= ������� <���<�<�$C)������<> �������=���=��=��$S)������=? ������>���>��>��$i)������>@ ������?���?��?��${)������?A ������@���@��@��$)������@B ������A���A��A��$)������A� ������B��� B��!B��$��������;�)������C���C��C��33���� EJU������@D���AD��33h���� FDU������E���E��33S���� IEU������F���F��se}w�����aR�������G���8G��33���� �IU�������'H���H��334���� HFU������I���I��33���� DKU������J��� J��33���� J�U������!K���"K��s}w����aMR�������>L���?L��s}w����LNR�������]M���^M��s}w����MhR�������_N���N��Ue9���� �PO�������;O���(O��)O��Uz9���� OQO�������*P���+P��,P��U9���� PRO������-Q���.Q��/Q��U93���� QSO������0R���1R��2R��U9)���� RTO������3S���4S��5S��U 9���� SUO������6T���7T��8T��U)9���� TVO������9U���:U��;U��UH9)���� UWO������<V���=V��>V��Uq93���� V�O������?W���@W��AW��s }w����h�R������$X���%X��sz}w)����GLR�������oa���`a��s}w����NXR�������bh���ch����Comment����� �F:� �F=��I��I��I ��I ��FK��FN� �Fu�!" �Fx�#$ �F�%& �F��Y�+*�Z;�.-�['�01�_{�65�] �98�]t�<;�]�?>�`(�� ����d� �Black�������T!�White����dd���A�Red���dd�����Green���d�d��� �Blue���d�����Cyan�����d���Magenta����d���� �Yellow���FF������ Dark Green�����������RGB 255,255,255������d����RGB 000,000,000������22����RGB 127,127,127������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.Arial.R.700�� FrameRoman� W.Arial.I.700�� FrameRoman���� FrameRomanW.Times New Roman.R.700�� FrameRoman�W.Courier.R.400�� FrameRoman�W.Courier New.R.400�� FrameRoman�W.Helvetica.R.700�� FrameRoman� W.Arial.I.400�� FrameRoman�W.Helvetica.R.400�� FrameRoman�W.Helvetica.I.400�� FrameRoman���� FrameRoman� W.Arial.R.400�� FrameRoman���� FrameRoman���� FrameRoman�W.Times New Roman.I.400�� FrameRoman���� FrameRomanW.Courier.R.700�� FrameRoman���� FrameRomanW.Courier New.R.700�� FrameRoman���� FrameRomanhCourierArialTimes New Roman Courier New{ Helvetica: Arial,Bold;TimesNewRomanPSMT<TimesNewRomanPS-BoldMT Regular Regular BoldRegularObliqueItalic�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������}<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?> <x:xapmeta xmlns:x='adobe:ns:meta/' x:xaptk='XMP toolkit 2.8.1-28, framework 1.5'> <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'> <rdf:Description about='' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:CreatorTool='FrameMaker 7.0'></rdf:Description> <rdf:Description about='' xmlns:xap='http://ns.adobe.com/xap/1.0/' xap:CreateDate='2003-10-13T19:26:00.0Z' xap:ModifyDate='2003-11-19T02:16:41.0Z' xap:MetadataDate='2003-11-19T02:16:41.0Z'></rdf:Description> <rdf:Description about='' xmlns:dc='http://purl.org/dc/elements/1.1/'><dc:creator><rdf:Seq><rdf:li>Accellera</rdf:li></rdf:Seq></dc:creator><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>SystemVerilog 3.1/draft 1</rdf:li></rdf:Alt></dc:title><dc:description><rdf:Alt><rdf:li xml:lang='x-default'>PRELIMINARY draft of SystemVerilog 3.1, SUBJECT TO CHANGE</rdf:li></rdf:Alt></dc:description></rdf:Description> </rdf:RDF> </x:xapmeta> <?xpacket end='w'?>�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������&SL/e3`ڥx@$3]S:;be0 Bf+WX*@Ho4NOA\{\L5f ryDI4]*8nEKNJE; _kh,9]mTW2!vU?y[oTpG#(+ K8ĆKq JB#܃EdH!s<-ܩWR6湦Lfڝ _W2Qb{ zdŞ\__I?pߌ)kv؄;;#[1$Yp1R  oG3}n4Adc!t^sD¸GQᶋIFd/{YQ08`ƶ~8lOCrdj0(CzY=@JL6Q'|R5Ӷnc RH+iB62UkN-Ҍ 0 y{uwh)W.������