SystemVerilog for Verification

212

description

ASIC verification

Transcript of SystemVerilog for Verification

Page 1: SystemVerilog for Verification

����������� ������������������������ !�"�#�$�� %&'�#�()��*+�,+%��!-,� %-,.%,��(��#�/&+!���0�.+�*�+1�&(�$�+ #222345)��6%(+!78�9:::;<=�>?@�������ABC�����>?D�@�����EBF�BG�FC?HI?@>����BCJ��GB��JB=�B@�K�L�����J�BCHIABC�F�>?@M�NB�ABC�J�����FA�O�BBJ?@>�IBB�J��@I�P?@IBPJQ��?OR?@>�BC����?@���@I�O�����OBHB�JQ�B��J�H�O�?@>�F����BB=�G?S�C��JM�TG�OBC�J��@B�U�V?�J��ABC�=CJ��OB@J?I����BP����BP@��J�P?HH�CJ������J��O�Q��@I����?��FCI>��Q�JB������ABC�O�@�I�O?I��P�����A���BG�BCJ���B�FC?HIK�WC�J�?B@J�ABC�J�BCHI�OB@J?I�������NB����A��@EBA�OBBR?@>��@I�P�@����?>�X�@I�R?�O��@Q�B��P?HH����A����G���P��O�?@>�=BD?�J�?@����?���B=�����������BB=��@I���?@>���R�BC���?YY�M�NB����A�P�@�����B=��BGG?O��B���@��S����F�I�BB=M�T��IB�J����?�FCI>���H?=?�����=��B���=B���=BI�J���BCJ�MZ�GB���ABC�J������B�H���@�I���?HJ�BG�����[AJ��=\��?HB>�H�@>C�>�Q�ABC�@��I��B�C@I��XJ��@I��BP�ABC��H�@��B�D��?GA�ABC������?OCH���I�J?>@��@I��BP���?J�?@GHC�@O�J������J�F�@O��J��CO�C��K�]CJ���J��HH��BCJ�J���D��R?�O��@JQ�F�I�BB=JQ��@I�F����BB=JQ��HH��J�F�@O��J�J�����JB=��OB==B@�J��CO�C���BG�J�?=CHCJ�>�@����?B@��@I���J�B@J��O��ORX?@>K��?J�O�������?@��BICO�J���J���BG�>C?I�H?@�J��@I�OBI?@>�J�AH�J�GB��I�J?>@?@>��@IOB@J��CO�?@>�����J�F�@O�������=���J�ABC������?OCH���@��IJK���J����O�@?_C�J�CJ��JB=�BG�����J�=��OB@O���J����������J�BP@�?@������+!1!&%(!�-�6�()�#� �,0�6%-.% �1�+�0/(�� �+! �,�a\bbcQ�Z��>��B@�����HK�adeefcQ�FC��P?��BC������F�J��OH�JJ�JK���=BJ��?=�B���@����?@O?�H��ABC�O�@�H���@��J���D��?G?O��?B@��@>?@����?J�gZC>J����>BBIKh�NB@i��J�A��P�A�G�B=�G?@I?@>�����@�S��FC>Q�IB�@B����J?������B��?@>���F�HH���O��?=��ABC�C@OBD���B@�Q��@I�GC�����=B��Q��HP�AJ�R�������OR�BG���O��FC>�GBC@IK����@�?�����BE�O�����=��JJC=�J�����������FC>J�?@�����I�J?>@Q�JB��������O��FC>�GBC@IF�GB�������XBC��?J�B@��G�P���������@IJ�C��?@�����OCJ�B=��iJ���@IJK�jBC�@��I��B�F���J �������������� ��������������������������������� !�"�#$��#�%&��%��#�'#�'�%&�#(������&%�#���)#'�*#��!!������ !�� �&��%�$"$(�!��#(�+��'���#�!!����+�#��,�)-�.�%/#�!�#�#(������&%�'���#��!��!!�#(��&!�'+�0�$�#(��#+��'�*'�,#��%��*�%%�%&"�#(������&%�1�&(#�%���'�$�'23�4(��� ��2�����1���+����!'���+�2%�$�#(��5�'�!�&�!�%&��&���%��$�%#�#��!��'%�#(��6+�7#�15�'�!�&�8�'�$�'��5�'�,�*�#��%�9�%&��&��:859;-�6�1���,�#(��#+��*�!�,��#�'����,�%�859�#(�#����#�%&���(��#�,'�1���8�'�$�'��.��*'��#��%�9�%&��&����*(����5�'�!�&��'58.9��'�< =�%�#'��%��7'�%��1��#�1�!���&�%�'�#��%< >�%*#��%�!�*���'�&�< 8�&(�'7!���!��#'�*#�'��"�����*��!!+�� ?�*#7�'��%#����'�&'�11�%&< @�!#�#('����%&��%���%#�'�'�*����*�11�%�*�#��%< 6����'#�,�'�8.9�#+������*(����5�'�!�&/��A7�#�#����!���< 4�&(#��%#�&'�#��%�$�#(����%#7��1�!�#�'�,�'�*�%#'�!��,�#(������&%4(�'���'��1�%+��#(�'����,�!�,��#�'��"� �#�#(�����!!�$�+���#��*'��#��#��# �%*(����#��(�&(�'�!���!��,�� �#'�*#��%�#(�%�+����'��� !��#���*(�����$�#(��%�8.9��'����'�&'�171�%&�!�%&��&����*(����=-BCBDEFGDHGIJKJLMNJOPDQIOLGRRS(�#����#(��&��!��,���'�,�*�#��%T�U,�+����%�$�'��"�V>�%��%&� �&�"W�+����'���%!+���'#!+*�''�*#-�4(��&��!��,�(�'�$�'������&%����#��*'��#��������*��#(�#���',�'1������'#�*�!�'#��2"���*(������.5.��!�+�'"�%�#$�'2�'��#�'"��'�'���'���&%�!��'�*����'"� ������%������&%����*�,�*�#��%-�X��'���'������������'�,�*�#��%��%&�%��'����#��1�2����'��#(�����*��*�%��**�1�!��(�#(�#�#��2���**���,�!!+�0�#(�#���"�#(������&%�����%��**�'�#��'��'�7��%#�#��%��,�#(�����*�,�*�#��%-�Y�&���'��$(�#�+���&�#�$(�%�#(�'����������*'���%*+-�4(� �(����'��,�#(������*��$(�%��������#������,��#���'�&�%�!���'��������%�#�+��'�'����%��7 �!�#+"��!#(��&(�+���$�%#�#��2%�$�$(�'��#(���� ��%��'����!��-4(���'�*�����,���'�,�*�#��%���'�!!�!��#(������&%�*'��#��%��'�*���-�Z�����&%�'�'�����#(�(�'�$�'�����*�,�*�#��%�,�'��� !�*2"��%#�'�'�#��#(��(�1�%�!�%&��&�����*'��#��%"��%�*'��#���#(��*�''����%��%&�!�&�*��%���1�*(�%�7'���� !��,�'1"�����!!+�[49�*���-�4����#(��"�(���'��(��%�����#���%��'�#�%��#(���%��#�,�'1�#"�#(��#'�%�,�'1�#��%�,�%*#��%"��%�#(��,�'1�#��,�#(����#��#-�4(�'������!$�+���1 �&��#+��%�#(����%#�'�'�#�#��%"���'(��� �*������,��1 �&��#�����%�#(���'�&�%�!���*�1�%#"�1����%&���#��!�"��'�*�%,!�*#�%&���*'��#��%�-�Z������'�,�*�#��%��%&�%��'"�+���1��#��!���'����#(��(�'�$�'�����*�,�*�7#��%"�*'��#��#(����'�,�*�#��%��!�%"��%��#(�%�,�!!�$��#�#�� ��!��#��#���(�$�%&�#(��[49*����*�''�*#!+��1�!�1�%#��#(��,��#�'��-Y+�(���%&�1�'��#(�%��%����'��%���',�'1�#(����1���%#�'�'�#�#��%"�+���(���������'���%��%*+�#��#(������&%��'�*���-�Z��#(����'�,�*�#��%��%&�%��'"�+��'�?� ����#��'����#(�

Page 2: SystemVerilog for Verification

��������������� ������ ������������������������������������ ���������������������������������������!����"�#�$��������������%�����������&'(�������������������������!�$����������������")*)*)+,-./012+3/+4055-6-1/+7-8-9.:�����!�������;$<������=$� ��<������������<�>�'������������������������������������;=�� �=�?�=@�������$=�����������;!������<=��������"�A�������B(C��������=!���������$�;���>�A����?��!�;$���������������$������$==!�����=���>�A����==�������� ������ ��������$<����������������������� �������>�D������=��������?��=��������������������������������������;$<�@�������!���������������������=!������������;=�� ������������<�"B���������;=�� �=�?�=@�������%���=�������=�� �������������������������;�$��������;������;=�� �"�D���������<����;=�������������������������������<��������������������������E�����!�����?���������������������������"�F�����<�?����������=@��������<��=������<���������>�'�������������<����;$�=�����;$�����?������������?������������������������@����=����������;$�=����������?�����������=�<��=!�����������?���"�#�$��G�;�������������������E�$�������������=�<���������!;���?�����=���������=����������������������?����"'�����$=���������<=������<��;=�� @�!�$���������������������������<������������$=�������==������$���$����<�;=�� ��H���������$=�������"�'���;���������������������=��E=�?�=����$E=��������$��?��!�����"�I���?��@�!�$���!������;$<�����;������������<����������;����@�������=��������==���?����<��������=���������������?��������$=�����������������<�;=�� �"�B�!�$��������������<���������<��;=�� �@����!���������$=��������������@����$���<�!�$���� =���"�'������$=���=��;=�� ����$=���������!�$���?��������;$<�@�;$�����!��=���$���=����"B��������<�����=�?�=��������AC'@�������������!��������������@�;$���������$=������������E���������<����=!����$���"�#�$�����������$=������?�������?���==�;=�� �����������<����������<�����?����������$�����=!"�B==�DJK���������������?�@������������������$�����<����@����������������;���<�����==��"�:�����==������������@�������=�<���������������<;$<�������$���������$�"B�������=�?�=�!�$������;=������$�����������������������������?������AC'��%��$���<��$=��E�=�����������������$�����=!���������������!�;=�� ����������;=����������?�"�:�����������������LM���=�!�������=�!��<��$������������$�����������������=���������$���������������������$���>�'���@��$���<���������=���@�����$��������������?���=��������;$�������������=�!��>�#�$� ���������������������=���?�������;���<�$���@������������<���<�������==�����@����������!�������!�����$��;������������;$�=�>�'����������<��� �����������������;�������������$����������������������!����$������������������������=!�=�� ��$�"K����!�$���?��?�����������������AC'������������������<�������$���������������=!@�!�$�������������������������������������������������"�N�����������<������=����������=�����������@�����������������$�������������������=����=��>�O$�����!��<������$��������==���������;=�����;=�������������$=�@��������������������������<�������������<�����$=�����?������������"�P�������G���������������=��<�����;��������������==��<��<��������?�����������" �������������� ������������������������������� !��" #��$������������"%��$��$�������&�"�'�# ��$��#� ((����)�*$+�# ���$,��� ������&��+ (�#�((��'($,���"$+�������!($#-��$'� ���./�"$+��"�#$""�#�(0%�!+�,� ���'����"�� "����"� 1��$'���''�"����2"�$"��03�4��#��#�((���$+(��!��#�$������5������$� (, 0��$!&�$+�� ��������������(�&�()�*$+�1 0�� &���$� � (06�������� �����#��'"$1���$+7� ����$'�#�((���$������'����� ��"�� ���!�� &�$"����#$""�#�)8���( ���2$���%�0$+�# ����&�"�2"$&�����"�� "���$�!+���(�'�%� ����$�0$+�������$�#$�7�� ��(0�#$1��+2�,������,�&�"�'�# ��$��� #��#�)9:9:;<=>?<@?ABCBDEFBGH<IJEH.���&�"�'�# ��$��2( �����#($��(0�������$������ "�, "���2�#�'�# ��$�� ���#$�� ���� ���#"�2��$��$'�,� ��'� �+"���������$�!���5�"#����� ���������#���K+����$�!��+���)�.�������2��1 0���#(+�����"�#����$"�" ��$1��������%� ���"��$��%�L4MN4�#$7&�"�'�# ��$�%�1+( ��$�%�'$"1 (�2"$$'�%� ���+���$'�&�"�'�# ��$��OP)�Q$"� �1$"��#$12(�������#+���$�$��&�"�'�# ��$������R�"��"$��STUUVW)�9:;<=>?<@?ABCBDEFBGH<X?F>GYGJGZ[<XEH\EJ.����!$$-����0$+"�� �����" ,���� &�(0�+2$������]//��� ��� ������"$$������ �1���$�7$($�0���&�($2���!0� ��#-�R�"��"$�� ���$���"�� ��_+ (��������)�.��0��� "����,������+��"07�� �� "��2" #��#��� ���"�'��������1�! ����$������"��52�"���#��$��1 �02"$a�#��)�]//b����#���K+���,�"��$"���� ((0���&�($2���'$"�+���,��������82��]�" ( ��+ ��� ���,�"���5����������TUUc�'$"�N0���1]�"�($�)�]//� �������2"���#���$"%����d�'�"��#��]�"�'�# ��$��/���$�$($�0�'$"�]�" %�� &��!����+�����+##���'+((0��$�&�"7�'0� �,����" ����$'�� "�, "���������%�'"$1����,$"-������&�#����$�2"$#���$"�)�.���!$$-�+����1 �0�$'������ 1��#$�#�2��).����!$$-����"&��� �� �+��"��+����'$"�����N0���1]�"�($��( ��+ ��)�O�����#"�!������( ��+ ����1 �0�#$���"+#��� ���2"$&������+���(�����'$"�#�$$���������$����!�����+������$0$+"������)�O'�0$+� "����,��$�&�"�'�# ��$�%�� &��(���(���52�"���#��,����$!a�#�7$"������2"$�" 11���%�$"� "��+�' 1�(� "�,����#$���" ����7" ��$1������%������!$$-�# ����$,�0$+����"�����2 ����$�#�$$��)�8�#��0$+� "��' 1�(� "�,�������1%�0$+�,�((�'��������]//��$�!� ��� �0����2�+2)N$�,�0��$���b�������!$$-��� #��0$+�]//3�e�-�� �0� �& �#����$$(%�]//�, ����������'$"�+���!0� ���52�"���#���+��"%� ����5#�(��$����''�#+(��2"$!(�1�)��"��0$+���#� "���$'�&�"�'0���� �fUU�1�((�$�7� ����������,����1 �0�#$11+��# ��$��2"$�$#$(�%#$12(�5��""$"�� ��(���%� ��� �(�!" "0�$'�OP3�O'��$%�]//��������"������$$(�'$"�����a$!)L$,�&�"%��'�0$+� "��,$"-����$���1 ((�"�1$�+(��%�,���� �����(��2"$�$#$(%�0$+�1 0��$�������+#�� �"$!+���1���$�$($�0)�+���"�1�1!�"��� ��0$+"�!($#-����2 "��$'� �( "��"��0�7��1g�]//7#$12(� ���#$������"�+� !(��!$����+"���� �2"$a�#�� ���$��( ��"��������)d�1�1!�"��� ������#$���$'�&�"�'�# ��$���$���!�0$���0$+"��11��� ���2"$a�#�)

Page 3: SystemVerilog for Verification

��������������� ��������� ������������������������������������� �!�����"!��"#$ �"%�"�&�'�$�$�$����� �%�"�($"(��(��$�����"!�$"�� ) ��������%%'"$���$�"&��"!�%'���%� �*���$�����+�$���"�$"� �!'�,�$�"����-.���%�� $��(��"!����/����������"$0'����"!�� $�+�������(��$"�����������������"!�'�$�$�$��&�($#$"(�.�'�$"�$(���$"������$ ���"�� '��$�"*1234567894:;7<=;>9?4@A>9<8B>6C8<D����)' )���������������"���$�����!��� %$"�������� ���"�����������!��$("�'"!� �����EFG�H*���$��$������%)�$���!��.����������/$"(����)�*I J�"� ������$%'�'�I K))�.���$%'�'���������FG�I L�)�' ������ ��)�"��I L���+��� ��� ���"���I ����' ��) �( �����(�$"��������#� ����#� $�$���$�"�(����-�%�����)��� ������%)�$���!��'��%��$����.��.�����������"��&�/�$������� ��� ��%�"',���.�!��� %$"�!��.�.�'*�����%����!���(.�.�'��������!��� %$"�����/�����) ���!$"(���)��� ���� $�!��'�*12M4N8O;9<;P4:;7<8>Q� �!$�$�"���.&�/��"�����!�/$����������+����#� $�.$"(������� ���"���������!��$("&�.�') �����.�'��!�!$ ����!������*�G�$"(���$���)) ����&�.�'����+���������� !/� ���)��$�$��,�$�"��"!�/ $�����#� $�$���$�"�)��"�/$������$�����������&���������/�$�����"��"� ���!��"��������� �����!�����' ��*�K %�!�/$�����$��)��"&�.�'�/ $�����$%'�'��#���� ��������R� �$������������' ���$"�����FG�*�S�'����"��$%'���������FG��/$���������#���� ���"!�%�"',���.� �#$�/����� ��'��$"(���(��$�����"!�/�#��� %�����%�+���' ������!��$("�!����/���.�'��R)���*�T"������������/� +���� ����.&�.�'�����+�$������$"�����#� $�$���$�"�)��"��"!%�#���������"�R���"�*��$��$"� �%�"�����)) �����%�+�������!.�) �( ���&�/�$���$����/�.��)�)'�� �/$���%�",�(� ��/���/�"�����������) �U����%�+$"(����!/�.*�V�������) �!'������%����$%%�!$��� ��'���&��$"����$�����$"� ��� '��' ��$��"��!�!�/��"�.�'�� ��('$!$"(������ ���$�"�����#� .��$%'�'��#���� *�J$#�"��%)����$%���"!������$"(&�!$ ����!�����$"(�$���'��$�$�"�����#� $�.%�".�!��$("�*W$(' ��X,X����/����/�!$ ����!�������$"� �%�"����.���#� ���������' ���$"�����#� $�$��,�$�"�)��"*�Y���������$���� (���!������#� .��)��$�$���������!��$("����%�"��*�V��.�'���!�"�'(���$%�&�.�'���'�!�/ $�����������������"��!�!��� �XZZ[���#� �(����������"�$ ��#� ,$�$���$�"�)��"* �������������� �������������������������������� !�"�!�#!�$�%���##�%&���!�'�()*+,-.,/01,20,30+,)*45,+)5,356577*8/,+-95,08,857018657,+0,6*88/,01+,+)5,2-856+52,+57+:-3;,*<<80*6)=,>7,/01,6*3,755?,@)-A5,/01,9*/,*A@*/7,B5,9*C-3;,.08@*82,<80;8577?+)5,7A0<5,859*-37,+)5,7*95D,()53,+)5,257-;3,609<A5E-+/,201BA57?,-+,+*C57,+@-65,*7A03;,+0,609<A5+5,08,85F1-857,+@-65,*7,9*3/,<50<A5,+0,-9<A5953+,-+D,G5-+)58,0.,+)5757-+1*+-037,-7,257-8*BA5D,H01,3552,*,95+)020A0;/,+)*+,.-327,B1;7,.*7+58,-3,08258,+085*6),+)5,;0*A,0.,IJJK,60458*;5D���������L����� !�"�!�#!� %&��M��N-;185,I:O,7)0@7,+)5,+0+*A,257-;3,7<*65,*32,.5*+1857,+)*+,*85,6045852,B/,2-856+52+57+6*757D,P3,+)-7,7<*65,*85,9*3/,.5*+1857?,7095,0.,@)-6),)*45,B1;7D,H01,3552,+0,@8-+5+57+7,+)*+,60458,*AA,+)5,.5*+1857,*32,.-32,+)5,B1;7DQRSTUVWTXYZT[\\] QRSTUVWTXYZT[\\]QT_ TY_aXTbaZQT_QT_ TY_aXTbaZTY_aXTbaZ

Page 4: SystemVerilog for Verification

������������� �� �������������������� !�"#$%&'(()&*%+%&,#+&-(..(/$01&23$04$2.+%56 7(0%,38$0+9:3809(;&%,$;*.*%6 <*04,$(08.&4(=+381+6 >8?+3+9&,+%,'+04#&*%$01&,380%84,(3%6 7(;;(0&,+%,'+04#&-(3&8..&,+%,%6 "+%,:%2+4$-$4&4(9+&)+2,&%+2838,+&-3(;&,+%,'+04#@..&,#+%+&23$04$2.+%&83+&3+.8,+95&A809(;&%,$;*.*%&$%&43*4$8.&-(3&+B+34$%$01&4(;2.+B9+%$10%5&@&9$3+4,+9&,+%,&-$09%&,#+&'*1%&?(*&+B2+4,&,(&'+&$0&,#+&9+%$10C&/#+3+8%&8&380:9(;&,+%,&480&-$09&'*1%&?(*&0+=+3&80,$4$28,+95&D#+0&*%$01&3809(;&%,$;*.*%C&?(*&0++9-*04,$(08.&4(=+381+&,(&;+8%*3+&=+3$-$48,$(0&23(13+%%5&<*3,#+3;(3+C&(04+&?(*&%,83,*%$01&8*,(;8,$48..?&1+0+38,+9&%,$;*.*%C&?(*&0++9&80&8*,(;8,+9&/8?&,(&23+9$4,&,#+3+%*.,%&E&1+0+38..?&8&%4(3+'(839&(3&3+-+3+04+&;(9+.5&F*$.9$01&,#+&,+%,'+04#&$0-38%,3*4:,*3+C&$04.*9$01&%+.-:23+9$4,$(0C&,8)+%&8&%$10$-$480,&8;(*0,&(-&/(3)5&@&.8?+3+9,+%,'+04#&#+.2%&?(*&4(0,3(.&,#+&4(;2.+B$,?&'?&'3+8)$01&,#+&23('.+;&$0,(&;8081+8'.+2$+4+%5&"380%84,(3%&23(=$9+&8&*%+-*.&28,,+30&-(3&'*$.9$01&,#+%+&2$+4+%5&D$,#&8223(23$:8,+&2.800$01C&?(*&480&'*$.9&8&,+%,'+04#&$0-38%,3*4,*3+&,#8,&480&'+&%#83+9&'?&8..&,+%,%809&9(+%&0(,&#8=+&,(&'+&4(0,$0*8..?&;(9$-$+95&G(*&H*%,&0++9&,(&.+8=+&I#(()%J&/#+3+,#+&,+%,%&480&2+3-(3;&4+3,8$0&84,$(0%&%*4#&8%&%#82$01&,#+&%,$;*.*%&809&$0H+4,$01&9$%,*3:'804+%5&7(0=+3%+.?C&4(9+&%2+4$-$4&,(&8&%$01.+&,+%,&;*%,&'+&)+2,&%+2838,+&-3(;&,#+,+%,'+04#&,(&23+=+0,&$,&-3(;&4(;2.$48,$01&,#+&$0-38%,3*4,*3+5F*$.9$01&,#$%&%,?.+&(-&,+%,'+04#&,8)+%&.(01+3&,#80&8&,389$,$(08.&9$3+4,+9&,+%,'+04#&E+%2+4$8..?&,#+&%+.-:4#+4)$01&2(3,$(0%5&@%&8&3+%*.,C&,#+3+&;8?&'+&8&%$10$-$480,&9+.8?'+-(3+&,#+&-$3%,&,+%,&480&'+&3*05&"#$%&182&480&48*%+&8&;8081+3&,(&280$4C&809&%(&;8)+,#$%&+--(3,&283,&(-&?(*3&%4#+9*.+5&K0&<$1*3+&L:MC&?(*&480&%++&,#+&$0$,$8.&9+.8?&'+-(3+&,#+-$3%,&3809(;&,+%,&3*0%5 �������������� ���������������������������� !"#$�%�"�&��%"&!'�$�#$�(�!���##�!)���$�'��)#*�&���+$�&�$�#$�"�,-./012-.31456789:21;98<1=>?1300=1@>4:2.:AB12-015>?C>D<1.31-.A-E1FG08?18>:@9=12032?941D80>2013->80312-.31D9==9:12032C0:D-B1>31955930@[email protected]@1203231;-08010>D-1.3;8.220:1789=13D8>2D-E1F>D-18>:@9=120321D9:2>.:31>170;1@9H0:1/.:031971D9@01291D9:328>.:2-0132.=4/431.:1>1D082>.:[email protected]:1>:@1D>4301>:[email protected]@10ID052.9:3B134D-1>31D80>2.:A1>58929D9/1G.9/>2.9:E1J-018034/21.312->21?94813.:A/01D9:328>.:0@68>:@9=12032C0:D-1.31:9;7.:@.:A1C4A317>320812->:12-01=>:[email protected]@19:03EK312-018>[email protected]?1C0A.:31291@8951977B1?941D>:1D80>201:0;18>:@9=1D9:328>.:231290I5/9801:0;1>80>3E1J-01/>32170;1C4A31=>?19:/?1C01794:@1;[email protected]@120323B1C4212-0G>321=>L98.2?1971C4A31;.//1C01794:@1;.2-18>:@9=120323E�*M� !"#$�%�"�&�N%"&!'�O$�'�P�#K/2-94A-1?941;>:212-013.=4/>2981291A0:08>2012-0132.=4/43B1?941@9:Q21;>:21292>//?18>:6@9=1G>/403E1R94143012-01S?320=T08./9A1/>:A4>[email protected]=>219712-032.=4/431UV>@@[email protected][\1981SJ] FY1/0:A2-1_1WX1C?203aB>:@12-013.=4/>29815.D<31G>/40312->21=00212-01D9:328>.:23E1b9:328>.:.:A12-018>:@9=1G>/64031291C0D9=0180/0G>:2132.=4/.1.31D9G080@1.:1b->5E1cE1J-0301G>/4031>80130:21.:[email protected]:B1>:@1>801>/39130:21.:291>1-.A-6/0G0/1=9@0/12->[email protected];->212-018034/213-94/@[email protected]:Q31>D24>/19425421.31D9=5>80@1;[email protected]@1942542Ed.A4801e6f13-9;312-01D9G08>A017981D9:328>.:0@68>:@9=12032319G0812-01292>/[email protected]:35>D0E1d.832B1:92.D012->21>18>:@9=1203219720:1D9G0831>1;.@08135>D012->:1>[email protected]@19:0EJ-.310I28>1D9G08>A01=>?19G08/>5192-08120323B1981=>?10I5/9801:0;1>80>312->21?941@.@:921>:2.D.5>20E1g712-0301:0;1>80>317.:@1>1C4AB1?941>801.:1/4D<h1g712-01:0;1>80>1.31:92/0A>/B1?941:00@1291;8.201=9801D9:328>.:231291<00518>:@9=1A0:08>2.9:1789=1D80>2.:A.//0A>/[email protected]:174:D2.9:>/.2?E1i>32/?B1?941=>?132.//1->G01291;8.201>170;[email protected]@1203231297.:@1D>3031:921D9G080@1C?1>:?192-081D9:328>.:0@68>:@9=120323Ejklmnopmqrsmtuuv wrxyoljmz{ |kqm}{myjmz{jklmnopmqrsmtuuv wrxyoljmz{ |kqm}{myjmz{

Page 5: SystemVerilog for Verification

��������������� �������� ���������������� �!���"��!�"�#� �� �$�%��!��&'()*+,-./,01230,41+,56410,42,671'+8+,7295:+4+,728+*6(+;,<46*4,64,41+,)55+*,:+=4,3'41>60'7,72?04*6'?+@.*6?@29,4+040;,A)?,41+9,3'41,96?B,@'==+*+?4,0++@0;,C1+?,B2),:22D64,41+,=)?74'2?6:,728+*6(+,*+52*40E,='?@,41+,12:+0,31+*+,41+*+,6*+,(650,'?,41+,728+*6(+;F23,B2),96D+,9'?'96:,72@+,716?(+0E,5+*1650,>B,)0'?(,?+3,72?04*6'?40E,2*,>B,'?G+74.'?(,+**2*0,2*,@+:6B0,'?42,41+,HIJ;,<5+?@,9204,2=,B2)*,4'9+,'?,41'0,2)4+*,:225E,3*'4'?(@'*+74+@,4+040,=2*,2?:B,41+,=+3,=+64)*+0,4164,6*+,8+*B,)?:'D+:B,42,>+,*+671+@,>B,*6?@294+040;���������K���%��!���$��%�����$�LMNOPQMP RMSTUVMQWPXYZQM[TM\TMST[PSMLMNOPQMP RMSTUVMQWPXYZQM[TM\TMST[PSM]USTQPZM\QP\U_OTMSTS a[TZUPW]UVMQPbMcdefghiejklmnnohoepgjooljcdefghiejklmnnohoepgjooljqloepmnfrstojqloepmnfrstojullvsejphdmepjullvsejphdmepj wxyxz{|[U\M_U\Z}Z[PTZUSYZQM[TM\TMST[PSM]USTQPZM\QP\U_OTMSTS a[TZUPW]UVMQPbMcdefghiejklmnnohoepgjooljcdefghiejklmnnohoepgjooljqloepmnfrstojqloepmnfrstojullvsejphdmepjullvsejphdmepj wxyxz{|[U\M_U\Z}Z[PTZUSYZQM[TM\TMST[PSM �������������� ����������������������������� !"#�$ !�%�&# '()*+�,-./012304-5/6027089/:2;5<5/=04-.0>45;3?3>042090:.>5=/@04-.0758>404-5/=04-9401230;5=-44-5/602705>04-.0:949075.?:>A0B-5>0>45;3?3>05>04-.0.9>5.>40420C8.94.0D0E3>40C9??0FGHIJKLMNAB-.0O82P?.;05>04-9404-5>0=5Q.>090Q.810?2R0O91P9C605/04.8;>0270P3=>0723/:A0B-.0O85S;981041O.>0270P3=>0723/:0R54-089/:2;0:949098.0:9490O94-0.8828>@0O.8-9O>0R54-0P54S?.Q.?0;5>496.>A0T230/..:042075/:0P3=>05/04-.0C2/482?0?2=5CAT230/..:04204-5/60P829:?109P23409??0:.>5=/05/O34>@0>3C-09>04-.072??2R5/=AU V.Q5C.0C2/75=389452/U W/Q582/;./40C2/75=389452/U X/O340:949U Y8242C2?0.ZC.O452/>U W8828>09/:0Q52?9452/>U V.?91>B-.>.098.0:5>C3>>.:05/0[.C452/>A0�A\A�0D0�A\A]A������*_(*��&#�a&_(b &'*&��c &d(e!b��( &,-9405>04-.0;2>40C2;;2/08.9>2/0R-10P3=>098.0;5>>.:0:385/=04.>45/=02704-.0fBg:.>5=/h0i240./23=-0:577.8./40C2/75=389452/>098.0485.:A0j2>404.>4>0E3>403>.04-.0:.>5=/9>0540C2;.>023402708.>.4@02809OO?109075Z.:0>.402705/5459?5<9452/0Q.C428>0420O3405405/42096/2R/0>494.A0B-5>05>0?56.04.>45/=090Ykl>02O.8945/=0>1>4.;085=-40974.80540-9>0P../5/>49??.:@0P340R54-23409/102704-.09OO?5C9452/>05/>49??.:A0m70C238>.04-.0O.8728;9/C.05>75/.@09/:04-.8.098./l409/10C89>-.>AX/0908.9?0R28?:0./Q582/;./[email protected]>0C2/75=389452/0P.C2;.>0;28.089/:2;04-.?2/=.805405>05/03>.A0o280.Z9;O?.@0X0-.?O.:090C2;O9/10Q.857109045;.S:5Q5>52/0;3?45SO?.Z280>R54C-04-940-9:0p���05/O340C-9//.?>09/:0�p0234O340C-9//.?>A0B-.0Q.8575C9452/./=5/..80>95:@0qB-.>.0C-9//.?>0C23?:0P.0;9OO.:0420Q98523>0C2/75=389452/>02/04-.24-.80>5:.A0W9C-05/O340C23?:0P.03>.:09>090>5/=?.0C-9//[email protected]:5Q5:.:05/420;3?45SO?.0C-9//.?>A0B-.0485C610O98405>04-9409?4-23=-0907.R0>49/:98:0R91>0270P8.965/=0540:2R/98.03>.:0;2>402704-.045;.@09/10C2;P5/9452/0270P8.96:2R/>05>0?.=9?@0?.9Q5/=090-3=.0>.4270O2>>5P?.0C3>42;.80C2/75=389452/>ArB204.>404-5>0:[email protected]./=5/..80-9:0420R854.0>.Q.89?0:2<./0?5/.>0270:58.C4.:04.>4P./C-C2:.0420C2/75=38.0.9C-0C-9//.?A0s>0908.>3?4@0>-.0R9>0/.Q.809P?.04204810C2/75=389452/>R54-0;28.04-9/090-9/:73?0270C-9//.?>[email protected].>4P./C-04-94089/:2;S5<.:04-.0O989;.4.8>0728090>5/=?.0C-9//.?09/:04-./0O3404-5>05/090?22O0420C2/75=38.09??04-.>R54C-l>0C-9//.?>A0i2R0>-.0-9:0C2/75:./C.04-940-.804.>4>0R23?:03/C2Q.80C2/75=389452/S8.?94.:0P3=>04-940R23?:0-9Q.0P../0;5>>.:0P.728.A

Page 6: SystemVerilog for Verification

������������������ ���� ��������������������� �!����"#$���%�����&�#�������"#���'����$����#�#�(�������$�'%�)����&*�+���� �!�����"��#, #�(�����-./��#��#&�$����$�����������&�0��$�������'#'#$&���#&��"#���'���*�1�!�&��!��������'#2���������#�����"#���'����$��,#(!���#����#�$�!�#�(�������(����,�����&#'!���#�����!'0����,���"#$�&������������� �����$��,#(!���*�3,$�!�&�� �!���������$������$��&���#��&����'�4��&!�������$��,#(!���#���#&���(��*�����������5 ��%& &�$!&��'����6�'%������$�'%�� �$�����������73�&�#�$��$�#%�����$����$����'!��#%���89��0!&�&�������#��������'�'�� �0!&*�:������&������,�&#'!���#����� ������'� �$��&�������!'0����,�89��0!&�&�;�<=>�������!'0����,���"#$�&������$�0!&�;�<?>����������%���'����&�,�����$����"#$��;'�&�������&��"���95@������&&�&����$*>*/�� �4�%�����$4��,�������&����$�'0#���#��&�!&#�(�,!�$�#�����$�"���(��&���������� $�!���0��&!����������� �����$�"�������'�&���"�� �%�&&#0������*3�������"#���'����%���'����&�#�$�!�����&�����(����������#�A�$�#�������&���������� '���&*�5���B��(�����;CDDE>�,���'�����6�'%��&*FGHGIJKLMNOJPQOQ+���� �!�������0�!�������'�&�#'!�!&�� �!�%��0�0� ����!(����,���4#�(�������&�$�#��&!$���&���0!&���#������:/R�$��������,#��#�(����������,#���&��#��������'�"��!�&*�:$�!��� ���#&��%%���$��#&�,�#�� �&���#(��,��������&����(��&� �!�$���,!�� �%��%���� �!������&�$�#��$��&&�&��&�&�����#��9��%&*�S�����?*�1�!������������#$#%������ ��� �����%����$��&����������#�A�$�#����%�!&�&$���0����#�(�����,!�$�#�����$�"���(�*FGHGTJUVWOWXWYJZ[X\MO]WL_JZVVWV_JQLJa]WYQO]WL/���������,�����#�(&�'����,�!&����#�(���������������"#$��&!$���&���89����$����%������$4&�!%*�R�� ��#'�&��������� �$!���#&����&�!��#�������������&����*�9���$�&������������%�#�&#�������%���!$��������#&���%#�$���,���(#$�������6%��#��$���&�'��&�����,������$���#�#���,��'���#$��#��$�!���������$�"����������!&�%��"������������"#$��,��'����4)#�(�$����$�� *b���$��� �!�%��"������#&�,��'���%%��#�(����������������� �!�����0!#��#�(c��,�&�'�)��#�(�$���(������(�#��������������������� �!�&��!����� ����&#'!�����#�*�d��4����������������&������$����$$!�*�+������%%��&�#,���0!&�����&�$�#������&�����$�'%����c��,���#�"��#���%����#���#&���$�!������c�-��&�������&#(��&%�$#,#$��#���&��������������&#(���&����'!�!��� ��6$�!&#"�c�-�#"�����'�0��������'�4��&!���������"#$��$���#�!�&�����%��)����%��%��� *e!&���&� �!������� #�(����%��"�4����������������#���#��),��'���$�''���&�� �!�&��!����&���� ����$��$�����&���$$!����$�&*�f����6�'%������$�������&��'!�!��� ��6$�!&#"��&#()���&*�1�!�&��!�������$��$4���$����������4�,������&��"#����#��&*�1�!��$����&��!��������&��%�#���������#�(�'�&&�(���������#&��$$!�&������%��,���0� �(���������������������#��������������&�*����#&�,�!&����#�(����&%������!�&����$4#�(�0�$4�����!(��$������ #�(���,#�������������,���'��,!�$�#�����&%�$#��� ������ �!�$�!�����"��$�!(���#��$��&��������&�!�$���#�����&#'%����&&���#��*�;5���g#A� ���(��"�������@�'��������hCDDSi�,�� �������������� ���������������������������� �!�"��!�#��$�!��%""��$��!"��!�&����$�"$'�!()�%!����"��!�(���*+�,�"$��%-�"����$)%$�&���(%!���"%' ��$)��(����$)%$�"$�."�"��� %$��!��!�������"��$)%$�&���(%!��%"� &$�"$�������)%!� �!�*/0102345678937:;3<8:=>?@:AB7CA@:D�#�E%"$�")�� ��&����$�"$'�!()�"�!���!�"$��� �"F�G #%&"��"��(�!"$�%�!��H�%!����� %&"�$��)� .�(%$()�.��$�(� �'��"*�G�$�"$�$)%$��"�"�$)��")��$�"$��� %&"���!"�$)��E%"$�"$I'�$��$�#�!J$�(��%$��% �.�""�' ��"$��� �"*�K���(%!�(��%$��%�$�"$'�!()�$)%$�$% -"�$�%!�$)���' �(-�%$�$)��E%"$�"$��%$�I�'�$�"�'$ ��'��"�%����E$�!���L�% ���#)�!��!$����$$�!$�� %&"�%����!$����(��*�G�' �(-��%&�E�!($��!�(����($ &�E���% �.�""�' ��.����$%$��!"��E�"$��� �"�E����%�"�!� ��!$��E%(�I�'�$�"�'$ �������"��%&��((���#)�!�$�%!"%($��!"�%���E �#�!���!$���� $�. ��!.�$"*�M�&�$��(�����!%$��$)��L%����"����L��"�"��$)%$�$)�&�(%!�(����!�(%$��%$���EE���!$$���!���%$�"*�N)%$��E�$)���!.�$"�%���L��%$�$)��E%"$�"$�.�""�' ���%$�I�'�$�$)����$.�$��"'��!��$)��$$ ���'%(-�$��%�" �#����%$�F�N)%$��E�"$��� �"�%���L�"�%$��� $�. ���!.�$"�(�!H(����!$ &F�N)%$��E��$��"�"$%�������#�$)���EE���!$��� %&"F�O"��E�!($��!% �(�L��%��I#)�()�#� �'����"(�""����!�P)%.*�QI�$����%"����#)%$�(��'�!%$��!"�)%L��'��!��%!H��� &���!��%$��*/010R3S7?766563T7:;@U3V59CA:WD�#�")�� ��&�����!�$)��$�"$"F�G�����($���$�"$�)%"�%�$�"$'�!()�$)%$�.����(�"�%��!�X��"�$��E�"$��� �"�%!����".�!"��L�($��"*�M��()%!���$)��"$��� �"I�&���!����$��()%!���$)�$�"$*�G��%!����$�"$�(�!"�"$"��E�$)��$�"$'�!()�(����. �"�%��%!����"���*�YE�&�����!�$)�"%���$�"$�Z[�$���"I��%()�$����#�$)�%��!�X���"���I�&���#� ���$�Z[���EE���!$�"�$"��E"$��� �*�\�!!�!��#�$)��� $�. ��"���"�'��%��!"�$)��(�L��%����E�&����$�"$�%!�� �L��%��"&����#��-*�K���!����$��()��"��%��!�X���"����E����%()�"��� %$��!*�]����.��. ���"��$)��$�����E�%&I�'�$�$)%$�(%!�"$� �(%�"����. �(%$�"*�N)%$��E�&���%����"�!��%�'%$()�X����!��"&"$��%(��""�%�PO�E%���%!��$� ��$�$��"$%�$��[�_�'"�%$����!��)$F�� $�. ��_�'"�(�� ��"$%�$�%$$)��"%���$����'�$��!���EE���!$�(��.�$��"I�%!��#� �$)�"���$�$)��"%����%!����"����%!���!�$)��"%���"$��� �"*�K���")�� ��' �!���!�$)��.��(�""���!%���$��$)��"���*�YE�&���PO�E%����!( ���"��� $�.��(�""����%()�!�"I�&���(�� ��)%L��$#��_�'"�"$%�$���!!�!��%$���!��)$�#�$)�$)��"%���"���I�%!��"��&���")�� ��% "��$)��#��!�$)��.��(�""�Ya*�b�#�% _�'"���$��!�X���"���"*K���!����$��. %!�)�#�$�����%!�c��&����E� �"�$��)%!� ���� $�. ��"���H %$��!"*�d%()�_�'�(��%$�"�%�"�$��E���$.�$�E� �"I�"�()�%"� ���E� �"�%!�E�!($��!% �(�L��%����%$%*�K���(%!���!��%()�_�'��!�%���EE���!$�����(H$��&I����&���(%!�$�&�$����L��%��!�X���!%���$���%()�E� �*�M)���%"��"$%..��%()��"�$��%..�!��$)���%!����"����L% ���$��$)������($��&�!%��*

Page 7: SystemVerilog for Verification

������������� ��� �������������������� !�" #$%&'()*+�,-+.)/+�,0+*1(2$/+1(2+&(+%3$.&$+*&'456'+&1.&+%.)+3.)/(467+2.68+&13(591+&1$$)&'3$+*:.%$+(;+:(**'<6$+'):5&*,+='&1+&1'*+.::3(.%1>+7(53+&$*&<$)%1+?'*'&*+*(4$+.3$.*(;&$)>+<5&+&.8$*+&((+6()9+&(+3$.%1+.66+:(**'<6$+*&.&$*,+@)3$.%1.<6$+*&.&$*+2'66+)$?$3+<$?'*'&$/>+$?$)+9'?$)+5)6'4'&$/+*'456.&'()+&'4$,+A(5+)$$/+&(+4$.*53$+21.&+1.*+<$$)?$3';'$/+')+(3/$3+&(+%1$%8+(;;+'&$4*+')+7(53+?$3';'%.&'()+:6.),B1$+:3(%$**+(;+4$.*53')9+.)/+5*')9+;5)%&'().6+%(?$3.9$+%()*'*&*+(;+*$?$3.6+*&$:*,C'3*&>+7(5+.//+%(/$+&(+&1$+&$*&<$)%1+&(+4()'&(3+&1$+*&'4565*+9(')9+')&(+&1$+/$?'%$>+.)/'&*+3$.%&'()+.)/+3$*:()*$>+&(+/$&$34')$+21.&+;5)%&'().6'&7+1.*+<$$)+$D$3%'*$/,+E5)*$?$3.6+*'456.&'()*>+$.%1+2'&1+.+/';;$3$)&+*$$/,+F$D&>+4$39$+&1$+3$*56&*+;3(4+&1$*$*'456.&'()*+')&(+.+3$:(3&,+G.*&67>+7(5+)$$/+&(+.).67H$+&1$+3$*56&*+.)/+/$&$34')$+1(2+&(%3$.&$+)$2+*&'4565*+&(+3$.%1+5)&$*&$/+%()/'&'()*+.)/+6(9'%,+I1.:&$3+J+/$*%3'<$*+;5)%K&'().6+%(?$3.9$+')+#7*&$4L$3'6(9,+������� MN��O�P!�Q��������������� !�" ����R��Q���ST+3.)/(4+&$*&+$?(6?$*+5*')9+;$$/<.%8,+B1$+')'&'.6+&$*&+%.)+<$+35)+2'&1+4.)7+/';;$3$)&*$$/*>+&15*+%3$.&')9+4.)7+5)'U5$+'):5&+*$U5$)%$*,+V?$)&5.667+&1$+&$*&>+$?$)+2'&1+.)$2+*$$/>+'*+6$**+6'8$67+&(+9$)$3.&$+*&'4565*+&1.&+3$.%1$*+.3$.*+(;+&1$+/$*'9)+*:.%$,+T*&1$+;5)%&'().6+%(?$3.9$+.*74:&(&'%.667+.::3(.%1$*+'&*+6'4'&>+7(5+)$$/+&(+%1.)9$+&1$&$*&+&(+;')/+)$2+.::3(.%1$*+&(+3$.%1+5)%(?$3$/+.3$.*+(;+&1$+/$*'9),+B1'*+'*+8)(2)+.*W%(?$3.9$K/3'?$)+?$3';'%.&'()X+.)/+'*+*1(2)+')+C'953$+�K-,��"�! ��YZ�[ S��\!�"! SS�]�����M�]������P MN��O=1.&+';+7(53+&$*&<$)%1+2$3$+*4.3&+$)(591+&(+/(+&1'*+;(3+7(5_+)+.+:3$?'(5*+a(<>++23(&$.+&$*&+&1.&+9$)$3.&$/+$?$37+<5*+&3.)*.%&'()+;(3+.+:3(%$**(3>+.)/+.//'&'().667+;'3$/+$?$37<5*+&$34').&(3+b#5%%$**>+c.3'&7+$33(3>+E$&37d+')+$?$37+%7%6$,+B1'*+2.*+<$;(3$+eLG*>fghijklimnoipqqr sgtukvtwiixynz{sgtuwiixynz{ fghijklimnoipqqr sgtukvtwiixynz{sgtuwiixynz{ �������������� ������������������������������ !���"��#��! ��$��%�!& !�� !� �������'!� ���(��"%�%�#�)'� *!� !�+%�� ���&��! ��$%�!�� �,)� � *!��%#* �&(&"!�-�.$ !��+)&*�*�������"(�%�����!&"��!���)&&!���/��001&�2!��#!-�3*!�� *!�'��&!����4�� %+%�#�&*��#!���"%#* "(5�6�����*��� ���!���"(7!� *! !� �����&*��#!� *!�� %+)"%-.�+��!�'���)& %2!� !� %�#�� �� !#(�)�!�������+� �����& %�������� !�+%�� ���-�3*!"��#!��(�)��)��% 8� *!�*%#*!�� *!�&�2!��#!-�.����9��)�8� *!� !� �&���9!�+��!�$"!:%9"!!��)#*� ��&�!� !�2�"%��� %+)"%�!2!��%$� *!��!�%#�4�� %+%�#�&*��#!�-�;�)�&����&&�+<'"%�*� *%��9(����%�#���$!!�9�&=�"��'� *� �"��=��� � *!�� %+)")��&�!� !�����$��>#!�!�� !���""���% !�&(&"!��(! ?@����� *!��&*��#!� *!�&��� ��%� ��!%#* ��>���'���% !�!%#* � ��7!��@-�3*%��%+'��2!+!� ���)"��#�!� "(��!�)&!� *!� %+!��!!�!�� ��#! � ��$)""&�2!��#!8��% *�"% "!�+��)�"�%� !�2!� %��-3*%��%���� ��� ('%&�"��% )� %��8�*��!2!�8�9!&�)�!��$� *!� �%2%�"�$!!�9�&=�$��+�$)�& %���"&�2!��#!� �� *!�� %+)")�-�������!�"��!�%#�8�*����*�)"��(�)�&*��#!� *!�� %+)")�� ���!�&*���!�%�!���!�%#��� � !?�3*%���!A)%�!���!!'�=���"!�#!��$� *!��!�%#������'��!�$)"�$��<+�"� !&*�%A)!�-�3*!�!���!����!��(�����!��8���������(��+%&�$!!�9�&=�%�����!"(�)�!��$��&��� ��%�!�<�����+�� %+)")�-���� !��8�(�)��!!�� ��+��)�""(����"(7!� *!�$)�& %���"&�2!��#!��!'�� �������" !��(�)�������+�&��� ��%� �-B!!�9�&=�%��)�!��%��$��+�"����"(�%�� ��"���)&*����C�#!""���>D(��'�(�8�E00F@-�� ����<"(7!�����!�%#�� ��$%����""� *!�)�%A)!8��!�&*�9"!�� � !�-�� � *!���)������*�� ��%+)"� %��� ��!!�*���+��(�� � !���!�!�2%�% !�-�G�� "(8�% ��!��&*!��$��+� *!�� � !�+�&*%�!� �� *!�!�%#��%�') �� ��&�"&)"� !� *!�� %+)")���!!�!�� ���!�&*���(��!+�%�%�#�� � !�8����� *!�C�#!""����''"%!�� *%�� �� *!�HI3-JKLMNOPQROSTUMVWXYWSOSQP����%+)"� %��8� *!� !� 9!�&*����'�����)��� *!�HI38�,)� ������*������!� !� !��&��<�!& �� ����'*(�%&�"�&*%'8�����*����%��B%#)�!��<Z-�[� *� *!� !� 9!�&*����� !� !�'��2%�!�� %+)")������&�' )�!��!�'���!�-�3*!��%$$!�!�&!�9! �!!�� *!+�%�� *� �(�)� !� 9!�&*��!!��� �����=��2!�����%�!����#!��$�"!2!"���$��9� ��& %��8�&�!� %�#� �����&< %���������!A)!�&!�8��*%&*���!�!2!� )�""(� ����$��+!��%� ��9% �2!& ���-�.� !� !��,)� ���=��� � *!�9% �"!2!"-

Page 8: SystemVerilog for Verification

�������������� ������������������������ ��!�"��������#��$�%���&'()*+,-.*/0),*)'()*)-.)1-02'*13,245*6)*/.*2,789/.-:*,;*7(0<*1=.*;=02)/,0(3*7,:-3.>?@ABC*D'/2'*<,=*2(0*)'/04*,;*(.*)-.)1-02'*2,78,0-0).*E*),*)'-*FGH*)'-<*3,,4*3/4-9-(3*2,78,0-0).C*1=)*)'-<*(9-*8(9)*,;*)'-*)-.)1-02'C*0,)*)'-*IHJ*:-./+0K*6;*)'-*9-(3:-L/2-*2,00-2).*),*MA?MC*GN?C*OP6C*(0:*NO6*1=.-.C*<,=*'(L-*),*1=/3:*-Q=/L(3-0)2,78,0-0).*/0*<,=9*)-.)1-02'*)'()*2(0*+-0-9()-*.)/7=3=.*(0:*2'-24*)'-*9-.8,0.-C*(..',D0*/0*@/+=9-*�RSK*H'-.-*(9-*0,)*:-)(/3-:C*.<0)'-./T(13-*7,:-3.C*1=)*/0.)-(:*'/+'R3-L-3*)9(0.(2),9.*)'()*,1-<*)'-*89,),2,3C*(0:*-U-2=)-*7,9-*Q=/243<K*6;*<,=*(9-*89,),R)<8/0+*=./0+*@OVM.*,9*-7=3()/,0C*)'-*?@A.*:,*0--:*),*1-*.<0)'-./T(13-K���������W�������� �� $%X$������Y�Z�[\]���"�������� �M*4-<*2,02-8)*;,9*(0<*7,:-90*L-9/;/2()/,0*7-)',:,3,+<*/.*)'-*3(<-9-:*)-.)1-02'KM3)',=+'*)'/.*89,2-..*7(<*.--7*),*7(4-*)'-*)-.)1-02'*7,9-*2,783-UC*/)*(2)=(33<'-38.*),*7(4-*<,=9*)(.4*-(./-9*1<*:/L/:/0+*)'-*2,:-*/0),*.7(33-9*8/-2-.*)'()*2(0*1-:-L-3,8-:*.-8(9()-3<K*F,0)*)9<*),*D9/)-*(*./0+3-*9,=)/0-*)'()*2(0*9(0:,73<*+-0-9()-(33*)<8-.*,;*.)/7=3=.C*1,)'*3-+(3*(0:*/33-+(3C*83=.*/0_-2)*-99,9.*D/)'*(*7=3)/3(<-9*89,),R2,3K*H'-*9,=)/0-*Q=/243<*1-2,7-.*2,783-U*(0:*=07(/0)(/0(13-Kabcdaefghabijeklemanabcieopcb qpcopcbabcdaefghabijeklemanabcieopcb qpcopcbabcdaefg rstruvw habijeklemanabcvxw lutabcdaefg rstruvw habijeklemanabcvxw lut �������������� �������������������������������� !"�#!$%&'()*+,-.+/0123+4)51*)6+7)104-8+5*6+23513)6+91030*8+3)232:+3(),+;1-<5<4,+4--=)6+40=)+3()4-9>4)?)4+@-6)+0*+A5B;4)+�C�:+9(0@(+6-)2+5+20B;40/0)6+DEF+GDHFD+E)10;()154+F.2I'103)C+G7JKL+.2)12+B5,+(5?)+91033)*+20B0451+@-6)CIM�NO�!�����PQRSR$T��&!��UV�OR$"WXYZ[\]\_ abYYcd]aecf\d]ag\[d]aehiid]ajkil[\d]m_d]n[opqrr]aXc]Y\n[icifXk_]XWf \Ysss]]fkffi[]l\tfk]]]]rr]hcfu\]c\_\]]]]m_]vw]xq]]]]yzxx]m_]vw]zq]]]]rr]hcfu\]{\]nXkcX[]lZ_]]]]|}X_\Yt\]n[op]]]]abYYc]]vw]z~�{�xq]]]]aehii]vw]���{�xq]]]]aecf\]vw]z�lzq]]]]ag\[]]]vw]z�lzq]]]]rr]�Xtt[\]ajkil[\]]]]|}X_\Yt\]n[op]]]]]]ajkil[\]vw]z�lzq]]]]|}X_\Yt\]n[op]]]]]]ajkil[\]vw]z�lxq]]]]rr]�{\no]{\]c\_Z[]]]]f�] X}sW\WsW\WXc��z~�{�x�]ww]���{�xp]]]]]]�Yf_}[i��gZnn\__�pq]]]]\[_\]]]]]]�Yf_}[i��jccXcd]�cXkt]ui[Z\]fk]W\WXc��pq]]]]��fkf_{q]]\kY\kYWXYZ[\D/3)1+5+/)9+65,2+-/+91030*8+@-6)+40=)+3(02:+,-.+;1-<5<4,+1)540�)6+3(53+03+02+?)1,+1);)30>30?):+5*6+2-+,-.+@1)53)6+352=2+/-1+@-BB-*+-;)1530-*2+2.@(+52+5+<.2+9103):+52+2(-9*+0*A5B;4)�C�C

Page 9: SystemVerilog for Verification

�������������� ������������������������ !"���#���$%��!&�'()*+,-.'/0-/1+234567+(88-9+-/1+2:3567+8('(;<++==+>-.?/+@AB'-AC+DE)++F0GA)/81/+HC*;++IJ88-++KL+(88-<++IM>('(+KL+8('(<++IM-.'/+KL+3ND3<++IO/C+++KL+3ND3<++==+PA11C/+I/B(DC/++F0GA)/81/+HC*;++++IQB(DC/+KL+3ND3<++F0GA)/81/+HC*;++++IQB(DC/+KL+3ND6</B8'()*RSTUVSWXUYZ[Y\Z]_U\Z aZU[bacdZXeU[U[_ST]Ub]UfacdZU�gh���������i�j�kl��"���m� !��n�����oA8EC/+'/)'0IJ88-9IM-.'/9IO/C9IM>('(9IQB(DC/9p)'9HC*;<++==+IA-'+8/HC(-('.AB)+Ao.''/8qqq++==+P()*)+()+)rA,B+.B+O(oGC/+3qs++.B.'.(C+D/1.B++++-/)/'0;<+++++++++++++++++==+p/)/'+'r/+8/?.H/++++,-.'/03tur469+:sur46;<+++==+M-.'/+8('(+.B'A+o/oA-v++++==+@r/H*+'r/+-/)EC'++++.w+0'AGqo/oqo/oA-v23tur467+LL+:sur46;++++++x8.)GC(v0yOEHH/))y;<++++/C)/++++++x8.)GC(v0yQ--A-9+,-AB1+?(CE/+.B+o/oA-vy;<++++xw.B.)r<++/B8/B8oA8EC/zVUY{b]|UY_ZUSaaS]UYbS][U}[W_U[UXZ[ZYeU\W[UXZ~[eU]~UTXbYZ[�U]~UcWYYb]|UY_Zab]UUXSWYb]ZeUVSWU\Z aZUaSXZUZ��bbZ]YU]~Ua~ZU�ZTZXUab[Y{Z[gU�_b[UXZYbS]US�UY_Zc_V[bdU]~USaa]~UdVZX[Ub[UY_ZU�bX[YU[YZcUYSUUdVZXZ~UYZ[Y\Z]_gU��������#���!n&����&�������&��j��� ��b|WXZU���U[_ST[UY_ZUdSTZXUdVZX[US�UUYZ[Y\Z]_g �������������� ��������������������������� �!��"#$�#"%�&'((#"%�$#)��*+,-,./-01,,12-34-,./-435678-879/:-,.7,-;16,7364-,./-<=>-76?-,./-4356784-,.7,-;166/;,-3,,1-,./-,/4,0/6;.@>./-6/A,-.35./:-8/B/8-34-,./-;12276?-879/:@->./-<=>C4-36DE,4-7:/-?:3B/6-09-,./?:3B/:-,.7,-:E64-43658/-;12276?4F-4E;.-74-0E4-:/7?-1:-G:3,/@->./-<=>C4-1E,DE,-?:3B/4,./-2163,1:-,.7,-,7H/4-435678-,:7643,3164-76?-5:1ED4-,./2-,15/,./:-36,1-;12276?4@+44/:,3164-7841-;:144-,./-;12276?I435678-879/:F-74-,./9-811H-7,-36?3B3?E78-4356784-0E,811H-J1:-;.765/4-7;:144-76-/6,3:/-;12276?@�K�LKM��NO����"&P�'"#$�Q#)��R35E:/-�S�T-4.1G4-,./-,/4,0/6;.-G3,.-,./-JE6;,31678-879/:-7??/?F-G.3;.-J//?4-?1G636,1-,./-;12276?-879/:@->./-75/6,-081;H-U;788/?-,./-,:7647;,1:-36-,./-VWWX-:/;/3B/4.35./:S8/B/8-,:7647;,3164-4E;.-74-<W+-:/7?-1:-G:3,/-76?-0:/7H4-,./2-36,1-36?3B3?E78;12276?4@->./4/-;12276?4-7:/-7841-4/6,-,1-,./-4;1:/017:?-,.7,-D:/?3;,4-,./-:/4E8,41J-,./-,:7647;,316@->./-;./;H/:-;12D7:/4-,./-;12276?4-J:12-,./-2163,1:-G3,.-,.14/36-,./-4;1:/017:?@-����������L�N�*PY�"&O�Z�PO�[�"&P�'"#$�$#)���#%%�%\]_ abcdef\bdgab hefdcebiejjkflmdnfko \]_ abcdef\bdgab hefdcebiejjkflmdnfko \]_ abcdef\bdgab hefdcebmpebaqekbl irapsab_nafctufpcdefkomdnfkoiejjkfl \]_ abcdef\bdgab hefdcebmpebaqekbl irapsab_nafctufpcdefkomdnfkoiejjkfl

Page 10: SystemVerilog for Verification

�������������� ������������������������ ��!"#$%&'()*+',-$-,.#/$*0$1/*2#'$3.$)"#$4#'#/,)+/$*'$)"#$0(#',/*+$-,.#/5$,0$0"+6'$*'$7*48&/#$�8��9$:",)$*0$,$0(#',/*+;$<#=#=3#/$)",)$.+&/$>+3$,0$,$2#/*%*(,)*+'$#'4*'##/$*0$)+=,?#$0&/#$)",)$)"*0$1#2*(#$,((+=@-*0"#0$*)0$*')#'1#1$),0?9$A'$#B,=@-#$1#2*(#$*0$,'CDE$@-,.#/$)",)$(,'$(+'(&//#')-.$@-,.$=&0*($%/+=$*)0$0)+/,4#5$1+6'-+,1$'#6$=&0*(%/+=$,$"+0)5$,'1$/#0@+'1$)+$*'@&)$%/+=$)"#$&0#/5$0&("$,0$,1>&0)*'4$)"#$2+-&=#$,'1)/,(?$(+')/+-09$F,("$+%$)"#0#$+@#/,)*+'0$*0$,$0(#',/*+9$G+6'-+,1*'4$,$=&0*($%*-#$),?#00#2#/,-$0)#@05$0&("$,0$(+')/+-$/#4*0)#/$/#,10$,'1$6/*)#0$)+$0#)$&@$)"#$+@#/,)*+'5$=&-)*@-#GCA$6/*)#0$)+$)/,'0%#/$)"#$0+'45$,'1$)"#'$,'+)"#/$4/+&@$+%$/#,10$,'1$6/*)#09$!"#$0(#8',/*+$-,.#/$+%$.+&/$)#0)3#'("$+/("#0)/,)#0$,--$)"#0#$0)#@0$6*)"$(+'0)/,*'#18/,'1+=2,-&#0$%+/$@,/,=#)#/0$0&("$,0$)/,(?$0*H#$,'1$=#=+/.$-+(,)*+'9I�JK����L�����MNO�����P�N��M��������Q� ����RR�R!"#$3-+(?0$*'$)"#$)#0)3#'("$#'2*/+'=#')$S*'0*1#$)"#$1,0"#1$-*'#$+%$7*4&/#$�8��T$,/#6/*))#'$,)$)"#$3#4*''*'4$+%$1#2#-+@=#')9$G&/*'4$)"#$@/+>#()$)"#.$=,.$#2+-2#$,'1$.+&=,.$,11$%&'()*+',-*).5$3&)$)"#0#$3-+(?0$0"+&-1$'+)$(",'4#$%+/$*'1*2*1&,-$)#0)09$!"*0$*01+'#$3.$-#,2*'4$U"++?0V$*'$)"#$(+1#$0+$)",)$,$)#0)$(,'$(",'4#$)"#$3#",2*+/$+%$)"#0#3-+(?0$6*)"+&)$",2*'4$)+$/#6/*)#$)"#=9$W+&$(/#,)#$)"#0#$"++?0$6*)"$%,()+/.$@,))#/'0SX#()*+'$Y9ZT$,'1$(,--3,(?0$SX#()*+'$Y9[T9�����\�������MN��� �����R�IK��N����Q�]����J�W+&$,/#$'+6$,)$)"#$)+@$+%$)"#$)#0)3#'("5$*'$)"#$)#0)$-,.#/5$,0$0"+6'$*'$7*4&/#$�8�Z9G#0*4'$3&40$)",)$+((&/$3#)6##'$G_!$3-+(?0$,/#$",/1#/$)+$%*'1$,0$)"#.$*'2+-2#$=&-)*8@-#$@#+@-#$/#,1*'4$,'1$*')#/@/#)*'4$=&-)*@-#$0@#(*%*(,)*+'09abcddefghijdfhkef lijhgifmnifeoipfq rsentefuejefpgif vwxyz{w|}w~c�ejgmnejpfhimh�jp�ri��pjq��jnghijp� abcddefghijdfhkef lijhgifmnifeoipfq rsentefuejefpgif vwxyz{w|}w~c�ejgmnejpfhimh�jp�ri��pjq��jnghijp� �������������� ��������������������������� !"! ��!��������!�#�$%&#��'(��!�%�!��$���� )*�)$*�+&��#) ��$��'&+!$�,�-&��$��!)%�.&�%!����!�!//�'����/����!'�0���!��!���#�$�)�$����!�#�$��')�$������#'!)�!���!���+& &�01&$#���$) �#�"!').!�+!)�&'!����!��'�.'!����/�) ��!�����$�/& /� �$.���!�"!'�/�#)���$� )$�'!2&�'!+!$��0���!�/&$#���$) �#�"!').!�#�%!�#�)$.!����'�&.����!��'�3!#��)����!")'��&��#'��!'�)�#�+� !�!0������#�%!����#�$��)$� *�-!�$.�+�%�/�!%,�)$%���&��������$���)'���/���!�!$"�'�$+!$�04�&�#)$�#'!)�!�)�5%�'!#�!%��!��6��$�)�#�$��')�$!%�')$%�+�!$"�'�$+!$�0�7�+� *��$�!'�)��!#���$��/�%�'!#�!%��!���#�%!��$�����!�+�%% !��/�)�')$%�+��!2&!$#!,��'��&����!��8���!#!���/�#�%!��$��)') ! 0���!�%�'!#�!%�#�%!��!'/�'+����!�8�'9�*�&�8)$�,�-&����!�')$�%�+�5-)#9.'�&$%�$���!6�+)*�#)&�!�)$�-&.����-!#�+!�"���- !,��!'�)����$�)�- �#9���)�*�&�$!"!'�#�$��%!'!%0�:;<=>?@ABAC@:=DD@E?FEG?HIJ@K;EJ@LDD@DLM?>FN��*�&�$!!%�) ���!�!� )*!'���$�*�&'��!��-!$#�O���!�)$�8!'�%!�!$%���$�8�)��*�&'NP�� ��9�� �9!0�Q�#�+� �#)�!%�%!��.$�'!2&�'!��)���������#)�!%��!��-!$#�0�4�&�) 8)*�$!!%���!��!��� )*!'0�1�'�)���+� !�%!��.$,���!��#!$)'��� )*!'�+)*�-!������+� !���)��*�&#)$�+!'.!����8������!�).!$�0�R�!$�!���+)��$.���!�!//�'������!���)�%!��.$,�%�$S��#�&$���!�$&+-!'��/�.)�!�T�#�&$����!�$&+-!'��/�%!��.$!'�0�U"!'*���+!�*�&�)%%�)$���!'��!'���$������!��!)+,�*�&��$#'!)�!���!�#�)$#!��/�%�//!'!$���$�!'�'!�)���$���/���!��!#�/�#)���$�04�&�+)*�$!!%�+�'!� )*!'�0�V/�*�&'�NP���)���!"!') ��'���#� � )*!'�,�!)#�����& %�.!������8$� )*!'��$���!��!��-!$#��!$"�'�$+!$�0�1�'�!W)+� !,��/�*�&��)"!��XY��')//�#���)�Z[\] _abcdZbe_ fcdbac\_a ghc_icjk lm_hn_o_d_jac pqdhabcdjrslce_jt_uvwxyzv{|v}]t_da Z[\] _abcdZbe_ fcdbac\_a ghc_icjk lm_hn_o_d_jac pqdhabcdjrslce_jt_uvwxyzv{|v}]t_da

Page 11: SystemVerilog for Verification

����������������� �������� ����������������� ��������!����"!#����!���$%�!�&�$'�������(���)�!#����������!��*�+����,'�)�����!�'������$#�$%��)-�.�!!���+�!&�(����/��!��)�0���,�$�!�'��$'1�'���!�-2���*��!��'!���3'(!�4�)(����5��-��!��#'����'1��',�!#���'���3*��$'���$!�'���3�!����3*'$%�&�3(!�+'(��!��!3��$#�1�+�#�0������,,����!���!-�6#��!��!�1�+������!'����$#��'��!'�!#�����0���*�+���!'�,'�$���#+��$�*����'��-�7#�!�#���3�������$��3���#�������8(�!�)(���5*�����9�*�!�+'(��������)(�����#�!�+'(�$���!�-:;::<=>?@A?BC<D<EDFGHGA<IGJKLGBMNO'���!����!�1��!'�!�%��!#�����$����)�,�)(��������*�����#'��!'�1���!#��$'1�'���!����!'P+�!�1Q���*')�$'��!�($!�-:;::;:<RHGDK?BC<D<S?TU@G<VH?WGH4���!&�!�%����$*'����*''%��!�'���',�!#��3*'$%�&�!#�����0��-X?C>HG<:Y:Z<R[BBGMK?[BJ<\[H<KNG<AH?WGH6#�����0����#'������4�)(����5�]���$��0���$'11�����,�'1�!#���)��!-�6#�����0���1�+��8�$!����'���'��������*�+�-��!�!#���3���%���'���!#��$'11������!'�����0��(�*���)��*$#��)����($#����3(����(��!������#����#�%��-�6#��)�����*�!��1�,'���($#���!��!3��$#3*'$%������_!�����$!'�&��#�$#&��!��!��$'��&������*''�a�P�1�*��$'���,'��!�����$!'�����#'������P�1�*���-b-SDTU@G<:;c<=DJ?M<KHDBJDMK[H<M[AGdefghijklmnhhopkqhrhsnhhtuvwqhlxopkqmhyqzvkhhhh{{h|qdhduqhkq}dhdiekfe~dvpkhhhh{{h�egqhdiekf�pi�edvpkfhhhh{{h�qkohpjdhdiekfe~dvpkfhhqkoqkodefg ���������������������������� �������������� ��������������������������������� ���!��"#�$$%�� &��'(��'�#������� �'!)�#�������" #*+&��������'+�" ��� &�&����,'������� ��#�'�-�. '������/�0�*��',������ ��#�'��"�������1� �-�2��0"1���!���3��������#'0�*�/���� ��#�"' ��+#�������45.����&�" �'�0+*�"�*��!+��#'00� &�-�.*�'�" ����-��6�7'+�("**������'(��'�!+"*&�� �'!)�#�������#' ��" ������&����� &��'+�" �������0�3��+����#'00� &-�8�����'!)�#��������� ��!��(�� ���� ��#�'���+�" 1�97���0:��"*'10�"*!'/��-�2 �����-�;6�7'+�("**�*��� ��!'+��0� 7�(�7���'��/#�� 1��&����!��(�� ����&",,��� ��*�7����� &��'��7 #��' "<��������� ��#�'��-=>=?@ABCDEFGBHI@JIKBLHICMIG@NOFPMPQ��+ �"*� '(�7'+���R��!�� �*��� " 1�(����������0�3��+������� R"�' 0� �-�S�� �&'�������������/�#+��T�U'+�(� ���'�#*���*7�&�," ��������������'�#''�&" ������������!� #��'�������**�����#'&��,'������')�#��('�3���'1�����-�8�����������"0��7������������V+"*&6W+ 6�� &�S���X+�-�Y�#��"��&"R"&�&�" �'��0�**��������-8���V+"*&�������"��&"R"&�&�" �'�����,'**'(" 1������Z[ ��������� ����\�������Z�W� &'0"<������#' ,"1+���"' �',�����4Q8�� &�����+��'+ &" 1�� R"�' 0� �-[ ]�����������_���Z�.**'#����� &�#' �#����������!� #��#'0�' � ���!���&�' ����#' ,"1+���"' -�.�����!� #��#'0�' � ��"��' �������' *7��/"����" ���������X!� #�6����'��'��&��'���7�"#�*�#'0�' � ���" �����&��"1 ����������!+"*��("��W8�#'&�-�a'���/�0�*�6�",�����#' ,"1+���"' �#�'���������!+��&�"R���6���������X!� #��('+*&��**'#����� &�" "�"�*"<�����0�" ���"������-[ b���������cde-[ �����\��������cdeZ�V���&�' �����1� �����&�#' ,"1+���"' �,�'0�����,"��������6*'�&�����4Q8�#'00� &���1"�����-8���W+ �������"��(���������������#�+�**7��+ �-�2����������,'**'(" 1������Z[ f�����������_���Z�W+ ���������!� #��#'0�' � ����+#�����Va5��� &���"0+X*+��1� ����'��-[ b�����������Z�9��������������� &���� �(�"��,'��"���'�#'0�*���-�2��"�����7��'���**(�� ���&"��#��&����������#'0�*���&6�!+��&'" 1��'�#� �!��#'0�*�/�,'������ X&'0�����-�U'+�#� �+�����������!� #��*�7���������1+"&�-�9����" 1�,�'0������'�6(�"��,'����*�7����'�&��" ��**�����" �+���,�'0��������R"'+��*�7���g",�� 7h6�(�"�,'������#+��� ��*�7����'�!�#'0��"&*�6�� &���� �(�"��,'������ �/��*'(���*�7��-U'+���'+*&��*�'�+����"0�X'+��#��#3�����'�� �+������������4Q8�'������!� #�&'��� '��*'#3�+�-�

Page 12: SystemVerilog for Verification

�������������� ���������������������������������� � !��"#��������$������$�%���&�'�$����(�%���)��*������+��#�������#+)�$����)���&�+�)�����*��+)������#�����,-�.� �!�/0��1)&������,-��+��+*$�(���������������2�)&��#���$����*���.�3�'��+'�������&���2���*���$*�����)��&�+�)�������)�4���&�'�����(���������2�&��������%�����*�����*�2%�����,-�.�"�'�*��+�����+��+)#��'��+�)(�%���&�)�&���������#+)�$���������)�����������������������*����#�+$�*.�5#�+��#�+$�*(�2����������*�$����)%�#�)&�+�)�$�&�4���6������$��(�������%�'�%�)���2��&����&�.�"������)�+)�7+6����8�8 (����������������������)4+��)'�)�(���+&�(�+)����)(���)����&���#���������.�9����*���+$��&�)�2��#��)*�+)�:���.�;.<=<>?@ABCDED?FGHI?JIEKI���4��+#%���&�'�$�L�*�4+&���+�����)*��*���#�#�������(�%�����4�������+�����)*��*���#*+��&��*������.�5#�%�������&�)����+)�*���)*�'���+'�$��(�%����+$$���+���#���#����������.5)����*(��������$����M�+������+)���&�)����&�+)6���������2�)&�(���+&��&�)��+)���$$����$���������2�)&��$�%������&�)��+�(�#�)&�+�)�$(�&�''�)*(��)*��+6)�$.���+������2�)&�&�*��+�����*�2%��$$����������(��)*����+����'�+)��6�)��+&.������6�+*�$+)���������������&�''�)*��)��4��$%�&�'�$+&���*�����2�)&�(�2�����'�'�2���������4��%�$+)�������%�������+)���������2�)&��&�)��$+'+)������$+)��+)��4��%��+)6$�����.�5#�%���M)���%����+$$�2��&����+)6���#���*�N�)������(�������+�����+6����%2�&M�+)'�M+)6���'��������+��+&���*�����2�)&�.�O������+��+)�'+)*����)�%������*�:���.�;.<=<P?QIKRSITUV?WIXYGXDATUI5#���+��+������#+�����+'��%�����4�����)���+��'����*�$�6%(�%������2�2$%���4����'�Z��$'���2��������+�����M��&�'����*����*+��&��*�����+)6.�"�&�''�)��2[�&�+�)�+�������2�)&�����#��'�)&�.�"�*+��&��*�������#��)��+'�$�����+)�$�������)�����&�)*(��������&�)����+)�*���)*�'��������+$$���)*�������)*������6���������������&��#���'+)��������4�)������.��������2$�'��+�����+����6�'�)��+�������+��+6)����������$�4��+#+&��+�)�2����$�)�&M�������+'����Z�+��*�2%�%������&������������.�\���'�%�2���2$�������)*�&��#���*+��&��*������+)���*�%(��)*�*�2�6�+���)*�'�)��$$%�4��+#%���������$���2%���)*�+)��)�����*�%�������.������&���$��+'�$��+�)���)��+'��+��*���#�*�2%������'��)���#��+'�������%�������)�$$%�+)4����*.������������4���$����������&����+)6���&�)����+)�*���)*�'�����.�����#+�����)*�'�����+6�)+#+&�)�������+��2�+$*+)6�����$�%���*�����2�)&�(�+)&$�*+)6�������$#�&��&M+)6�����+�).����2�)�#+���#���+�����M�+�������*�2%��$$������(��)*����+��+����$$������������##���.������&�)*������+��&����+)6�������+'�$������&+#+&������6��$�+)�����4��+#+&��+�)��$�).�\�� �������������� ����������������������������� !"#���"$%���%"& ��!" &'�%��$�(!%)&�*��&�%��!"+�� !"#����%�&�%��,�% %�%-(!%-� !%"&.�/)!-$!"#�%"��%�� 0�&������ �1���%��� !��� 0�"���1!"#�&�(���-�$!��� �$ �& &'��) � 0��,��%���*!--�����)�0�0!#0��.�2��%"& ��!"�$3��"$%�� �& � 0� � �!�&� 0%)3&�"$&�%��$!�����" �,�% %�%-�(��!� !%"&�!&�*%� 0��%��� 0�"� 0��0�"$�)-�%��$!��� �$� �& & 0� ��%)-$�0�(�����"����� �$�!"� 0��&������%)" �%�� !��.40�� 0!�$�& �,�!"��%"& ��!"�$3��"$%�� �& !"#�!&��)"� !%"�-��%(���#�.�40!&� �&1�& �� &*! 0� 0������ !%"�%����& �%"#�(��!�!�� !%"�,-�"�*! 0��-����#%�-&� 0� ���"������&!-����&)��$.�5�6 ��%)�"��$� %����� �� 0��7�& ��8��!-%#��%$�� 0� ��$$&�!"& �)��" �3 !%"� %� 0���"(!�%"��" ��"$�#� 0��&� 0��$� �.�9!"�--�'�! �!&��&&�" !�-� 0� ��%)�"��$� %�"�-�:�� 0����&)- &� %�$� ���!"��!���%)�0�(���� � 0��#%�-&'��"$�!��"% '�0%*��%)&0%)-$��%$!��� 0�� �& &.;<;=>?@ABCDEF@A40���%" !")%)&�#�%* 0�!"��%�,-�6! ��%���-�� �%"!��$�&!#"&���G)!��&����%$��"'�&�&3 ��� !�'��"$��) %�� �$��,,�%��0� %����� !"#� �& ��"�0�&.�40���%& �%���!6!"#����)##�%*&���� �"�%-$��&���,�%+�� ��%(�&���%�����0�& �,�%��&,��!�!�� !%"� %�H4I��%$!"#'#� ��&�" 0�&!&'�����!�� !%"'��"$��!"�--��!" %� 0��)&��J&�0�"$&.�K!��� �$� �& &�%"-�� �& %"����� )���� ��� !����"$���""% ����� �� 0���%�,-�6�& !�)-)&��"$��%"�!#)�� !%"&� 0� 0��$�(!���*%)-$����&)�+�� �$� %�!"� 0�����-�*%�-$.�4%�,�%$)����%�)& �$�&!#"&'��%)�)& �)&���%"& ��!"�$3��"$%��& !�)-)&��%��!"�$�*! 0��)"� !%"�-��%(���#�� %����� � 0��*!$�& �,%&&!�-����"#��%��& !�)-)&.

Page 13: SystemVerilog for Verification

����������� ������������������������������������������������ ������ ��������!�����������"��������������!���� ���������������������#���������������������������#�� ���"�$������� ������%����!�����������#����������������� ���������������������������� �����"��������������������� �����!������������!�������������!����#�������"& '!�(�����)�#��������������� �%����� ���������������& *�����%������� ��������� �������������)����� ���������������%�#����(������������������ ����������������& ���������������� �����)��������������#���� ����������� �����& +������������ ,������� �����)�����!�������������!������������������& �������)�#����(�����������������& -���������������)� �����������������!�������������������./0�1234�567��� �����������(899:������!��#��� �����������)������#������������%�#����!�� �������;(�����������)�<%�8%�=%�����>"�?'@� ��������������#������������� ��#����������������A�������������"������#���� ���#��������������������������(#���BCDEFGHIJKFLM%��������N�(#�������#����BOPQDEDCM%����������R;(#��������#����BQOLDM%�����������������������#���BCDSTM"������#���� ���#���������������������������������������������U�����V�"�W�������(������������ %�����������������������#���������������������������������������������������� ��������������� ,������������������������� ���������"�W���������������� ���� ������� ����������������� ������������������������������ ���!������� ���"�����������#�$������ ����� ��%��"�!���&'��� ���������������������"�������!������(��������������������������������������������'"��)�#*%��� +���"�������� ��%���(�������%���������"��'��������(������������������!�����,����������������#-././0123045678019:3;����������������+���"���������"(�%��"��!�����(�����������������������������������������������'��(������<=>�������?@<=#�A�������!����������&�(���������"��%������BC�(��'����(����%������������������'"��)�B�*%��� +���"���� ���!��������"������<=>������%������������������'�����!���'%������������������ ����&������&����� ���"��&���������������'�������!����'"�#�D�������!��������%���% �EF>@G���������������������"��)"�)����������������"�������#�H�EF>@G������"�����'���������%(������������������&��I�����������EF>@G�!����'"���������'�����!���'%� �"���"�����������"����!���&���������(���%������� ���"������'�����������"�'��#�D�����������&�����!����'"�����������'�������,�%����������?@<=���������*%��� +���"�����������"!������ �"���"��!�"������������ �����������"�!�"��#*� �"���#J����(������*%��� +���"���EF>@G��%��#KLM:N30-./0OP7Q60R230N56780R9:3STUVWXYWTZ[\]U _]_aXb[caV_YWTZ[\Yde_]fghYYa dSX_XdYijiklYmYnohYYWTZ[\YpqYp]WqYUqY\WrqYde_]WhYY[c[_[WYsXZ[cYYYY\WrYmYohYYYYYYYYYYYYYYYYYYYttYudT\XUVdWYee[ZcSXc_YYYYvTdXwXdYxbijikltngY\WrYmYy\WrhYYXcUYYee[ZcYde_]WYmYyde_]fhYYYYYYYttYiTc_[cVTVeYee[ZcSXc_YYcT_Yczbp]WqYpghYYYYYYYYYYYYYYttYp]WY[eYUd[wXcYsYZ_XYYS]UvvYUzbpqYUqY\WrqYde_]WghYttYpY[eYUd[wXcYsYSTUVWXXcUSTUVWX {���������������EF>@G��%��������������"����'�������������%���������"%��!��������"�����!��#�|�������������%��������������'��(����<=>����?@<=&����"�����""�%���������"�����EF>@G&�����%��}""��������� ��"��������������������� �"���"�����!���#�~��������&���%������"������%������(��������!�� �"���"�����!���&�����������'�����������"�'��&�����"��'����"�����(�����������%�����������?@<=#

Page 14: SystemVerilog for Verification

������������� �� �������������������������� !"#$%&$'()*+,(-#'*./0$","$1$'2),�3"#2#$,.2#2,#!4$",#*,(%4'*1$,"(%/)2#*',4$'5*'3%2-0$,2-.,'$./0$,%$%*'!,/"2+$6,0*%42'$.,7(#8,12'(29)$",.$0)2'$.,2",:3"#2#$,#!4$";<8$,"(%4)$"#,#!4$,(",#8$,=>?6,78(08,(",2)72!",/-"(+-$.;,<8$'$,2'$,5*/',"(+-$.,�3"#2#$#!4$"@,=A?B6CDEF?>G?6>G?6,2-.,HEGI>G?,2","8*7-,(-, 2%4)$,�;�;��J�K�������LMN�O�O���������PQRSPTSSSSSSSSSSSUUSVWXRYRZ[SXQ\]ZWPQRPQRS_abcdSPVTSSUUSVWXRYRZ[SVWPQRSe\XQ]\ZfSQ\RZ]ZgQ\RSe\XQ]\ZfSeQTSUUSVWXRYRZ[SVWPQRSe\XQ]\ZfSQ\RZ]ZgQ\RSQTSSSSSSSSSSSUUSVWXRYRZ[SVWPQRSXQ]\ZfSQ\RZ]ZgPhRZSPiTSSSSSSSSSUUSVWXRYRZ[SiWPQRSXQ]\ZfSQ\RZ]ZgXjkgRQ\RSXTSSSSSSUUSVWXRYRZ[SalWPQRSXQ]\ZfSQ\RZ]Zgk\]Q\RSTSSSSSSSUUSVWXRYRZ[SlmWPQRSXQ]\ZfSQ\RZ]ZgQ\RZ]ZgSQmTSSSSSSUUSmWXRYRZ[SVWPQRSXQ]\ZfSQ\RZ]ZgRQnZSRTSSSSSSSSSSUUSmWXRYRZ[SlmWPQRSe\XQ]\ZfSQ\RZ]ZggZYSgTSSSSSSSSSSUUSVWXRYRZ[SfkePZSogZpQXQk\SqkYRQ\]SoRr*/,%(+8#,9$,#$%4#$.,#*,/"$,#!4$","/08,2",=A?B,#*,'$4)20$,%*'$1$'9*"$,.$0)2'2#(*-","/08,2",HEI>stuvwxy;,z2'.72'$,.$"(+-$'""8*/).,9$,02'$5/),2",#8$"$,-$7,#!4$",2'$,"(+-$.,12'(29)$"6,2-.,"*,2=A?B,12'(29)$,02-,*-)!,0*/-#,/4,#*,{��6,-*#,#8$,�||,!*/,%2!$}4$0#;,~�#,82",#8$,'2-+$,�{��,#*,�{��;�,r*/,0*/).,/"$,=A?B�GC>IGB�6,9/#,#82#,(",%*'$,1$'9*"$,#82-,�/"#,=>?uvwxy;, (+-$.,12'(29)$",02-,2)"*02/"$,/-$}4$0#$.,'$"/)#",7(#8,'2-.*%(�2#(*-6,2",.("0/""$.,(-,�824;,�;�$,02'$5/),0*--$0#(-+,�3"#2#$,12'(29)$",#*,#8$,.$"(+-,/-.$',#$"#6,$"4$30(2))!,(#",*/#4/#";,�5,#8$,82'.72'$,#'($",#*,.'(1$,2-,�,*',�6,#8$"$,12)/$"2'$,0*-1$'#$.,#*,2,�3"#2#$,12)/$6,2-.,!*/',#$"#9$-08,0*.$,%2!,-$1$'�-*7;,�*-�#,#'!,#*,'$%$%9$',(5,#8$!,2'$,0*-1$'#$.,#*,�,*',{�,(-"#$2.62)72!",08$0�,5*',4'*42+2#(*-,*5,/-�-*7-,12)/$";,�"$,#8$,�>C�G�GE�G��,*4$'2#*',#82#,'$#/'-",{,(5,2-!,9(#,*5,#8$,$}4'$""(*-,(",�,*',�62","8*7-,(-, 2%4)$,�;�;��J�K�����������LNM��� �¡�������¢�K£��QqS¤¥QXe\¦\k§\¤QokgRS©©SaSS¥fQXoYh¤ª«¬cRbSmWXRYRZS­YeZSfZRZpRZfSk\SQokgRS¬Pª[SSSSSSSSSSS¥RQnZ[SQokgRT<8$,5*'%2#,®x?,2-.,#8$,2'+/%$-#,�?>B,4'(-#,#8$,0/''$-#,"(%/)2#(*-,#(%$6,5*'%2##$.2","4$0(5($.,7(#8,#8$,�?>B°EF±?~�,'*/#(-$;,<(%$,12)/$",2'$,$}4)*'$.,(-,%*'$.$#2(),(-, $0#(*-,�;�; ����������������� ����������������������� !"#$%&$'()*+,*--$'","$.$'/),-)/.*'",*-,/''/!",0$!*12,#3$,"(1+)$42(%$1"(*15,-(6$24"(7$,&$'()*+4899:,/''/!";,</1!,$13/1=$%$1#",3/.$,0$$1,%/2$,#*,#3$"$,=)/""(=/''/!";����>�?�@A���BC��B��DB�E��A���BC������������������&$'()*+,'$FG('$",#3/#,#3$,)*H,/12,3(+3,/''/!,)(%(#",%G"#,0$,+(.$1,(1,#3$,2$=)/'/#(*1; (1=$,/)%*"#,/)),/''/!",G"$,/,)*H,(12$6,*-,I5, !"#$%&$'()*+,)$#",!*G,G"$,#3$,"3*'#=G#*-,JG"#,+(.(1+,#3$,/''/!,"(7$5,H3(=3,(","(%()/',#*,KL","#!)$;��MNA����O�?�@A���BC�P�����������������QRSTUVWXQYZ[\]_TTTTTTTT T\aTQRSbTYZccY\]QRSTdWbSeUfY\a_TTTTTTTT T\aTQRSbTYZccY\]g*G,=/1,='$/#$,%G)#(2(%$1"(*1/),-(6$24"(7$,/''/!",0!,"h$=(-!(1+,#3$,2(%$1"(*1",/-#$'#3$,./'(/0)$,1/%$;, /%h)$,�;:,='$/#$","$.$'/),#H*42(%$1"(*1/),/''/!",*-,(1#$+$'"5,�$1#'($",0!,i5,/12,"$#",#3$,)/"#,$1#'!,#*,8;,<G)#(2(%$1"(*1/),/''/!",H$'$,(1#'*2G=$2,(1&$'()*+4�II85,0G#,#3$,=*%h/=#,2$=)/'/#(*1,"#!)$,(",1$H;��MNA����j�?�@A���BC��B��k��BC�MkAE���M�B��lB�A�������QRSTmnnmeoTYZ[pYZ[q_TT TrfnsVbfTtfdUmnmSQVRQRSTmnnmeqTYuYv_TTTTTT TwVxymdSTtfdUmnmSQVRmnnmeoYpYqTzT\_TTTTTTT T{fSTUmbSTmnnmeTfUfxfRS|-,!*G',=*2$,/==(2$1#)!,#'($",#*,'$/2,-'*%,/1,*G#4*-40*G12",/22'$""5, !"#$%&$'()*+H()),'$#G'1,#3$,2$-/G)#,./)G$,-*',#3$,/''/!,$)$%$1#,#!h$;,}3/#,JG"#,%$/1",#3/#,/1,/''/!*-,i4"#/#$,#!h$"5,"G=3,/",~����5,H()),'$#G'1,�L"5,H3$'$/",/1,/''/!,*-,�4"#/#$,#!h$"5"G=3,/",���,*',���5,H()),'$#G'1,I;,}3(",/hh)($",-*',/)),/''/!,#!h$",�,-(6$25,2!1/%(=5/""*=(/#(.$5,*',FG$G$5,/12,/)"*,(-,!*G',/22'$"",3/",/1,�,*',�;,�1,G12'(.$1,1$#,(",�;</1!, !"#$%&$'()*+,"(%G)/#*'","#*'$,$/=3,$)$%$1#,*1,/,��40(#,H*'2,0*G12/'!;, *,/����5��������5,/12,���,/'$,/)),"#*'$2,(1,/,"(1+)$,H*'25,H3$'$/",/,~������,(""#*'$2,(1,#H*,H*'2";�1,G1h/=�$2,/''/!5,"G=3,/",#3$,*1$,"3*H1,(1, /%h)$,�;�5,"#*'$",#3$,./)G$",(1,#3$)*H$',h*'#(*1,*-,#3$,H*'25,H3$'$/",#3$,Ghh$',0(#",/'$,G1G"$2;,}3$,/''/!,*-,0!#$"5���������,(","#*'$2,(1,#3'$$,H*'2"5,/","3*H1,(1,�(+G'$,�48;

Page 15: SystemVerilog for Verification

������������� �������������������������� ��������!"#�$%&'()*+,-(%./01234)5-6(((77(8012349:;"<=����>?�������������� �$!#��<�@ABCDEFAGGAHIFAGDFDJKLAMNDEFMNFODBPMQNF�R�RSROMTULAPQGIFVDNDGALLHFIPQGDFWXIPAPDFPHKDIFIUBYFAIFZ[\]FANEF]_a\abFMNFPcQFQGFTQGDBQNIDBUPMdDFcQGEIeFUIMNVFPcMBDFPYDFIPQGAVDFAIF�XIPAPDFdAGMAfLDIR������gh��i��� �j"!����OATKLDF�RkFIYQcIFYQcFPQFMNMPMALMlDFANFAGGAHFUIMNVFANFAGGAHFLMPDGALeFcYMBYFMIFANFAKQIPGQXKYDFmQLLQcDEFfHFPYDFdALUDIFMNFBUGLHFfGABDIRFnoYMIFMIFNQPFPYDFABBDNPFVGAdDFUIDEFmQGBQTKMLDGFEMGDBPMdDIFANEFTABGQIRpFqQUFBANFIDPFIQTDFQGFALLFDLDTDNPIFAPFQNBDRFqQUFAGDAfLDFPQFGDKLMBAPDFdALUDIFfHFKUPPMNVFAFBQUNPFfDmQGDFPYDFBUGLHFfGABDIRFrAIPLHeFHQUFTMVYPIKDBMmHFAFEDmAULPFdALUDFmQGFANHFDLDTDNPFPYAPFEQDIFNQPFYAdDFANFDJKLMBMPFdALUDR���������s�t�"!"��"u"�<�������� &0'(2v390:)w-(x(yz,{|{}{5~6(77(�0&'&2�&�9(w(9�9�90'v&0'(:9v390:)�-6:9v390:(x(yzw{5{}{|{,~6((((((((77(�9'(�(9�9�90'v:9v390:),+}-(x(yz�{�{*~6(((((((77(�9'(�&�v'(5(9�9�90'v2v390:(x(yzwz�~~6((((((((((((((77(��/�(�2�/9v(��(�:9v390:(x(yz�{(�{(:9�2/�'+�|~6(77(z�{(�{(�|{(�|{(�|~��������$"��i��� ������!"#�$����[b������[ba��oYDFTQIPFBQTTQNFcAHFPQFTANMKULAPDFANFAGGAHFMIFcMPYFAF�[bXFQGF�[ba��XLQQKRF�NOATKLDF�R�eFPYDFdAGMAfLDF]FMIFEDBLAGDEFLQBALFPQFPYDF�[b�LQQKRFoYDFOHIPDT�DGMLQVmUNBPMQNF��]�aFGDPUGNIFPYDFIMlDFQmFPYDFAGGAHRF�NFPYDF�[ba��XLQQKeFHQUFIKDBMmHFPYDAGGAHFNATDFANEFANFMNEDJFMNFI�UAGDFfGABCDPIeFANEFOHIPDT�DGMLQVFAUPQTAPMBALLHFIPDKIPYGQUVYFALLFPYDFDLDTDNPIFQmFPYDFAGGAHRFoYDFMNEDJFdAGMAfLDFMIFAUPQTAPMBALLHFEDBLAGDEFmQGHQUFANEFMIFLQBALFPQFPYDFLQQKR%./01234)|- ��� ¡¢£¤ ��� ¡¢£¤ ��� ¡¢£¤¥¦§©ª«¬­®©%./01234)}-%./01234),-%./01234)|- ��� ¡¢£¤ ��� ¡¢£¤ ��� ¡¢£¤ ��� ¡¢£¤ ��� ¡¢£¤ ��� ¡¢£¤¥¦§©ª«¬­®©%./01234)}-%./01234),- ����������������� ����������������������� ��!�"#�$%&'���(�$%&)*+,-�..��/0/1/*234)5/0334/136789:;3<&+6=;>3?<16=;@33$%&3A/013/B:@3/CD</E)A<&+F@3/GGF3333<&+6/;3B3/@33$%&)*+,3A?<16H;F3333?<16H;3B3<&+6H;3I3J@33KK3?<13?%L42)<3<&+3M*2L)<)0?NOPQRPSTPRUVRWTXYZQR[\]RPSQR_VPTaRObRPSQRcdefghijZOOYRbOkRXlZPUmUXQV_UOVTZRTkkT_XTRVOPRnQRoSTPROlRQaYQpPQmqRrV_PQTmRObRZU_PUVsRQTpSR_ln_pkUYPRUVR_QYTkTPQR_tlTkQnkTpuQP_RvRwxywzyRvRPSQRTkQRpOXnUVQmRoUPSRTRpOXXTRvRwx{zy\���������|�}��"����~����(��"���"#�.��#������"�(������.�������� /013�?6J;67;3B3����:>8>J�>3��7>�>=��@/0/1/*234)5/033D?/<�2*�A��0/1/*23M*2L)9�F@33$%&)*+,3A�?6/>H;F333KK3�)<>31,/<3/<31,)3&/5,13<�01*�3333D?/<�2*�A��?6�:?;6�:?;3B3�:?�>3/>3H>3�?6/;6H;F@33D?/<�2*�A��)�3M*2L)9�F@33KK3�)�2/+*1)32*<1373M*2L)<3%$3=33�?3B3�����>3�>3��>3��7��=���@33$%&)*+,3A�?6/>H;F333KK3�)<>31,/<3/<31,)3&/5,13<�01*�3333D?/<�2*�A��?6�:?;6�:?;3B3�:?�>3/>3H>3�?6/;6H;F@)0?�SQROlPYlPRbkOXRWTXYZQR[\]RU_R_SOoVRUVRWTXYZQR[\��\��������������"��"���.������"�������"�(������.�������� ��������0/1/*23M*2L)9�?6:;6:;3B3:�?6:;68;3B38�?6:;6J;3B3J�?68;6:;3B37�?68;68;3B3��?68;6J;3B3=�)�3M*2L)9�?6:;6:;3B3��?6:;68;3B3��?6:;6J;3B3��?68;6:;3B3=�?68;68;3B3=�?68;6J;3B3=�OlRpTVROXUPR_OXQRmUXQV_UOV_RUVRPSQRcdefghijZOOYRUbROlRmOV�PRVQQmRPOR_PQYPSkOlsSRTZZRObRPSQX\RWTXYZQR[\��RYkUVP_RTRPoOjmUXQV_UOVTZRTkkTRUVRTRkQpPTVsZQ\RrP

Page 16: SystemVerilog for Verification

������������� ����������������������������������������������������� �!����������������������"������������������������������#$%&'()*+,--*./012013*%*&4(2050&)16071%(*%//%89:9;9<=>?@A9:>>?B;@>;CDEFGHFIHJ>>KDL@<MNO;CDEF9PQHR>>>>;CDEF9HFQH>S>9TUVWQJ>>KDL@<MN>O;CDEF9HR>?@A9:>>>>XX>Y;@Z>;NLD[AN>K9L\;>]9_>>>>CL9;@Oabc]daP>9RJ>>>>KDL@<MNO;CDEFPQHR>>>>>>>>XX>Y;@Z>;NLD[AN>\@MD:]>>>>>>CL9;@Oabe]aP>;CDEF9HFQHRJ>>>>]9\Z=<BJ>>@:]@:]f!�����g#��������"������������h����������#$%&'()*+,-+*i42'42*j/7&*'/012013*&4(2050&)16071%(*%//%8*k%(4)6>Vd>>V>>U>>c>>e>>G>>l>Ud>UV>UU>Uc>Ue>UG>Ul>cd>cV>cU>cc>ce>cG>cl>ed>eV>eU>ec>ee>eG>elm!���n �!�opqrstuv���������!���������������!������������������!����"�!�!����#�w���!��!noxyz�����{��|!��������ox}~�z �!���!�opqrstu�ox�z������{��|!��������opq������}�����������#����������!��!n�qr�x�~�z �������!�������opqrstu�qr�x�z�����{��|!��������opq��������������������#+,+,�*�%60�*�//%8*i')/%20716*�*�7'8*%15*�7&'%/)����"!����������!�����!���"���!���!���"��n����!��!n��h������������#�����!�����!������!�����h�������������������!��!n�!�������������h���������������!������|���!�����v����#������!�������!��������������������{�!���n�!������{�!���n#�f!�����g#������h���|��!����!���������"���!���#�w����~�"��������!������!�������!�������ov��!������#���f!�����g#�� ���������������"������ ��h�����h���������#�w������!��"���!��������!�!��!n����"� �¡qtx¢~�z£h��"��"��!����!�������!�n�!��!n�h�����������������# ����������������� �������������������������� !��������������"#� $%&%'%()*+,-%&**+%'*./0123*456.73*8*9:2;0;<;/;=>;**************?4'.73*8*9:7;=;/;<;0>@**AA*B--5,-(',*6CDE(5,*'F,*'GC*(55(H4***%I*J45688?4'K****L?%4E)(HJM456*88*?4'MK@**,)4,****L?%4E)(HJM456*N8*?4'MK@**AA*B--5,-(',*6CEH*())*456*O()P,4*'C*?4'**?4'*8*456@**AA*QF(&-,*RP4'*C&,*,),D,&'**456.23*8*7@**AA*B5,*())*O()P,4*,SP()*J&CNK**L?%4E)(HJM456*T4*?4'M;*J456*88*?4'K*U*M88M*1*MN8MK@**AA*V4,*(55(H*4)%6,*'C*6CDE(5,*,),D,&'4*0W=**AA*L?%4E)(HJM456.01=3*T4*?4'*.01=3M;***************456.01=3*88*?4'.01=3K*U*M88M*1*MN8MK@,&?XYZ[\] Y_[abcYbd[]eebae]_a[]bf_gda_f\[Yab]_fYh[hZ\g[]h[]iif_fY[Y[]bb]jhklh_a]im[jYZ[\][Zha[nYYhk[oYb[nYef\]n[Yab]_fYh[hZ\g[]h[pqrm[jYZ[g]sa[_Y[af_gab[Zha][nYY[Yb[Zha[]\tai[]bb]jh[]h[iah\bfuai[f[va\_fY[�k�kwk����x�y#"�� !��������z{$��#�"$|�}�~�"�����"���$"�[\YddY[] Yj]\a[f[�abfnYe�����[fh[_g]_[jYZ[\] Y_[Zha[]bb]j[]i[uf_[hZuh\bf_h_Yea_gabk[�abfnYe�����[badYsah[_gfh[bah_bf\_fY[cYb[cf�ai�hf�a[]bb]jhk[v]d na[�k��bf_h[_ga[cfbh_[]bb]j[anada_[�uf]bj[����m[f_h[nY�ah_[uf_[���m[]i[_ga[a�_[_�Y[gfegabuf_h[�uf]bj[���k�������������$# ~����!�� !�{#"�$z{$��#�"$�"�~�"���%&%'%()*+,-%&**+%'*./0123*456.73*8*9:7:7>>@**L?%4E)(H+J456.23;;**********AA*9+020*C5*9?7************456.23.23;;*******AA*9+0************456.23.<103K@*****AA*9+02,&?�n_gYZeg[_gfh[\g]ea[fh[Y_[a�[_Y[vjh_ad�abfnYem[d]j[Zhabh[d]j[Y_[tY�[]uYZ__gfh[ZhacZn[fd bYsada_[f[�abfnYe�����k

Page 17: SystemVerilog for Verification

������������� ������������������������ !�"# $%&% &'(#!) '�* "%' +%,& -�&. &� %//#!! &.# #,&0�# 1%2*# %,$ %2!� &� $010$# 0&0,&� !"%22#� #2#"#,&!3 ��� #4%"(2#) '�* "%' .%1# % �56-0& �#70!&#� &.%& !�"#&0"#!'�* +%,& &� &�#%& %! 8�*� 96-0& 1%2*#! %,$ %& �&.#� &0"#! %! % !0,72#) *,!07,#$ 1%2*#3 :;'!&#"<#�02�7 (%/=#$ %��%' 0! &�#%&#$ %! -�&. %, %��%' %,$ % !0,72# 1%2*#3 >& 0! !&��#$%! % /�,&07*�*! !#& �8 -0&! +0&. ,� *,*!#$ !(%/#) *,20=# %, *,(%/=#$ %��%'3����?��������������@A�BCD��E.# (%/=#$ -0& %,$ %��%' $0"#,!0�,! %�# !(#/080#$ %! (%�& �8 &.# &'(#) -#8��# &.# 1%�06%-2# ,%"#3 E.#!# $0"#,!0�,! "*!& -# !(#/080#$ 0, &.# FGHIJKHIL 8��"%&) ,�&FHMNOL3 ;%"(2# 53PQ !.�+! &.# 1%�0%-2# IRSOH) % (%/=#$ %��%' �8 8�*� -'&#! &.%& %�#!&��#$ 0, % !0,72# �56-0& +��$ %! !.�+, 0, �07*�# 5653T�BCD����UV�����������������D���WXYZ��Z��[��\�] _abcdeafcde]g_hij kk l]g_himnophq r_sbtu]_i]g_hi vbtwxynzh{|nqnj}qim~ngx�]g_hi�� ` ` ` kk�xs�n~~btu]_i` ` ` ` `]g_hiabe�� ` `kk�si_ i�r zonr_]g_h�y��` ` ` ` `]g_hiabeafe�j kk�si_ i�r zonr_ ] _ ����X\[��������������������D��Y[W��* /%, "04 (%/=#$ %,$ *,(%/=#$ $0"#,!0�,!3 ��* "%' +%,& &� "%=# %, %��%' &.%&�#(�#!#,&! % "#"��' &.%& /%, -# %//#!!#$ %! -0&!) -'&#!) �� 2�,7+��$!3 >, ;%"(2#53P�)I����R 0! %, *,(%/=#$ %��%' �8 &.�## (%/=#$ #2#"#,&!3T�BCD����U�����D���WXYZ��Y����BXA���C������[ZC�����������] _abcdeafcde]n��ngabej ` kk�nophqcb�btu]_] _ab�cde~� vbtwxd�tb{l��fjkk�s�q] _afcdeabcde r]]~hij ` ` `kk�nophqn��ngsz r]]~hi]n��ngade v~�j]n��ngadeabe v�wxd�j]n��ngadea�ea�e v�w]�jr]]~hi v]n��ngadej ` ` ` ` `kkysmgmnophq�n~�hiE.# 1%�0%-2# IRSOH 0, ;%"(2# 53PQ 0! % (%/=#$ %��%' �8 8�*� -'&#! &.%& %�# !&��#$ 0, %!0,72# +��$3 I����R 0! %, %��%' �8 &.�## �8 &.#!# #2#"#,&!) +.0/. %�# !&��#$ 0, "#"6��' %! !.�+, 0, �07*�# 56�3]g_hi ����� ¡¢]g_hiabe ]g_hia�ea�e ����� ¡¢����� ¡¢����� ¡¢]g_hi ����� ¡¢ ����� ¡¢]g_hiabe ]g_hia�ea�e ����� ¡¢ ����� ¡¢����� ¡¢ ����� ¡¢����� ¡¢ ����� ¡¢ ����������������� �������������������������� �!�"��#�!$%&'()(*%+,-.(*/0*12%3&4(56/(,.&()(7628(69(8)&)4(:;<<;=>?@A($%&'(&76(*/0*12%3&*4(56/,.&()(05&.(69(8)&)4(:;<<;=>B@>C@A($%&'(&'2..(*/0*12%3&*4(56/(1)+()11.**()(*%+,-.(0%&4:;<<;=>B@>D@>E@A(F6&.(&')&(0.1)/*.(6+.(8%G.+*%6+(%*(*3.1%9%.8()9&.2(&'.(+)G.4:;<<;=>C@4(&')&(8%G.+*%6+(%*(/+3)1H.84()+8(*6(56/()-7)5*(+..8(&6(/*.()&(-.)*&(6+.*/0*12%3&AI'.(-)*&(-%+.(69(J)G3-.(KALM(163%.*(0.&7..+(&76(3)1H.8()22)5*A(J%+1.(&'.(/+8.2-5%+,N)-/.*()2.(O/*&(0%&*4(56/(1)+(1635(.N.+(%9(&'.()22)5*(')N.(8%99.2.+&(8%G.+*%6+*A�P�PQ�RS##T�U��V�!W��U���������U��XUY������Z����T$'%1'(*'6/-8(56/(1'66*.([()(3)1H.8(62()+(/+3)1H.8()22)5\(](3)1H.8()22)5(%*(')+85(%956/(+..8(&6(16+N.2&(&6()+8(926G(*1)-)2*A(62(._)G3-.4(56/(G%,'&(+..8(&6(2.9.2.+1.()G.G625()*()(05&.(62()*()(7628A(I'.(:;<<;=(%+(%,/2.(K�(1)+(')+8-.(&'%*(2.a/%2.G.+&A]+5()22)5(&53.(1)+(0.(3)1H.84(%+1-/8%+,(85+)G%1()22)5*4(a/./.*4()+8()**61%)&%N.)22)5*4(7'%1'()2.(._3-)%+.8(%+(J.1&%6+*(KA�[KAbAc9(56/(+..8(&6(7)%&(962()(1')+,.(%+()+()22)54(56/(')N.(&6(/*.()(3)1H.8()22)5A(d.2')3*56/2(&.*&0.+1'(G%,'&(+..8(&6(7)H.(/3(7'.+()(G.G625(1')+,.*(N)-/.4()+8(*6(56/7)+&(&6(/*.(&'.(e(63.2)&62A(I'%*(%*('67.N.2(6+-5(-.,)-(7%&'(*1)-)2(N)-/.*()+8(3)1H.8)22)5*A(c+(J)G3-.(KALM(56/(1)+(0-61H(6+(&'.(N)2%)0-.(fg4()+8(:;<<;=>B@4(0/&(+6&(&'..+&%2.()22)5(:;<<;=(/+-.**(56/(._3)+8(%&h(ei:;<<;=>B@jk<j:;<<;=>D@jk<:;<<;=>?@lA�P��m�U�n���Z����TI'.(0)*%1(o.2%-6,()22)5(&53.(*'67+(*6(9)2(%*(H+67+()*()(9%_.8*%p.()22)54()*(%&*(*%p.(%**.&()&(16G3%-.(&%G.A($')&(%9(56/(86(+6&(H+67(&'.(*%p.(69(&'.()22)5(/+&%-(2/+&%G.\(62._)G3-.4(56/(G)5(7)+&(&6(,.+.2)&.()(2)+86G(+/G0.2(69(&2)+*)1&%6+*()&(&'.(*&)2&(69*%G/-)&%6+A(c9(56/(*&62.8(&'.(&2)+*)1&%6+*(%+()+(9%_.8*%p.()22)54(%&(76/-8(')N.(&6(0.-)2,.(.+6/,'(&6('6-8(&'.(G)_%G/G(+/G0.2(69(&2)+*)1&%6+*4(0/&(76/-8(&53%1)--5('6-89)2(9.7.24(&'/*(7)*&%+,(G.G625A(J5*&.Go.2%-6,(326N%8.*()(85+)G%1()22)5(&')&(1)+(0.)--61)&.8()+8(2.*%p.8(8/2%+,(*%G/-)&%6+()+8(*6(56/2(*%G/-)&%6+(16+*/G.*()(G%+%G)-)G6/+&(69(G.G625A](85+)G%1()22)5(%*(8.1-)2.8(7%&'(.G3&5(7628(*/0*12%3&*(>@A(I'%*(G.)+*(&')&(56/(86+6&(*3.1%95(&'.()22)5(*%p.()&(16G3%-.(&%G.q(%+*&.)84(56/(,%N.(%&()&(2/+&%G.A(I'.()22)5(%*rsttsuvwxrsttsuvyxrsttsuvzx BD?C{|E}rsttsuvzxv~x rsttsuvzxvwxv�xBD?C{|E}BD?C{|E}BD?C{|E} BD?C{|E}BD?C{|E}BD?C{|E}BD?C{|E} BD?C{|E}BD?C{|E}BD?C{|E}BD?C{|E}rsttsuvwxrsttsuvyxrsttsuvzx BD?C{|E} BD?C{|E}rsttsuvzxv~x rsttsuvzxvwxv�xBD?C{|E} BD?C{|E}BD?C{|E} BD?C{|E}BD?C{|E} BD?C{|E} BD?C{|E} BD?C{|E}BD?C{|E} BD?C{|E}BD?C{|E} BD?C{|E}BD?C{|E} BD?C{|E} BD?C{|E} BD?C{|E}BD?C{|E} BD?C{|E}BD?C{|E} BD?C{|E}BD?C{|E} BD?C{|E}

Page 18: SystemVerilog for Verification

����������� �� � � ��������������������������������������� !"������#����#������������������������ �$ ���������%�#��&����# ��� �������'��#��%#��(���)�*&��������������������&�����##����������� !"������#����#������+�������#����� ��� ����������,�����������������,�� ��-�����.)/0)123456789:;7<=>?@7AB?23>C72DD2B=EFGHIJFKLMHINKLOHHHHHHHHHHHHHHHHPPHQRSTUVRHIJFUWESHUVVUJXEFEGEUTHYRZEFHHIJFH[HFR\K]LOHHHHHHHHHHHHHHHHHPPH_HTTSUGRH]HRTRWRFGXHHaVRUSbHcIJFKdLeHIJFKdLH[HdOHHPPHf_HgFEGEUTEhRHGbRHRTRWRFGXHHINH[HIJFOHHHHHHHHHHHHHHHHHHHHHPPHi_HijJHUHIJFUWESHUVVUJHHINKkLH[H]OHHHHHHHHHHHHHHHHHHHHPPHQ_HlIEaJHGbRHSjJHHmIEXjTUJcIJFKkLMINKkLeOHHHHHHHPPHn_HoRRHYGbHpUTqRXHckHrH]eHHIJFH[HFR\KNkLcIJFeOHHHHHHHHHHHPPHs_HTTSUGRHNkHEFGXHrHSjJHHIJFH[HFR\KtkkLOHHHHHHHHHHHHHHHPPHu_HTTSUGRHtkkHFR\HEFGXHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHPPHHHHvTIHpUTqRXHUVRHTXGHHIJFwIRTRGRceOHHHHHHHHHHHHHHHHHPPHx_HQRTRGRHUTTHRTRWRFGXRFI*��-������.)/0��y ���z��������� !{"����������������##�����������)�|�������� ���##��}~����,��������������)������������+������&���������������&������##������ ��� ����+����)�y ���������������������#��##���������� �����������������&�}~�� ���� �)�y ��������������,�����������##����}~������}���#������#���)�y ���������������.����,������������������� ��������� �� �$�������������&�}~���������%�$ �� �$��&������##��)�|����������������������##��� �������������)�|���#������ �������}~���� ���������.����������##��)�|������������������ !"�����������/�������������%��������� �� �$�+�������#�������� ��)�|�������.�����������##��� �������������)�� �������� �����������������}~���##��)|��������&���� ���#���#�������� ����&�����##��)������ ���##������+����+�#���%� ��� �#��� �������������}��������������)*&�����,������������#��������������##����&�+������%����������,�������%����#������ �$�������%�#��&���������������������� ���##���, �������##���� ��#��)�*��-������.)/�����#���#�������(��&�#���% ����%������������������-�������# ��$�������������#����#�������( �$���& ����� ����##���������� ������������ �$�����,#��$�� ����&��)123456789:�7<=>?@727AB?23>C72DD2B7��D72?7�?C��?�6A75>=�YEGHK�_kLHWUX�KLH[H����Ykkkk�kkkkMH��Ykkkk�kkktMHHHHHHHHHHHHHHHHHHHHH��Ykkkk�kkttMH��Ykkkk�ktttMHHHHHHHHHHHHHHHHHHHHH��Ykkkk�ttttMH��Ykkkt�ttttMHHHHHHHHHHHHHHHHHHHHH��Ykktt�ttttMH��Ykttt�ttttMHHHHHHHHHHHHHHHHHHHHH��Ytttt�tttt�O ���������(����� $�������%��,����& ����� ������������ ���##����������$����������+�����������%��������������������)� ���������� $��������� ���##��������& �����##��������$�����������+��������������%�#��&���������) ����������������� ������������������������ �!���""���#��������$����""��%�&� #�$'�"�(�)���(( �#���*+,-.��� #"��#�"�#���((���#�� ����%�����#��������� �#���/�(�� 01234567678&� #�$'�"�(�)���#"����� �����9���#��#���%�#���:����%�9�������$;��� �#���;� #������(��<���(� #������""��0�=�<����(��<���(� #%��������������"�"�$�/���(�$��# ����9��"������:����%�9�#���#�#�����"��"$�������#����������$����""���#��#��� �#���((���#������9��""�����������#�����#�"�����#��# 0�=�<������""��%�����������"��#(������ ������(�$��#�9�#���������%�9�#���#�(��<���(� #> ��/�"�������� #�����)�#�"��)��#����"������)��(�$��# 0?�:������ ����(�"���9�#��9�"�� �; �"��# ����#�����)�����((�"� �)�@�-A.0�B����(�$��# �����:������"����$;�"����"�$�C�#��D0�&�$�(��E0FG� ��9 ���9����������������"�$�/��/�(�� ��"�$���:������ ��)�$�#��� 0�H�#��#��#�:�����(�#�"�( ���(����/����"(�;"��� %������"��$� ��)�#������#��(���� #"���������""���(�#�"�( 0B���&� #�$'�"�(�)�:������ � �$�(�"�#��#���&#����"��B�$�(�#��=�;"�"�> ���:�����#�#���0�I����"��#����:�����;�������)��(�$��# 0�&� #�$'�"�(�)�#�����((���((���#� ���#"� ����� ��#��#���������:���<(���� �"#�����#����(��(�$��# 0�J��������������)���(�$��# #��#�#���:�����"�� ���#����#��#���#"�� ����%�&� #�$'�"�(�)���#�$�#���((���((���#� $�"�0�? ���"� �(#%���������)"�9����� �"��<���:�����9�#���#�#�����"��"$���������(#����������$����""��%�����&� #�$'�"�(�)�<��� �#"��<����#����"��� �������"����0�H�#�#��#�������/�"���((�#���*+,-.���� #"��#�"���"���:����0

Page 19: SystemVerilog for Verification

������ ������� ���������������������������� ����!"#$%���&' () ����������**�+,-,-�.��-/0.1�23��3��,1-�4����!#$%���&5 " 6)7���������**�&5 " 6)�����0.�8-9����!:��1-/�;� ��<7�����������**�&5 � " 6)�����=�1-/����8->3/-�"���!:��1-/�;' �!"<7����������**�&5 � " ' ( 6)�=�1-/��!,-,-����!���!:2-.-�-;�<7��������������**�&5 " ' ( 6)���?-.-�-�-.-@:�A���**�BC-1-�3D-/0��3�1�0/-�>01���!:D,1CE>/3��;F<7����������**�&F 5 " ' ( 6)�=�1-/��0��>/3��������!:D3DE80GH7�����������**�&F 5 " ' ()�������6��!:D,1CE80GH;I<7�����������**�&F 5 " ' ( I)�=�1-/��0��80GH������!:D3DE>/3��7����������**�&5 " ' ( I)�������F��>3/-0GC�;!#�%<����$2�1D.0J;!#�%<7���������**���������������K/����-���/-�!,-,-��!:2-.-�-;<7���������������**�&)������������?-.-�-�-���/-�!,-,--�2LMNOPQRONSTOUMVWOSNXSPVYZ[SOQRWOPMRPQ[TRQ[YMROYRS[TQWOM\O]T[MWS_OSOQOSMV[PN[aOY\bMNOZN[OQOcOMRO[TOdT\[OSYWTOM\OQOVQReTaOSNPOQSOfghijaO[TOgOS[QRWSO\MVO[TO]YRY]N]kQdNTaOflhij_OOgOMRO[TOVYe[OSYWTaOQSOYROfmhgjaOS[QRWSO\MVO[TO]QnY]N]OkQdNTafmhijaOYRO\YVS[OdYRTOM\O[TOYRY[YQdOXdMPoOM\OpQ]ZdTOq_qr_����� � s������������������������� �����!"#$%���&' () ����������**�+,-,-�.��-/0.1�23��3��,1-�4����!#$%���&5 " 6)7���������**�&5 " 6)�����0.�8-9�����������������**�t-1,.���!���&!#5% �� �!#�u$%)7����**�&5 � " 6)�����=�1-/����8->3/-�"���!���&!#5u"% �!" �!#'u$%)7�**�&5 � " ' ( 6)�=�1-/��!,-,-����!��!���&!#5% �!#"u$%)7�������**�&5 " ' ( 6)���?-.-�-�-.-@:�A���**�BC-1-�3D-/0��3�1�0/-�>01���!���&F �!)7���������������**�&F 5 " ' ( 6)�=�1-/��0��>/3��������!#$%7�����������������**�����6���������v!,�w0.-���3>��!���!#5u$x�%7�������������**�&F 5 " ' ()������D3DE80GH��!���&! �I)7���������������**�&F 5 " ' ( I)�=�1-/��0��80GH������!#5%7�����������������**�����F���������v!,�w0.-���3>��!���!#�u$%7���������������**�&5 " ' ( I)������D3DE>/3����!���&)7�������������������**�&)������������?-.-�-�-���/-�!,-,--�2yzM[OQddOpbS[T]{TVYdMeOSY]NdQ[MVSOSNZZMV[OYRSTV[YReOQO|NTNTOUY[O[TOYRSTV[}~O]T[MW_ ����������������� ����������������������������������� ����!������� ������"���������������##� ��������$�������$�$����������#��������#���������%� &'��������&�����#�(�����������#������������)������*����!�����������'�+����!������������!�������������������������#��������������������#���!������(�����!�����������&������'���������������������!��*���������,*����������-���#����������'.��� ��� �$,����� ���������#���#�(�������,���� �����,�������������'/012344567897:;23<<8=4>,���� �����,������!�����#�,���*�������� ��������,� ��������%�!�����,"�%���*�����#,���*������������!������,����!�?�@����$��,��������������!���$�� ���������������������)!�!�%,��������������!�'�>����!����,$� �������"�����$�� ��������,����,���� ���#�*��������������������������,��� ������� ��������!��(� ���%��� ������������"������� ����!�������������-��!�!�!�%,�����#������!�����*����#��'A,����B�����!��##�������� ����C������,���������������������������$����������('����������������*�����,��� �������������C��,����!�����������$� �"�A,����B�����!����,���� ����������,�#��������������*����,���*����������'�D������#����*��!�$� ����"�������� ����C������,�����������C������EF�"�GH"�I"EEE"�G"JHI"�����HEE"EEE'����������,�����������������������#�������������*�����%��������������������#�(�������,���� �����,*����HEE"EEE��������'K7LM<;2/NO2344567897:;28<<8=+������ ����C������,� ���%���������%,�����������������������������������%��'����������)��������C����������� �$��%���*����,���������������������,��*����*����,���$����������(�C�����"��� �����$� &��������(���*�����H)%����������������PG)%��������C�����'+������ ����C������,������ ������*������������,$�H�����������%�� &���"��� �����QRSTU��QVWXYZTU'�A��$���H'HI����*���� �����!"���������-��!"��������$$��!������!�������� ����C������,'H.��� ���������� ������������ ����C������,�*����*��� ������%� ��$��"�������*���[\]'��*�C��"��������,����������� ������������,�����������*��!���%� ��$����#���,�������,$�'�_����#��������,�$��%��������*���#���� �)���$���*�����,$���������C����%���a����#���� �b*���[a]c?deffghhhhhhhijhhhhhhhhhhhhhhkdddhhhhhhhhhhiljkhhhhhhhhhhhhhhhjddmdddnopoqrnstdeffghhhhhhhijhhhhhhhhhhhhhhkdddhhhhhhhhhhiljkhhhhhhhhhhhhhhhjddmdddnopoqrnst

Page 20: SystemVerilog for Verification

��������������� � ������������������������������� �������!�"#�����##$�����%������&#'(')'*+,-./'(,,-'),012345,*66780'()59,':;,<,=>,,??,@(')'*+'A.,B':.+C,68*)).D.:,E*+F.6,,D.G.*),H1IJ,-./'(,,,,*66780':;5,<,':;>,,,,':;,<,':;,KK,=>,,.(:,,??,L).G,)MD7F/M,*++,'(:.;,E*+F.6,B')M,N7D.*8M,,N7D.*8M,H*66780'5J,,,,O:'6G+*CHP*66780QM5,<,QMP9,'9,*66780'5J>,,??,L).G,)MD7F/M,*++,'(:.;,E*+F.6,B')M,NF(8)'7(6,,'N,H*6678RN'D6)H':;JJ,,,,,-./'(,,,,,,,,,,,,,,,,,,,,??,S.),N'D6),'(:.;,,,,:7,,,,,,O:'6G+*CHP*66780QM5<QMP9,':;9,*66780':;5J>,,,,BM'+.,H*6678R(.;)H':;JJ>,,??,S.),(.;),'(:.;,,.(:,,??,T'(:,*(:,:.+.).,)M.,N'D6),.+.U.(),,*6678RN'D6)H':;J>,,*6678R:.+.).H':;J>,,O:'6G+*CHPVM.,*DD*C,(7B,M*6,Q4:,.+.U.()6P9,*6678R(FUJ>.(:WXYZ[\]_ ]aXb]ca\]XbbdefXcfg\]XhhXij]kllmnj]ofca]g\hi]beXcc\h\p]\[\Y\qcbr]j]j]sj]tjuj]\ce_]v]bfYZ[\]wmxy[ddZ]eXqqdc]bc\Z]cahdz{a]ca\Y|]idz]q\\p]cd]zb\]X]wmx}kn~y[ddZ_]��]idz]oXqc]�fq\h]edqchd[j]idz]eXq]zb\]ca\]w�xl�]Xqp]�}��]�zqecfdqb]fq]X�m___�~��}][ddZ_]�a\b\]�zqecfdqb]Ydpf�i]ca\]fqp\�]Xh{zY\qcj]Xqp]h\czhq]�]dh]p\Z\qpfq{]dq]oa\ca\h]Xqi]\[\Y\qcb]Xh\][\�c]fq]ca\]XhhXi_vbbdefXcfg\]XhhXib]eXq]X[bd]�\]Xpph\bb\p]ofca]X]bchfq{]fqp\�j]bfYf[Xh]cd]�\h[�b]aXbaXhhXib_]WXYZ[\]_ ]h\Xpb]X]�f[\]ofca]bchfq{b]Xqp]�zf[pb]ca\]XbbdefXcfg\]XhhXi]l���n~bd]caXc]idz]eXq]�zfe�[i]YXZ]�hdY]X]bchfq{]gX[z\]cd]X]qzY�\h_]Wchfq{b]Xh\]\�Z[Xfq\p]fqYdh\]p\cXf[]fq]W\ecfdq]_s_]�dz]eXq]zb\]ca\]�zqecfdq]}��l�l��]cd]ea\e�]f�]Xq]\[\yY\qc]\�fbcbj]Xb]badoq]fq]WXYZ[\]_ _]��]idz]chi]cd]h\Xp]Xq]\[\Y\qc]caXc]aXb]qdc]�\\qohfcc\qj]Wibc\Y�\hf[d{]h\czhqb]ca\]p\�Xz[c]gX[z\]�dh]ca\]XhhXi]ciZ\j]bzea]Xb]�]�dh]ybcXc\]ciZ\bj]dh]�]�dh]sybcXc\]ciZ\b_] ����������������� ������������������������������ �!���""�#�$� %���� "������&�'()*+,-./0123/45+.61+78//9:///;1+<6==>377//?9@:/;6A<6==>377)(1+./7B1.4CD7.>1+EFG/;1+<6==>377G/;6A<6==>377H1+1.162/I3E1+//1+./1G/>G/0123H//7.>1+E/7H//0123/J/K05,3+LM7B1.4CN.A.MG/M>MOH//BC123/LP/K0350L0123OO/I3E1+////>/J/K0746+0L0123G/MQ=/Q7MG/1G/7OH////7B1.4CD7F/J/1H//3+=//K042573L0123OH//((/R3./.C3/;1+/6==>377G/=306-2./17/S//;1+<6==>377/J/7B1.4CDM;1+<6==>377MFH//((/R3./.C3/;6A/6==>377G/=306-2./J/?SSS//10/L7B1.4CN3A17.7LM;6A<6==>377MOO////;6A<6==>377/J/7B1.4CDM;6A<6==>377MFH//3273////;6A<6==>377/J/?SSSH//((/T>1+./622/7B1.4C37//05>364C/L7B1.4CD7FO////K=17,26ULM7B1.4CDVQ7VFJQS=MG/7G/7B1.4CD7FOH3+=��W�X��Y�&�X�� �Z[\]_ abcdefgadhbi\fjfcbklifcb\]fij]jm\]ano]naf]pj]fb\fjkjcdedn\f]df]pfZqrsZ]jkijaifq_gcj]frbtaja[ufrb\]fodk]jbkavfqpfodk]jbkafb\fiwbkifj\fjfgjaj_ ]ambxifocj\\yf_jkbkef]pj]fb]fojkftfon\]d_bxif]dfpdcifij]jfdwfjk[f][gvfzd{f]pj]f[dnflkd{f]pafb\fjfcbklifcb\]fbkfZ[\]_ abcdeyfjhdbifn\bkefb]vf|}}fgadmeaj__a\f_bep]ftfwj_bcbjaf{b]pf]pfZqrfha\bdkyftn]fZ[\]_ abcde~\f�nn\fja_dafwwbobk]fjkifj\baf]dfn\v

Page 21: SystemVerilog for Verification

����������� � �������������������� �!" �!#"$%!" "%!#�&�'()!&�"&!%'*!+"$!*)�!'$!"$%!*$,"+-�(!" "%!&%,�).!/01�(2(%$"#0+2!3*�*�2!"$(!"))'+0"&04�5!���)�! '*&0$�)!+"$!6�!")!)0#,7�!")!8040$8!&��!+* 9 �$&!" "%!)0:�!' !")!+'#,7�1!")!)' &0$8!&��!�7�#�$&)5!���!," �$&��)�)!" �!',&0'$"7!0/&�� �!" �!$'!" 8*#�$&)5����;�������<��=>�?�@��������A!6")0+!" "%! �(*+&0'$!#�&�'(!&"-�)!"$!" "%!"$(! �(*+�)!0&!&'!"!)0$87�!4"7*�2!"))�'B$!0$!C"#,7�!D5DE5!���!#')&!+'##'$! �(*+&0'$!#�&�'(!0)!FGH2!B�0+�!"(()&'8�&�� !"77!&��!4"7*�)!0$!"$!" "%5!I�!+" �/*7!'/!C%)&�#J� 07'8K)! *7�)!/' !�"$(70$8&��!B0(&�!'/!',� "&0'$)5!I%!(�/"*7&2!0/!%'*!"((!&��!4"7*�)!'/!"!)0$87�960&!" "%2!&�� �)*7&!0)!"!)0$87�!60&5!L'B�4� 2!0/!%'*!*)�!0&!0$!"!ED960&!�1, �))0'$2!)&' �!&��! �)*7&!0$!"ED960&!4" 0"67�2!+'#," �!0&!&'!"!ED960&!4" 0"67�2!' !*)�!&��!, ',� !MNOP!�1, �))0'$5C%)&�#J� 07'8!*)�)!ED960&)!B��$!"((0$8!*,!&��!4"7*�)5!���!MNOP!�1, �))0'$!0)(�)+ 06�(!0$!C�+&0'$!D5Q5D5R�STU�����V�W����?@X������=S��Y��@������Z[\] _abcd]]ee]fgghi]j]k[_lmn]Z[\k[_\]\\hmd[_[\[hm]Znl[_]]jgnhop]q _[cr]]]] _[c]s][d]]]ee] _[c]ln\k]b]g]a]]ee]tg[_\]\pn]k[_lmnuZ[\]kvw]]xy[kzmhiq{_|kvw]s]}by{~]_|kvwrd]ee]_|kvw]s]a]]ee]tg[_\]\pn]kvw]vk[_l]��uZ[\]\\hm]]xy[kzmhiq{_|kvw]s]}by{~]_|kvw]�]���ybrd]ee]_|kvw]s]�]]ee]�vw]\pn]�hmvnk]vk[_l]��uZ[\k]hk]\\hm][k]��uZ[\k]]\\hm]s]_|kvwd]]xy[kzmhiq{\\hm]s]}by{~]\\hmrd]]]]]ee]\\hm]s]�]]ee]�wzhgn]\pn]kvw]\]h]��uZ[\]�hmvn]][j]q_|kvw]�s���y�r]]]]]]]]]]]]]]]ee]�gvn]]]]xy[kzmhiq{kvw]phk]�]g]wgn]a�k{rd]]ee]�wzv\n]�[\p]��uZ[\]k[l_ny]hg[\p[wn\[o]]xy[kzmhiq{[_\]kvws}by{~]_|kvw]�[\p]q[_\�q[\nwrrrd]]n_y�&�� !" "%! �(*+&0'$!#�&�'()!" �!����G�O2���2��2!"$(!���5 ����������������� �������������������������� !�� ���������"�#�$�# ����$���#�������� �� ������������$���� �� �� �%� ������&�����������'�()*+,-./0*+,123+**+45678239:;9�$��<&�&��� ������ ��#� �� ��%� ���()*+,-./0*+,123(67823+**+49:;9�$���$�'�� �� ��%�<&�&��%���� ��#%� ��� ���#� ��!�� �� ��=�������#�����>=?@�$����������$��� A��������()*+,-./0*+,12=B$���&���������#������ �� �������������$���� �� ���#� ��!�� �� �%���&������������"����&��������������������C������ ������������������#��D ����� ##��������E����������=� �"����=������D����D����"�#F� �� �������������$���� �� ���#� ��!�� �� ������'��C����������=�B$����� �� ��D ������'���C�� �������%�G&���#� ����������"���$�7-H���6I*7,1=JKLMNOPQRQSPTUVWUXYPKPZKX[\LPONOLOX]PZ\LPKXPK__\VUK]UOPKZZKabcdeffgbcdhiejfcklbkmienonpncdieqrscdtnonpncdeuevsjfckrpljfcwnxffyzb{nx|}~|t�rjnfq�xffgbh|eeb�exqrscd��euuenonpncd|e�nwbceeeejfcklbkmeuebteee��e�f�ned�nefzzrqbfdb�nefjjf�ebcknmeeee�jnf�teeeeeeeeee��eeeefcke�sbdeenckvkbz�of�x���kenonpncdeffg��kheue��k�ieeeeeeeeenonpncdiejfcklbkmieffgjfcklbkmh|tQR�RQP�ZZKaP�\VK]\ZP�O]�\[_�� ���������� ������! �&����� �� �� �������� �� �� ��#��� ��� �#��� ���! �&������� �� ���# ������������$����� � ���� ��&�" #F��� �� �=��������������� �D ������&��� <&�&�=� �"����=���&���� �$�'��A����� �� �%�����%� ���� ��#� �� �%�-��%� ��� �<&�&�%���(�=���/7,� ���/+H�$&�#������$���������� ������ ���� ������������������ �� �� �=������� ����������&��� �<&�&�%����� ��# � �� ����&��������'"�#�=��������������� ����D��F$��� ���#� ��!�� �� ��=�����),7�)2�����������&���� �<&�&���$�����&��<&��! �&���$������� �� �����&"��# ���! �&��� ���������#�&���=

Page 22: SystemVerilog for Verification

����������� � �������������������������������� !�"#$%"&'%($#)(*#$+,-./0,1,2345/565/575/89#$+,:.0,,1,2365;5/5754<89#$+,).=0,1,345>5?5@85,+).=09+),1,)A"#$BC9,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD,348+),1,:A"&'BC9,,,,,,,,,,,,,,,,,,,,,,,,,,,,DD,34<8+),1,-A($#)(*BC9,,,,,,,,,,,,,,,,,,,,,,,,,DD,345/56578EFGHIFGJKHLMNOIPHQPOFGRPHNSHNOONTHGLUSRHNHVWXYZ[\]JFF_HGQHaTLQMbcMOUJFRHINSHKFQPULHUSHFSMHFMONQUFSHdUQPHNHJFINQFOHbMQPFKeHfPMHghi\HMjOMLLUFSHQMJJLHaTLQMbcMOUJFRPFdHQFHMOkFObHQPMHLMNOIP_HNLHLPFdSHUSHaNb JMHlelme����������n��������������������� !�-#$:#$+,:.0,1,23o54575>5;5;85,+).=09DD,p#$:,&qq,*q*"*$+r,st*&+*t,+u&$,>+),1,:A-#$:,v#+u,B#+*",w,>C9,,,,,,,,,,,,,DD,3o575;5;8DD,x)(#y&q*$+,z{:*+)A:*q*+*BC9-{t*&zu,B:.#0C,,#-,B:.#0,w,>C,,,,+)A|(ru}~&z�B:.#0C9+),1,:A-#$:}#$:*',v#+u,B#+*",w,>C9,,,,,,,DD,3<565;5?8+),1,:A-#$:}-#tr+,v#+u,B#+*",w,ooC9,,,,,,DD,38,�,${$*,-{($:+),1,:A-#$:}-#tr+}#$:*',v#+u,B#+*"117C9,,DD,368,:.6017+),1,:A-#$:}q&r+,v#+u,B#+*"11;C9,,,,,,,,,DD,3;8+),1,:A-#$:}q&r+}#$:*',v#+u,B#+*"11;C9,,,DD,3?8,:.?01;�SHNHghi\HIJNGLM_HQPMHSNbMHhiY�HULHINJJMKHQPMHUQMONQFOHNORGbMSQHNSKHOMOMLMSQLHNHLUS]RJMHMJMbMSQHFkHQPMHNOONTeHEFGHINSHLMIUkTHTFGOHFdSHSNbMHTHGQQUSRHUQHUSHQPMNORGbMSQHJULQHFkHQPMHNOONTHbMQPFKHNLHLPFdSHUSHaNb JMHlel�e�������������������������������������������+),1,:A-#$:}-#tr+,v#+u,B#+*"11;C9,,,,,,,,DD,�u*r*+),1,:A-#$:}-#tr+BC,v#+u,B#+*"11;C9,,,,,,DD,&t*+),1,:A-#$:}-#tr+B#+*"C,v#+u,B#+*"11;C9,,DD,&qq+),1,:A-#$:}-#tr+B'C,v#+u,B'11;C9,,,,,,,,DD,*)(#y&q*$+aNb JMHlel�HLPFdLH�NOUFGLHdNTLHQFHQFQNJHGHNHLGLMQHFkHQPMH�NJGMLHUSHQPMHNOONTeHfPMkUOLQHQFQNJHIFb NOMLHQPMHUQMbHdUQPH�eHfPULHOMJNQUFSNJHOMQGOSLHNH�H�QOGM�HFOH�H�kNJLM�HNSKbGJQUJUMLHQPULHdUQPHQPMHNOONTeHaFHQPMHLGbHFkH��_�_�_�_�_��HULH��eHfPMHLMIFSKHQFQNJHULIFb GQMKHGLUSRHQPMH�H�HIFSKUQUFSNJHFMONQFOe ����������������� ��������������������������������� !"#$%&'(#$)%$'$*+)%,-.%/%012)3)4)5)6)678&'(#$%/%,9:(;%<"$=%>"$?;%@%%AB8%%CC%DE%12)%47$'$*+%/%,9:(;%<"$=%>>"$?;%@%AB%F%"$?;B8%CC%3A/%2G4&'(#$%/%,9:(;%<"$=%>"$?;%H%%4B8%%CC%6E%13)%5)%6)%67$'$*+%/%,9:(;%<"$=%>"$?;%H%4%I%"$?;%E%JB8%CC%3D/3G5G6G6&'(#$%/%,9:(;%<"$=%>"$?;%//%6B8%%CC%DE%16)%67KLMNOPQROSQTUVNMOWNOWXXWPOXMYRSZVQNO[RSLOW[O\]OR[VN_OZLMOabcOSdWR[MeOZLMOXM[RdZ[TWPO[RXfXV[MOPQRgOhNOiWTfdMOjgjkeOZLMO\]OQfMXWZQXOZQZWd[OZLMONRTUMXOQlOZVTM[OZLWZOZLMMmfXM[[VQNOV[OZXRMgOnQXOZLMOlVX[ZO[ZWZMTMNZOVNOiWTfdMOjgjkeOZLMXMOWXMOZoQOWXXWPOMdMTMNZ[ZLWZOWXMO_XMWZMXOZLWNOpOqrOWNYOksOWNYO[QOtu]vbOV[O[MZOZQOjgwLMOWXXWPOdQSWZQXOTMZLQY[OZLWZOXMZRXNOWNOVNYMmeO[RSLOW[x"#,y"#,?zeOXMZRXNOWO{RMRMOQlOZPfMO"#$eONQZO"#$?|?}gO~QRXSQYMOTWPONQZOSQTfVdMOVlOPQROR[MOZLMOoXQN_O{RMRMOZPfMOoVZLOZLM[M[ZWZMTMNZ[g���������������������� ��� �����iP[ZMT�MXVdQ_OLW[O[M�MXWdOTMZLQY[OlQXOSLWN_VN_OZLMOQXYMXOQlOMdMTMNZ[OVNOWNOWXXWPg~QROSWNO[QXZOZLMOMdMTMNZ[eOXM�MX[MOZLMVXOQXYMXeOQXO[LRlldMOZLMOQXYMXOW[O[LQoNOVNOiWT�fdMOjgjrgO�QZVSMOZLWZOZLM[MOSLWN_MOZLMOQXV_VNWdOWXXWPeORNdV�MOZLMOWXXWPOdQSWZQXOTMZLQY[VNOiMSZVQNOjgpgjeOoLVSLOSXMWZMOWO{RMRMOZQOLQdYOZLMOXM[RdZ[g����������������������������"#$%,-.%/%%%%%%%%012)3)4)5)6)678,9}?�?}:?>B8%%CC%016)6)5)4)3)27,9:'}$>B8%%%%%CC%013)5)6)6)4)27,9}:'}$>B8%%%%CC%012)4)6)6)5)37,9:=(xx+?>B8%%CC%012)6)5)4)3)67wLM�����\�OWNYO\c]����OTMZLQY[OLW�MONQOabc�SdWR[MeOWNYO[QOZLMPOoQX�OQNOZLMMNZVXMOWXXWPgOiWTfdMOjg��O[LQo[OLQoOZQO[QXZOWO[ZXRSZRXMOUPO[RU�lVMdY[gOiZXRSZRXM[OWNYfWS�MYO[ZXRSZRXM[OWXMOMmfdWVNMYOVNOiMSZVQNOjg��g

Page 23: SystemVerilog for Verification

����������� � ������������������������������ �!��"#�"��!$%&'(%)*+(,-.)/)01%-)&-.2)3&--42)05'-6)7)(896:4:%:+5)0-3:4))();)4-<8=>>96)))))))))??)@55A(+%-)=>>)*:B-5$))CA&-+(DE(8:9F)))))(8:9);)G'&+4.AH6))))??)I:55)<:%D)&+4.AH)J+5'-$))(K$A&%)<:%D)E:%-HK&-.F6)??)$A&%)'$:43)&-.)A451))??)$A&%)01)3&--4)J+5'-)%D-4)05'-))(K$A&%EBF)<:%D)E/BK3&--42)BK05'-7F6)-4.��L�M�N"��O�������#���P���O�Q��R�S�����T�#�����U��R�O!VWXYZ[[Z\Y]_Z[YaXWbcY_ZdYeXYfcXbYYefg]bYZYc_[XeZ[bhYiZaj]XYkhlmYbXngdXcYWXopqrstYc[f_f[XuYWXdY_[XZXcYZYc_[XeZ[bYaZbXYn[aYZYvfXfXYnYWXcXYc[f_f[XchiX_gdYkhwYbXc_[geXcYWxYY_[XZXYc[f_f[XcYxgWYtyzs{s|h����������}�S�!#���P���O�Q��R����������R�O!%1*-.-C)$%&'(%)*+(,-.))/0:%)8~�>9)+..&6)))0:%)8~�>9)*&6)))0:%)8=��>9).+%+6)7)�+(,-%6�+(,-%)$(08G96C'4(%:A4)JA:.)(D-(,�+..&E0:%)8~�>9)+..&F6)):4%):4%�8G96)):4%�);)$(0KC:4.�:4.-BEF)<:%D)E:%-HK+..&);;)+..&F6))(+$-)E:4%�K$:�-EFF))>�)G.:$*5+1E�@..&)�D)4A%)CA'4.):4)$(A&-0A+&.�2)+..&F6))=�)$(0K.-5-%-E:4%�8>9F6)).-C+'5%�))))G.:$*5+1E�������)�'5%:*5-)D:%$)CA&)+..&)�D�2)+..&F6))-4.(+$--4.C'4(%:A4)�)(D-(,�+..&VWXq�sqr�p{{���Ynfd_gdYgdYiZaj]XYkhlmY] �cYfjYZdYZbb[XccYgdYWXYc_[XeZ[bhVWX|��{���{s���YaXWbY[Xf[dcYZdY��tYvfXfXhY�nYWXYvfXfXYgcYXaj\Y�cg�X����udYaZ_WYxZcYnfdbhY�nYWXYvfXfXYWZcYdXYaXaeX[Y�cg�X��m�uYZYcgd�]XYaZ_WYxZcnfdbuYxWg_WYWXYq�sqr�p{{���Ynfd_gdYbX]XXchY�nYWXYvfXfXYWZcYaf]gj]XYaXaeX[c�cg�XY�Ym�uYWX[XYZ[XYaf]gj]XYjZ_�XcYgdYWXYc_[XeZ[bYxWcXYZbb[XccYaZ_WXcYWX[XvfXcXbYdXh ����������������� ��������������������������������� ��������!������������"���#�$��������%�������%���&���'�('�)�*��������%�!�������*�����*��*�������+�������,'-.'/012345567892:2;<5=:9>2?@A>B����������!���*�%�"�������������������������������������C�������%�����"�D���"��C#!�!��C�*����#�����%#���%��������'�E���������F*����*"��������*!�#���%����*"���!�C�G��C���$������!*"�����'/010H2IJ>K7L7J7<@M�������D�%N��O�����%C��!�������C�����������������%�$����������*��G��������G�����������%����P�.#�-#�,#�QR'�&����������D�%N��O������C������������C���O����� ��$�������!��"���!�#�������������%C��!�������C����������O��������� ��$��*���"��*�N��!�'�S����D�!�"�#G�����"�N��O����� ������������"C���������%������%C��!�������C'�T��C�*�����$���������*N���������!����*"��������C�#������%���*�����F*���%C��!�������C�#����������*��������$�� �$������C���O��%C��!�������C����"������������"�!�����C���UVWX#YXZVW[#����'\!������'�]� �$���#�C�*������������*�*�������C���O�����������*��������"������������"�N!�����C���!�����������*�*�����*!���'����������G������C�������"�����������%�����%"���������O�'�B�$�G��#�����*�����$��������D�%N��O������C����*!������"C������������C�����������������%�"�����'�&���������������G������C�������������%��%���%������*������$�%�"C���������%�G�"*������*���������%�!�G�"*�������%%������'����������G������C�������"������*��%����!�%�"�������N�%%������"��!�!�����'_*�*������������%�$�C����������G�"*���$���������*!��������"�!��������$����%����� ����"���%*�������!*"�����#��*�����������������%��������"%���D�����%�G�"*��'�/010/2>a5=@2b6:9>T��C�*�$���������%*���������!*"������!�!��C�*����#�*���,N�������"�!����'�)�*����*"%�������%������O������������!*"���"������Q,����������G��%�$����%������'�+�!*"������*�*N�""C���������C�������!�""��������Q,N����$��%'�S����D�!�"�#��������C����-#.,���C���$������c��������!�!��C����������!*"������*���������"�!���������Q,N����$��%'�d�� �%����C�������"�����"��������G��!�!��C'S�������C���������"%�*����������*���%��"�!����#������C����������C������C�*��������%�������!� ��������%�������������!�!��C�*�����U*�"��������������!��C�����������������������C�\'�S�������C��$���������*���%������!�""��������G���"�!����#���D�%N��O����%%C��!�������C����������!����!�!��C����������'�)�*�!�C�$��������������%���C�*��"������!�����C�*����%�����C��$����!�����������!�""��������G���"�!����'_*�*��������"����"C�"�������������������������������D�%N��O�����%C��!�������C������*������%%������"���������'�B�$�G��#����C�*��%�����������$����%������ �������#���%�C�*

Page 24: SystemVerilog for Verification

����������������� ��� ���������������������������������� �!�""�#�$�������� �""����""�%&'()�����""���������*����������+�,�-#����������.+����$���+������������!� "��!�+��� ������/�����0��� ���/�����������������,1���"��/����������"��/����#�����0�!���/�2������#� "��2�������!��#�������������$������,�3�����#������#��"���������������������$��������������4����$���"�������������������#�����0�.��*��5��������������������2��� ����0�+��������$��#���,67879:;<==>?#������� ����������+��2��������#�!���������������������������+����"��4����"�,�@����"����0�!�����������!��������� ��� "�� ���������+�������#���$��#����������������*+�����!��#��#��AB-,�C���� � ������������������0�����������5��������+���������,@�.��*��5����������������������������������������/ � ����������������������"���������2��0� �������#���������� ����0���������/���"�����0���������5�,�D � ���#�$���"������#������������������������0�.��*��5�������������������0������������!�����,�-#��0���������"�����"�����������2��+ �#�������+�++���!��#��"���������$��*#���,�E�������/��������$��/��"�����������#������"����F �����������"����������2��#�0���� +������!�������4������,�E0��� ������������������!��"��������������"��/�F � ����� ������2���#������"�!���!��������������������#��/��/�#�!��� ���������!�"������,G#���������/�����!�����/����������$�����������#����� "������ ��������#�0����#���"�*��������������,�-#��HI1�����������+���0��#�!��#������������2 ��+�+ "���!�������#��#���2"������������,�-#������F ������������+ ��������#�����#����������������#���*0�������������$��������������#���"�!���,�6787J:;KLMNOPQ�����Q�����R���"�/�����������������/"�*����������������S0�.��*��5������������������������$���������+" ��F � ��T���� ��#� "��+��4�2��������#�!��0�����#��$�" ����������������#�������,�E0��#��$�" ������������$����""�����������#�������0�.��*��5����������������������#����� ���"��#�$������""�������#������������,�E0��#��������"�!"�����2*2"��������#�������F � �����������/���!��"�����������#��#����������"����$�����00������,E0��� �#�$�� ��F ��������������/ � ��$�" ����� �#����UVWXYWZXYWWXY[Z\���� �����������#������������������$��������2�� ���/��#�������������.,�B���/��#���� �����] _a�%&ba������c_&d���� ����������#�������������$��������0�����$�" ������0����� �*�����$��$�" ��,�H����������� 2"��"��4������������� �����0����$�" ���2��#�"��/���������""����#����#��� ������$�" �,�e��#��0��#����� ++��������$��/���$�" �,�f�!�$�����#����������$������������ �#�0�����������������/�����/�$����"�������/�$����������.,�@����.��+"����� ����� ���������������$���������0�2�������#�"���.+������gh*2���$�" ��,G#����#��$�" ��������������!���������#���"�������,�G#����� ��������������0���/�$�� ����������������� ����������������������������������� !"#"�$��%��&�'�(����)&��������������*��������+�,�#���&���*&������$�&*��������&%�����������-'./0/12345567892:4;2<;6:2=>:>2?:@AB:A@;C���������&*����DD����&���&��%�&&���D���)��������%����'E F��GH�I���JI�� '�K�&L������M�$�N�)���O����%%����)���P��������-'�Q�����$�N�)R��O��&��)-��*�%�����-�$&��$�N�)R�&����������R��O��L�%S���'E TJH��UH��V�HW��X��J��V�Y�Z[� '�K�&L������M���O���&��S�&������������R��*���%%����)��-����������)���%&�������-�%���D��D���O�'�\��D��������������P��������-&������%&��������-��))��D���)�)������D����*�����)����D���*�����&�'�\$�-&�%���D��������-�������%��&����$�N�)��)����%�����]����_����-&��%&��)�����������������)�N����&�����P����'�\$�-&���������%��&�����$����)���������)&*���������-&�%���a����L�������*����&���P�������)�����%��$&�����P���������'�\$������%&��R�&��)�*�-���������)��)��&$����*��������)�-&������&$������������D���)�)����R��D����*�$�&*�����*�))����������&%�����������-�*�-����$�����'E TH���V� ��[J�[�� '�Q�����P������$�����)����%&*���&��������L��)�%������&�)���&��������&%�����������-��$�����&�)���������L�%�$��)'�\$������%&���&��)���������)���&��������%��)��a������&��������NL�%��)�������������*����&N�������&�����b�%��&��c'd'E eHV�Zfgh�Y����Z��h��i�iH�f� j�h����������g���ifZZfHg��g��f� '�\$�-&��)&��&����)�����-��&%���&�������������&%�����������-�������L�����*�*&�-'�\$�-&��)&���)�����-��&%���&�����-���)�$$�������LL�&�%��������-&��)&��&�����)��&�*�%������)���'�b��������%Sk�l��������&�����R�������������L�%S�)����&�_R����'E �Hii�gV�g�i� �H��H�JHV� �W�Hi���WfZ�'�K�&L���-M������������������D��&��$�N�)������'�m��)������D�$�&*���$�������)�������&&S��L�����%&**��)��&�&L%&)������������&%�����������-�����D�����%&**��)�����������D���)�N'n&��%���%�������������-�&$����)���������L&�����&�&�a�%���������&������o��L'�p�&��l���%qqK'./r23@;>:7892s;t2uvw;62t7:42xyz{|{}n&��%���%�����������-L�������D�����#~��+��������*���'��&���N�*L����-&��*�-����������Q������%������%&�$�D���)����%&*L���R��*���&��������]d�����&��_R����&L����)�'�\������&D�-&���&��)�)�$������*�%�&�$&������&L����)���)�����)���&�����$&�������-L������&������b�*L���'_'

Page 25: SystemVerilog for Verification

������������� ��������� ���� ����������������� !"�#$%�"�&'��!��( )�$%�*� $�)+,,-./0-1234/56-789/2:02;4<2-.=>?@A-B:02;4<2-.=CAD-326-E:.=>?@AFGHIJ:.=CAD-5KLMN-5KLOPQRSTUVWTXRYTVWUZZ[T\VWUY]XTUTXW_TY[WaT[RSTUVWTbScYTWVdRVe]XTYWfYTcSgcY]YSY]RXhTiXj[cYWekWV]ZRT[RST\VWUYWTUTXW_TY[WT_]YlTYlWTdRZZR_]XT\RmWhTnl]cTgRRoTScWcTYlW\RXpWXY]RXTYlUYTScWVqmWd]XWmTY[WcTScWTYlWTcSdd]fTrsthu��������������� !"�#$%�"�&'���$%��'�&��*� $�)+,,-v2w->9782x1234/56-789/2KM3Mx2823-.=>?@A-y-BP89K202;-326-E.=>?@AFGHIJ-5K326L8P5K326L8-5KLMN-5KLOPiXTWXWVUZzTj[cYWekWV]ZRTZWYcT[RST\R[TgWY_WWXTYlWcWTgUc]\TY[WcT_]YlTXRT_UVX]XzW]YlWVTWfYWXm]XTRVTYVSX\UY]XTpUZSWcT]dTYlWVWT]cTUT_]mYlTe]ceUY\lh{RYWTYlUYT|}~}��t�~TUXmTt�|����TcYUYWeWXYcT\UXTgWTSYT]XTUTU\oUWTcRTYlUYTYlW[\UXTgWTclUVWmTU\VRccTYlWTmWc]XTUXmTYWcYgWX\lzTUcTclR_XT]XTjW\Y]RXT�h�h�XWTRdTYlWTeRcYTScWdSZTY[WcT[RST\UXT\VWUYWT]cTUXTSXc]XWmzT�qcYUYWz��qg]YT]XYWWVhT�RcYTpUZSWcT]XTUTYWcYgWX\lTUVWTRc]Y]pWT]XYWWVcTcS\lTUcd]WZmTZWXYlTRVTXSegWVTRdTYVUXcU\Y]RXcTVW\W]pWmzTUXmTcRTlUp]XTUc]XWmT]XYWWVT\UXT\UScWTVRgZWechT�SYTYlWTmWd]X]Y]RXTRdT���tT]XTUU\oUWTRdT\ReeRXTmWd]X]Y]RXcTcRTYlUYT]YT\UXTgWTScWmTUX[_lWVWT]X[RSVTc]eSZUY]RXh��������������#$%$&$)%�)#��4<889K202;-O48-E�GHIJ-�4<8P----,,-��FO48-�<746<20-�F78M8289K202;-4<8-�<746<20-�4<8P--,,-A��4�M/2<8-02;4<4845<nlWTc[XYUfTdRVTmWd]X]XTUTXW_TUVVU[TY[WT]cTXRYTRgp]RSchTQRSTXWWmTYRTSYTYlWTUVVU[cSgc\V]YcTRXTYlWTXW_TXUeWhTjUe ZWT�h��T\VWUYWcTUTXW_TY[WzT�����s}~~}��zT_l]\l]cTUTd]fWmTUVVU[T_]YlT�TWZWeWXYchTiYTYlWXTmW\ZUVWcTUXTUVVU[TRdTYl]cTY[WTUXmT]X]Y]UZ]�WcT]Yh ����������������� ��������������������� !"�������#�$#��%&'()(*+,-%+*,.()/0110&23245*,.()/0110&2+*25,-,%,06+7(8,-++*91(0:;+<*23,4=++++*23,4+>+,5(-)��?@�A���$!"B������C� !"����$�DE$D����FGHIJKILMHINOPPHQLIROSOLTLOJGQIJKIUHVORJPIOQILMHIRTWXIJKIYTLTIQLVZWLZVHQ[I\GI]QLHSUHV_ORJPIJZIWTGIWVHTLHITIQLVZWLZVHIZQOGPILMHIabcdaIQLTLHSHGLeIQOSORTVILJIfMTLIOQTgTORTNRHIOGIh[IiJfHgHVeITIabcdaIMTQIjZQLITIQZNQHLIJKILMHIKZGWLOJGTROLIJKITIWRTQQeTGYIQJIZQHITIWRTQQIOGQLHTYIKJVIJZVILHQLNHGWMHQeITQIQMJfGIOGIhMTk[I�[IlZQLITQITIUHVORJPSJYZRHIWJSNOGHQINJLMIYTLTImQOPGTRQnITGYIWJYHImTRfTQoOGOLOTRINRJWXQIkRZQIVJZLOGHQneITWRTQQIWJSNOGHQIYTLTITGYIVJZLOGHQILJISTXHITGIHGLOLILMTLIWTGINHIHTQORIYHNZPPHYITGYVHZQHY[IpIabcdaIjZQLIPVJZkQIYTLTIKOHRYQILJPHLMHV[IqOLMJZLILMHIWJYHILMTLISTGOkZRTLHQLMHIYTLTeIJZITVHIJGRIWVHTLOGPIMTRKIJKILMHIQJRZLOJG[]OGWHITIabcdaIOQIjZQLITIWJRRHWLOJGIJKIYTLTeIOLIWTGINHIQGLMHQOrHY[I\KIJZIfTGLILJISJYHRTIWJSkRHsIYTLTILkHeIQZWMITQITIkOsHReIOGIJZVIYHQOPGIWJYHeIkZLIOLIOGITIabcda[ItMOQIWTGTRQJINHIkTQQHYILMVJZPMISJYZRHIkJVLQ[IugHGLZTRReIfMHGIJZIfTGLILJIPHGHVTLHIWJG_QLVTOGHYIVTGYJSIYTLTeIRJJXILJIWRTQQHQ[��?@�?�A���$!"B���abcda��"����v�w�x#��yJZIWTGIWJSNOGHIQHgHVTRIgTVOTNRHQIOGLJITIQLVZWLZVH[I]TSkRHIz[{|IWVHTLHQITIQLVZWLZVHWTRRHYI}~���ILMTLIMTQILMVHHIZGQOPGHYINLHQIKJVIVHYeIPVHHGeITGYINRZH[������������A���$!"B����!"B����!����$#���%1�:%+�7,%+3���4+1�+8�+75�+',.(65tMHIkVJNRHSIfOLMILMHIkVHWHYOGPIYHWRTVTLOJGIOQILMTLIOLIWVHTLHQITIQOGPRHIkOsHRIJKILMOQLkH[ItJINHITNRHILJIQMTVHIkOsHRQIZQOGPIkJVLQITGYIVJZLOGHQeIJZIQMJZRYIWVHTLHITIGHfILkHOGQLHTYeITQIQMJfGIOGI]TSkRHIz[{�[������������x����!�����%1�:%%&'()(*+�%1�:%+�7,%+3���4+1�+8�+75�+',.(6/�5',.(6/�+�&/',.(65�QHILMHIQZKKOsI���IfMHGIYHWRTVOGPITIabcda[ItMOQISTXHQIOLIHTQOHVILJIQkJLIZQHV_YHKOGHYILkHQeIQOSkROKOGPILMHIkVJWHQQIJKIQMTVOGPITGYIVHZQOGPIWJYH[

Page 26: SystemVerilog for Verification

�������������� �������������� �������������������� ���!�"#$�#"%&'()*+,)+--./,)0(12.314)5+1(4-)2')+)-26(*2)7(-2)1.84)+,)+66+9:)4.2;46).,)2;4)<4*1+6+2.','6).,)+)36'*4<(6+1)+--./,04,2=)>(-2)-(66'(,<)2;4)5+1(4-)?.2;)+,)+3'-26'3;4)+,<@6+*4-:)+-)-;'?,).,)A+0314)B=CD=!�EF�%���GH������������ ���I�"#$�JKJLJMNOPQRJKOOLSTQUQVOWLXYZLO[JKLOM\OOOOOOOOOOOOOOOOOOOPSLQOP\OOOOOOOOOOOOOOOOOOOW]XLJKLOZ\OOOOOOOOOOOOOOOOOOOJKLOU\_OSaWLXYZLaW\OOSaWLXYZLaWOWLObOc[dec]MMMMaMMMMUfOOOOOOOOOOOOOOOOOOOOOOgc]PPfOOOOOOOOOOOOOOOOOOOOOOhic]ZZZZfOOOOOOOOOOOOOOOOOOOOOOdec]UUUUaUUUU_\OOjUJWTNMSklWLXObOmnOmnOmnOmnOlfOWLoMfOWLoPfOWLoZfOWLoUp\QKU�����G�q�r�� ���s��t��tu�!%v%"���wxF%Iy,);+6<?+64:)2;4).,2463642+2.',)'z)+)-42)'z)@.2-).,)+)64/.-246)0+9)<434,<)',)2;4)5+1(4)'z'2;46)@.2-=){'6)4|+0314:)+)36'*4--'6).,-26(*2.',)0+9);+54)0+,9)1+9'(2-)@+-4<)',)2;4'3*'<4=)y004<.+24}0'<4)'346+,<-)0./;2)-2'64)+)1.246+1)5+1(4).,)2;4)'346+,<)z.41<=~;.-)5+1(4)0+9)@4)<4*'<4<)<.zz464,219)z'6).,24/46).,-26(*2.',-)2;+,)z'6)z1'+2.,/)3'.,2.,-26(*2.',-=)A+0314)B=C�)-2'64-)@'2;)2;4).,24/46)�)+,<)2;4)64+1)�).,)2;4)-+04)1'*+2.',=!�EF�%���G��sI�� �LSTQUQV��t�$"%��%���#��t�LSTQUQVOYKJKO[OJKLOJ\OXQMNOV\O_OKYaY\KYaYOYK\YKoVObO�o�\O��OWQLO�MNYQOJKOVNMLJKROTJKLOV XML�-4)2;4)-(zz.|)����)?;4,)<4*1+6.,/)+)(,.',=�,.',-)+64)(-4z(1)?;4,)9'()z64�(4,219),44<)2')64+<)+,<)?6.24)+)64/.-}246).,)-4546+1)<.zz464,2)z'60+2-=)�'?4546:)<',�2)/')'546@'+6<:4-34*.+119)7(-2)2')-+54)040'69=)�,.',-)0+9);413)-�(44�4)+)z4?)@924-'(2)'z)+)-26(*2(64:)@(2)+2)2;4)4|34,-4)'z);+5.,/)2')*64+24)+,<)0+.,2+.,+)0'64)*'031.*+24<)<+2+)-26(*2(64=)y,-24+<:)0+84)+)z1+2)*1+--)?.2;)+<.-*6.0.,+,2)5+6.+@14:)+-)-;'?,).,)A4*2.',)D=�=�=)~;.-)�8.,<�)5+6.+@14.,<.*+24-)?;.*;)2934)'z)26+,-+*2.',)9'();+54:)+,<)2;(-)?;.*;)z.41<-)2')64+<:)?6.24:)+,<6+,<'0.�4=)yz)9'()7(-2),44<)+,)+66+9)'z)5+1(4-:)31(-)+11)2;4)@.2-:)(-4)+)3+*84<)+66+9)+-<4-*6.@4<).,)A4*2.',)B=B=� ����������������� ������������������������� !"#$%&'%()*+,-.**+/#-"+0-&+(%-1+2$(+*-)2-3+/-4)$#-.(%-*.)5-+0$-)2-&%&+("-4"-0#)2,6.17%5-#$(01$0(%#8-9-6.17%5-#$(01$0(%-)#-#$+(%5-.#-.-1+2$),0+0#-#%$-+:-4)$#-/)$3-2+020#%5-#6.1%8-;3%-<=>?@=-:+(-.-6)A%*-)2-!.&6*%-�8BC-0#%5-$3(%%-D.*0%#E-.25-#+-)$-)##$+(%5-)2-$3(%%-*+2,/+(5#E-%D%2-$3+0,3-)$-+2*"-2%%5#-$3(%%-4"$%#8-F+0-1.2-#6%1):"-$3.$)$-#3+0*5-4%-6.17%5-)2$+-$3%-#&.**%#$-6+##)4*%-#6.1%8��GHI�������������� ��������JKLMNMOPQJRSTJPLUTVMNPWXYJPZ[\]PR_P_PXabPLYcMdeLeQaLYcMdeLeQPfKeLYcMdag.17%5-#$(01$0(%#-.(%-0#%5-/3%2-$3%-025%(*")2,-4)$#-(%6(%#%2$-.-20&%()1.*-D.*0%E-+(/3%2-"+0-.(%-$(")2,-$+-(%501%-&%&+("-0#.,%8-h+(-%A.&6*%E-"+0-1+0*5-6.17-$+,%$3%(#%D%(.*-4)$i:)%*5#-$+-&.7%-.-#)2,*%-(%,)#$%(8-j(-"+0-&),3$-6.17-$+,%$3%(-$3%-+61+5%.25-+6%(.25-:)%*5#-$+-&.7%-.-D.*0%-$3.$-1+2$.)2#-.2-%2$)(%-6(+1%##+(-)2#$(01$)+28�����k�lmnn opq�r��s��p���������p��tpH��������������� u3%2-"+0-.(%-$(")2,-$+-13++#%-4%$/%%2-6.17%5-.25-026.17%5-#$(01$0(%#E-1+2#)5%(3+/-$3%-#$(01$0(%-)#-&+#$-1+&&+2*"-0#%5E-.25-$3%-.*),2&%2$-+:-$3%-%*%&%2$#8-v:-"+06*.2-+2-&.7)2,-.,,(%,.$%-+6%(.$)+2#-+2-$3%-#$(01$0(%E-#013-.#-1+6")2,-$3%-%2$)(%#$(01$0(%E-.-6.17%5-#$(01$0(%-)#-&+(%-%::)1)%2$8-w+/%D%(E-):-"+0(-1+5%-.11%##%#-$3%)25)D)50.*-&%&4%(#-&+(%-$3.2-$3%-%2$)(%-#$(01$0(%E-0#%-.2-026.17%5-#$(01$0(%8-;3%5)::%(%21%-)2-6%(:+(&.21%-)#-,(%.$%(-):-$3%-%*%&%2$#-.(%-2+$-.*),2%5-+2-4"$%-4+025i.()%#E-3.D%-#)x%#-$3.$-5+2y$-&.$13-$3%-$"6)1.*-4"$%E-+(-3.D%-/+(5-)2#$(01$)+2#-0#%5-4"6(+1%##+(#8-z%.5)2,-.25-/()$)2,-%*%&%2$#-/)$3-+55-#)x%#-)2-.-6.17%5-#$(01$0(%(%{0)(%#-%A6%2#)D%-#3):$-.25-&.#7-+6%(.$)+2#8�����|}H��lnp~�� onp;3%-6(+*):%(.$)+2-+:-5.$.-$"6%#-)2-!"#$%&'%()*+,-&%.2#-$3.$-"+0-/)**-2%%5-$+-1+2D%($4%$/%%2-$3%&8-v:-$3%-*."+0$-+:-$3%-4)$#-4%$/%%2-$3%-#+0(1%-.25-5%#$)2.$)+2-D.().4*%#.(%-$3%-#.&%E-#013-.#-.2-)2$%,%(-.25-%20&%(.$%5-$"6%E-1.#$-4%$/%%2-$3%-$/+-D.*0%#8-v:$3%-4)$-*."+0$#-5)::%(E-#013-.#-.2-.((."-+:-4"$%#-.25-/+(5#E-0#%-$3%-#$(%.&)2,-+6%(.$+(#$+-(%.((.2,%-$3%-4)$#8�������|m������o��l� �;3%-#$.$)1-1.#$-+6%(.$)+2-1+2D%($#-4%$/%%2-$/+-$"6%#-/)$3-2+-13%17)2,-+:-D.*0%#8-F+0#6%1):"-$3%-5%#$)2.$)+2-$"6%E-.2-.6+#$(+63%E-.25-$3%-%A6(%##)+2-$+-4%-1+2D%($%5-.##3+/2-)2-!.&6*%-�8��8-�+$%-$3.$-'%()*+,-3.#-.*/."#-)&6*)1)$*"-1+2D%($%5-4%$/%%2$"6%#-#013-.#-)2$%,%(-.25-(%.*E-.25-.*#+-4%$/%%2-5)::%(%2$-/)5$3-D%1$+(#8-

Page 27: SystemVerilog for Verification

������������� � ��������������������� �!��"����������#������"��$�%����&�&�%�'()*'+,-./*,+'*0*'()*123454*6*4537+*88*9.:)*':*;<)';(./,*0*,-./12=>7+*********88*9.:)*':*;<)';(./�������?$��@A����&���%�BCDEFGHIJKLELIMNOEPQRSTOEIUUVWMEGVXENVELCDLYEZV[EVXN\VZ\]VXHFMEIUXDM_EDDEDLNKVHa_ba_ EZV[EIHEDcdUIHINKVHEIHFEDcIJdUDEWKNCEDHXJD[INDFENGdDM_�����e��������� �f�������%gCDHEXMDFEVHENCDE[KhCNEMKFDEVZEIHEIMMKhHJDHNOENCDEMN[DIJKHhEVdD[INV[MEiiEIHFEjjENIYDIHEDcd[DMMKVHOEMN[XLNX[DOEV[EI[[IGOEIHFEdILYMEKNEKHNVEIEMN[DIJEVZE]KNM_EBCDEjjEVdD[INV[MN[DIJMEFINIEZ[VJEUDZNENVE[KhCNEWCKUDEkkEMN[DIJMEZ[VJE[KhCNENVEUDZNOEIMEMCVWHEKHEIJdUDa_la_EmVXELIHEIUMVEhKDEIEMUKLDEMKnDOEWCKLCEKMEXMDFENVE][DIYEXdENCDEMVX[LDE]DZV[DE]DKHhMN[DIJDF_EmVXELIHEHVNEIMMKhHENCDE]KNEMN[DIJE[DMXUNEFK[DLNUGENVEIHEXHdILYDFEI[[IG_EoHMNDIFOXMDENCDEMN[DIJKHhEVdD[INV[MEVHENCDEUDZNEMKFDEVZEIHEIMMKhHJDHNENVEXHdILYENCDE]KNEMN[DIJKHNVEIHEXHdILYDFEI[[IG_������������p�%�&�%������� ����������'(')'./*q-r'(**'()*s+**q')*tuv4w*qx*rt=wx*yt=w*0*1z{1s.x*{1sqx*{1s9x*{1s|}+**q')*tuv4w*~x*,x*:x*)+**s*0*z*��*zy}}+*********88*4.4q494|*6*<.9�*.,,.�*'();*'()**s*0*z*��*zy}}+*********88*q4�4|4�4*,-�-,:-*q'):**s*0*z*��*q�)-*zy}}+****88*4|494q4.*,-�-,:-*q�)-:**r*0*z*��*q�)-*zy}}+****88*4|x*49x*4qx*4.*�(<.9�*'();*.,,.�**q*0*z*��*z{1q4433�4343}}+***88*3434�3344*,-�-,:-*q'):**q*0*z*��*=*z{1q4433�4343}}+*88*4343�4433*,-�-,:-*('qq/-**z��*z~x*,x*:x*)}}*0*y+*88*�9.))-,*y*'();*q�)-:**s*0*z��z)x*:x*,x*~}}+**88*�.)s-,*q�)-:*'();*s-(|mVXELVXUFEFVENCDEMIJDEVdD[INKVHMEWKNCEJIHGELVHLINDHINKVHEVdD[INV[MOE��OE]XNENCDMN[DIJKHhEVdD[INV[MEI[DEJV[DELVJdILNEIHFEDIMKD[ENVE[DIF_oZEGVXEHDDFENVEdILYEV[EXHdILYEI[[IGMOEXMDENCDEMN[DIJKHhEVdD[INV[ENVELVHD[NE]DNWDDHI[[IGMEVZEFKZZD[DHNEDUDJDHNEMKnDM_E�V[EKHMNIHLDOEGVXELIHELVHD[NEIHEI[[IGEVZE]GNDMENVEIHI[[IGEVZEWV[FM_EmVXELIHEXMDEZKcDFEMKnDEI[[IGMOEFGHIJKLEI[[IGMOEIHFE�XDXDM_EIJdUDEa_l LVHD[NME]DNWDDHE�XDXDMOE]XNEWVXUFEIUMVEWV[YEWKNCEFGHIJKLEI[[IGM_E�[[IGEDUDJDHNMEI[DIXNVJINKLIUUGEIUUVLINDFEIMEHDDFDF_ ����������������� �������������������� !�"�#� $����%&�&�'�$! (�' ����!�"������ ��)*)+),-./01)*../)+.234567.892:7.;.<3=>[email protected]=>?4=DEFG../)+.2D567../92:7G..HH.IJ*K0L+.8JLM.,LL,N.+J./N+0../9.;.<.OO.<[email protected]=.DE..HH.IJ*K0L+./N+0.,LL,N.+J.8JLMP../9.;.<E>?QEC.E>?D=C.E>?4BC.E>[email protected].;.<.OO.</9FFG..HH.QED=.4BA@0*M RSTUVVUWSVXYZ[\]S_]WSYZ][VXWaSb]Z]]WS[[cYSXYSVXYV[ZT_]d[[cSYebYTXfZYgSh_]SUdSYebYTXfZSijklmSXWS[WS[[cSd]Tn[[ZXUWXYS]oeXp[n]WZSZUSiqrjkkmsSWUZSijkkrqmgStXWT]SV[WcS[[cYS[]d]Tn[]dSXZ_SZ_]SUdSYebYTXfZYSiuvwurxyzmsSYZ][VXWaSZ_]VSZU[WS[[cSXZ_SZ_]SYebYTXfZSi{v|}mSUendS]YenZSXWSZ_]S]n]V]WZY]WdXWaSefSXWS]p]Y]SUd]gS~X\]XY]sSYZ][VXWaS[WSeWf[T\]dS[[cSd]Tn[]dS[YS�v�i�rqm�{��ijkkrqmSZUSZ_]Sf[T\]dS[[cSd]Tn[]dS[YS�v��i�rqm�ijkkrqm��{�SXnnYT[Vbn]SZ_]SUd]SU�Sp[ne]YgSh_]STU]TZSd]Tn[[ZXUWS�US[Sf[T\]dS[[cSU�SbcZ]YSXY�v��ijkkrqm�i�rqm��{�g�UeST[WS[nYUSeY]SZ_]SYZ][VXWaSUf][ZUSZUSf[T\S[WdSeWf[T\SYZeTZe]YsSYeT_S[YS[WRh�ST]nnsSXWZUS[WS[[cSU�SbcZ]YgS�WSt[Vfn]S�g��sS[SYZeTZe]SXYSYZ][V]dSXWZUS[dcW[VXTS[[cSU�SbcZ]YsS[WdSZ_]WSZ_]SbcZ]S[[cSXYSYZ][V]dSb[T\SXWZUSZ_]SYZeTZe]gS

Page 28: SystemVerilog for Verification

������������� ����������������������� �!��"������#��$%�$�����&�����'�"��(�#������� ���������#)*)+),-./01)*..+230405.6+789+.:)*+.,;.................../2+0./;...................6<=7+)*+.9;...................)*+.4;>.?2@6+789+@6;..?2@[email protected]+.A.B:CDB<,,,,@,,,,E......................FB<//E......................GHB<9999E......................CDB<4444@4444>;../2+0./IJ;..KK.L=M07+.57=?.6+789+.+=./2+0.,77,2../.A.:.NN.:6+>>;......KK.:,,.,,.,,.,,.//.99.99.44.44.44.44>..KK.L=*M07+.57=?./2+0.,77,2.+=.,.6+789+../.A.B:FB<GGE.FB<DDE.FB<CCE.FB<OOE.FB<PPE.FB<HHE.FB<QQE........FB<FFE.FB<RRE.FB<,,E.FB<//>;..6+.A.:.NN.:/>>;......KK.6+.A.GGDDCCOOE.PPE.HHQQE.FFRR,,//0*4��S��T�$������&�U'��#VWXYZW[W\] WZ_Wa[bcWde[bY][f_gW[Y[]dW[Wh[_iZYdj[kfWlZ[mnYo_n[diYcW[ld[YYoZY_ae[_\a[l\[Yd[i_dWd[_ZW[gldlonW[l\[fW[aWo]mmWZj[p\[W\] WZ_lY\[iZW_Wd[_[dZY\mg_Zl_onW[bcW[f_[ld[nllWa[Y[_[dW[YX[dcWilXlWa[\_Wde[d]if[_d[fW[l\dZ]ilY\YciYaWd[YZ[d_W[_ifl\W[g_n]Wdj[qYZ[Wh_cnWe[fW[\_Wd[prre[stuve[YZ[wtkx_yW[bY]Z[iYaW[W_dlWZ[Y[zZlW[_\a[_l\_l\[f_\[lX[bY][f_a[]dWa[nlWZ_nd[d]if[_d{|}~�[YZ[_iZYdj[p\YfWZ[_nWZ\_lgW[XYZ[aWXl\l\m[iY\d_\d[ld[_[c_Z_ WWZj[kfWdW[_ZWXl\W[XYZ[l\algla]_n[g_n]Wde[o][_\[W\] WZ_Wa[bcW[_]Y _li_nnb[mlgWd[_[]\l�]W[g_n]WY[WgWZb[\_W[l\[fW[nldjkfW[dlcnWd[W\] WZ_Wa[bcW[aWin_Z_lY\[iY\_l\d[_[nld[YX[iY\d_\[\_Wd[_\a[Y\W[YZYZW[g_Zl_onWd[_d[dfYz\[l\[�_cnW[�j��j[kfld[iZW_Wd[_\[_\Y\b Y]d[W\] WZ_WabcWe[o][l[i_\\Y[oW[]dWa[XYZ[_\b[YfWZ[g_Zl_onWd[f_\[fW[Y\Wd[l\[fld[aWin_Z_lY\j��������������#��������$������&��'��0*8?.:���E.����E.�����>.9=-=7;�\[mW\WZ_n[bY][z_\[Y[iZW_W[_[\_Wa[W\] WZ_Wa[bcW[Y[W_dlnb[aWin_ZW[]nlcnWg_Zl_onWde[WdcWil_nnb[lX[fWdW[_ZW[]dWa[_d[ZY]l\W[_Zm] W\d[YZ[Ya]nW[cYZdj[�Y][XlZdiZW_W[fW[W\] WZ_Wa[bcWe[_\a[fW\[fW[g_Zl_onWd[YX[fld[bcWj[�Y][i_\[mW[fW[dZl\mZWcZWdW\_lY\[YX[_\[W\] WZ_Wa[g_Zl_onW[zlf[fW[o]ln�l\[X]\ilY\[������e[_d[dfYz\l\[�_cnW[�j��j ����������������� ����������������������� ��!��"##$%&'()'$*()($)+,'$-.&$/(01'2$34$54$6)+,'*'-$'718$9:;:<4$=>%?=>4$:=@>A$-282)()'B'C-282)()'B'$,2)()'4$72)()'C$$$##$*'D0(&'$)+,'*$/(&E(F0'2E7E)E(0$F'GE7$$D(2'$H,2)()'I$$$$:=@>J$$$$72)()'$K$:;:<C$$$$##$*()($(22EG78'7)$$$$:;:<J$$$$72)()'$K$=>%?=>C$$$$*'-(10)J$72)()'$K$:=@>C$$'7*D(2'$$L*E2,0(+HM;'N)$2)()'$E2$O2M4$$$$$$$$$$$72)()'P7(8'HIIC$$$$$##$=E2,0(+$2+8F.0ED$2)()'$7(8''7*QRSTUVSTRWXXYZT[\]T_VSTaSbcdeYfTdTSWgSedUSaTUhiSjT��k��k�l�mn�n�o���������� �p����"qVSTdbUWdcTrdcWSRTaSXdWcUTUsTYUSfSeRTRUdeUYfTdUTtTdaTUVSTYbeSdRSjTusWTbdTbVssRShsWeTs_TSWgSedUSaTrdcWSRjTqVSTbsaSTYTvdgicSTwjxyTWRSRTUVSTaSXdWcUTrdcWSTsXTtTXsez{z|}TUVSTwTXseT~���~�}TdaT�TXseTz~��j����������������nm!n�o���������� ������")+,'*'-$'718$9:;:<4$=>%?=>K64$:=@>A$-28)+,'B'C�WgSedUSaTbsRUdUR}TRWbVTdRTz{z|TYTvdgicSTwjxy}TXsccs_TUVSTRdgSTRbsiYfTeWcSRTdRrdeYd�cSRjT�sRS�WSUch}TYXThsWTWRSTUVSTRdgSTdgSTYTRSrSedcTSWgSedUSaTUhiSRT�RWbVdRz{z|TYTaYXXSeSUTRUdUSTgdbVYSR�}TUVShTVdrSTUsT�STaSbcdeSaTYTaYXXSeSUTRbsiSRTRWbVdRTgsaWcSR}TiesfedgT�csb�R}Tidb�dfSR}TesWUYSR}TseTbcdRRSRj�TSWgSedUSaTUhiSTYRTRUseSaTdRT���TWcSRRThsWTRiSbYXhTsUVSe_YRSj�STbdeSXWcT_VSTdRRYfYfTrdcWSRTUsTSWgSedUSaTbsRUdUR}TdRTUVSaSXdWcUTrdcWSTsXTdT���TYRTtjT�TvdgicSTwjx�}T��������TYRTYYUYdc�Y�SaTUsTt}T_VYbVTYRTsUTdTcSfdcT�������\]TrdeYd�cSjTqVYRT�SVdrYseYRTsUTdTUsscT�WfT�TYUTYRTVs_TUVSTcdfWdfSTYRTRiSbYXYSajTvsTdc_dhRTRiSbYXhTdTSWgSe�dUSaTbsRUdUT_YUVTUVSTrdcWSTsXTt}TdRTRVs_TYTvdgicSTwjx�}T WRUTUsTbdUbVTUVSTUSRU�SbVSeesej

Page 29: SystemVerilog for Verification

������������� ���������������������� �!�"���#$!#�%���&���� �'�(��&�")*+,-,./,012/3456789:;/7<=>?@;/8A56@B/CD-E0FGH,ICD-E0FGH,/+CJE)EC0I����������K�L����� �!�"���#$!#�%���&���� �'�(��&�")*+,-,./,012/3MN@H>9O;/456789:;/7<=>?@;/8A56@B/CD-E0FGH,ICD-E0FGH,/+CJE)EC0I��P����Q�& #��"�$���R�&���� �'�S!��"TUVWXYZX[\]_a[b\cXVVXbX[d]efghW\gVe[VWXaa\g_Wi[f_iXgfYX[dWXcWUaXVjk lmnopqr[XWf[gVWiXe\[VWYXYsX[eWiXXgfYX[dW\gjk tuopvw[XWf[gVWiX]dVWYXYsX[eWiXXgfYX[dW\gjk xyzpvw[XWf[gVWiXgX{WX]XYXgWeWiXXgfYX[dW\gjk xyzpq|r[XWf[gVWiX}WigX{WX]XYXgWjk ~ny�qr[XWf[gVWiXa[Xb\fVX]XYXgWeWiXXgfYX[dW\gjk ~ny�q|r[XWf[gVWiX}Wia[Xb\fVX]XYXgWj�iXefghW\gVxyzpdgc~ny��[dad[fgc�iXgWiXU[XdhiWiXsX_\gg\g_ [Xgc eWiXXgfYX[dW\gj�WXWidWWiX[X\Vg XdVU�dUW�[\WXdl�n�] aWidWVWXaVWi[f_id]]YXYsX[VedgXgfYX[dWXcWUaX\eUffVXdgXgfYX[dWXc] abd[\ds]Xj� f_XWWiXVWd[W\g_YXYsX[�\WilmnopdgcWiXgX{WYXYsX[�\Wixyzpj�iXa[s]XY\Vh[XdW\g_dhY�ad[\Vg e[ WiX e\gd]\WX[dW\g Wi[f_i WiX ] aj�e Uf fVX WiX WXVW��nnyxp����nnyxp�tuop�WiX] aXgcVsXe[XfV\g_WiX]dVWbd]fXj�eUffVX��nnyxp����nnyxp�tuop�Uf_XWdg\ge\g\WX] a�dVxyzpgXbX[_\bXVUfdbd]fXWidW\V_[XdWX[WidgWiXe\gd]bd]fXj�i\V\VV\Y\]d[WW[U\g_WYd�Xdl�n�] aWidWVWXaVWi[f_iWiXbd]fXV�j��\Wi\gcX{cXh]d[XcdV�mp������j�iX] a�\]]gXbX[X{\W�� fhdgfVXd��jjj��mty] aWVWXaWi[f_id]]WiXbd]fXV�dVVi�g\gTdYa]X�j��j ����������������� ������������������������� !"���������"�� ���#����$� %&'()*)+,)-./,01234,56724,81229:,;<=<>?)@;<=<>?),;<=<>@;<=<>,A,;<=<>B+C>D&@*<,,E)FC-,,G*CD(=H'IJK<=<>,A,LM*NLDJ4,;<=<>4,;<=<>B-H/)O@,,;<=<>,A,;<=<>B-)P&@,,)-*QRC=),I;<=<>,SA,;<=<>B+C>D&O@,,NN,3<-),H&,Q>H(TH><.-*��U��V�W!�X� ������!���#�Y !��Z�"�� ���#�[\��%]_a_bcdeffgh_bijck_kdl_jcf_afgh_mnopqrstnfcf_uvwidxckfcy_f_zced_ibck_kdl_jcf_azcjmc{e_ckacnnm|kmffickik_kdl_jcf_azcjmc{e_ndx cnckopq}mfcnmlhe_cnnm|kl_kfv~gnf_l�_jmei|ai_nkif�i}_z_j�e_fgidnfij_ckmkf_|_jzced_mkck�p��}mfidf_�hemxmfegxck|mk|f_fgh_v�knf_ca�mfj_�dmj_ngidfi_�hemxmfegxcnff_zced_filcy_gidj_cem�_fcfgidxidea{_}jmfmk|ckidftibt{idkanzced_v����������U��%%�������%�$������������� %���#���"�� ���#��\��%�&'()*)+,)-./,01234,56724,81229:,K�6�1?2@K�6�1?2,;<=<>4,;�@C-&,;@C-C&CH=,E)FC-,,;<=<>,A,5672@,,,,,,,,,NN,�)&,&<,�-<Q-,F<<*,�H=.),,;,A,;<=<>@,,,,,,,,,,,,NN,K<-�)>&,+></,)-./,&<,C-&,I�O,,;��@,,,,,,,,,,,,,,,,,,NN,�-;>)/)-&,C-&,I�O,,C+,ISG;HD&I;<=<>4,;OO,NN,KHD&,C-&,EH;�,&<,)-./,,,,G*CD(=H'IJKHD&,+HC=)*,+<>,;ALM*J4,;O@,,G*CD(=H'IJK<=<>,CD,LM*,N,LDJ4,;<=<>4,;<=<>B-H/)O@,,;��@,,,,,,,,,,,,,,,,,,NN,�,CD,<.&T<+TE<.-*D,+<>,)-./,,;�,A,K�6�1?2�I;O@,,,,,NN,9<,&'(),;R);�C-F,,G*CD(=H'IJK<=<>,CD,LM*,N,LDJ4,;<=<>4,;<=<>B-H/)O@,,)-*� _kxcee_acncbdkxfmikcnni}kmk~clhe_sv�������qrufjm_aficnnm|kf_jm|fzced_fif_e_bfzcjmc{e_v�bf_cnnm|kl_kfndxx__an�����q��j_fdjkn�v�bf_cnnm|kl_kfbcmen{_xcdn_ibckidftibt{idkanzced_�kicnnm|kl_kfmnlca_ckaf_bdkxfmikj_fdjkn�v�bgiddn_����qrucncfcnyckaf_ih_jcfmikbcmen�~gnf_l�_jmei|hjmkfnck_jjijvwidxckcenixcnff_zced_dnmk|f_q����� �¡�cnni}kmkf__�clhe_�{dffmnai_nkifaickgfgh_x_xymk|�ckanif_j_ndeflcg{_idftibt{idkanv¢ij_�clhe_�

Page 30: SystemVerilog for Verification

��������� ����� �� ���� ��� �� ������ ����� �� ��� �� ����� ���!� "����� #�� �����! �"��!��� �$���%&'()*+,-./,.-0���� ��� ��"���� $��� � ������� �� �$���1�����2� 0�� ������� 1�����2 3�$ ������ � ������ �� 3�� � �4 ������ 5� �� ���� ��!�� ������ ��"� 2�� �� ����� ��!��� � ���! �� � ���! !�������� ��! $�� !��������� 5� �� ��2��"� ��!�� ��������� 2�� ��� �� �� ��$ ��� ����� ������� � $�� 6�� ���! � ����� ������� 7���$� ������ ��8����� �� 9 �������� �� �� � �� ����2��:�! ��! �4���!�! $ �� ���������;� �$���1�����2� ��������� ��� � !������! �� � ���<�2� ��! �� ��$ ��� � ���!������ ������� ��!����� 0��� �������� ��� ������� ���$ 1�����2 ������ �� 3���6�� ���2 ���! �� �������� #�� ��� ��� � =>?@A@B � ������� ���� ����<$ �������0�� ��4 ������ �� � ?CDCE@=@D� F 1�����2 ?CDCE@=@D 3�� ������$ $��! ��! 3�������! �� ����� � � ���2�� ��!���� 1�����2��GG� �!!�! $��! ���������� � �������! ����� <�� ��������� ��� ���2 3�!��$ ���!��$���1�����2 ���� ������� �� �HIJ= ��!���� �� ����3� $�� � ��<� � "���� ���� ��� � �������:�! �� �� !��������� � �� 3���� $ �����!���� ��!��K/LMNO)%&P%)QORN/ST,U)/)VWXYZ)[/ST/\NO]X]Z] _abc]X`VWXYZadZbVW_WX efgfh`iiibXj;� ������ ����� �� "���� � �HkHI �� �������:�! 3��� �� lIl=lCk ���< �� �����!�;� �� ��4 ������� ������ m��G ���3� � �HIJ= ������ ��2�����%&'n)K.ST,U-; $�� ��"� �"�� ���! � ��� � 1�����2 D@o "���� �� � ���! � ����2 � ���������� $���������2 �� �"��� 0�� �$���1�����2 J=DlIo $�� ���!� "���� ������2� ����2�� F���!�"�!��� �������� �� � $�� p>=@� 0�� ������� � � ����2 � ���2� q ��� ���� ���! G � q��� r�� ��� ����<� s� ���� �� �� ���� �������� � �� ��! � � ����2� ��!��$ ���� � ��� �� �������� tuGv �� �2����!� w����$ �� ����2� �� !$��������$�������!� �� $�� !� �� ��"� � 3���$ � �� ������2 �� � ����� � ���� �� ����2������� ���m ���3� "������ ����2 ���������� 0�� ������ o@=�xyz ������ �� $�� ������� y� 3���� =H{??@D ������ �� ���������� ���$ � �� ����2 ��! =HkH|@D������ � ��3������ ���$� 0�� ����$ ����� }~ ��� ���! �� ������������ 0�� ��<?{=�x���z 3���� � $� ���� � ����2 � ������� �� 3���� ��� � �3��� G ��! ����������������� ���������������������������� �!���"#$"%&'"%(&%)��*+�,-�.��/���0�1�.���.��1�.��1�,1/2��/.���/��"%(&%��/���* 3456789:;<=93>?@AB958>CDEFGHIJKLMGNJKJHJOPMQRLJKMMGMSMTUVVVMTNMMWXJGYPOZ[G\LRH][__NMMMMMM MaJGYPOZbMcdM[eUf_MMWXJGYPOZ[G\HgPghRI[__NMMMM MaJGYPOZbMJRRRMMG\YiH][G\PRK[_jklMTjT_NMMM M]mOKLRMfMfjnMfjfMMGMSMoGlMTpkq TrNMMMMMMMMM MTUVVVjpkq TMMWXJGYPOZ[G\GiQGHI[slMt__NM MaJGYPOZbMVVjpMM MuIROHRMHRvYgIOIZMGHIJKLlMKgHRMwgIvOHMMMvZxPgLxIHK[WYGYIJKHw[TyGMytXTlMGlMzs__NRKXHOG{MvZxPgL[GHIJKLMvRGGOLR_NMM MpIJKHMOMvRGGOLRMHgMOMPgLMMWXJGYPOZ[T|yHbMyGTlMWHJvRlMvRGGOLR_NRKXHOG{}/����/~�-��,-������2�.���1�����.����� ����/���1�����-������-.���������/-�������/�����2��������2�/1�1����1������/��/�������1��-���,1/2���,-�.��/� ������2����� ���������"�&��%�'+�,-�.��/�����-������������/,��"��&�(%'+)�,1/2���1��/������ �!�����~�,-�.��/��1��-1�����,/12��������2�/1�1����1���������������/~����/����.��������������1�.�����/���/���1�1/-���� �!�����������/-�,1/2���������/���.��1������2�/1�1���1����������������������~��������,/12������������2������������1/-�����.��� :;�<9��6?8FF@DA9�@E>C���1�2���/-1.��,/1�-��0��.����������/1������1��/���������������~�����/,��0�1����/�� ��2����� ������������-�����,/-1���,,�1���������� �������/����-�����~/���������1������������/�~����������1�.���/������� �������/����-�����������1�.���/����.�-������1���������������1������/��������,�������/,�����������2��� ���������.���������� �������/����-������-22��./��������/�,/1.�������2��1��/���/�-����������1�.���/� ������������������/��������,�1������-�����.�����/���������������-��~��������.����/��1��/1�������/������

Page 31: SystemVerilog for Verification

���������� ��� ���������� ���������������� �������� ������!"#$%&'()$!*+!"#$,-.$/$01!0+$$$$$$$$$$$$$$$22$3"-45.$!"#67"895:;!<,-.$=$,-.>+$$$$$$$$$22$?'$0=0$/$(!*$/$,-.$=$,-.+$$$$$$$$$$$$$$$22$@'$0=0$/$A67"895:;!<!*>+67"895:;!<,-.$=$,-.$=$A1!(>+$$22$B'$0=0$/$A$C"#D$E,-8#:-#67"895:;!<A1<,-.>$=$,-.>+$$$$$22$F'$0=0$/$A$C"#D$E:8#GHIJIKLJIKMINIJLOKPJQRSMKTUVKRLWKVMIKPUKLNUQXKPHQMKYJUZOI[\K]QJMPKLNUQXKMQPVLPQUWM_HIJIKPHIKUNIJOU_KQMKOUMPKLMKQWKLXXQPQUWKa\KbMIKLKPI[YUJLJTKMVRHKLMKcdK_QPHKPHIXIMQJIXK_QXPH\KeJKTUVKRLWKLXXKLWUPHIJKNLOVIKPUKUJRIKPHIK[QWQ[V[KYJIRQMQUWKMVRHKLMfgch\KiLMPOTKQWKjTMPI[kIJQOUlKTUVKRLWKRLMPKUWIKUKPHIKNLJQLZOIMKPUKPHIKXIMQJIXYJIRQMQUW\��mn�o�� �p����jTMPI[kIJQOUlKYJUNQXIMK[LWTKWI_KXLPLKPTYIMKLWXKMPJVRPVJIMKMUKPHLPKTUVKRLWKRJILPIHQlHqOINIOKPIMPZIWRHIMK_QPHUVPKHLNQWlKPUK_UJJTKLZUVPKPHIKZQPqOINIOKJIYJIMIWPLPQUW\rVIVIMK_UJSK_IOOKUJKRJILPQWlKMRUJIZULJXMKUJK_HQRHKTUVKRUWMPLWPOTKWIIXKPUKLXXKLWXJI[UNIKXLPL\KsTWL[QRKLJJLTMKLOOU_KTUVKPUKRHUUMIKPHIKLJJLTKMQtIKLPKJVWqPQ[IKUJK[LuQq[V[KPIMPZIWRHKOIuQZQOQPT\KvMMURQLPQNIKLJJLTMKLJIKVMIXKUJKMYLJMIK[I[UJQIMKLWXKMU[IMRUJIZULJXMK_QPHKLKMQWlOIKQWXIu\KwWV[IJLPIXKPTYIMK[LSIKTUVJKRUXIKILMQIJKPUKJILXKLWX_JQPIKZTKRJILPQWlKlJUVYMKUKWL[IXKRUWMPLWPM\sUWxPKlUKUKLWXKRJILPIKLKYJURIXVJLOKPIMPZIWRHK_QPHKyVMPKPHIMIKRUWMPJVRPM\KwuYOUJIKPHIeezKRLYLZQOQPQIMKUKjTMPI[kIJQOUlKQWK{HLY\K|KPUKOILJWKHU_KPUKXIMQlWKRUXIKLPKLWKINIWHQlHIJKOINIOKUKLZMPJLRPQUWKPHVMKRJILPQWlKJUZVMPKLWXKJIVMLZOIKRUXI\ ����������� ��������� � �������������� ����������� !�������"�� #$%�����$��"����&� �����#�����"��'��!�(�"�%�)�����!�&� (�� �� $���*���$"�!�$(� �$�+�,����)-�� '�#� $���"�(���)�$�� $(��)�$��'� )�����)�$�����)�*���� ����� ���.��)�* $#�����'�$#��#��'��*�)����' *���%�����( �''������$"���#�/)�$������ $#+�0!������������.�(*#���$"� $���!�&�����$# $��� $#%��������"" � �$�����'"�.�������!�) ' ��+123��� ��������� � ���,����)-�� '�#��"�����)�$�������������$"������)�$���!��)����$"��44+�5���(�$"�('������'������� �.'�� $� "����678/'������������$������ (��������(�����!�����'������� /�.'���$"�(�$������$����)��(�" $#�.�#�+�9�������/ $(��)�$��::��$"�����/"�(��)�$��;;������������������ '�.'�� $�.�������/��$"�����/!��)�+�0!������������'�.�'��$���<=>?@��678A������)�$�%�����(�$�����������)��'�.�'��$�����)��(� $#�=@B����C7?@������/)�$�+�9� ��)�*��� ����� ������)��(�������������$"�! $ ����!���.'�(*+�5���(�$��'��������'�.�'��$�������,����)-�� '�#��$"������)�$�����(�����=@BD7BEF=%=@BGHIA%=@B6E@JG?7@%��$"�����������������& ''�'���$� $��� ��.��*+�,�)�'���+K�"�)�$����������)��!�����$�&�(�$����(��+

Page 32: SystemVerilog for Verification

������������� ������������������ ������������������� !�"�#��$%&�'($���)*�*���+*)��+'�%��$�*%$),-,.,/011234,-15136/780311,-.34391/99/:;<=>?1@A7?1BC11DD1E3F0/931,1,-1GH91@./.373-.11GH91I,-.1,J=C1,K<=C1,LLM1111111DD1N-F9373-.1,1111/99/:;,>1J1,C11DD1OPP1A81Q/0A3@1,-1.R31/99/:11@A71J1/99/:;S>C11BJTC11PH1111111111111111111111111111DD1PHUUUVR,0310HH81111@A71LJ1/99/:;B>C111111111111DD1OFFA7A0/.3111VR,[email protected],G1BJ=11YP,@80/:IZ[A7J\]PZ?1@A7MC11111DD1\]P1W1@83F,G:1V,P.R3-P15136/78031111111111111111111DD1-P10/230_ abcdbefgfdhdcfebidjkblfibjaakembnloefpblqbrasbgodblcbgbjaakpbtsfbgcfbfabeulkbavdofidbodefbaqbfidbefgfdhdcfebgcwbwabfidbcdxfblfdogflacpbsedbyz{|}{~�mb�qbrasbgcfbfajdgvdbfidbjaakblhhdwlgfdjrpbsedb�����m_idbjaakblcb�ghkjdb�m�bodgweb�ahhgcwebqoahbgbqljdbselc�bfidbqljdb���berefdhbfgeuefigfbgodbkgofbaqb�dolja������mb�qbfidb�ahhgcwbleb�sefbgbtjgcubjlcdpbfidb�awdbwadebgyz{|}{~�pbeulkklc�bgcrbqsofidobkoa�deelc�baqbfidb�ahhgcwmb�qbfidb�ahhgcwble�wacdp�bfidb�awdbwadebgb�����bfabfdohlcgfdbfidbjaakm�������� ���)�+��293/���+'�FH-.,-A3�#�����$��'�+��������,-,.,/01234,-���}|������ ¡�y¢£¤11,-.1G,03?1FC11G,031J1YGH83-IZFH77/[email protected]?1Z9ZMC11VR,031I¥YG3HGIG,03MM1234,-1111F1J1YG@F/-GIG,03?1Z\@Z?1F7PMC1111F/@31IF7PM111111ZZ511111FH-.,-A3C1111DD1¦0/-�10,-31W1@�,81.H10HH813-P111111ZPH-3Z51293/�C1111111DD1EH-31W103/Q310HH8111111UUU111111111111111111DD1§9HF3@@1H.R391FH77/-P@1R39311113-PF/@31DD1F/@3IF7PM11113-P11YGF0H@3IG,03MC3-P ������������������ ���� �������� ������������������� ������!�" �!������� ��#$%&'()*+,-$.*,*/$%0*1'$,%*2&33$%$45&,5&(4*6$57$$4*5,.-.*,42*38415&(4.9*:;$*+(.5&+<(%5,45*2&33$%$41$*&.*5;,5*,*5,.-*1,4*1(4.8+$*5&+$=*7;$%$,.*,*38415&(4*1,44(59*>38415&(4*1,44(5*;,/$*,*2$',0=*?@AA=*,*6'(1-&4)*.5,5$+$45*.81;*,.*BCDEFGHIGJKEJLM*(%*NOPQCRGOHSM=*(%*1,''*,*5,.-9*>22&5&(4,''0=*,*#$%&'()*38415&(4*+8.5*%$58%4,*/,'8$*,42*5;$*/,'8$*+8.5*6$*8.$2=*,.*&4*,4*,..&)4+$45*.5,5$+$459T0.5$+#$%&'()*%$',U$.*5;&.*%8'$*,*'&55'$*&4*5;,5*,*38415&(4*1,4*1,''*,*5,.-=*685*(4'0*&4*,5;%$,2*.<,74$2*7&5;*5;$*VERL999WEPXYXEXG*.5,5$+$45=*7;&1;*&.*2$.1%&6$2*&4*T$15&(4Z9[9 \3*0(8*;,/$*,*T0.5$+#$%&'()*5,.-*5;,5*2($.*4(5*1(4.8+$*5&+$=*0(8.;(8'2*+,-$*&5*,*]EPH V_XJQPEX=*7;&1;*&.*,*38415&(4*5;,5*2($.*4(5%$58%4*,*/,'8$9*(7*&5*1,4*6$*1,''$2*3%(+*,40*5,.-*(%*38415&(49*a(%+,U&+8+*3'$U&6&'&50=*,40*2$68)*%(85&4$*.;(8'2*6$*,*/(&2*38415&(4%,5;$%*5;,4*,*5,.-*.(*5;,5*&5*1,4*6$*1,''$2*3%(+*,40*5,.-*(%*38415&(49T,+<'$*b9b*<%&45.*/,'8$.*3%(+*,*.5,5$*+,1;&4$9c�defg�����" �!�h����� ��h i�!gj�klmnopqrnstrqusvwqnpxypzp{|}}}~�ss�uqyv�z�|����p�sypzp{s�s�y��s�pq�{�somwxypzp{}nz�{|~~�{nulmnopqrn\4*T0.5$+#$%&'()=*&3*0(8*7,45*5(*1,''*,*38415&(4*,42*&)4(%$*&5.*%$58%4*/,'8$=*1,.5*5;$%$.8'5*5(*]EPH=*,.*.;(74*&4*T,+<'$*b9�9*T(+$*.&+8',5(%.=*.81;*,.*#�T=*,''(7*0(8*5(&)4(%$*5;$*%$58%4*/,'8$*7&5;(85*8.&4)*5;$*,6(/$*]EPH*.045,U9c�defg������k� i��k���h����� ����ig��i����f�gtrqu�|�lyoznl|lq�{�s��u��sq~~������������!������� ����gi��g�T0.5$+#$%&'()*+,-$.*.$/$%,'*.+,''*&+<%(/$+$45.*5(*5,.-.*,42*38415&(4.*5(*+,-$5;$+*'((-*+(%$*'&-$*�*(%*���*%(85&4$.9*\4*)$4$%,'=*,*%(85&4$*2$3&4&5&(4*(%*1,''*7&5;*4(,%)8+$45.*2($.*4(5*4$$2*5;$*$+<50*<,%$45;$.$.*��9*:;&.*6((-*&41'82$.*5;$+*3(%*,22$21',%&509

Page 33: SystemVerilog for Verification

������������� ������������������ ���������������������� !�"#$%&���#&'��!(�)!*+,-./0123.045167-4-83.96:.4;9.8630<-.08.=923-4>[email protected]:308-2.02.3,;3."#$%&AAA#&'B?6<C2.;1-.653068;?D.E,0?-.>[email protected]:01-K.3,-4.68.;??.B:3.208@?-F?08-.16:308-2A+,-LMNO.P.#&'LMNO.;8K.QR&SL%T&.P.#&'QR&SL%T&.C-9E61K2.;1-.-86:@,.36.K-/08-3,-.16:308-.B6:8K;10-2D.;2.2,6E.08.=;45?-.UAIAVW(XY!���Z�V�(XY!��W[\�]������_abc���cdefghijklebmlnlbcgoiipdbgmlfqrstbugeilbcsvoiipdbgmlfqrswxycdilbcsvocdefghizijklebmlnlbcg��{������ !�|}~�(! �[�;89.6/.3,-.=923-4>[email protected]./61.16:308-2.4;C-.03.-;20-1.36.K-<?;1-.;1@:F4-832.;8K.-�5;8K.3,-.E;92.96:.<;8.5;22.7;?:-2.36.;8K./164.;.16:308-A��{�����V��Y!������ !�|}~�(! �[=923-4>-10?6@.;8K.>-10?6@F���G.;??6E.96:.36.K-<?;1-.3;2C.;8K./:8<3068.;1@:4-832461-.<?-;8?9.;8K.E03,.?-22.1-5-303068A.+,-./6??6E08@.>[email protected];2C.1-J:01-2.96:.36K-<?;1-.264-.;1@:4-832.3E0<-�.68<-./61.3,-.K01-<3068D.;8K.68<-./61.3,-.395-D.;2.2,6E808.=;45?-.UA�AVW(XY!������!}�Y�~����Z�}���� !�W}~�(! �[efghijqefgh�oiiykemkei���z��i�oiiuaiiii���z��i�oiibcmkeiiiiiiiiiqoii���cdefgh�03,.=923-4>[email protected]:.<;8.:2-.3,-.?-22.7-1B62-.�F239?-D.2,6E8.08.=;45?-.UA�A.�63-3,;3.96:.2,6:?K.:2-.3,-.:807-12;?.085:3.395-.6/.�T$%SAVW(XY!�������[��Y!�}���� !�W}~�(! �[efghijqefgh�irykemkeilyabxi���z��i��iiiiiiiiiiiiiibcmkeiilyabxiqvo���cdefgh ��������������� ������������������������� !"#$%&#'%()#)*)&#+!,)#-.!,'$"'-#/0'.#1)$2%,0&3#,!"'0&)#%,3"+)&'-4#5.)#10,)$'0!&%&1#'67)#1)8%"2'#'!#90&7"'#2!30$:#%&1#%,)#-'0$(6;#%&1#-!#6!"#1!&<'#.%*)#'!#,)7)%'#'.)-)8!,#-0+02%,#%,3"+)&'-4#=%+72)#>4?#-.!/-#%#,!"'0&)#.)%1),#/,0'')&#"-0&3#'.)#@),02!3ABCCD#-'62)#%&1#=6-')+@),02!3#1%'%#'67)-4EF�GH����I�J��K�L��J���H��ML�NH����������F�������LOPQRSTUVSSWXYZOSP[S\VSS]_WSP[S\VSSZOYZOSabcdefSZ[SgVSS\WOSabcdefSZ[SgVSShhhiXjOPQR !"#$!"21#,)/,0')#'.0-#%-#-.!/&#0&#=%+72)#>4C4EF�GH����k�l�������F�������L�m��n�L���oN��NG�LOPQRSTUpP[S\[SZOYZOS\WOSabcdefSZ[SgqV5.)#%,3"+)&'-#r#%&1#s#%,)#0&7"'#2!30$;#BAt0'#/01)4#5.)#%,3"+)&'-#u#%&1#v#%,)#B At0'!"'7"'#t0'#'67)-4#w!/#'.%'#6!"#(&!/#'.0-;#1!&<'#1)7)&1#!&#'.)#1)8%"2'-;#%-#6!",#$!1)/022#t)#0&8)-')1#/0'.#-"t'2)#%&1#.%,1#'!#80&1#t"3-;#%-#)x72%0&)1#0&#=)$'0!&#>4y4 4#z2/%6-1)$2%,)#'.)#'67)#%&1#10,)$'0!&#8!,#)*),6#,!"'0&)#%,3"+)&'4�������{|F���{����������}NG�L@),02!3#.%1#%#-0+72)#/%6#'!#.%&12)#%,3"+)&'-~#%&#���u�#!,#���u�#/%-#$!70)1#'!#%2!$%2#*%,0%t2)#%'#'.)#-'%,'#!8#'.)#,!"'0&);#/.),)%-#%&#�u��u�#!,#���u�#/%-#$!70)1/.)&#'.)#,!"'0&)#)x0')14#w!#+)+!,0)-#$!"21#t)#7%--)1#0&'!#%#@),02!3#,!"'0&);#)x$)7'-$%2%,-$%&4�&#=6-')+@),02!3;#6!"#$%&#-7)$086#'.%'#%&#%,3"+)&'#0-#7%--)1#t6#,)8),)&$);#,%'.),'.%&#$!760&3#0'-#*%2")4#5.0-#%,3"+)&'#'67);#���;#.%-#-)*),%2#t)&)80'-#!*),#���u�;�u��u�;#%&1#���u�4#�0,-';#6!"#$%&#&!/#7%--#%&#%,,%6#0&'!#%#,!"'0&)4

Page 34: SystemVerilog for Verification

������������� ������������������ ������������������� !"�#�$$%&'��((�)$�*$%&'�+,-��&.�/0123-41/35016705869+513:/;,/<24=6>/01236+,-6?536@ABCDE6F@EGH66?536@ABCDE6/;,/<24=6I6DH66-0+6>51365IDH65JFK25L,>GH65MMG6666/;,/<24=6NI6F@5EH66O8529PFQ>RS;,6F++FQ6/;,/<24=6526TD8RU6/;,/<24=GH,18-41/3501VWXYZ[\Z]_abc__dXbWebYbfcXXbc]]cWbc]ae[ZgYXbdYheYbYhZbijkbl]ZmYgnboeYbYhZc]]cWbXbmfZlbgYbYhZbXYcmpnbcgbZqfZgXrZbfZ]cYgbs]bc__boeYbYhZbX[c__ZXYbc]]cWXtuhZbVWXYZ[\Z]_abvwxbXYcYZXbYhcYbijkbc]ae[ZgYXbmcgbg_WboZbeXZlbgb]eYgZXbdYhceY[cYmbXY]caZtbysbWebXfZmsWbYhZbz{|}~z|��bcYY]oeYZbs]bf]a]c[Xbcglb[ le_Znc__bYhZb]eYgZXbgXlZbc]ZbceY[cYmtbVZZbVZmYgb�t�bs]b[ ]ZblZYc_XbgbXY]caZtVc[f_Zb�t��bc_XbXhdXbYhZb�}��|b[ lsZ]tb�Xbcb]ZXe_YnbYhZbc]]cWbzbf gYXbYbYhZc]]cWbgbYhZb]eYgZbmc__nboeYbYhZbmgYZgYXbsbYhZbc]]cWbmcggYboZb[ lsZltbysbWebY]WbYmhcgaZbYhZbmgYZgYXnbYhZbm[f_Z]bf]gYXbcgbZ]]]t�_dcWXbeXZbijkbdhZgbfcXXgabc]]cWXbYbcb]eYgZbs]boZXYbfZ]s]�[cgmZtbysbWeblg�YbdcgYbYhZb]eYgZbYbmhcgaZbYhZbc]]cWbrc_eZXnbeXZYhZb�}��|�ijkbYWfZnbdhmhbmceXZXbYhZbm[f_Z]bYbmhZmpbYhcYbWe]]eYgZblZXbgYb[ lsWbYhZbc]]cWtuhZbXZmglboZgZsYbsbijkbc]ae[ZgYXbXbYhcYbcbYcXpbmcgb[ lsWbcbrc]co_ZbcglbXgXYcgY_WbXZZgboWbYhZbmc__gabsegmYgtbuhXbXbeXZse_bdhZgbWebhcrZbXZrZ]c_bYh]ZclXZqZmeYgabmgme]]ZgY_WbcglbdcgYbcbX[f_ZbdcWbYbfcXXbgs][cYgtbVZZb�hcftb�bs][ ]ZblZYc_XbgbeXgabk}i���}��tygbVc[f_Zb�t��nbYhZb|�ijz��bo_mpbgbYhZbgYc_bo_mpbmcgbcmmZXXbYhZblcYcbs][b[Z[�]WbcXbX gbcXb�{��j�z��jbXbcXXZ]YZlnbZrZgbYheahbYhZb�{��ijz�bYcXpblZXbgY]ZYe]gbegY_bYhZboeXbY]cgXcmYgbm[f_ZYZXnbdhmhbme_lboZbXZrZ]c_bmWm_ZXb_cYZ]tbuhZ�z|zbc]ae[ZgYbXbfcXXZlbcXbijknbcglbcXbcb]ZXe_YnbYhZb��z|zbXYcYZ[ZgYbY]aaZ]XbcXbX gcX�z|zbmhcgaZXbgbYhZbYcXptbysbWebhclblZm_c]Zlb�z|zbcXb}{|�{|nbYhZb��z|zbXYcYZ�[ZgYbde_lbgYbY]aaZ]begY_bYhZbZglbsbYhZboeXbY]cgXcmYgt ��������������� ��������������������� ��!"#���$%"��&�'()*+,-).��(/0123-'+45617+89:;<=+(//�>++++++++++++++�� +++45617+89:;<=+/('(?@++AA+B�C-�)'+,-)+(2/+/�1D�+(//��))++,-)E��C-�)'+F+:G,:@++H035)�/6�+,-)E6�(2'?+,-)E(//�+F+(//�@++AA+I(1'+ 5�+/('(+ �5J+J�J5�K++H035)�/6�+,-)E�2(,4�?+/('(+F+,-)E/('(@++AA+B�4�()�+,-)+(2/+L(1'+ 5�+6�(2'++,-)E��C-�)'+F+:G,<@++H02�6�/6�+,-)E6�(2'?@�2/'()*45617+89:;<=+(//�>+/('(@121'1(4++ 5�*++++,-).��(/0(//�>+/('(?@++++'M��(/N;+,�612++++++H/('(@++AA+O�166��+52+/('(+7M(26�++++++P/1)34(K0QB�(/+RM+ �5J+,-)Q>+/('(?@++++�2/++S512��T�T�U�V�W�$�X��W��V#"����Y"�W���$Z[\]_\ab[acbdef\g h[\id\[jfi[aiekaidl\]_\mk]\hkda\a\knn\knniaidko\edao[\a]_\enb\c_a\da\cbkp\bqi[aidg\enbr\s \afb\t_deaid\id\ukmjob\vrwxl\]_\migfahkda\a\jida\k\efbep[_m\t\y_[a\afb\minnob\zko_b[\t\afb\kk]r\{hbzbl\]_\nd|ahkda\a\g\ckep\kdn\bhiab\bzb]\ekoo\a\knn\bqak\kg_mbda[r\}d\u][abm~biog\]_ekd\[jbeit]\k\nbtk_oa\zko_b\afka\i[\_[bn\it\]_\obkzb\_a\kd\kg_mbda\id\afb\ekoor\ukm�job\vrw�\knn[\���\kdn\����\kg_mbda[\a\afb\��������������\t_deaid\[\afka\]_ekd\jida\k\efbep[_m\t\k\kdgb\t\zko_b[r

Page 35: SystemVerilog for Verification

������������� ������������������ ������������������� !"�#$%&'()%�*('+�,�-�$�'��./$��%'�0��$�1234567849:87;9<=746>5?@5AB3CD=@29E769FGHIJK9LFKM9999999999999999999999999999974<369E769FGHIJK9N8O9P9JM99999999999999999999999999999974<3697469?7Q?9P9RHST99E769FGHIJK95?@5AB3C9P9JT99729D?7Q?9PP9RH9UU9?7Q?9VP9LWB7X@DSS99999?7Q?9P9LWB7X@DSRHT9928=9D74697PN8OT97YP?7Q?T97ZZS99995?@5AB3C9ZP9LF7KT99[;7B<NL\D]?@9L==L\95?@5AB3C97B9_J;]M9B3CST@4;23456784abcdefcdeggchijkclbfdhjafcjfchimclagganjfocnepkqcekckianfcjfcrestgmcuvwuvcxahmchiehhimcljykhcdeggcjkcdastehjzgmcnjhiczahic{mykjafkcalchimc|}~�����������cyabhjfmv�������� !���1(%/�,�-�$�'��./$��%'�0��$�1�<=746>5?@5AB3CDLST9999999��9�?@5AB3C9LFJIB7X@DSRHK9�9;@2L3N6<=746>5?@5AB3CDLM9�M9�ST9��9�?@5AB3C9LF�I�K<=746>5?@5AB3CDLM9HST9999��9�6L=69L69H<=746>5?@5AB3CDLMM9�ST999��9�?@5AB3C9LFJI�K<=746>5?@5AB3CDST99999999��9�8C<7N@9@==8=I9L9?LB9489;@2L3N6�kjfocec�mlebghc{egbmcalc�wc�aycefpcabh�al�yefomc{egbm�cjkcecoaa�cnepchackmmcjlchimcdeggktmdjljm�cec{egbmv�c�myjgaoc��}�gaatcegnepkcm�mdbhmkchimcjfjhjegj�ehjafc�~��~�����qcef�chmkh�~���~ ��czmlaymckheyhjfochimcgaatvc¡ibkqcjlcpabceddj�mfhgpctekkm�cec���c{egbmchiehnekcgeyomychiefc�~ �caychimceyyepckj�mqchimc��}�gaatcnabg�cfm{mycm�mdbhmchimcza�pv� ¢ £�¤�11(%/�¥./$��%'1�¦§����abcsepcie{mcfahjdm�cjfchimcrpkhms�myjgaoc©ª«chiehchimceyobsmfhkchacechek¬caylbfdhjafceymckasmhjsmkcdeggm�c­tayhkq®cbkhcgj¬mchimcdaffmdhjafkclaycecsa�bgmvc°lcpabie{mcechek¬cayclbfdhjafcnjhicsefpceyobsmfhkqckasmcnjhic�mlebghc{egbmkqcef�cpabcafgpnefhchackmhceclmncalchiakmceyobsmfhkqcpabcdefcktmdjlpceckbzkmhczpcktmdjlpjfochimcfesmalchimcyabhjfmceyobsmfhcnjhicectayh�gj¬mckpfhe�qcekckianfcjfcrestgmcuvw±v ��������������� ������������������������ ���!"�#$�����%&'()*&+,)-.+/0%).+%)&123)4153)6173)819:;))<8.'/=&,->?@8)?@8)?@8)?@8>3)&3)43)63)8:;A+8%&'(.+.%.&=)4AB.+)))))))))CC)&))4))6))8))*&+,-D3)E3)F3)G:;)))CC)D))E))F))G))H/A6.I,)&==)J&=0A'))*&+,-:;)))))))))))))CC)2))5))7))9))K'A)8AI&0=%'))*&+,-L6-M::;))))))))CC)2))5))M))9))N+=,)'/A6.I,)6))*&+,-3)D3)L8-F::;)))CC)2))D))7))F))O.P)'%,=A'A+8����Q�RS��S��RS�����T��S�"UVWXYZ[\X]ZYYZX]Z_ aXY[\bcWX\Vb\XdZeXbfWXgcWgdX\ZXYbcWXh\VbXfZe\WX[XiZfaW\\aX\Vb\X\VWXbfaeYW\X\djWX[X[\]cdXh\VXfW[jW]\\ZX\VWXjfWkZe[XbfaeYW\lXb_X\Vb\X\VWX_Wibeg\X\djWXiZfX\VWXif[\bfaeYW\X[XbX[agWmn\Xje\oXp\bf\Xh\VX\VWX[YjgWX\b[cXVWb_WfXpbYjgWXqo�ro����������s�t��������!�"u�v������%&'()'%.6(,-.+%)&3)4:;UVWX\hZXbfaeYW\[XbfWXje\X\WaWf[oXw[XdZeXbfWXhf\aX\VWX\b[clXdZeXfWbgxWX\Vb\XdZeWW_Xb]]W[[X\ZXbXbffbdlXb_X[ZXdZeXb__XbXWhXbffbdXbfaeYW\lXb_Xe[WX\VWXyz{X\djWX[Z\Vb\X\X_ZW[XZ\XVbkWX\ZXnWX]ZjW_oX|ZefXfZe\WXVWb_WfXZhXgZZc[XgcWXpbYjgWXqo�}o����������Q�~�"u�v��������!v�����!�S��������$���� ���!%&'()'%.6(,-�AI).+%)&��&,�M@�3)))))))))))).+%)&3)4:;))))))CC)��&%)8.�A6%.�+)&�A)%�A'A��Vb\XbfaeYW\X\djW[XbfWX�Xb_X��XUVWdX\bcWX\VWX_fW]\ZXZiX\VWXjfWkZe[XbfaeYW\yz{oX�[aXyz{XiZfXbX[YjgWXkbfbngWX[e]VXb[XbX���X[XZ\Xe[ebggdXWW_W_lXne\XdZeXhZeg_Z\XaW\XWkWXbXhbf aXifZYX\VWX]ZYjgWflXb_X\Ve[XhZeg_XZ\XfWbgxWX\Vb\XdZeXhWfWe[aX\VWXhfZaX_fW]\Zo�iXbdXbfaeYW\X\ZXdZefXfZe\WX[X[ZYW\V aXZ\VWfX\VbX\VWX_Wibeg\Xje\X\djWlX[jW]id\VWX_fW]\ZXiZfXbggXbfaeYW\[Xb[X[VZh XXpbYjgWXqo� o������������~�"u�v��������!v�����!�S��������$���� ���!%&'()'%.6(,-�AI))).+%)&��&,�M@�3)))))))))))).+/0%).+%)&3)4:;))CC)�A)AP/=.6.%

Page 36: SystemVerilog for Verification

������������� ������������������ ������������������� !"!#�$ %&�'��%��"!�()*+,-./012/1/3*+4+5+6)/718/5-/)92/1/*-:5+9);/1<5)*/8-:/)=)>:5)2/50)/,1?5/?515)4)95/+91/*-:5+9)@/+5/*)5:*9)2/5-/50)/>1,,+9./>-2)A/B9/122+5+-9@/1/<:9>5+-9/*)5:*9)2/1/61,:)/C81??+.9+9./5015/61,:)/5-/1/61*+1C,)/7+50/50)/?14)/914)/1?/50)/<:9>5+-9A����D�EF������ !�G�'��&�!�H8?5)4()*+,-./122?/50)/IJKLIM/?515)4)95/5-/41N)/+5/)1?+)*/<-*/8-:/5-/>-95*-,/50)<,-7/+9/8-:*/*-:5+9)?A/O0)/51?N/+9/H143,)/PAQR/9))2?/5-/*)5:*9/)1*,8/C)>1:?)/-</)**-*>0)>N+9.A/S50)*7+?)@/+5/7-:,2/016)/5-/3:5/50)/*)?5/-</50)/51?N/+9/19/JTUJ/>,1:?)@70+>0/7-:,2/>1:?)/4-*)/+92)9515+-9/192/C)/4-*)/2+<<+>:,5/5-/*)12AG'&VW����DX����� !�"!�'��'YZ[\] _a\bc\dd\efgh[_ihj_dik_gh[_\dd\elmno__gk_fih_pq_rn_sitgh____ubg]v\efwx\b_ihwno____di[ydho__ihb__zz_{abi_kad_[|i_di][_ak_[|i_[\]__}}}ihb[\]O0)IJKLIM/?515)4)95/+9/H143,)/PAQ~/>19/?+43,+<8/8-:*/<:9>5+-9?AG'&VW����D������ !�"!�'�$�!��"%!kyh�[gah_sg[_[d\h]�g[f}}}no__zz_�ihb_[d\h]\�[gah__}}}__di[ydh_�gk�}�s}iddado_zz_�i[ydh_][\[y]�_rqiddadihbkyh�[gah���������� !"!#�'!�� '��$ %&�'���!��"%!()*+,-./*-:5+9)?/>-:,2/-9,8/*)5:*9/1/?+43,)/61,:)/?:>0/1?/1/C+5@/+95).)*@/-*/6)>5-*A/B<8-:/7195)2/5-/>-43:5)/192/*)5:*9/19/1**18@/50)*)/71?/9-/?+43,)/718A/B9/H8?5)4()*�+,-.@/1/<:9>5+-9/>19/*)5:*9/19/1**18@/:?+9./?)6)*1,/5)>09+�:)?AO0)/<+*?5/718/+?/5-/2)<+9)/1/583)/<-*/50)/1**18@/192/50)9/:?)/5015/+9/50)/<:9>5+-9/2)>,1�*15+-9A/H143,)/PA��/:?)?/50)/1**18/583)/<*-4/H143,)/�AP�@/192/>*)15)?/1/<:9>5+-9/5-+9+5+1,+�)/50)/1**18A ���������������� � ����������������������������� �!�"����!��#��"��$��%���� ��&�!'()*+*,-./'-,.0*+12332(45467,.0*+12332(4-,47,8/9'.:/-,.0*+12332(4-./.';./'-<'23'=7--,:3*29>-;./.'5.6=----./.'5.6-?-.-@-<'23'7*/+,8/9'.:/./.'.2A-B*C./--,4-?-./.';4=7--,:3*29>-;,45.6=----D+.<)A2(;E,45FG+6-?-FG+EH-.H-,45.6=7*/+IJKLMNOPQKRLSTUVLUVKLMNKWKXTJYLWOXKLTZLUV[ULUVKL\]JWUTOJL_ LWNK[UKZL[JL[NN[abSVTWVLTZLWOMTKXLTJUOLUVKL[NN[aLcdeLf\LUVKL[NN[aLS[ZLQ[NYKbLUVTZLWO]QXLPKL[LQ[NYKLMKN\ONgR[JWKLMNOPQKRehVKL[QUKNJ[UTiKLTZLUOLM[ZZLUVKLNO]UTJKLPaLNK\KNKJWKeLhVKLK[ZTKZULS[aLTZLUOLM[ZZLUVKL[NN[aTJUOLUVKL\]JWUTOJL[ZL[LjkcL[NY]RKJUbL[ZLZVOSJLTJLl[RMQKL emne����������o�p�qq����������� ��"���!��#��"���q�����!���������,8/9'.:/-r:.+-./.';3*,-./'-,546H-./)8'-./'-<'23'=7--,:3*29>-;,5.6=----,5.6-?-.-@-<'23'7*/+,8/9'.:/./'-,25467./.'.2A-B*C./--./.';,2H-4=7--,:3*29>-;,25.6=----D+.<)A2(;E,25FG+6-?-FG+EH-.H-,25.6=7*/+hVKLQ[ZULS[aL\ONL[L\]JWUTOJLUOLNKU]NJL[JL[NN[aLTZLUOLSN[MLUVKL[NN[aLTJZTXKLO\L[LWQ[ZZbL[JXNKU]NJL[LV[JXQKLUOL[JLOPsKWUeLtV[MeLuLXKZWNTPKZLWQ[ZZKZbLOPsKWUZbL[JXLV[JXQKZe��v�w"#���x������"����yVKJLzKNTQOYLS[ZLWNK[UKXLTJLUVKLn{|}ZbLTULS[ZLUTYVUQaLUTKXLUOLXKZWNTPTJYLV[NXS[NKeL~Z[LNKZ]QUbL[QQLOPsKWUZLTJLUVKLQ[JY][YKLSKNKLZU[UTW[QQaL[QQOW[UKXeLfJLM[NUTW]Q[NbLNO]UTJK[NY]RKJUZL[JXLQOW[QLi[NT[PQKZLSKNKLZUONKXLTJL[L\T�KXLQOW[UTOJbLN[UVKNLUV[JLM]ZVTJYUVKRLOJL[LZU[W�LQT�KLOUVKNLMNOYN[RRTJYLQ[JY][YKZeLyVaLUNaLUOLROXKQLXaJ[RTWLWOXKZ]WVL[ZL[LNKW]NZTiKLNO]UTJKLSVKJLUVKNKLTZLJOLS[aLUOLP]TQXLUVTZLTJLZTQTWOJ�L�OSKiKNb

Page 37: SystemVerilog for Verification

������������� ������������������ ������������������� �!"#!���� $��#�%#!" �&� '��#"!�( �&� ���� )��' �� �&� *�&�$#�� �� ���+,-*���' .�!")�"�� �)+& �� /( ���� *#���! *% �&��� �)*�.� *)"�( �!' ���� �&)� .#0#��' #!�&�#� �*#.#�% �� +����� +�01.�2 ����*�!+&�� �#�& .#*���#�� �� ��)�#!��34565789:;<=>;?@8A;<B>CDE! F��#.�"-GHHI( #� %�) ��#�' �� +�.. � ���, ���0 0).�#1.� 1.�+�� #! %�)� ����*�!+&( �&�.�+�. $��#�*.�� �&���' +�00�!( ����#+ �����"�( �!' �� �&� '#�����!� �&���'� ���11�' �!��+& ��&��J� $�.)��3 E! F��#.�"-KLLG %�) +�! �1�+#�% �&�� ���,�( �)!+�#�!�( �!' 0�'-).�� )�� �)��0��#+ �����"�( �&#+& +�)��� �&� �#0).���� �� )�� �&� ���+, ��� .�+�.$��#�*.��3 E! M%���0F��#.�"( ��)�#!�� ��#.. )�� ����#+ �����"� *% '���).�( ��� *��&0�').�� �!' 1��"��0 *.�+,�3 N�) �&�).' �.��%� 0�,� 1��"��0*.�+,� O�!' �&�#� ��)�#!��P )�� �)��0��#+ �����"� *% 1)��#!" �&�QRSTUQSVW ,�%���' #! �&� 1��"��0 �����0�!�3 E! /&�13 � %�) �#...���! �*�)� XYTZYQU *.�+,� �&�� &�.' �&� ����*�!+& +�'�3 M�+�#�! �3G3[�&��� &�� �)��0��#+ �����"� &�.1� �&�! %�) ��� +����#!" 0).�#1.��&���'�3M�01.� \3KK �&��� � ���, �� 0�!#��� �&�! '��� ��� ��#���! #!�� 0�0��%3A>=]D845__8A]D@?a?bC8>:;<=>;?@8c;<B>CD8?b8]B<CB>=8d<@ecfghigjkljmnhkjnoplnqrnsllnjrtlujonvwhgvkqkxoyfmnlz{|}~�lj��g�lq�fqpnv�jnj�llllllllllllllllllllhmnfmnlrmppqrr�sllllu�o�qlx�mr�j��gl���lj��g�llllll�x�mr�j��g�sllllrmppqrrl�lx�mr��jnjl��lq�fqpnv�jnj�sllqy�njrt���qy�fghigjkN�) +�! +�.. �&#� ���, 0).�#1.� �#0�� +�!+)���!�.%( �� �&� Q��Y �!' ��X�WS��QSQ��")0�!�� ��� �����' ��1�����.% ��� ��+& +�..3 �#�&�)� �&� QRSTUQSVW 0�'#�#��( #�%�) +�..�' �QVS��TY�U�U � ��+�!' �#0� �&#.� �&� �#��� ��� ��#.. ��#�#!"( �&� ��+�!'+�.. ��).' �$����#�� �&� ��� ��")0�!��34565_8�>B?>dD8�b?;?>?�>;?<b� �#0#.�� 1��*.�0 �++)�� �&�! %�) ��% �� #!#�#�.#�� � .�+�. $��#-�*.� #! � '�+.����#�!( �� #� #� �+�)�..% #!#�#�.#��' *����� �&� ����� ���#0).��#�!3 �&� "�!���. ��.)�#�! #� �� �$�#' #!#�#�.#�#!" � $��#�*.�#! � '�+.����#�! �� �!%�&#!" ��&�� �&�! � +�!���!�3 ��� � ��1��������#"!0�!� �����0�!� �� "#$� %�) *����� +�!���. �$�� �&�! #!#�#�.-#���#�! #� '�!�3 ���������� �� �������������������������������� ������� ��!� �"��#$#������%�� ���#!����������#���"�!�&�������%���������������������'��������� ��#�!!����"������ �� ���%%!���������()*+,-./01/.(2)234.35323),36)2375.89:;<=><?@ABCBDB?EBF?DB=CGAHHAIJ>>KALM<NB=CAAD?NOAPQMPORSJNGAAAA<M;M?DATUVAWT;=NMX>MAPE=POVGAAAABYATSJNRP@XAZZA[\]_VASM>BCAAAAAAHHAQMCABNAE=P?ER?XX<ABCBDB?EBFMXaAAAAAAE=>BPAbcdefAE=P?ER?XX<AZA?XX<gghGAAHHAIJ>AAAAAAiXBN;E?KTjk=P?EAXX<AZAlQjmAE=P?ER?XX<VGAAAAMCXAAMCXD?NOMCX;<=><?@� ����n����� ���� ��"�!������opqrosrttu���������#���$�����#���%v���%�����������#�����$��������'�%����� �����!��� �����������v�����w ���� ��xyz{|���y|t����#���������!�%��}�#��n���v�� �����������������%�#��!��� ���!�n!������r~�p�r�{q����� �w�����������������()*+,-./01�.(2)234.35323),36)2375.�3��.9�-.?JD=@?DBP;<=><?@A?JD=@?DBPABCBDB?EBF?DB=CGAHHAIJ>AN=ELMX���MCX;<=><?@�%%��������$v�$���#����"��%�� ����$���"�!���������'��n���"�!���������� ��%�#��!�����v����� ������ �!%�!����!������!v�����#����$� �!����!�n!����!���������������� �w�� ��!�#&�����%�%���$���� �����!����n�� ��%�#��!��������%���������'������()*+,-./01�.(2)234.35323),36)2375.�3��.8�-)�.)+)�2.�-4,)�)2375.)5�.35323),36)2375E=>BPAbcdefAE=P?ER?XX<E=P?ER?XX<AZA?XX<AggAhGAAHHAIJ>/0�.�3*-.�),9-��$������!���n� �����"�!�����w�#����!�#����������w�$������������n�����$����#� $�����"���������$��!��$�����/0�0�.�3*-.�532�.)5�.��-43�375� ���$���!��$����� ����{�y�qroy�#������!�%�!�#��"�v�$��������#�������� �� �������� ���!���!��!%�!���������!������� ��%���$������� ���!���!��#������%��!�#�������� ��{�y~|{����%��{�y�uyq{�{p|�%�#��!������������������ �������n���$��$��!�#����$���#� $��n�� ��"������ �!��"�!$���%������������������ �w��� ����%�#��!������������

Page 38: SystemVerilog for Verification

������������� ������������������ ��������������������� � !"���"!"��#!�"�$����%&'()*+,-).��� �/ !��0 ����"/��#�"1"2��/�$ 3"�������!���$"3��4567689:;<=9>;?=@ABCD�!�"/E"2�3�F��33�G!��� ���� #�/H�F � !3��!0"I��������/"�1�3 "�03 !� #��!4�J� 2I�$"�I�#� !"�$"3��!�! I���!�KLMN*��2�OKP*4�Q !��2"/"/H"2���� !"�&'()RN'&��#$&'()PS)+'*'TN��2�%&'()*+,-)4�J� �I�#�/�U"��� 2�I�$"�"1"#�/�2"���/"��G�2"H�� !�#F���"�I3�!!�I�E"2�3�F�V&'()WTS(,&XY.V&'().��#$�VS),-&'()�!�!�"/���!U!4Z�"��� 2��2F /"#�!����[��/"��2/����2"���"�!I�3�#F���I��2�\]���2�#�#�!"I�#$!.�]_���20�I�!"I�#$!a.���"�# /H"2����$�F��!������"�2�F��������"�$"I�/�3�0��#�.���!�2�#F����02�#����"2���"���/"�1�3 ".��#$���"�/�#�/ /���"3$�G�$��4D�/03"�b4��!��G!�1�2�� !�$"3��!��#$���"�2"! 3���2�/�02�#��#F���"���/"�G�"#�����!���2c/����#F�H��V&'()WTS(,&XY��#$���"�d&�!0"I���"24eA<fB=9568g9:;<=9B;?=@ABC9Ahi9jklmnopqmrkmpstunvklmlwxyvvklmntwlkvzw{yvvklmn|qn}l{lpwvz|{yvvlwlklruv~nxlwvvvvjklmnopqmrk����v��v�w{��v��yvvvv�zvvvvvjsl{|ur����k��vjqnruklmn�yv��vz����w{vvvv��w{vvvjsl{|ur����k��vjqnruklmn�yv��v�����w{vvvv���zw{vjsl{|ur����k��vjqnruklmn�yv��v��z��w{vvvv��z|{vvjsl{|ur����k��vjqnruklmn�yv��v��z�zw{vvnwsnwsmpstun567659:;<=9Ahi9�A@;A�B=CJ� �I�#�!��2"���/"�1�3 "!��#�1�2��H3"!��#$� !"���"/��#�I�3I 3����#!��#$�$"3��!4�Z�"1�3 "!��2"�!I�3"$��#$�2� #$"$��II�2$�#F������"�I 22"#����/"�!I�3"��#$�02"I�!��#4�E�2�c�H3"!������0"�&'()�I�##�����3$��2�I���#�3�$"3��!��!���"���2"�� !����cH����#�"F"2!.��#$!��$"3��!�G�33�H"�2� #$"$4�J� �!�� 3$� !"�S),-�1�2��H3"!�������!��!���02�H3"/4D�/03"�b4��!��G!���G�2"�3�1�2��H3"!��2"��H3"����2"���#��II 2��"�1�3 "!��#$��2"��#3�2� #$"$�G�"#� !"$��!���$"3��4 ���������� ���� ���������������� ��������������� !"#$%&'#()*$+)*$",-.'#(*$/((!0! !&'(1#2!0((((3#&'(3-#'&4(5(6778$/((((++(9 ,3#-(&$(7:677(((( !"#( -#'&4(5(6778$/((((++(;,.0-#-( ,()((((< !"#8,3"& =>)?@(7@(A8$A@(?B/((((C3-#'&4/((((((((((((((((++(D#'&4(3,.0-#-( ,()*$((((<-!$*'&4=AE A@(3-#'&4B/(++(A6778$A((((C -#'&4/((((((((((((((((++(D#'&4(&0, F#3()*$((((<-!$*'&4=AE A@( -#'&4B/(++(A)7778$A(((#0-#0-",-.'#����G�HI��������H�� I���JKLMNONPLQMPRNSMTUVWXMYLPZY[NMR[M\[PL]LYMNR_LMPaMPKLMP\QLMbYL\N\a[MacMPKLMZYYL[PQaZ_LdMeZPMQ\NN\[]MR[OMcYRP\a[R_MZ[\PNdMfK\_LMTgXhiUVWXMYLPZY[NMRMYLR_M[ZQeLYf\PKMPKLMaQb_LPLMP\QLMjR_ZLdM\[_Z\[]McYRP\a[NkMJK\NMeaaSMZNLNMTUVWXM\[MPKLMLlRQmb_LNMcaYMeYLj\POdMeZPMOaZYMPLNPeL[KLNMQROM[LLMPaMZNLMTgXhiUVWXk��n�o��p �����JKLM[LfMqONPLQrLY\_a]MbYaLZYR_Ma[NPYZPNMR[MPRNSscZ[P\a[McLRPZYLNMQRSLM\PMLRNm\LYMcaYMOaZMPaMYLRPLMPLNPeL[KLNMeOMQRS\[]MPKLM_R[]ZR]LM_aaSMQaYLM_\SLMaPKLYbYa]YRQQ\[]M_R[]ZR]LNMNZKMRNMtstuukMvNMRMea[ZNdMqONPLQrLY\_a]MKRNMR \P\a[R_wxyMa[NPYZPNMNZKMRNMP\Q\[]Ma[PYa_NdMN\Qb_LMPKYLRMa[PYa_dMR[MzmNPRPLM_a]\k

Page 39: SystemVerilog for Verification

������������ ���������������� ������������������������������������������������� !"������ #�$�#���������� %&�&�'�(���&�����������'������% ���(����(�����'�����%���&������#����)�*�+����'�! ����"�&��������������������,��(�'�(����(�������������� #��������+�� ��- #&����./)0�&������,��(��+��������&���������� #�'����� �#� ���� %&�&������(���&� �#������� #�1����������)���������,��(��!��%������2�����+����3����&���������� #�'�% % (4. �#�������� ������ ���%���)�-����5�%���'������(������%��������������(����(������� �&��,&����������� (��'�+� (������%������� ����������,��(�����,&��!&�(� �����%��.���)�6����+��4 �#���� (��(����(������%&�� ���� ��&�������&��&������������%����������%�������,����������������������(���)�6�� ����(� ��(����(������,&�������������� �(�%%����'����������!��%�� %�#������������+� ����� ����%�%��"�%�����)�����4�"�(��.(���� ���������������,��(��� %&����������"�� �#����� ��������� #��&���������)7��89��:;<������������ ��=����������>�9�?���@ABCDAEFGHABIJEKLEMAN@ABCIEOPCB QPCOPCB@ABCDAEFGHABIJEKLEMAN@ABCIEOPCB QPCOPCB ��������������� ������������������������ ���������������� !����"��#�!$%!��&'�(�'�)#*���� �++��$ #���)$�!��!��"��$%���!#��,��&$'�%-��.�����#�"��!�������&.�����.#%����/� ���� �$���0��������"�#��������)#*���"�� �$����!���$+$�%�����!#���*� !��������$%�#'��#���#')#*��"�$(���#�"��#+.'�"�#���!� ���� ���$+��#�"�#''�$����# �$����#���/�����/��!���# �� ��"$�$������� �++������,��$'�%+�"�'�01234567898:;<=4:>64?6@:A6<B>48<C4D6@;=<E��#��$"�#'�)��'"F�#''�.��G� ���!#(���)����.#�#���%���.�H�������� ��#����!��"��$%��#�"�������(��$/*�$�0�E���!����#'�)��'"F�'$+$��"���"%����+#*���I�$���*������)�#�����!�!#��0J# !���#+�!#��$����)�������/��.� $#'$K�"��L$''�F��� !�#�� ��#�$�%��*��!��$K#�'��MNO �"�F����/$%��$�%�������)�)#*�����/$�"���%��$���!��"��$%�0�N!�����)��%���.���# !���#"�!����$%$�#'�"��$%���.� $/$ #�$���#�"�+#L���!�$���)��$����.���#�$���0�N!��"��$%����!#���� ��#��� �"���!#��+������!#���.� $/$ #�$��F�)!���#��*����G���#���!��(��$/$ #�$�����%$&�����$����� ��#���� ��#�$���)!�����!��"��$%��"��������+#� !�$���"�� �$.�$��0O$L�)$��F�*����������� !� �"��$��$��#���.#�#����'� L�/��+�"��$%�� �"�0�E�� '#��$ �,��&$'�%F��# !�%����$��#���.#�#���+�"�'�0�P�)�(��F���$�%�#�+�"�'�����!�'"��!��������� !�/���� #������$+$�%�.���'�+��#����"�"�$($�%�#�"��#+.'$�%F�#�"����Q*���+,��$'�%$����"� ����!��.��%�#+��'� L������.#�#����!��������� !F����!�'�%$ #''*�#�"���+.��#''*0R���+����"��#$'�F�����Q� �$���S0T0U��"��$%���%��)�$�� �+.'�V$�*F��!�� ���� �$�������)�����!���'� L��$� ��#��0�N)�MNO��'� L��+#*��!#���"�K�����/��$%�#'�F�)!$ !�+�������'$���"�$���!�� ���� ����"���/���!�+���� �++��$ #���.��.��'*0�W���+$�+#� !�"����+$�.'# �"� ���� �$���#�"��!�"��$%��)$''�����)��L0����� #����"� ����������*���$�%��!�� ���� �&�*&�#+���*��#VF�����!$��+�����!#��"���'���*�����*.$�%����"��0�E/�$��$��#�����'�������F��� !�#���)#..$�%.$����!#����'*���%%'��� #�$��#''*F�*���+#*��������$ ���!��.���'�+�/�����+���$+�0X�����*���$��)!���*���#""�#���)��$%�#'����)�����)���'� L�0�����!#(������"$�������'*��!���'� L�����#""��!����)�.��������#'����!��!$%!��&'�(�'����'$�����!#��)$����.��!�"�($ ��0�U%#$�F�����)���%� ���� �$���#��#�*�'�(�'�#�"��!��"��$%�����.��)��L$�%0�W�)����F��!���*���+���'*�/#$'��$����+$�����'*YN!����'��$���$���!��$����/# �F��!��Q*���+,��$'�%� ������ ���!#����.��������#����"'���/)$���F�)$�!�$���''$%�� ���� !�#���*� !���$K#�$��F�#�"�/�� �$��#'� �"�0�U��$����/# � #�����$���#��$#��"�'$L��#�+�"�'������#'��� ���� ��"����.�����'$L��#��$%�#'0�123234Z[\\]<;B8:;[<46:_66<4:>64?6@:A6<B>48<C4D ?N!����V��/�)��� �$�����!�)�#�������� !� ���� ��"����#��#��$���F���$�%�$�"$($"�#'��$%&�#'��#�"�#%#$����$�%�$����/# ��0�P����$��#�"$#%�#+��/��!����.�'�(�'�"��$%��$� '�"$�%�#������� !F�#��$���F� '� L�%����#���F�#�"��!���$%�#'���!#�� ���� ���!�+�#���!�)��$�R$%����S&ab0�N!$��$��#���$($#'�"��$%�F�#�"����*��� #�� �� ����#�������!��Q*���+,��$'�% �� �.���#�"�����%�����%%�"�"�)��$���!��"��$%�0�U���!����"��/��!�� !#.���F�#��UNc�������$���!�)�0

Page 40: SystemVerilog for Verification

���������������� ������������ ����������������� �!"#�$�%� �����&��#'����!���()"���*+*��,'--�!�")��'!�&��#�.'���/0123455467892:4;123<=9>18?@2@0462?012151>18?@2432:4881:?7892=82A/B2C54:D2?42=?1@?C18:0E2F7<@?27@2?01201=;1<234<2?012=<C7?1<2>4;15E2/07@2G@1@2?012H1<7549IJKK�2@?L51M4<?2;1:5=<=?748@N2601<12?012?LM12=8;2;7<1:?7482=<12782?01201=;1<E2O4>12:4;120=@2C118513?24G?234<2:5=<7?LEP@2;7@:G@@1;2782O1:?7482JE�E�N2OL@?1>H1<754920=@21QM=8;1;2?012:5=@@7:2RST2?LM12@4?0=?2L4G2:=82G@127?257D12=2UVRS2?42:4881:?2C54:D@E2W82<1:4987?74824327?@28162:=M=C757I?71@N2?012RST2?LM120=@2?01281628=>12432XYTVZE2/012485L2M5=:12601<12L4G2:=884?2G@12=XYTVZ2[=<7=C5127@2=281?267?02>G5?7M512@?<G:?G<=52;<7[1<@N2601<12L4G2>G@?2G@12=281?@G:02=@2UVRSE\)-]���*+�%� �����-'_�����!��]'���abcdefghijkahlfmaclkclfdanopfqrstufnhgvlwfffffffffffffffffovkclffdanopfqrstufhexceylwfffffffffffffffffovkclffdanopfhylwfffffffffffffffffovkclffdanopfpdz{|ff}}}ffgd~g�yf�mkayebnefpdzfahfkayebnefhyl{fienovffffo�fmhyl{ffffffnhgvlf��f��itt|ffffedyefffffff}}}ffevbevbabcde/012?1@?C18:027@2D1M?2782=2>4;G512?42@1M=<=?127?23<4>2?012;1@798E2/LM7:=55LN27?2:4881:?@?42?012;1@798267?02M4<?@E���������������� ���������������������������� ���������������� ���������������������������� ��������������� ������������������������ ��������������� �!"#�$%&�'!($)��*+"!,-./012314325678/3220-96:2;<=>?29@A73B2222222222222-/38/320-96:2;<=>?2@1C/143B2222222222222-/38/320-96:2@43B2222222222222678/3220-96:2:0DEF2267636A02G19672222H58-41.912:0DE2222222@1C/1432IJ2KLG><F2222M.6480AN5OHP>3=2Q@-R12@1CJ><OB2M36,[email protected]:0DEF22226S259@A732TJ2KLG><E222222M.6480AN5OHP>3=2A<=29@A732TJ2KLG><OB2M36,1EF2222UUU2222MS6764VF2217.17.,-./01WXYZ[\]ZY[_a[Zb\ Yb[aZ[XYZ[Ya[cYbXZdeZfgWhZdeZ b_ieYaZdZaj]_YZb_\bklYYmd[\mn���������o� *�p��q���$�"�(!"�r("&*'"��$�($"�+s�%�,-./0123-8F220-96:2;<=>?29@A73B2@1C/143F22G63222:0DB2@43F22A0tAN42uv2:0D2J2w:0DF22A@Gx8-@32A<259@A73B2@1C/143B2@43B2:0DEF222yy2zA,8012{U<223143222223<259@A73B2@1C/143B2@43B2:0DEF222yy2zA,8012{UK17.,-./01|Z}dj]_YZ~n�hZ[XYZY[_a[aZdmYZaj]_YhZci[ZmYd_ZeYalaZ�[XZXiemYeaZ\�Z] aZmY�imY]dlYaZ\�Zald_ZdeZ]\m[ZeYb_dmd[\anZ�__Z[XYaYZb\ Yb[\aZbdZcYZYmm\mZ]m\YnZ�aZdald_Zj\�YaZ[Xm\ilXZaY�Ymd_Z_d�YmaZ\�ZXYmdmbX�hZ[ZXdaZ[\ZcYZeYb_dmYeZdeZb\ Yb[Ye\�YmZdeZ\�YmnZ�\ma[Z\�Zd__hZ�Z�\iZ�ia[Z�d[Z[\ZdeeZdZY�Zald_hZ[ZXdaZ[\ZcYZeYb_dmYedeZb\ Yb[YeZZji_[]_YZ�_YanZ}�a[Yj�Ym_\lZ[Ym�dbYaZbdZXY_]ZZYdbXZ\�Z[XYaYbdaYan���� &���$"�+s�%���*$!"+'%"fYalaZXd�YZcYb\jYZa\Zb\j]_Y�Z[Xd[ZY�YZ[XYZb\jji bd[\ZcY[�YYZc_\bkaZjd�YYeZ[\ZcYZaY]dmd[YeZ\i[Z[\ZaY]dmd[YZY[[YanZW\Zj\eY_Z[XahZ}�a[Yj�Ym_\lZiaYaZ[XY`[Ym�dbYZb\a[mib[Z[Xd[Z�\iZbdZ[X kZ\�ZdaZdZ[Y__lY[Zcie_YZ\�Z�mYanZWXY�Zb\�[dZ[XYZb\ Yb[�[�hZa�bXm\ �d[\hZdeZ\][\d__�hZ[XYZ�ib[\d_[�Z\�Z[XYb\jji bd[\ZcY[�YYZ[�\Z\mZj\mYZc_\bkanZWXY�Zb\ Yb[ZeYalZc_\bkaZde�\m[Ya[cYbXYanZ

Page 41: SystemVerilog for Verification

��������������� ���� ������������������������������� ����!����"#�$�����!�%&''()*�+$���, -�� ����������� �������������$���� ������!������,� �-����!�����,���$��*./0/1234567286296:;<=8>;2:?2@5ABC5=D2E?66;>:5?64+$���������FG� ��F����� ��$����,������H�FG������� �,#�!����$��I������ ���$������ ������������*�J��#���(����$ I���$������,���$���!���,����K�� FF#���������#������������������*�L ���$ I��$�������������H���!����� ��$���I �,� �-�K���G�����������$��!���������!�����������$��������#���� ����M�G���� ��, �$��$���������!��$���N+*�+$���� �-�����,��G��� ���$������������ ������G������G ��*O57P<;2.QR2S6256:;<=8>;24:<8TTC;42:U?2A?TPC;4+$����FG������������������V#�����,#�!��� ��,�!������ �����������*�N����$���WXYZ[�!����MG��� ��$���M #�����!������$������������ F�G� ��!#���������F����*@8ABC;2./.2@5ABC;256:;<=8>;2=?<28<\5:;<2] _abcdecafg]bh]ij_ef]_edklmneeekop]deqrstuepac_veawjx_neeekop]deax_n`y] _abcd"�FG���(*z�����$��!������#�!�������K��$����,����K��$���#�����������������������!� ��G ���*@8ABC;2./{2S<\5:;<2P456728245ABC;256:;<=8>;|oyjkecafehcafg]becaf]bmnee}}}eeck~c�xe�hioxypecaf]b}dkleoaeioxypecaf]b}ax_meeeefp]eeee]behcaf]b}ax_meeeeeecaf]b}pac_e��e��fttneeeekxeeeeeeecaf]b}pac_e��e �_gpac_neeee}}}eeee y`y|oyjk��������� ������������������������� ���������������� ��������������� ������������������������ ���� ����������� ����!��� ����"�#�$%&'(����)�"*+���,-#�!�./+0�1��2�*���!!�.����!�*.!!�1+���!�3./�����4.��4��.��3*�������+.���������0�!�4����0��!�1�� �,�5./�"�4����6��� .�!�0���/!��4���!��4+�� ���� ���#�$#��!+.�4��!����!��!��.���"1�4/./!,����!�1..2#�7������!�!"�++��8�"*+�!#���!!�.��#�1/���.����+�4��*�� ���"�!,)�"*+���,9�!�.7!�������!�1�� �,�5./��������.���!�4��+�������������� ��13�"�2��4�������� �� �+�������� ��/!��4�������!��� ����"��$%&'(:%;<=;>?,�@������ ��!�4��+!!�./+0��+7�3!�1��0��6���/!��4��.�1+. 2��4��!!�4�"���!,����!��!��8*+����0����".��0����+����)� ��.���,�,A,BCDEFGHIJKHLGMNOGPQRHSMTPUHCHMTDEFGHCVOTNGVHTPNGVWCQGXYZ[\]_] _abcdefgbcdfghi^jjj^fkf_fb\d]lfk^ ^mmc]]_nYZ]\]g_Y[_^ ^oapY]Zl]bcdfgjn\qhi^ ^bcdfgjc]r[] _stuvdwxi^ ^yZfp\bza{o|w_}~cY�]c]rtwx{�y_fX]hi^ ^c]p]b_auhoapY]Zl]bcdfgjn\qhi^ ^fgabcdfgjlcbk_�tuvdwxh^ ^ ^yZfp\bza{o|w_}bx}lcbk_�tuvdwx{�y_fX]hi^ ^ygfkf�i^]kZ]kZXYZ[\] }_]_�++����!��1+. 2!�������!��������0���0� .��� ��0��������?���".0/+�,BCDEFGHIJ�H�YpHD��SFGHSMTPUHCHMTDEFGHCVOTNGVHTPNGVWCQGXYZ[\]_Ypi^df_n\qi^b\�bz ��n\q t�n\qi^bcdefgbcdfgan\qhi ^mm�cYX�bXp\]�j�^bcdbxabcdfghi ^ ^ mm�cYX�bXp\]�j�^_] __xabcdfghi ^ ^ mm�cYX�bXp\]�j�]kZXYZ[\] }_Yp5./� ���!�������""�0�����1������#��6���.�����!�!"�++�0�6� ������� .��� ��.�!�1� ."� +��������0�+�!!�*�.����.�"�!��2�!,�@��3./�7����0��.�*/������7�!�4��+�������������� �#3./�7./+0��/!����6���.��00�����.������������ ��0�������.����0�����".0/+�!������� �/�++3/!�0���,�5./�7./+0��.����6���.� ���4����3�".0/+��!/ ���!�?���������/!��*�!!����������� �����./4�,����!�+��4/�4������/���4����+3���0/ �!����� ��� ���.��7����4����.�!,

Page 42: SystemVerilog for Verification

��������������� ���� ������������������������������� ��!������� ������!�"����������#��$��"�%�����&�'!�����!��$� (��)#�� �������� ���!� ���%��&�*�"���"#������"����� ���##�� ���!����$������ ��!�������������"�����&'!�����+��(� ,���� ��!����+�����%�������� �� ,��"���������� ,����� -���%��� �� ,����� ��!� ,������$�&�*�"#���.&���,�+�� ,����""��"�� �����!���������$� ,���� ��!������!��� ������$, ��! ���� ,������������ � �"�� �&�/012345678590:5;4<;51=:>345?@A3>:4<5?@;4BC0A4DEFGHIJKLFMNIONPLQKMRSJLQKRSTUVRWXHGFIJYZ[\ION]OYJJJ__JIaLHJRWXHGFIVRWXHGFIJYLQKMRS]OYJJJ__JbcdefWNIQSLXIJgRFFIWJRWJDEFGHI]]]67h7h5i=@@4A;?@j5k@;4BC0A4<50@:5l=B;<'!�����,�-����m�����$noppq���$��������$��+� ,�#�� �� ,� ������ �%���,��$��� ���������� ��!���(���������r�� ������� � ,���� ��!���s����$����� �� ,������-������#�� �&�*�"#��.&t������� �� ,�����$�������%� ���!��"�*�"#���.&q� �� ,���� ��!�������*�"#���.&.&/01234567u5i=@@4A;?@j50@5?@;4BC0A45;=5051=:>345;v0;5><4<52=B;<DEFGHIJNEwUJJKRNJJXHxUJJLHyL[OJz{JXHxJ|J}XHxUJJJLQKMRSJLQKRSPXHxTUJJJLQKMwEQNJL~JP]aQLWNJJJPLQKRS]aQLWNT�JJJJJ__J]wEQNJPRSX]ORaWLHTJJJJJJJJJJJJJJJ]QI�GIONJPLQKRS]QI�GIONT�JJJJJJJJJJJJJJJ]QONJJJJJPLQKRS]QONT�JJJJJJJJJJJJJJJ]XHxJJJJJPLQKRS]XHxTTUJJNIONJN~PLQKRSTUIWFDEFGHIJeJNEw67h7�5�B=>2?@j5/?j@03<5?@50@5k@;4BC0A45�<?@j5�=:2=B;<*�"#���.&���������#��� n �n#��� ������� ������,�"��+� ,������$��������� �������� ,��� ��!���&��,�����$������� ��� ������$�#�� ��,��� ,�����!��"� ���� ,� � ,����"#��������� ���,����!���+����$�"�� ����&��,�������������� ��� ��������� ��!������ ������$���#��$����������#���!������� ����&��,�����'����"��#�� �����+������ �������� ���"��n� ���"�����& ��������������� ������������������������ �������������� �!"#�$%�&��'(#)��*+�*$#,-./01234053167-28-.9:/56-/54;<=>555;?@-45ABCDE5@13./F510G:0H/>555;?@-451H/>55I?J9?1/5KLMK58?:/9:/510G:0H/F51H/F5555555555555555-.9:/55@13./F54;<=>55I?J9?1/5NOK58-.9:/510G:0H/F51H/F54;<F555555555555555?:/9:/5@13./=>55I?J9?1/5PQRSKQT58-.9:/510G:0H/F5@13./F51H/F54;<=>0.J-./012340UVWVXYWVXZ[VXYW\]ZVWX_VaXYbXZVcZ\Vbd[eXf]Z[XZ[VX_g_WZX]bXZ[V]WXg_WZXd_bbVdZ]_ba]cZhXi_ZVXZ[YZXj_kXgkZXZ[VX_g_WZXbYVeXlmnX_WXnopneXYqZVWXZ[VX]bZVWqYdVXbYVerstuvwhXxZ[VWXZ[YbXZ[VX_g_WZXbYVeXZ[VcVXYWVX]VbZ]dYaXZ_XZ[VXgWVy]_kcXVzYgaVch������������{$|(#�$��*+���'(#)�("#�$%�&��},("~��*+�*$#,I?J:;05316583167-2�NOK5316-2=>55���0.JI?J:;0��������������,#|�"&)�'(#)�("#�$%�&��},("~��*+�*$#,I?J:;05/0H/583167-2�KLMK5316-2=>55���0.JI?J:;0�[VXZ_gX_VaX_VcXb_ZXd[Yb�VXqW_ X�YgaVX�h�eXYcX_g_WZcXYWVXcgVd]q]VX]bXZ[V_kaVX[VYVWeXb_ZXf[VbXZ[VX_kaVX]cX]bcZYbZ]YZVh�yVbXZ[_k�[XZ[VXd_VX]b�ZXd[Yb�VXkd[X�VzdVgZXZ[YZXZ[VX]bZVWqYdVX�WVfXaYW�VW�eXZ[]c]bZVWqYdVX_WVXYddkWYZVajXWVgWVcVbZcXZ[VXWVYaXVc]�beXVcgVd]YaajXZ[VXc]�bYaX]WVdZ]_bh�[VWVXYWVXZf_XfYjcXZ_XkcVXZ[VcVX_g_WZXbYVcX]bXj_kWXVc]�bhX�_kXdYbXcgVd]qjXZ[V]bXZ[VXgW_�WYXYbX_kaVcXZ[YZXd_bbVdZXZ_XZ[VX]bZVWqYdVXc]�bYaceX_WXj_kXdYbXgkZXZ[V]bXZ[VXZ_gXaVyVaX_kaVXZ[YZXgYccVcXZ[VX]bZVWqYdVX]bZ_XZ[VXg_WZXa]cZX_qXZ[VXgW_�WYXYb_kaVchX�[]cX\__�XWVd_ VbcXZ[VXq_WVWeXYcXZ[VX_g_WZX]cXYbX]gaVVbZYZ]_bVZY]aXZ[YZXc[_kaXb_ZXdakZZVWXZ[VXZ_gXaVyVaX_kaVhXU_fVyVWeXj_kXYjXfYbZXZ[VXqaVz]�\]a]ZjXZ_X]bcZYbZ]YZVXYX _kaVX_WVXZ[YbX_bdVeXf]Z[XVYd[X]bcZYbdVXd_bbVdZVXZ_XY]qqVWVbZX_g_WZeXZ[YZX]ceXYX]qqVWVbZXck\cVZX_qX]bZVWqYdVXc]�bYachX�bXZ[]cXdYcVeXj_kf_kaXbVVXZ_XcgVd]qjXZ[VX _g_WZXf[VbXj_kX]bcZYbZ]YZVXZ[VX _kaVeXb_ZX]bXZ[V_kaVh

Page 43: SystemVerilog for Verification

��������������� ���� ����������������������� ��!�"�#$��%&����'()*+,+-.*/01234*2++5/*)(*1(*02*+,+-.*02)+-637+8*9(2/05+-*3*9:;*<*=+=(-.*>?/*=(5@+4+5*A0)B*32*CDEFGHIJF8*KB+*9:;*0/*)B+*>?/*=3/)+-*325*5-0,+/*3*/?>/+)*(6*)B+/01234/L*/?7B*3/*GFMNFOELJPQQIDRL*325*IRRGFOO8*KB+*=+=(-.*0/*3*/43,+*325-+7+0,+/*)B(/+*/01234/*325*5-0,+/*GFIRS8*T()B*=3/)+-*325*/43,+*5-0,+*RIEI8*KB+*>?/3->0)+-*(24.*4((U/*3)*GFMNFOE*325*VGIDEL*325*012(-+/*344*()B+-*/01234/8*W(*.(?-*02)+-@637+*A(?45*B3,+*)B-++*=(5X(-)/*6(-*=3/)+-L*/43,+L*325*3->0)+-L*X4?/*32*(X)0(234=(20)(-*QPRYPGE8����Z�[�&"�����"��\��&�]"&��������_(?*732*7-+3)+*3*>?/*=(20)(-*?/021*)B+*abcdaeQPRYPGE8*KB+*6(44(A021*0/*3*)-0,034=(20)(-*6(-*)B+*3->0)+-8*f(-*3*-+34*>?/L*.(?*7(?45*5+7(5+*)B+*7(==325/*325*X-02)*)B+/)3)?/g*7(=X4+)+5L*6304+5L*+)78h"i�j&���kl�m�n��&��i��&j� ��!����&�]"&�$�����i�������opqrstuopvwxpyuz{y|}w~��������u{y|w~��uu{s�{��u�z�p�tq�tu{y|w~�yt�rt�x����u|t�wvuuuu�qw��s{�z����x�uyt�rt�x���u{��tyxtq��u�xwot��uuuu�z�p�tq�tu{y|w~��y{vx�����uuuu�qw��s{�z����x�u�y{vx���u{��tyxtq��u�xwot��uutvquu{s�{��u�z�p�tq�tu{y|w~�yt�rt�x����u|t�wvuuuu�qw��s{�z����x�uyt�rt�x���u{��tyxtq��u�xwot��uuuu�z�p�tq�tu{y|w~��y{vx�����uuuu�qw��s{�z����x�u�y{vx���u{��tyxtq��u�xwot��uutvqtvqopqrst������\��&�]"&���"�&��]]��2*02)+-637+*7322()*7(2)302*=(5?4+*02/)327+/L*(24.*02/)327+/*(6*()B+-*02)+-637+/8KB+-+*3-+*)-35+@(66/*02*?/021*02)+-637+/*A0)B*=(5X(-)/*3/*7(=X3-+5*A0)B*)-350)0(234X(-)/*7(22+7)+5*A0)B*/01234/8*KB+*35,32)31+/*)(*?/021*32*02)+-637+*3-+*3/*6(44(A/8� �2*02)+-637+*0/*05+34*6(-*5+/012*-+?/+8*�B+2*)A(*>4(7U/*7(==?2073)+*A0)B*3/X+7060+5*X-()(7(4*?/021*=(-+*)B32*)A(*/01234/L*7(2/05+-*?/021*32*02)+-637+8��? ¡ ��������������� ������������������������ ���� ����������������� !�� �"��"�" #"$��%"�� �$��%"�&� ����� ��"#'��(�����'�#)*&+����*��!$� $$�#��� !!+���"�%��#� !���#"�� )"�&� ��$"�)��,"$����-* �.�/0.1 2*"���#"�� )"�# ("��#*"�3�4,!"�������� !��#* #�+���$")! �"��%"�� �$��%"����"%"�+�4�$�!"��������� 4� �$���#���#���� �)"�#� !�!�) #���&��"$�)����#*"������5,�!�#+����4��)���")#�������� !�.1 2�� $$� ��"'����� !&�+���3��#�* %"�#��$")! �"��#���)"����#*"���#"�� )"&���#���*��*"�5!"%"!�4�$�!"�&���)"� � ����"$�)����"�����.1 6�$���#�� !!�'� �4�$�!"�#��" ��!+�# �� ���,�"#�������� !�����4� ����#"�� )".7���) ����")��+����� !�$��")#�������� $$�#��� !�)*")(���.2*"�$�� $% �# �"����������� ����#"�� )"� �"� ����!!�'�.1 8�������#5#�5����#�)���")#����&���#"�� )"��'�#*�4�$���#�� �"� !4��#� ��%"�5,��"� �����������#��'�#*�!��#��������� !�.���#"�� )"��* %"�#*"� $% �# �"�#* #� !!#*"�$")! � #����� �"��#�!!������"�)"�#� !�!�) #���&��"$�)����#*"�)* �)"�����4 (5���� ��"����.1 7���4��#���'���"�#*"���#"�� )"�� 4"���� $$�#����#��#*"����� !�� 4"&������5,!+�4 (����#*"�4�$�!"��4��"�%"�,��".1 ���+��� �"�)���")#����#'��$"�����,!�)(��'�#*� ����9�"����#�)�!�#* #�'�!!���#,"��"��"$&���#"�� )"��4 +�,"�4��"�'��(�#* ��3��#�'������#��"#*"��#*"����#�.1 �#����$����)�!#�#��)���")#�#'��$���"�"�#���#"�� )"�.�:��"'���#"�� )"�;<=>?@AB4 +�)��# ��� !!�#*"����� !����� ��"C��#������"�;DE<?@AB&��!����"'����� !�; $$�"��&�$ # &�"#).B.�7���4 +�* %"�#��,�" (���#�#*"���$�%�$� !����� !�� �$$��%"�#*"4� ������� #"!+.FGHGIJKLMNJOPQLMRSTULPJSPVJWXSRYZN[2*"�\+�#"4]"��!���_6���")���"��4 �+��#*"��' +������+���#����"���#"�� )"�.�\""\�#*"�! �$�;00aB�����4��"�"C 4�!"�������������#"�� )"������$"����.FGbJcTURdZd[JeURUPf2*"�#�4����,"#'""��#*"�#"�#,"�)*� �$�#*"�$"�����4��#�,"�) �"��!!+���)*"�#� #"$.�:#� )+)!"�!"%"!&�+����""$�#��$��%"� �$��")"�%"�#*"��+�)*����������� !�� #�#*"�����"��#�4"����"! #����#��#*"�)!�)(.�g��%"�#���! #"����� 4�!"�#���" �!+&� �$�+����#"�#,"�)*�������� )+)!".�h%"��'�#*��� �����!"�#�4"��!�#�;����"C 4�!"&�"%"�+#*����#* #�* ��"��� #�#�4"/00���B&�4�C����$"����� �$�#"�#,"�)*�"%"�#��) ��) ��"� �� )"�)��$�#���&���)*� ��'*"� ����� !����,�#*��" $� �$�'��##"�� #�#*"�� 4"�#�4".�g��+����" $�#*"��!$�% !�"&����#*"��"�3��#�'��##"�i����]"��!��&����,!�)(���� �����4"�#��*"!��'*"�� �#"�#�4�$�!"�$��%"�#*"�gj2&�,�#�#*"�#"�#�)��!$���#� !' +��,"����"��#�� 4�!"$�#*"�! �#�% !�"�$��%"��,+�#*"$"����.�\+�#"4]"��!���* ���"%"� !�)���#��)#��#��*"!��+���)��#��!�#*"�#�4�������#*")�44���) #���.

Page 44: SystemVerilog for Verification

������������� �� ������������������������������� ����!"�����#�"�$�� �#�����%����&���%'()*(+,-./0,)12304)56,6)/)02304*(7)12304)+3)68,0*.9)+:,)+*;*(7)3.)69(0:-3(356)6*7(/26-,2/+*<,)+3)+:,)023046=)'(9)6*7(/2)*()/)02304*(7)12304)*6)(3>)?-*<,()3-)6/;82,?)69(@0:-3(35629A),(65-*(7)+:/+)935-)+,6+1,(0:)*(+,-/0+6)>*+:)+:,)6*7(/26)/+)+:,)-*7:+)+*;,=B2304*(7)123046)/-,);/*(29)56,?)19)+,6+1,(0:,6)15+)/263)/223>)935)+3)0-,/+,)/16+-/0+69(0:-3(356);3?,26='()*(+,-./0,)0/()03(+/*();52+*82,)02304*(7)123046A)3(,)8,-)02304)?3;/*(A)/6)+:,-,)*66*(72,)02304),C8-,66*3()*(),/0:)12304=)D98*0/2)02304),C8-,66*3(6)/-,)EFGHIJKLJMNOP).3-)/)6*(72,),?7,)02304)/(?)EFMNOP).3-)/)QQR)S?3512,)?/+/)-/+,T)02304=U35)0/()68,0*.9)/)02304)64,>)*()+:,)02304*(7)12304)56*(7)+:,)KJVWXNY)6+/+,;,(+A)15++:,)?,./52+)1,:/<*3-)*6)+:/+)*(85+)6*7(/26)/-,)6/;82,?)Z56+)1,.3-,)+:,)?,6*7(),C,05+,6A/(?)+:,)35+85+6)/-,)?-*<,()1/04)*(+3)+:,)?,6*7()?5-*(7)+:,)05--,(+)+*;,)623+=)D:,)(,C+[,0+*3()8-3<*?,6);3-,)?,+/*26)3()+:,)+*;*(7)1,+>,,()+:,)?,6*7()/(?)+,6+1,(0:=\(0,)935):/<,)?,.*(,?)/)02304*(7)12304A)935-)+,6+1,(0:)0/()>/*+).3-)+:,)02304*(7,C8-,66*3()>*+:)EW]_V M)-/+:,-)+:/():/<*(7)+3)68,22)35+)+:,),C/0+)02304)/(?),?7,=a3>)*.)935)0:/(7,)+:,)02304)3-),?7,)*()+:,)02304*(7)12304A)935)?3)(3+):/<,)+3)0:/(7,935-)+,6+1,(0:=[/;82,)b=cb)*6)6*;*2/-)+3)[/;82,)b=cd),C0,8+)+:/+)+:,)efge);3?83-+)(3>)+-,/+6]JhXJIY)/(?)L]WiY)/6)69(0:-3(356)6*7(/26=)D:,)02304*(7)12304)M)?,02/-,6)+:/+)+:,6*7(/26)/-,)/0+*<,)3()+:,)836*+*<,),?7,)3.)+:,)02304=)D:,)6*7(/2)?*-,0+*3(6)/-,)-,2/+*<,+3)+:,)jHKGH]Y)>:,-,)+:,9)/-,)56,?=)[3)]JhXJIY)*6)/()35+85+)*()+:,)efge);3?83-+A/(?L]WiY)*6)/()*(85+= ��������������� ������������������������ ���������������� !"�#$�%��&'"(���%�)%*'!+�,�)%*-./01234053167-28-.9:/56-/54;<=>555;?@-45ABCDE5@13./F510G:0H/>555;?@-451H/>554;?4<-.@5465I89?H0J@054;<=>5555KK5L04;3105465555?:/9:/510G:0H/>55555-.9:/5@13./>5550.J4;?4<-.@55M?J9?1/5NOPN584;?4<-.@546F55555KK5QH05465555555555555555?:/9:/51H/=>55M?J9?1/5LQN58-.9:/510G:0H/F51H/F5?:/9:/5@13./=>0.J-./012340KK5N1-R-3;5/0H/F5H005P3M9;05STUD52?153560//015?.0M?J:;05/0H/83167-2TNOPN5316-2=>55-.-/-3;[email protected]:0H/5VW5D>5555I316-2T46>5555XJ-H9;3Y8ZI[D/C5\13./5W5[6ZF5X/-M0F5316-2T46T@13./=>550.J0.JM?J:;0��]��_)+'%�a��b'#��'!��!� !"�#$�%�cdefghiijgklminnlopfgplmqrkeosgtdlgfesorqfgeoguivkgeotlkwrmlgrfgxyz{|}g~deqlgtdl���gdrfgrgkvqlgtdrtgfrufgtigvflgrg�{���gcdlgpewwlklomlgefglrfl�iw�vflg�f�gklvfrheqetu��wguivkgtlfthlomdgpke�lfgrogrfuomdkioivfgfesorqgeogrogeotlkwrmlg~etdgrg�kimlpvkrqrffesonlot�gtdlgfesorqgnvftghlgrgxyz{|gtu�l�g�g�{��gmrogioqughlgpke�log~etdgrgmio�teovivfgrffesonlotgftrtlnlot�g�esorqfgeogrgmqimjeosghqimjgrklgrq~rufgfuomdkioivfropgmroghlgplmqrklpgrfgxyz{|gikg�{���g�rn�qlg����gfdi~fgdi~gtdlgxyz{|gfesorqgmrohlgpke�logpeklmtqu�g~dlklrfgtdlg�{��gkl�veklfgrppeteiorqgmipl�

Page 45: SystemVerilog for Verification

������������� �� ������������������������ �����!�"��#�$�!�"%&'()*+,(-+./&,01%*234---567%,-54--8%)(-84(&9%&'()*+,(:69;5(-'(.'2+./&,01%*-%*,34--567%,-56,+518%)(4--+..%7&-%*,<8-=>-56,+518%)(4--%&%'%+5-?(7%&----%*,<5-=>-@4------AA-B)%C(-+./,0-567%,-9%)(,'5/-<<<----56,+518%)(-=>-D4-AA-?;'-9)%C(-8%)(-'0)6;70-+..%7&----<<<--(&9(&9:69;5(EFGHIJKLKJMNGFLHGLONJLPQRSTLUGKLVFHJKUMWJLNVXFMYNLVNLHIMHLHIJLWGZ[VYJKL\VYYLXV]JLMFJKKGKLVULGOLOFVFHJFHVGFMYYLONJLZOYHV[YJLNHKOWHOKMYL_KV]JKNaIJLbccLHMdJNLMLZGKJLYGFXeHJKZLM[[KGMWILaMdJLHIJLWMNJL\IJKJLGOLIM]JLWKJMHJ_HJNHLWG_JLHIMHL\GKdNL\JYYLGFLHIJLWOKKJFHL[KGfJWHLMF_LVNLYMHJKLONJ_LVFLMLFJ\L_JNVXFgIMHLVULGOKLVFHJKUMWJL\VHILMYYLVHNLPQRSTLNVXFMYNLVNLWGFFJWHJ_LNOWILHIMHLFG\LMLNVXFMYIMNLZOYHV[YJLNHKOWHOKMYL_KV]JKNhLaIJLJFXVFJJKNL\VYYLIM]JLHGLWIMFXJLHIMHLPQRSTLHGLMiSjklLMF_lLVULHIJLNVXFMYL_GJNLFGHLXGLHIKGOXILMLWYGWdVFXLmYGWdlLWIMFXJLHIJL[KGWJ_OKMYMNNVXFZJFHLNHMHJZJFHNLnG\LHIJKJLMKJLH\GL]JKNVGFNLGULHIJLVFHJKUMWJlLMF_LJoVNHVFXLHJNHNZONHLmJLZG_VUVJ_LmJUGKJLHIJLWMFLmJLKJONJ_LpJ\KVHVFXLXGG_LWG_JLXGJNLMXMVFNHLHIJbccL[KVFWV[YJN��q�q�r����#�s�!$���t����u����!#vGOKLHJNHmJFWILFJJ_NLHGLmJLNJ[MKMHJLUKGZLHIJL_JNVXFlLFGHLfONHLYGXVWMYYLmOHLMYNGLHJZe[GKMYYLwGFNV_JKLIG\LMLIMK_\MKJLHJNHJKLVFHJKMWHNL\VHILMLWIV[LUGKLNFWIKGFGONLNVXFMYNxFLMLKJMYLIMK_\MKJL_JNVXFlLHIJLyza{NLNHGKMXJLJYJZJFHNLYMHWILHIJVKLVF[OHNLUKGZLHIJHJNHJKLMHLHIJLMWHV]JLWYGWdLJ_XJLaIJNJL]MYOJNL[KG[MXMHJLHIKGOXILHIJLNHGKMXJLGOH[OHNlMF_LHIJFLHIJLYGXVWLWYGO_NLHGLHIJLVF[OHNLGULHIJLFJoHLNHGKMXJLJYJZJFHNLaIJLHVZJLUKGZLHIJVF[OHLGULHIJLUVKNHLNHGKMXJLHGLHIJLFJoHLZONHLmJLYJNNLHIMFLMLWYGWdLWWYJL|GLMLIMK_\MKJHJNHJKLFJJ_NLHGL_KV]JLHIJLWIV[{NLVF[OHLMHLHIJLWYGWdLJ_XJlLMF_LKJM_LHIJLGOH[OHNLfONHLmJUGKJHIJLUGYYG\VFXLJ_XJLELHJNHmJFWILIMNLHGLZVZVWLHIVNLHJNHJKLmJIM]VGKLxHLNIGOY_L_KV]JLGFLGKLMUHJKLHIJLMWHV]JWYGWdLJ_XJlLMF_LNIGOY_LNMZ[YJLMNLYMHJLMNL[GNNVmYJLMNLMYYG\J_LmLHIJL[KGHGWGYLHVZVFXN[JWVUVWMHVGFlLfONHLmJUGKJLHIJLMWHV]JLWYGWdLJ_XJxULHIJLyzaLMF_LHJNHmJFWILMKJLZM_JLGULbJKVYGXLZG_OYJNLGFYlLHIVNLGOHWGZJLVNLFJMKYVZ[GNNVmYJLHGLMWIVJ]JLxULHIJLHJNHmJFWIL_KV]JNLHIJLyzaLMHLHIJLWYGWdLJ_XJlLHIJKJLWGOY_ ��������������� ������������������������ ����������������� ���!"�#$� ��%� $���&��'�(��(�)� �!� ��!�*��+,-���(. !���%���� $��-/! �*.&.!0��. ��!���&� &��&� ��� ��� $�����(. !1�2��*� $���. !���0� $���&��'���)�!��&&����3��� � $��!�*��!�*.&� ���� �*�0��. ���� $����!�)�0�!�*����(. !�)� � $��3�&.�����3���.���)� $��&�! ��4�&�0�5$����!�� $�����(. !�)� �3�&.�!�%��*� $���.���� ��4�&�"6���5�4����.��� $�!�(���&�*��!� ������!*�&&���&�4!� �� $��!4! �*0�!.�$��!�78"�-$�!%����!� $�� $������%�9���&�)������ ��! �(����������!�$��.&����% ����&&�� $�������":�3�����&4� $�.)$0���&��)����!�)��$�!�!�3���&�!�� ���!� $� ��&&�5�� � ���;��. ��&�! "#$�!��78�5��!��. 1�: ���.&��3��4�%��*��.�� ���.���������.�(����� ��&���� 5����!�*<.&� ��!"�=.& �(&�� $����!�.!��)�78���&�4!���.!������ ��*���! �����$�3���"�>3����.!��)78��!�� �5�&&�*�'��4�.�������.�! ��&�������� �(�� ��&�"-$����; �!�&. �����!� ��.!����&��)�����&�40�7?"�@-A������$�!���� �*��)0�� $��� $���&��'���)�!0�����!������ �*��.�� ��% ��� $���&��'0� $��&�)���$�!�!� &��"�B�5�3��0�5$� �%�����*��.&��.!�!��� �*��(����!�����%�C��!0�5$����!���� $���.!�������!�&. �����%�D.! CE�(!1�+��!� $� �7?�*����C��!0�CE�(!0����!�*� $��)��&!�1�F�.�5�� � �����3���!�!����!�(�!!��&���% ��� $���&��'��4�&��5� $� $���� �3���&��'���)�0��. ��� ��.���)� $� � �*�0������%������4 $��)��&!������$�((��"�#��!��4� 0�4�.��+,-�*�4���� ������*�;��%@-A������5� $������&�4!�����)� �������5� $���&�4!"�G.! ��!�4�.�!$�.&���3����.!��)780�! �4��5�4�%��*�7?���&�4!� ��%�;� �*��)�(���&�*!"HIJIHKLMNOPMQRSKTKUMNVWQKXYRMKZ[Q\VOV[Q]�*(&��"C_�!$�5!���(� �� ��&����������� ������ 5���� $�� �! ����$�������!�)�"�-$����������� �������.�!�5$��� $�� �! ����3�!� $��abca�!�)��&����� $��� $��� $���(�� !"-$��*�*��4��!�5�� ��)���� $��abca�!�)��&�������.&��5�'��.(��**���� �&40�5$����! $�dceaf0bggc0�����gbab�!�)��&!�! �&&�$�3�� $�����&��3�&.�!"�F�.���.&����&�4��&& $�!��!�)��&!�!&�)$ &4��4�.!��)�����&��'��)��!!�)�*�� !0��!�����**�������4�h.*<*��)!�i�EEEj0��. ���*�*���� $� � $�� �! ����$����� $����!�)�������� $�.!��)� $�!��!!�)�*�� !"�: ��!�! �&&�(�!!��&�� ��)� ������������� ������ 5���� $�� �! ����$������!�)�"]�*(&��)� $����!�)���. (. !�$�!���!�*�&���(���&�*"�F�.�5�� � ��)���� $��3�&.�!�� � $�&�! �(�!!��&��*�*�� 0�D.! ���%���� $���� �3���&��'���)�"�k��$�(!�4�.�'��5� $����; �&��'���)���!�� �CEE��!"�F�.����l �!�*(&����)$ �� � $���&��'���)��� �CEE��!0��!�!�*���!�)��3�&.�!�*�4�$�3���&����4��$��)��"�F�.�!$�.&��!�*(&��� �mfano�D.! ���%��� $���&��'���)�"

Page 46: SystemVerilog for Verification

������������� �� ����������������������������� ������!�����"�������!�#�$%&'()*$)$%+,-./0'1*2.+)*314+15*2+.1)5**************./0'1*2.+)*6789:*4&&+5***************./%'1*2.+)*6789:*&414;<**(%=.>*6789:*$)$6?@A:<**4(24,3*B-0%3)&=)*314+1;*C)=./****.D*-2+.1);******$)$64&&+:*EF*&414<****GGG**)/&)/&$%&'()$%&'()*1)31-%'10'1*(%=.>*314+15*2+.1)5************%'10'1*(%=.>*6789:*4&&+5*&414;<**./.1.4(*C)=./****314+1*F*9<************HH*I/.1.4(.J)*3.=/4(3****2+.1)*F*9<****KL9<******************HH*MN%+1*&)(4,****4&&+*F*OPNQ?<*********HH*M14+1*D.+31*>%$$4/&****&414*F*OPN@4<****314+1*F*L<*****2+.1)*F*L<****GGG**)/&)/&$%&'()��R�S�T"��UV�#V���W���X�����T����#���#���!YZ[\] _\\_Z[\a]bc[d\ef\_Z[\degehi\\j[feih\khj\_[f_b[hlZ\[m[h_f\jn]ehi\_Z[\fkd[_ed[\fc_o\_ZniZ\[m[h\eh\an][\pYq\_Z[\fkd[\a]bc[d\lkh\Zkaa[hrrs\tZk_\e\_Z[][u[][\k\ukv\vn\lncj\f[ak]k_[\_Z[f[\[m[h_f\_[da]kccvo\wnf_\kf\vn\f[ak]k_[j\_Z[lj[x\y_\rzz\hfo\vn]\_[f_b[hlZ\lncj\fkdac[\_Z[\j[feih\n_an_f\b[ ][\_Z[\lcl{\ZkfZkj\k\lZkhl[\_\lZkhi[\khj\khv\j[feih\kl_eme_v\Zkf\lln]][js\|v\j[ehe_eho\_Z[f[\mkc}n[f\uncj\b[\_Z[\ckf_\affebc[\h[f\]d\_Z[\a][menf\_ed[\fc_s\YZ[ho\k_[]\kcc\_Z[j[feih\[m[h_f\k][\jh[o\vn]\_[f_b[hlZ\uncj\f_k]_s~u\j[f\�vf_[d�[]eci\{hu\_\flZ[jnc[\_Z[\_[f_b[hlZ\[m[h_f\f[ak]k_[cv\]d\_Z[j[feih\[m[h_fx\�h\�vf_[d�[]ecio\vn]\_[f_b[hlZ\lj[\ef\eh\k\a]i]kd\bcl{o\uZelZ\effedeck]\_\k\d jnc[\eh\_Zk_\e_\lkh\lh_keh\lj[\khj\mk]ekbc[f\khj\b[\ehf_kh_ek_[j\eh_Z[]\d jnc[fs\~u[m[]o\k\a]i]kd\lkhh_\Zkm[\khv\Ze[]k]lZv\fnlZ\kf\ehf_khl[f\d jnc[fo\eh_[]kl[fo\]\_Z[]\a]i]kdfsy\h[u\jemefeh\\_Z[\_ed[\fc_\ukf\eh_]jnl[j\eh\�vf_[d�[]eci\kf\fZuh\eh\�ein][\�}�s\�h\�[]ecio\df_\[m[h_f\[g[ln_[j\eh\_Z[\yl_em[\][iehs\YZ[][\k][\j�[hf\ \_Z[]][iehf\]\hhbcl{ehi\kffeihd[h_fo\�q�\[g[ln_eho\[_lso\bn_\_Z[v\lkh\b[\eih][j\]r� j\ljehi\inej[ceh[f\fnlZ\kf\a]a[]\nf[\\hhbcl{ehi\kffeihd[h_f\lkh\][jnl[\_Z[f[\]kl[\lhje_ehfobn_\eda]a[]cv\lj[j\kffeihd[h_f\Zkm[\_Z[\Zkbe_\\l][[aehi\ehs\|nif\Zkaa[ho\[m[h\eh\_[f_b[hlZ[fs ��������������� ������������������������ ���������������������� ��!��"#�$�������%&'�()*�+�,, )-��()*�$(./�012234�����,����*��( .��)�����$5���,6�� .�-��7�)����- �)�#89:;<=>?@?>AB9C><=:9DCE>9CE9F=>B>GHEI=JK=<9LD:>I9J=>EI=M>N ��������O�P����*�� )-�(�� ,���.��� ������QP� 7����- �)R�S�����*�� -)��7�)�����)#T����� )P.�*��5����&T%�()*�-(���P�*���.�������P.�P"�-�)��(���#�T�����P�)*���- �)� �����U!���7�*���- �)R�S�����(����� �)��(����7(.�(��*#�N�..�S )-���(�� ������&�(P� 7���- �)�S�������������!�)P���O�P����#�V������(��� ,��*����)������ P�.5��.�S����S(�*��W�7�)��� )�����U!���7�*�()*�&�(P� 7����- �)��P()��� --�����������*�� -)��7�)��� )����QP� 7����- �)� )�����P����)��P5P.�#�%(��.5� ������X�����)�*���- �)R�S� P���(,�.���� -Y)(.��(�������)*��������� ,���.��R� )�������(*Y�).5���� �*R�(�����*�� -)�(P� 7 �5��(�P�,�.���*�(�����S)� )�T(!.���YZ#�[B\L=>?@] X� ,(�5�$5���,6�� .�-��P��*�. )-���- �)�V(,� QP� 7 �5QP� 7� $ ,�.(� �)����*�� -)�P�*�� )�,�*�.��U!���7�* 7(.�(� �)����$5���,6�� .�-�Q����� �)�&�(P� 7� O�P�� �)��������!�)P��P�*�� )����-�(,�X�����)�*$(,�. )-�*�� -)�� -)(.����������!�)P�� )���_abcdeefgcahiejkgalkcmfnhefgcahie opefmcqrchfsbtuvhckmcrqwhhckefbhtxcwpefmcqechevcbpyt z lavwp{f|ag kcacmcbeh}helbcrqhwglict _abcdeefgcahiejkgalkcmfnhefgcahie opefmcqrchfsbtuvhckmcrqwhhckefbhtxcwpefmcqechevcbpyt z lavwp{f|ag kcacmcbeh}helbcrqhwglict

Page 47: SystemVerilog for Verification

������������� �� ����������������������������������� !��!�"�������������#�����$�������������������� �%&'()*+,(���#������������!�#-���".���������!��!/# .����!/0�%123456758,9:;0������� �# � �����������<=>?@ABCDEFBGAHIJAKLMBNHOKPBOKIAQR=LABSOIMBL@TLUOKPBJ@TLUVWXYWZ[\Z]X[Z _ \ab\cZWde_fghijh\ZWd_fkl\\ggg\\_m__Zn\daY_m\\\\ZWd_fgdgWao]ab\pq\rsdtul\\\\vw_bVnZxcyz{t|\}WX~a\Waoqtuy�\v_[akl\\\\WaVaZ\crk\zZWd_fgdl\\\\_f\cZWd_fgdgYWZm\�q\rsdtuk\\\\\\vw_bVnZxcyz{t|\Zu|\YWZm\�q\rsdtuy�\v_[akl\\\\amwamwVWXYWZ[\|\ab �!�#� ����������# �����������������"�#-# .�� "������# .����# �����!���#. �������������������"����!� ��# �"�# ����# .������.��������������"�������������#�"���"� ��#!0��#����!�#!��������� !�����������!���# ����"�����"���������#�����#� �������-������#�������.�������!/��#�����������# .�!�"�����������������������!���# # .���-��������������"#�!����"�# � �!�#� ������0����������"��������"�!��������������.�������!/����&��3�&�),���������#������-���������#/����������# ���# ���!/�����"��� .��.�������������-�����/�"��#��0���!�������CD�D�BGMAB�K�BTRB<O>N@=IOTK� ����#��.0��#�����#� �!� �# ������#��������������!��"���"��-� ��0����� �#�����*)�)4�#�����!���"�� ��������#��.��""��� ��""#�#� ����������� "��#�����#� �������.������!/�#��������"����#��#��!� ��# �������������������#��� ������# .������.�������!/0��#������#� �� "����� �����!������������������������ ��# ��-����)�)�)&9����!/0������#��#�!� �#"���"������ "�������������� #�����#� �� "���-� �#�����������������"����#����� # .# ��������.���������"�����������������0�����"� �����-����������"�� ��-������ #���� "�"�#-������ ��������#��"� �����������������-��������.�������!/�0��#�����#� �� "����� �������������.����!�����������#�������#�����#� �� "����� ���������������!��������������!� �����# ����� ������.�������!/�������������!��# .��5�)������!����������!� ���#��������*)�)4������ "�#�����#� � ��������������� ������������������������ ��������������� !�"#�$�%&!'�(�)*��"�)+��$�'�#"�&",�-�').�"�+/0123145678289:9;<2=428012>7=>?9;<2@7=>?29A28=2A5:B7129;B68A2C9802523175D2=42EFGHIJ5;328=23K9L128012=68B68A2C9802523175D2=42EMN2/012FGHIJ23175D2AB1>9491A280582A9<;57A25K1A5:B71329;28012O=A8B=;132K1<9=;2=428012BK1L9=6A289:12A7=8P2@14=K125;D231A9<;25>89L98DNQ=2D=62<1828012=68B682L5761A2R6A82@14=K128012>7=>?2>05;<1AN2/01281A8@1;>02=68B68A25K1AD;>0K=;=6A2@D2L9K8612=428012>7=>?9;<2@7=>?P25;32A=2801D247=C239K1>87D29;8=2801231A9<;N/012BK=<K5:2@7=>?P2K6;;9;<29;28012S15>89L12K1<9=;P2K18K9<<1KA28012T>89L12K1<9=;236KU9;<28012A5:1289:12A7=8N2V42D=6205L125231A9<;2@5>?<K=6;3P2D=62>5;2K1:1:@1K2809A2@D9:5<9;9;<2805828012>7=>?9;<2@7=>?29;A1K8A252AD;>0K=;9W1K2@18C11;2801231A9<;25;3281A8U@1;>025A2A0=C;29;2X9<6K12YUZN[�#\]���_���%a�b�"#�.%a�b�'!"�+]a"�c�'�)+��$d-�&",�)�').�"�+�����e")�] &���$]�f�"#�&",��&g�%�"#h=6K281A8@1;>02;113A28=23K9L125;32A5:B712A9<;57A24K=:2801231A9<;P2BK9:5K97D280K=6<09;81K45>1A2C9802>7=>?9;<2@7=>?AN2/012;1i82Q1>89=;26A1A280125K@981K29;81K45>124K=:2Q5:UB712YNjY25;3280128=BU71L172:=367124K=:2Q5:B712YN�NTAD;>0K=;=6A2A9<;57A2A6>025A2kGH2B5AA280K=6<0280129;81K45>12C9802;=23175DAN2/012A9<U;57A29;28012>7=>?9;<2@7=>?2<182AD;>0K=;9W1325A2A0=C;29;28012A1>89=;A2@17=CN����l�e")�] &����!"�+]a"�c&)�a"h=62>5;26A128012m1K97=<2n25;32opqH2>=;A8K6>8A28=2AD;>0K=;9W12C98028012A9<;57A29;2581A8@1;>0N2/0124=77=C9;<2>=3123=1A2;=823=25;D809;<26A146721i>1B828=2A0=C28012L5K9=6A>=;A8K6>8AN rstuvwxwysz{|st}|st}~sw����}}st}��} y{{{{{{{���� }st}uwuw rstuvwxwysz{|st}|st}~sw����}}st}��} y{{{{{{{����y{{{{{{{���� }st}uwuw

Page 48: SystemVerilog for Verification

����������������� �������� ���������������� !���"#!$%&'!�(�)�'!*+,-+./0.12,/.23402562781693:;<=0816>[email protected]@0000B816;48?00000000000000000CC0D,@23@150,@0.423E505F-500000000000000000000000000000CC03@04A,4G3@-08A,4G0000+5*5.207H>0B816;48?000000CC0I.320:,+0H0.423E505F-560000B816;48;-+.@2?00000000000CC0D,@23@150,@0.@J05F-50000B7*,65F-50816;48;-+.@2>?0CC0D,@23@150,@0*,65F-50000B7@5-5F-50816;48;-+.@2>?0CC0D,@23@150,@[email protected];48;-+.@2LLM>?00CC0I.320:,+05N*+5663,@00000000000000000000000000000CC0O,0F5A.J03:0.A+5.FJ02+150000B7*,65F-50816;48;-+.@20,+000000@5-5F-50816;+62>?000000CC0I.320:,[email protected]@F5@F*+,-+./����P�Q!)�&R�$���� !���������STUVWXYZW[U\]W\W_V\aWb[YcW\WdaYde_VWfaYdegWXYZWUhWhTUW\ciaUWb[YcWjZhWfUbY[UWhTUa\hWdaYdeWU]UgW_kUkgWb[YcWhTUWlYhiYVU]W[U_YVkWmTUWbYaaYn_VWdY]UWTYnW\Wi[Y[\cfaYdeWhT\hW[U\]WhTUWXVdT[YVYZW[\VhW_V\aWb[YcWhTUWopmkWmTUWqrsWcY]ZaUW][_tUurqvwWhYWxW\V]WyW_VWhTUWc_]]aUWYbW\WdXdaUgW\V]WhTUVWhYWzWU{\dhaXW\hWhTUWdaYdeWU]Uk����������|��#!$%&'!'}"��!)�&R�$��"�������!~�~&����R&'���'~}���23/564.A50M@6CM@6*+,-+./025627.+893:;<��<0.+83:>[email protected]@0000�/,@32,+7�B��2�0-+.@2L����0�23/5�0.+83:;48;-+.@2>?0000���@60�F36*A.J7��@F0,:02562�>?005@F5@F*+,-+.//,F1A50.+87.+893:;��<0.+83:>[email protected]@0000��00.+83:;-+.@20L0M?00CC0B0�@60000�M�0.+83:;-+.@20L0�?00CC0B0M�@60000��00.+83:;-+.@20L0H?00CC0B0��@6005@F5@F/,F1A5mTUWn\tUbY[cW_VW�_Z[UW���WTYnWhT\hW_VWhTUWi[Y[\cgWqrs����s�urqvwWUhWhTUt\aZUWb[YcWjZhWfUbY[UWhTUWdaYdeWU]UkWSTUVWhTUW_VhU[b\dUW_ViZhWdT\VUW[_ThW\hW\WdaYdeU]UgWy�WVgWhT\hWt\aZUW]YUWVYhWi[Yi\\hUWhYWhTUWhUhfUVdTWbY[W\VYhTU[WdXdaUgWz�WVk ��������������� ������������������������ ��������������� !"#$�%��!�&'%()�*%*�&��%+��,!(���-�-.�/%+��,!(�� ��%!$�0��1�234356758958::43;68<3=5;3476>95>?5<@3584:6<345<37<5A4>B48CD5E@6F@5G7375<@3584:6<34569<34H?8F35695I8CAJ35KLMKL !"#$���-NO�P�&+Q�%()��&�%���%+��,!(��R�+)�($*(S�%��Q$*(STUVWUXYZX[\VYX\]Z\_\ZaXUbc]defghfZXUb]dijZZ]k]\]XlZb_W]kZZZZXUb]debeU_m[_\ZnoZpqbrsjZZZZtu]TlXvawxyr\zZ{UV|_ZU_morsw}Zt\]Y_ijZZZZU_T_X\ZapiZxXUb]debjZZZZ]dZaXUb]debeWUXk\Z~oZpqbrsiZZZZZZtu]TlXvawxyr\zZWUXk\Z~oZpqbrsw}Zt\]Y_ijZZZZ_ku_kuTUVWUXYZzZ\_\�@395G769B5C>=A>4<75E6<@5FJ>F�69B5:J>F�7D5857�9F@4>9>G7569<34H?8F3576B98J57GF@5875�������5CG7<5:35A43?6�3=5E6<@5:><@5<@369<34?8F3598C3D5�����D589=5<@35FJ>F�69B5:J>F�598C3D5��L5I>569I8CAJ35KL��D5����������������5675J3B8JD5:G<5�������������6759><L5�@675675<@35C>7<5F>CC>95F>=69B5C67<8�35E6<@569<34?8F3789=5FJ>F�69B5:J>F�7L�-�-��0��1�%��/%+��,!(�� ��%!$&�P)�*��)�!��$*(S�%���$*(S�>G57@>GJ=58JE8�75=46;3569<34?8F3576B98J7569585FJ>F�69B5:J>F�5E6<@5857�9F@4>9>G7=46;35G769B5<@35��5>A348<>4L�5�@675675:3F8G735<@35=376B9576B98J5=>3759><5F@89B356CC3H=68<3J�58?<345�>G458776B9C39<5�543C3C:345<@8<5�>G45<37<:39F@53�3FG<375695<@35�38F<6;343B6>95E@6J35=376B95F>=35675695<@35�F<6;3543B6>9L5�?5�>G45<37<:39F@5=46;37����������������58<5M��597D5<@3578C35<6C35875��������5�E@6F@5675������ ¡��¢£¤58FF>4=69B5<>5<@35FJ>F�69B5:J>F�¥D5�������5F@89B375695<@35=376B958<5M��597L��37D5<@675=>375J>>�5J6�35859>9:J>F�69B58776B9C39<D5:G<5<@35¦�§569767<75<@8<5<@6756757>C3<@69B=6??3439<L ©ª«¬­®®°±²³° µ¶·­®°±¹²±²³° µ sº p »º p »ss¼k p¼k »¼k¼k©ª«¬­®®°±²³° µ¶·­®°±¹²±²³° µ sº p »º p »ss¼k p¼k »¼k¼k

Page 49: SystemVerilog for Verification

����������������� �������� ��������������������� �!�"#$����� ����%�����&'()*+,(+'-./-01�2����3��454�" �!�����"�#6�#7��%8� ���$��#$2"8��%�� �"���9��9282����"��6��$��"�:��#6�#7��%8�;�<"��$� �2��������%���� �2���26�2� � �"#$��"�� ;�<"�=2396��>;4���&'()*+?'&@1�� �%����"�!�2�3�%�6��2"%�#2"�� ��2�!6�#7�"8�2 �8"3�"�;<���$���� �!�"#$�%���� ��$�� �"#$��"�� ��"����2#�� �8"26�2���$��2#������%8������$��#6�#7��$���26���9��9282�� ��33�%�2��6������$��%� �8";�A$� �� �!�#2� ���$��%��2�6�����9��%�62��� �BC�����2�#6�#7�"8�!6�#7;�<���$���� �!�"#$�%���� ��$�����9���D� ��2������$��2#�����%8����$���26���� �"��� ��"��"��$��%� �8"��"��6��$��"�:��2#������%8������$��#6�#7;EFGHIJKLMNOKPQRJSTFUJKVWXQFIKYSWZJK[\] _a[bcd\c]efghfijffffffkkflmnaobpnp\]fqbrc[\] _a[asqfghfasqt[\_jffffkkflmnaobpnp\]fqbrc=2396��>;uu� $�� ��$2��$299�" ��������%�����2� �"#$��"�� ��"����2#�� �8"26�2���2��v�� �9��"� �%���"8�2�#6�#7�#�#6�;�A$� �� � ��$���"����2#�����3�=2396��>;4>�2"%��$����93�%�6��2"%�#6�#7�8�"��2�������3�=2396��>;�;EFGHIJKLMNNKwSWZWQXKFKVxQUySzQz{VKWQRJSTFUJ|bp}b~sfec]e�~b[t _��l�f~b[_�jff n e~�f[c}nffff�f�f~b[ _a[bcd\c]efghf�jffkkf�f�n]ffff�i�f~b[ _a[bcd\c]efghf�jffkkf�fi�n]ffff�f�f~b[ _a[bcd\c]efghfijffkkf�f��n]ffff�i�f_ n]ojffcnqcnq|bp}b~sspq\�cf~b[�~b[t _���f~b[_�jff n e~�ffff�spnepb�����e�fbcdh�o��f�esc�f~b[ _bcd\c]e�jcnqspq\�c������$2���"���8����>v����$���26������%����"��"��$��3�%%6������$�� �#�"%�#�#6���� � ��"�!���$���A�2���$�� �2�������$���$��%�#�#6�;�A$���26���u�� �%����"��"��$��3�%%6������$���$��%�#�#6��2"%�� �"����� ��"�!���$����A�2 ��$���� �!�"#$�%���� �2�4�2���$���"%�����$���$��%�#�#6�;� ��������������� ������������������������ ���������������� ��!�"��#�$%"&'�("(�$��")��*#&��+,-.-/0123425-/016342517-0/8371879/2:,4/4;739128/13<8=1>41=,4??<=1.83;<7@1A/7><8=B=,-.<18>1>:<1234251<=0<1691;7-/01812923<1=<3891?,<C-D14/194;,1=,-.<7B18717:4E/1-/1F8GH?3<1I@JK@L#MNO���PQR�S")��*#&��$��"#O�T��!��UUVWXYZ[\]Z]Y_a_bcWdeWfgWWhhWiX[cWVW jk_bWcl_mWXbb[nmUUogWWWWWWWWhhWpkk_nXkWqWrabcWZ_Wab_sWt[clWXmWXbb[nmr_mcAC194;1E8/>1>41E8->1C4,1>E412342512923<716<C4,<1=,-.-/01817-0/83B194;128/1<->:<,1;7<uvwxwyz{|}~{���������14,1;7<1>:<12923<1=<3891��}@1�:-7138>><,1=<38914/391E4,5787181?,<C-D1>4181=,-.<14C1817-0/831-/18123425-/0163425B1871->1/<<=71>415/4E1E:-2:123425>41;7<1C4,1>:<1=<389@1�����1=4<71E4,51-C194;1:8.<181=<C8;3>123425-/01634251C4,194;,?,40,8G14,1G4=;3<B16;>1>:-71644514/391,<24GG</=71?;>>-/018123425-/01634251-/18/-/><,C82<@��P�P����T���&)�("#O�L��"#O$��"�)'��S")��*#&�A/1�<,-340H����B1-C194;1E8/>1>41=,-.<1816-=-,<2>-4/8317-0/8317;2:187181?4,>1C,4G1?,42<H=;,83124=<B194;1/<<=18124/>-/;4;71877-0/G</>1>4124//<2>1>:<1vw�1>41>:<1��vw@1A/F97><G�<,-340B179/2:,4/4;716-=-,<2>-4/8317-0/8371-/1-/><,C82<718,<1<87-<,1>41;7<1871>:<24/>-/;4;71877-0/G</>1-718==<=1C4,194;@1�:</194;1E,-><1>41>:<1/<>1C,4G181?,40,8GBF97><G�<,-340182>;83391E,-><71>4181><G?4,8,91.8,-863<1>:8>1=,-.<71>:<1/<>@1�4;,1?,4H0,8G1,<8=71=-,<2>391C,4G1>:<1E-,<B17<<-/01>:<1.83;<1>:8>1-71,<743.<=1C,4G18331>:<=,-.<,7@1+<7-0/124=<1-/181G4=;3<17>-331;7<71>:<123877-21,<0-7><,1?3;7124/>-/;4;71877-0/HG</>17>8><G</>@ ����������� �� �¡¢£¡¤¥¦§���������© �¡¢£¡¤¥ oª V «ª «o«¬mb V¬mb o¬mb¬mb «����������� �� �¡¢£¡¤¥¦§���������© �¡¢£¡¤¥ oª V «ª «o«¬mb V¬mb o¬mb¬mb «

Page 50: SystemVerilog for Verification

����������������� �������� ����������������� �!�"#�$%���&�'%��&��%����!$'!����% ��%#�!(�"�)*+,-./0,12/3+,-4).15)*67+18)+109:;<11=)-,1>?@AB1C/+/<11DD1E)C)-,0+)F*/913)G*/91109F0:)*G1081H56F3,CG,109:;<1111)*F7+1C/+/<11,*C09F0:)*G112FC6F-+1IJKI1509F0:)*G108;<,*C)*+,-./0,6-FG-/21+,3+52/3+,-4).LIJKI12).;<11)*)+)/918,G)*11112).L08LC/+/1MN1OP<111111111DD1I-)Q3+/+,1+R,18731111H2).L08<1111SC)369/TR52).L08LC/+/;<1111DD1U,/C1.-F21+R,18731111H2).L08<11112).L08LC/+/1MN1?VRW/<111111DD1X-)Y,1+R,18731111H2).L08<11112).L08LC/+/1MN1OP<111111111DD1U,9,/3,1+R,187311,*C,*C6-FG-/2Z[\]_a\bc\defgh]ijk]e]lga]mf\nd]gl]odepelh]nl]n_lm[dglgq]reoed\maeglnf]ehlnfqelh]nl]ela\dsnm\t]Zug]vg erf\]gfqaegl]nd\]ag]q\]n]mdg wbgoqf\]d\s\d\lm\]nlomglaelqgq]nehlb\la]gd]ag]q\]n]pedaqnf]ela\dsnm\]n][gul]el]x[nvt]��t����y�z{|��!��}~�}�����$"�&��$#����$�� ��%����!$'!����l]_a\bc\defgh�]_gq]mnl]vqa]�����}~]rfgm�]el]n]vdghdnb�]rqa]lga]}~�}��]rfgm�tZ[e]bn_]\\b]goo]es]_gq]nd\]q\o]ag]c\defgh]bgoqf\�]rqa]a[\d\]nd\]\p\dnf]d\nglt_a\bc\defgh]vdghdnb]nd\]mfg\d]ag]n]vdghdnb]el]x�]uea[]gl\]�gd]bgd\�]\lad_vgela�]a[nl]c\defgh�]bnl_]bnff]rfgm�]gs]mglmqdd\laf_]\�\mqaelh][ndound\t]�l]no\ehl�]nl]}~�}��]rfgm�]beh[a]adehh\d]gl]\p\d_]vgeaep\]\oh\]gs]n]mfgm�]sdgb]a[\anda]gs]ebqfnaeglt]�l]mgladna�]n]a\ar\lm[][n]a[\]a\v]gs]eleaenfe�naegl�]aebqfna\nlo]d\vglo]ag]a[\]o\ehl�]nlo]a[\l]udnv]qv]ebqfnaeglt]�l]}~�}��]rfgm�]a[na]dqlmglaelqgqf_]ugqfo]lga]ugd�t�[\l]a[\]fna]�����}~]rfgm�]mgbvf\a\]el]a[\]vdghdnb�]ebqfnaegl]ebvfemeaf_]\lo�qa]n]es]_gq][no]\�\mqa\o]�������t]�s]_gq][no]nl]}~�}��]rfgm��]ea]ugqfo]l\p\dagv�]nlo]g]_gq]ugqfo][np\]ag]\�vfemeaf_]mnff]�����]ag]ehlnf]a[na]a[\]vdghdnb]rfgm�mgbvf\a\ot ��������������� ������������������������ ����������������� !"#$%�&'�(���$�"))(������"��*+,*-.�/)�012�(���0"��� ��34353*+6789:;:9����"00�<!)# =��=�� "<���=#�>%?@?@ABCDEBFGHIJBKELEMNOHMP�Q��="��(���="R�� �����=��!$�>$"<�/)�012�(���<"(�Q����$�#'��=��0)�01�>���$"��$ =��)��/��#��"�<���)�%�S=��0)�01�# �<�$��0)� �)(��#�������=���� #>���="���=���� �/��0=2"��� ���=��0)�01�>���$"��$� =��)��$�<"#��#��"�<���)�%�T �(���$�'#����=���� #>�2�(��0$�"���0)�01��$�� 2�"���(���="R�����0"$�'�))(�0���$�)��=�� 1�Q �" ��=��0)�01 �����$��=� ( ��<�"���!$�!">"����=$��>=��=��/)�01 %S=���� �/��0=�# �<�0=�)� �!#01(%�&��U� ��Q"�� �"�0)�01���>�����1��Q�Q=�������$#R�"��� "<!)�� #>�") %�V��0�#��")�R�$#'#0"�#���# �0��0�$����Q#�=�!$�R#�#�>��=��$#>=��R")W�� �"���=��$#>=��0(0)�2�����Q#�=�'$"0�#��")��"�� �0������)"( �"���$�)"�#R��0)�01� 1�Q %XNYZGEB?@[\B]NBIGHIJB_ELEMNOHMBLBZMH_MNYBaGHIJbcdecfghifjkelmlcfndchodpnbpnhiqnhrstuhdpnkvqewxhhqmqnqfshhhhydclzlch{|hrsth}~h�rsthxhhqmqnqfshhhhydclzlch�obdvljelhrstwhhhhhhdpnkvqeh}~h�dpnkvqexlmjbcdecfg�S=��!$�>$"<�/)�01�# ������=��!)"0�����!���"�0)�01�>���$"��$%��"<!)���%����$#� ����!���=��>���$"��$�#��"�!$�>$"<�/)�01�/���U� ��0"� � �"�$"0��0���#�#��%�S=���+��"��8�5�.3�� #>�") �/��=�!$�!">"���'$�<��=����"0�#R��$�>#�������=���� #>��#���=��T0�#R�$�>#���"���0��)��0"� ��"�$"0��0���#�#�����!���#�>����Q=#0=�����"$$#R���'#$ �%TR�#��$"0��0���#�#�� �/(�")Q"( �!���#�>��=��0)�01�>���$"��$�#��"<���)�%�&'�(���Q"������$"���<#����=��>���$"��$� �!$�!�$�#� 2�0$�"���"0)" �Q#�=�$"���<�R"$#"/)� �'�$� 1�Q2�'$�����0(2�"�����=�$�0="$"0��$W# �#0 2�" � =�Q��#���="!%��%�����0"��� ���=# �0)" �#���=��>���$"��$<���)�2��$�#���=���� �/��0=%�"<!)���%��� =�Q �"�>����0)�01�>���$"��$�#��"�<���)�%�&����)#/�$"��)(�"R�#� �"����>�"���#<�������"R�#��$"0��0���#�#�� %�T))�0)�01���>� �"$��>���$"����Q#�=�"�/)�01#�>" #>�<���� ��" �����$#>>�$��R��� ���$#�>��=��T0�#R��$�>#��%�&'�(���$�"))(���������>��W�$"���"�0)�01���>��"���#<���2�� ��"����/)�01#�>�" #>�<������� ����=��#�#�#")�R")��� �"))�0)�01� �� #�#R��)�>#0� �0=�" �*+,*-.�/)�01 �Q#))�="R�� �"$����/�'�$���=��0)�010="�>� �R")��%

Page 51: SystemVerilog for Verification

��������������������� �� �������������������� �� !�"�#�$�%�$�&#����'��()*+,-./,)/012-3-456)4.7)+68+6.9:6./,0;<..:3:6:5,....=)4->-4.?@./,0.A.B/,0<.CC.D-3-456-.-*2-E.5=6-4.6:(-.F-3*()*+,- GHIJKLMNOPQRJNJSLNJPNTUSVWLNJXUNKPYZKUTUKNJV[VQ\NYVJXNW]QJVPQHKNTUSVWVZHJVPQ_NXUNJUIJaUQXUINOUISVaUONVQNJXVINaPPbNXUbNJXUNaUXHTVPSNPWJXUNcd Na]JNQPJNJXUNJV[VQ\MNYXVXNVINaUJJUSNOPQUNYVJXNHNIJHJVNJV[VQ\HQHKLIVINJPPK_N��e�f�##� %&#"�g%�h���i�"�%j�$kPYNLP]NXHTUNHNOUIV\QNOUISVaUONVQNHN[PO]KUMNHNJUIJaUQXNVQNHNlSP\SH[NaKPbMNHQOVQJUSWHUINJXHJNPQQUJNJXU[NJP\UJXUS_NmUSUNVINJXUNJPlZKUTUKN[PO]KUNJXHJNVQIJHQJVHJUIHQONPQQUJINHKKNJXUNlVUUI_����������n�o)8����'���'p&#"���p&������$q&%�$�&#%�$r� �()*+,-.6)8<..9:6../,0<..5,s5tE.?@./,0.A.B/,0<...5491:=.549:=7uv;<...549.5w.7uv;<..6-E6.6w7uv;<-3*()*+,-.x.6)8XVINVINHK[PIJNVOUQJVHKNJPNyH[lKUNz_{_N|JN]IUINHNIXPSJ]JNQPJHJVPQN}~N�V[lKVVJNlPSJPQQUJVPQ�NJXHJNH]JP[HJVHKKLNPQQUJIN[PO]KUNVQIJHQUNlPSJINJPNIV\QHKINHJNJXUN]SZSUQJNKUTUKNVWNJXULNXHTUNJXUNIH[UNQH[UNHQONOHJHNJLlU_��e���h#�g#%�$r� ��&#�����$%��&p%��'p%�q��f�##� %��yLIJU[�USVKP\NP[lVKUSNYPQRJNKUJNLP]NP[lVKUNHNIVQ\KUN[PO]KUNPSNlSP\SH[NJXHJN]IUIHQNVQJUSWHUNVQNJXUNlPSJNKVIJ_N�XLNQPJ�N�WJUSNHKKMNHN[PO]KUNPSNlSP\SH[NYVJXNlPSJIN[HOUPWNVQOVTVO]HKNIV\QHKINHQNaUNP[lVKUONYVJXP]JNaUVQ\NVQIJHQJVHJUOMNHINIXPYQNVQNyH[lKUz_��_���������������'����&%j��'p%���$%� �##� %&�#p()*+,-.+E-E1518)467:3)+6.9:6.3)61/)33-/6-*;<..uuu-3*()*+,- ��������������� ������������������������ �������������� �!��!�"#�$�%�!�$�"&'���&&��#$�#����#��#���'"&( �&(�$�(&" $)�*�%�+�!,�"��'- ���!��!�(!"��%�#��"&��&#�!."����&��#$���!#� �$#��-$#�/����&&��#�'�#��"&��&$#"&���.�#����&#�!."��)0123456789:6;<=>456?@AB61C6@CA5DE1F5GGHIJKLHMKNNHOPQHRPSTKNUHMKQJPVQHKOQUWXYRUHZURNYWYQKPOSPZVNUHVLUL[YO[KOQUWXYRU\YW][KXR _IHKXRabHHKOKQKYNHKXRcWYOQHdHebUOZSPZVNUf�!�g"�� ���)hi,�#�������� �!��$�&�#�"/ ��#��/-� '�"����� �j��&#�!."���%�#��#���&���$k$"!l���'��!#$)�m.�l�-��"+��"��!�(!"��/ ��n�-$�&(�� ��n�&(�/ ��n$��&�"&��&#�!."��,�#������� �!��"$�"&��+�&���!��'�..��- #�#���)�o+�&��.�l�-�"!��p-$#� ��n�&(�#��%!�&(��-#$l&#"j�/-($,�l�-��-$#����� �#��#�����&&��#��&$)����$��"&�/��'�&��"$�$��%&��&�g"�k� ���)q�)012345678rs6t<362<=>456F<CC5FA@Cu6vwt61C=6@CA5DE1F5SPZVNUHQPTbHH]KQHRNxbHHYNMYyLHz{eHRNxHdH|RNxbHHYW][KXRHKXR\RNxabHHHHHHHHHHHGGH}OQUWXYRUHMKQJHRNPRxKOcH]NPRxHHVLUL[YO[KOQUWXYRUHV{\KXRabHHGGHHQJYQHKLHOUUZUZHQPHRPSTKNUHQJKLUOZSPZVNU78~6t<3��5�5460F<35g���#���$�l�-�&��'�#���!�"#��#��&($��&�l�-!�$��- "#��&�#�"#�"!���-#$�'���.�"��!�(!"��!���'- ��$��#�"#�#��l�"!��$��&�/l�" ��"!#$��.�#���$��- "#��&)�m&���!� �(,��& l��"�!�$�j#�&'�"�!�$$���'- ��/�-&'"!��$,�"&'�"!���.#�&�-$�'�.�!��!�"#�&(�( �/" ���&$#"&#$)gl$#����!� �(��&#!�'-��$�#������ ��� ���� ���%������$�"�(!�-���.�$�-!���.� �$�#�"#"!������� �'�#�(�#��!)�����$������-#$�'��#���/�-&'"!��$��.�"&l�������,�����������,���������,�������,�������,��!������������$�n&�%&�"$�#������ ��� ���� ������,�" $��!�.�!!�'�#��"$������)��&l#��&(�$-���"$�"�����������'�.�&�'��&�#��$$������$�$��� "!�#��"�( �/" �/��"-$���#��"&�/��$��&�/l�" � �%�!k �+� �/ ��n$)�*�%�+�!,�#��$�&�#�#!- l�( �/" �"$�#��������������"&&�#�/��$��&�'-!�&(������ "#��&��.��#��!.� �$)���$� �"'$�#��$������&.-$��&)�g����#�� $,�$-���"$�gl&��$l$���g,������ ��" �#��gl$#����!� �(���'��#�(�#��!,�"&'�$���������$�( �/" )��&�#����#��!��"&',�gl&��$l$��$�(&������ �!������ �$�"�$�&( ����'- ���!�(!�-���.���'- �$�"#�"�#���,�"&'�$��������"l�/��p-$#�#�����&#�&#$��.��&���!�"�.�%�.� �$)���� $�.!����#��!�+�&'�!$��"l����� ��" �.� �$��!�p-$#�"�$-/$�#�"#��&��)��$�"�!�$- #,��������$�&�#���!#"/ �)

Page 52: SystemVerilog for Verification

������������� �� ���������������������������������������������������� ��������!"�#�����$���%�$�� �&�������'���&�(���&�'�������)���'��$��� �$�&����$����$�����������!�*�(����+!,�������&���������� �����&�(���&'�-./012-'��������$����������$)3��&���$��������&�&��)!������4�(���������������56789���&�$:�������������$��&&�&�(����:�!�#�����$������&�������� �����$���$��������&�3�)!;<=>?@ABCDEAFG>H?@I@?AJKG>@ALGMA<MNOP@MAQ@JORSTTUVWWXYZ[\X]_Zab_UcdZTcdZeaVa_X_VU]dXUfghijkfUlUcmnnnmnnnoWdZXUZXV]dpUX]_mWqXmZpUlUrissjstUf]_UWqXroWuqb_UXWeoUUX_ZXUXcvwo_duWuqb_eVWpVaUaqXWaX]UX_ZXoUUYYYUU]d]X]abUx_p]dUUUUyfghijkfoUUUUzu]Zeba{vr|Zr}UX]_mWqXmZpwoUUUUz~]d]Z�oUUUU_du_dueVWpVa�����$���$���$�(����669�����3��)�������$�(��:�����)�&�%�&����$�(����$������)���('���&��$:�3�������������� ��������!��$������&������'���669������(���&������"��$������$�4%�����)���(!���&�����������������*��������(���������%���������$��'���669��$����7�9�&������ ���$�!�����$�(����669��������� ����$�������&���:��&����(!����$�)��&�����&�%�&�������$�(���$��$����&�(�����'���������������'�������(����&�%�&����������$���������������'����$�����������������$�4����:��&������'��$������$��$�������&��������������!#���(�)��� ��3�$�������������������$���������(�����'������$��$���$���$�(�������$�$��$��&(�������������(�)��� �������&�������������&��'�:� �$:�)�������3&�$:� �&������!�#���������669����(�����$�(��:������&����(������&�%�&�$�����)������%)�$:�����������������!*�(����+!,�����3�����&�:&�(����������$���$��������$���(���������������4�������)��$���$���������$����������� ��������!������&�:&�(���$�������&����� ���&����������&�%�&�$��������5�����:$����$�����(�����!������������%�����(������3�&���(�������)��$���$������'�������'��%�)������������������$��96��9����'��������������&�%�&�$����$������&�:&�(�3�������$:�������669�96��5��!������4��������$���$������$��%���������(�������%�)������$�$�(���$:��&����(������&�%�&�$���!�#���(�)�3�$�����������(��&�����������������&�&���������������������3��$�������������$:��'�)����$�)��� ��������$:���$���������%�����! ��������������� ������������������������ �������������� !�"#$%%&�$'(���#�)�#�*+�%�,-./�012234356789:;7<=>8?=>8@:1:67371<ABCDEFA<G<=HIIIHIIIJ32@<3=KLJ<<<<<<<??<DM@;5953;N<5>83:>35:37<32@O;7P7;<62QR;762QR;7<32@J<<S53<9;TJ<<3783<3=KUVLJ7>Q62QR;7WQ7X5>7<AEY<01223U3=@12Z1:6<:R326:359<3783J<<UUU<<5>535:;<S7Z5><<<<??<[S82;R37<17X717>97<<<<0Q58@;:NK\9;TG]S\<01223U3=U9;TLJ<<<<0Q58@;:NK\9;TG]S\<WAEYU9;TLJ<<<<??<_53<6:912<<<<??<a7;:35P7<17X717>97<<<<0Q58@;:NK\9;TG]S\<3=U9;TLJ<<<<7>Q7>Q@12Z1:6��b�c#$d#���e�f$'(���g*.�#�+.-$*%hijklmnompqkrsntuktpvkmjpwkpvwkxmyzjkpssk{yovps{kyvkqnw|sj{}kpvwktpvktpsskmn|zyvj{kyvqnw|sj{}kr|zkpkqnw|sjkip{kvnk~y{yrysyz�kyvznkpklmnompq�khiy{ky{krjtp|{jk�n|mkzj{z�rjvtikvjjw{kznk{jjkpvwktnvzmnskzijkwj{yov}kr|zkzijkwj{yovk{in|swkvnzkwjljvwknvpv�ziyvokyvkzijkzj{zrjvti��klmnompqktpvktpsskpkmn|zyvjkyvkpkqnw|sjkznkljm�nmqk~pmyn|{kptzynv{�hijkmn|zyvjktpvk{jzk~ps|j{knvkyvzjmvpsk{yovps{}kps{nkuvnxvkp{k�rptu�wnnmksnpw��k�j�z}krjtp|{jkzijkt|mmjvzk��{zjq�jmysnok{zpvwpmwkwnj{vnzkwj�yvjkinxkznk�nmtjk{yovps{k�mnqkpklmnompqkrsntu}k�n|kvjjwkznxmyzjkpkzp{ukyvkzijkwj{yovkznkwnkzijk�nmtj}kpvwkzijvktpsskyzk�mnqkzijlmnompq�k�p{zs�}kyzky{kpkonnwklmptzytjk�nmk�n|mkzj{zrjvtikznk|{jkpk�|vtzynvkznkojzkyv�nmqpzynv�mnqkzijk��h�k�jpwyvok{yovpsk~ps|j{ktpvkxnmukqn{zkn�kzijkzyqj}kr|zky�kzijkwj{yovtnwjktipvoj{}k�n|mkzj{zrjvtikqp�kyvzjmlmjzkzijk~ps|j{kyvtnmmjtzs��k�k�|vtzynvkyvkzijqnw|sjktpvkjvtpl{|spzjkzijktnqq|vytpzynvkrjzxjjvkzijkzxnkpvwkqpujkyzkjp{yjmk�nm�n|mkzj{zrjvtikznk{zp�k{�vtimnvy�jwkxyzikzijkwj{yov�

Page 53: SystemVerilog for Verification

������������ �������� ������������������ !�"������ #�$%&'()*'(+,)-,'-,./%+)0')11,+-2%*1')3%&-'124*)01'2*'5%&+'6,124*'&12*4'751-,.8,+20%4911,+-2%*1':789;<'911,+-2%*1')+,'2*1-)*-2)-,6'12.20)+05'-%'%-=,+'6,124*'30%(>1')*6')+,)(-2?,'@%+'-=,',*-2+,'12.&0)-2%*<'A=,'12.&0)-%+'>,,/1'-+)(>'%@'B=)-')11,+-2%*1'=)?,-+244,+,6C')*6'1%'5%&'()*'4)-=,+'@&*(-2%*)0'(%?,+)4,'6)-)'%*'-=,.<����D�E���F�G���"������ #�$%&+'-,1-3,*(='/+%(,6&+)0'(%6,'()*'(=,(>'-=,'?)0&,1'%@'6,124*'124*)01')*6'-,1-3,*(=?)+2)30,1')*6'-)>,')(-2%*'2@'-=,+,'21')'/+%30,.<'H%+',I)./0,C'2@'5%&'=)?,')11,+-,6'-=,3&1'+,J&,1-C'5%&',I/,(-'-=)-'4+)*-'B200'3,')11,+-,6'-B%'(5(0,1'0)-,+<'$%&'(%&06'&1,')*KLM1-)-,.,*-<'�G�N�����OO�PQ�RS�#!�G���!#G��T��Q�G#�UVW��G����#�XYZ[\X[]_Y Zabcade] f gahijakXYZ[\XeUVahXYZ[\X[l]gmancaioXpdjaaqrUZfsgthuv]]w]xal]gmancadujeyya] ZawVa z a Z9*')11,+-2%*'21'.%+,'(%./)(-'-=)*')*'KLM1-)-,.,*-<'{%B,?,+C'*%-,'-=)-'-=,'0%42('21+,?,+1,6'(%./)+,6'-%'-=,'KLM1-)-,.,*-')3%?,<'$%&'B)*-'-=,',I/+,112%*'2*126,'-=,/)+,*-=,1,1'-%'3,'-+&,|'%-=,+B21,C'/+2*-')*',++%+<�G�N�����O�����N�������F�G���G������ #XYZ[\X[]_Y Zabcade] f gahijakXYZ[\Xegd}agZZ ]ahXYZ[\X[l]gmaccaioXpdjeyya] ZawVa z a Z~@'-=,'�����'124*)0'21')11,+-,6'(%++,(-05C'-=,'-,1-'(%*-2*&,1<'~@'-=,'124*)0'6%,1'*%-'=)?,-=,',I/,(-,6'?)0&,C'-=,'12.&0)-%+'/+%6&(,1')'.,11)4,'12.20)+'-%'-=,'@%00%B2*4<�G�N�����O����� ���� ���G���F�����F�G���G������ #u Z[Z�uxa�}awf[d[gd}aZg] raga��mZaVgUsraga��mZ�VVmrUmla�hXYZ[\X[l]gmaccaioXdjoA=21'1)51'-=)-'%*'02*,'�'%@'-=,'@20,'�������C'-=,')11,+-2%*'���������'1-)+-,6')-'��'*1-%'(=,(>'-=,'124*)0'������������C'3&-'@)20,6'2..,62)-,05< ��������������� ������������������������ ����� ����������� ��! �"� ���#�� $��%�&&�'�# ��(�)*&�+�,##�) *�-�#�- �. ��/$�/0��-��&���)� ��#�1��-/���2�)���)�-+���%� *��3��� ��#��/�)�%�&&�4,##�) *�-#��)��"�/&�)� *2��/�"�3��-"��.�/� ��2�)��"*%%�)�- &�� $�-� $�#�))��-"*-+�!)�/�"�)�&�/�"�4�5-�6�# ���%�7�&*-�#��%��##�) *�-#3�����/�-2�)*%�� ��!�)�&�)�&� *�-#8� $���1�*2�&�- �!)�/�"�)�&�/�"��7��&"����%�)��)��/��!&*/� �"��-"�2�)��#�49:;:<=>?@ABCDEDFG=AHI=J@@IKADBF=JLADBF@,-�*���"*� ���##�) *�-�$�#��! *�-�&� $�-M��-"��&#�M/&��#�#4�5%�����7�- � ����+��- $��"�%��& ���##�+�3�����/�-��""����)��7-4NOCPQI=9:RS=>KIOADFG=O=L?@ABC=IKKBK=CI@@OGI=DF=OF=DCCITDOAI=O@@IKADBFUVWXUYYZ[\X]_Y a b[Uc\XddXefgVhZiYZXjZ[[k[]lm[Uc\Xck\XUYYZ[\Znlho5%�pqrst�"��#�-� �$�2�� $���.!�/ �"�2�&��3����u&&�#����-��))�)���##�+�4NOCPQI=9:Rv=wKKBK=xKBC=xODQIT=DCCITDOAI=O@@IKADBFXl\ZY\YylzX{WX\k|\VUVWXY\U[\ZnXU\X}}cYX~U�iZnXU\X}}cY�~~Zcn�cbX�]_Y a b[Uc\XddXefVh��[[k[WXl\ZY\YylzX{WX\k|\VUVWXU\X\��ZX}}XcYm[Uc\Xck\XUYYZ[\Zn'�# ��(�)*&�+�$�#�%��)�%�-/ *�-#� ��!)*- ���##�+�#����s��3��rqs�sp3��qq�q3��-"��rtr�4��$�#���)���&&�7�"��-&��*-#*"���-��##�) *�-3�-� �*-�!)�/�"�)�&�/�"�3� $��+$%� �)��2�)#*�-#��%�'�# ��(�)*&�+������&&�7� $*#4����/�-��#�� $�� $�-M/&��#�� ��)�/�)"�7$�-��-��##�) *�-�/��!&� �"�#�//�##%�&&�4NOCPQI=9:R;=>KIOADFG=O=L?@ABC=IKKBK=CI@@OGIUVWXUYYZ[\X]_Y a b[Uc\XddXefgVhXXb[Uc\Y�[ZaZ�yZn��oXXXXXXXX��X�ck\�Z[XY_aaZY~_iX[ZY_i\ZiYZXXjZ[[k[]lm[Uc\Xck\XUYYZ[\Znlho9:;:R=>BFL?KKIFA=J@@IKADBF@�$��� $�)� �!���%��##�) *�-�*#� $��/�-/�))�- ��##�) *�-� $� �����/�-� $*-0��%��#���#��&&��"�&� $� �)�-#�/�- *-���#&�3�/$�/0*-+� $��2�&��#��%�#*+-�&#�%�)� $���- *)��#*��&� *�-4����-��"� ��#!�/*%����#��!&*-+�/&�/0�*-� $���##�) *�-4���)��*#���#��&&��##�) *�-� �/$�/0� $� � $���)�* �)�)�1��# �#*+-�&�"��#�-� �$�2�����)���2�&��#��./�! �"�)*-+�)�#� 4

Page 54: SystemVerilog for Verification

���������������� ���� ������������������� !!��"��##�!"$���"���%��&�'�!�()*+,-./012.31/45+06+,78-34+-329:;<3339=>+23?@ABC3>/1,-D3/.E8.F-<3339=>+23/F-<337/=7./-G3/.E8.F-5HF-1-.<3333I67=F.J>.329:;3J+F149.3+0036/F-;3333K+F8,:,=L,6/.E8.F-;3MM3B<33333333NN3O1:.3F8/.3,=3P3=/3Q30=8,J33.,J7/=7./-G331FF./-5/.E8.F-5HF-1-.A31FF./-37/=7./-G36/.E8.F-5HF-1-.;<3.,J+,-./012.��R���ST���!$�U�V##�!"$��#WXYZY[\ZY[]\_[aXYZ[bcYc[dZ[\ccYZae cf[gZ[Yh\]ijYk[_b[l\[iba[\ccYZae c[e[\eaYZd\lYf[mn[_bZ[eaYZd\lY[ a[ j_[aZ\c]eac[ceo\j[p\jbYc[qba[\jc[lXYlrc[aXYiZaljfWXec[sYlae [iZpetYc[\[qZeYd[eaZtblae [a[s_caY]uYZejo[vccYZae cf[gZ[] ZYedZ]\ae k[cYY[uew\_\Z\oXX\p\[\t[x\]\\aX\[yz��{|[\t[}\~bY[Ya[\jf[yz���|f�����%���� !���!"�V����� "�!WXY[\ZqeaYZ[Yh\]ijY[ec[\[o t[eaZtblae [a[eaYZd\lYck[qba[ZY\j[tYceoc[X\pY[]ZY[aX\\[ceojY[eiba[\t[baibaf[WXec[sYlae[teclbccYc[\[dbZ�iZa[vW�[yvc_lXZ bcWZ\cdYZ[� tY|[ZbaYZk[cXn[[e[geobZY[���f[ ��������������� ������������������������ ���������������� �!"#�$%&�'�( )��*�"���+�,��,-�.�"&*�"��$"��/,%�!�0102�( )�3*�"���.�"&�4*�"!56789:;;:<=>?8@:A789BC?D7>EF8F6:<8E678EC>?;78:98<=B7F8G:H8<:H;A86CI78E:87>AHB78E:@:>>7@E8C>8J5K8L;:@M8E:8C8E7FEL7>@6N8O=BFE8=F8E67867CA7B89:B8E678P5Q8B:HE7B8D:A7;N56=F8HF7F8E678R7B=;:?S�TTU8FEG;78V:BE8A7@;CBCE=:>FW8<67B78E678EGV78C>A8A=B7@E=:>8CB7F7VCBCE789B:D8E67867CA7BN5678C@EHC;8@:A789:B8E678B:HE7B8=F8@B:<A7A8:HE8LG8>7CB;G8C8VC?78:98V:BE8A7@;CBCE=:>FNXYXZ[\]_ab\bcadbefg \Yh\Yi\Yj\YklYhlYilYjlYk XYXZ[\]_ab\bcadbefg \Yh\Yi\Yj\YklYhlYilYjlYk

Page 55: SystemVerilog for Verification

���������������� ���� ���������������������������� ���!�� ���"#�!�����$�#$���%�&�'()*+,-./'01(*/,12--33-4-5-6,7,+-8-9/(:;.-<=>-+.?,1-@5-AB/,1C.D,E-----@50D+F0GH--@50D+F08H--@50D+F0IH--@50D+F0JH-----@50)./.0GH-@50)./.08H-@50)./.0IH-@50)./.0JH-----@50E(D0GH--@50E(D08H--@50E(D0IH--@50E(D0JH-----@50,B0GH---@50,B08H---@50,B0IH---@50,B0JH-----@50D+.70GH-@50D+.708H-@50D+.70IH-@50D+.70JH--33-4-5-6,7,+-8-9/(:;.-<=>-+.?,1-=5-AB/,1C.D,E-----=50D+F0GH---=50D+F08H---=50D+F0IH---=50D+F0JH-----=50)./.0GH--=50)./.08H--=50)./.0IH--=50)./.0JH-----=50E(D0GH---=50E(D08H---=50E(D0IH---=50E(D0JH-----=50,B0GH----=50,B08H----=50,B0IH----=50,B0JH-----=50D+.70GH--=50D+.708H--=50D+.70IH--=50D+.70JH--33->;ED,++.B,(*E-D(B/1(+-;B/,1C.D,E-----1E/H-D+FKL33-4-5-6,7,+-8-9/(:;.-@5-AB/,1C.D,E--(*/:*/-------@50D+F0GH-@50D+F08H-@50D+F0IH-@50D+F0JL--;B:*/-MNOGP--@50)./.0GH@50)./.08H@50)./.0IH@50)./.0JL--;B:*/--------@50E(D0GH-@50E(D08H-@50E(D0IH-@50E(D0JL--(*/:*/-------@50,B0GH--@50,B08H--@50,B0IH--@50,B0JL--;B:*/--------@50D+.70GH@50D+.708H@50D+.70IH@50D+.70JL33-4-5-6,7,+-8-9/(:;.-=5-AB/,1C.D,E--(*/:*/-------=50D+F0GH-=50D+F08H-=50D+F0IH-=50D+F0JL--(*/:*/-MNOGP-=50)./.0GH=50)./.08H=50)./.0IH=50)./.0JL--(*/:*/-------=50E(D0GH-=50E(D08H-=50E(D0IH-=50E(D0JL--(*/:*/-------=50,B0GH--=50,B08H--=50,B0IH--=50,B0JL--;B:*/--------=50D+.70GH=50D+.708H=50D+.70IH=50D+.70JL33->;ED,++.B,(*E-D(B/1(+-;B/,1C.D,E--;B:*/--------1E/H-D+FL--QQQJ,B)'()*+,��R�S��������TU�V���W���#X��"#�!�Y���XZ[\] _ab_cd_b[_b\efghg_bgcdbi_jZ\_][kb_l\d_c_b[_miiimn_Z _Zob[pgkq_rsttuv_w\p_x\p_cw\pxkbc\_kq_akxegd_\w_odcl_cbpwkyd_cx\qogdi ��������������� ������������������������ ����������������� !�"��#���$�%�&'%�(&%)!*%��$�&$%�+,�-�./012345/67448954:2;744<2=<>?4@A4:2;4B4C:2;7444=9D34EFG:2;GHI44EFG:2;GJI44EFG:2;GKI44EFG:2;GLI4444444EFG?/:GHI44EFG?/:GJI44EFG?/:GKI44EFG?/:GLI44444444EFG3MGHI444EFG3MGJI444EFG3MGKI444EFG3MGLI444444444EFG:2<NGHI4EFG:2<NGJI4EFG:2<NGKI4EFG:2<NGLI4444444OFG:2;GHI44OFG:2;GJI44OFG:2;GKI44OFG:2;GLI4444444OFG?/:GHI44OFG?/:GJI44OFG?/:GKI44OFG?/:GLI4444444OFG3MGHI444OFG3MGJI444OFG3MGKI444OFG3MGLI44444444OFG:2<NGHI4OFG:2<NGJI4OFG:2<NGKI4OFG:2<NGLI4D?5744=9D34PQRHS4EFG0<5<GHI4EFG0<5<GJI4EFG0<5<GKI4EFG0<5<GLI4444444444444OFG0<5<GHI4OFG0<5<GJI4OFG0<5<GKI4OFG0<5<GL744<5.GD/153D4<JTEFG:2;GHI4EFG:2;GJI4EFG:2;GKI4EFG:2;GLI4444444444444444EFG0<5<GHIEFG0<5<GJIEFG0<5<GKIEFG0<5<GLI4444444444444444EFG?/:GHI4EFG?/:GJI4EFG?/:GKI4EFG?/:GLI44444444444444444EFG3MGHI44EFG3MGJI44EFG3MGKI44EFG3MGLI444444444444444444EFG:2<NGHIEFG:2<NGJIEFG:2<NGKIEFG:2<NGLI4444444444444444OFG:2;GHI4OFG:2;GJI4OFG:2;GKI4OFG:2;GLI4444444444444444OFG0<5<GHIOFG0<5<GJIOFG0<5<GKIOFG0<5<GLI4444444444444444OFG?/:GHI4OFG?/:GJI4OFG?/:GKI4OFG?/:GLI4444444444444444OFG3MGHI44OFG3MGJI44OFG3MGKI44OFG3MGLI44444444444444444OFG:2<NGHIOFG:2<NGJIOFG:2<NGKIOFG:2<NGLI4444444444444444D?5I4:2;U74453?54444445J4TEFG:2;GHI4EFG:2;GJI4EFG:2;GKI4EFG:2;GLI4444444444444444EFG0<5<GHIEFG0<5<GJIEFG0<5<GKIEFG0<5<GLI4444444444444444EFG?/:GHI4EFG?/:GJI4EFG?/:GKI4EFG?/:GLI44444444444444444EFG3MGHI44EFG3MGJI44EFG3MGKI44EFG3MGLI444444444444444444EFG:2<NGHIEFG:2<NGJIEFG:2<NGKIEFG:2<NGLI4444444444444444OFG:2;GHI4OFG:2;GJI4OFG:2;GKI4OFG:2;GLI4444444444444444OFG0<5<GHIOFG0<5<GJIOFG0<5<GKIOFG0<5<GLI4444444444444444OFG?/:GHI4OFG?/:GJI4OFG?/:GKI4OFG?/:GLI4444444444444444OFG3MGHI44OFG3MGJI44OFG3MGKI44OFG3MGLI44444444444444444OFG:2<NGHIOFG:2<NGJIOFG:2<NGKIOFG:2<NGLI4444444444444444D?5I4:2;U73M0./0123VWXYZ[\]]�\_ab_\c[\caY\ad\c[\c[_ce[fg\XahiZ[\jfg[\WkWlfm\fac[\cWc\c[\Yanc_Wfh\bln[_\cWo[\iY\c[\XWpanlcq\ad\c[\f[cZl_c

Page 56: SystemVerilog for Verification

���������������� ���� ����������������������� !!"�#�$#%�&'(�)$�&�����#$*+,-./01/213000044050607/8/.090:1+;<=0>?@0.=A/B0C60DE1/BF=G/20000C6HG.IHJK00C6HG.IH9K00C6HG.IHLK00C6HG.IHMK0000C6H,=1=HJK0C6H,=1=H9K0C6H,=1=HLK0C6H,=1=HMK0000C6H2+GHJK00C6H2+GH9K00C6H2+GHLK00C6H2+GHMK00000C6H/EHJK000C6H/EH9K00C6H/EHLK000C6H/EHMK000000C6HG.=8HJK0C6HG.=8H9K0C6HG.=8HLK0C6HG.=8HMK00000000044050607/8/.090:1+;<=0>?@0.=A/B0?60DE1/BF=G/20000?6HG.IHJK00?6HG.IH9K00?6HG.IHLK00?6HG.IHMK0000?6H,=1=HJK0?6H,=1=H9K0?6H,=1=HLK0?6H,=1=HMK0000?6H2+GHJK00?6H2+GH9K00?6H2+GHLK00?6H2+GHMK00000?6H/EHJK000?6H/EH9K00?6H/EHLK000?6H/EHMK000000?6HG.=8HJK0?6HG.=8H9K0?6HG.=8HLK0?6HG.=8HMK0000440@<2G/..=E/+-20G+E1B+.0<E1/BF=G/20000B21K0G.INO44050607/8/.090:1+;<=0C60DE1/BF=G/200<E;-100000000C6HG.IHJK0C6HG.IH9K0C6HG.IHLK0C6HG.IHMO00+-1;-10PQRJS0C6H,=1=HJKC6H,=1=H9KC6H,=1=HLKC6H,=1=HMO00B/T00PQRJS000C6H,=1=HJKC6H,=1=H9KC6H,=1=HLKC6H,=1=HMO00+-1;-10000000C6H2+GHJK0C6H2+GH9K0C6H2+GHLK0C6H2+GHMO000B/T0000000000C6H2+GHJK0C6H2+GH9K0C6H2+GHLK0C6H2+GHMO000<E;-100000000C6H/EHJK00C6H/EH9K00C6H/EHLK00C6H/EHMO0000+-1;-10000000C6HG.=8HJKC6HG.=8H9KC6HG.=8HLKC6HG.=8HMO00B/T0000000000C6HG.=8HJKC6HG.=8H9KC6HG.=8HLKC6HG.=8HMO44050607/8/.090:1+;<=0?60DE1/BF=G/200<E;-10000000?6HG.IHJK00?6HG.IH9K0?6HG.IHLK0?6HG.IHMO00<E;-10PQRJS0?6H,=1=HJK0?6H,=1=H9K?6H,=1=HLK?6H,=1=HMO00<E;-10000000?6H2+GHJK00?6H2+GH9K0?6H2+GHLK0?6H2+GHMO000<E;-10000000?6H/EHJK00?6H/EH9K00?6H/EHLK000?6H/EHMO0000+-1;-1000000?6HG.=8HJK0?6HG.=8H9K?6HG.=8HLK?6HG.=8HMO00B/T000000000?6HG.=8HJK0?6HG.=8H9K?6HG.=8HLK?6HG.=8HMO440@<2G/..=E/+-20G+E1B+.0<E1/BF=G/200+-1;-10000000B21O00B/T0000000000B21O00<E;-100000000G.IO00<E<1<=.0U/T<E0000440C/2/101V/0,/8<G/0000B210WX09O0000C6H,=1=HJ0WX0JO00000YYY0000/E, ��������������� ������������������������ ����������������� !�"# "$% #&'(( )$*(" �+ ,�-(. $/- 0# %$" $11 !�"# ,�//(,#020#3 4 /� #("#5(/,&. /�-("0*/6 7/#('+$,(" )'�20-( $ 5(##(' %$3 #� �'*$/08( $11 #&0" 0/+�'9$#0�/ $/- (1090/$#(#&( '()(#0#02( )$'#" #&$# $'( "� (''�' )'�/(:;<=<>?@ABCD?ECFGHIJKGA?FL?MBNOPBIQ?RLCCGKFBLCAS0*�'( �TU "&�%" #&( VWX '��#(' ,�//(,#(- #� #&( #("#5(/,&. %0#& #&( "0*/$1"*'��)(- 0/#� 0/#('+$,(":YBDZHG?;[=?\GAF]GCK?_?HLZFGH?BJDHJN?aBF?BCFGHIJKGA;<=<;?b\c?ECFGHIJKGAd('( $'( #&( ef $/- gf 0/#('+$,(" %0#& 9�-)�'#" $/- ,1�,h0/* 51�,h":ijiklmnopqrsomstrusvwxyj mjijiklmnopqrsomstrusvwxyj mj

Page 57: SystemVerilog for Verification

���������������� ���� ����������������������� �!�""#$%#&'()*+,-)#.&(/#01231*(4#,'2#-51-6&'7#851-6&'()*+,-)#$%9&+#:&'3;(#517&-#-56<=##517&-#>?@AB#2,(,=##517&-#41-C#)'C#-5,DC#*-56=##-51-6&'7#-8#E:314)27)#-56<=####1;(3;(#2,(,C#41-C#-5,D=##""#F&*)-(&1'4#,*)#*)5,(&D)####&'3;(##)'=###############""#(1#(/)#()4(8)'-/##)'2-51-6&'7#@#-8##01231*(#FGH#:1;(3;(#)'C#*-56C###############&'3;(##2,(,C#41-C#-5,D<=##01231*(#HI#:-51-6&'7#-8<=)'2&'()*+,-)#@#$%9&+������������J������� �!��""#H%#&'()*+,-)#.&(/#01231*(4#,'2#-51-6&'7#851-6&'()*+,-)#H%9&+#:&'3;(#517&-#-56<=##517&-#>?@AB#2,(,=##517&-#41-C#)'C#-5,DC#(-56=##-51-6&'7#-8#E:314)27)#-56<=######&'3;(##2,(,C#41-C#)'=######1;(3;(#-5,D=##)'2-51-6&'7#@#-8##01231*(#FGH#:1;(3;(#2,(,C#41-C#)'C#(-56C###############&'3;(##-56C#-5,D<=##01231*(#HI#:-51-6&'7#-8<=)'2&'()*+,-)#@#H%9&+��K�L�MJN��OP����NOQ���RS��T����U���� �!�VWXWYZXWY[\WY] _YXa[WXYb cWdYZecY[Wf[gWeh\iYj\kh\YeWWcY[YflWhkmnY[\WYopqrpstYke[\WkXYlX[YheeWh[keYdkf[uYv[WY[\Z[YnaYla[Y[\WYopqrpstYeZbWYZm[WXY[\WYke[WXmZhWeZbWiYwxyz{u ��������������� ������������������������ ����������������� !"�#$%&�#��$'���()&*�)+&�#,�-��%.)+/��$'�$#&.01234567809:1385:;<=9>?@ABC6<=DE6<=FE6<=GE6<=HE6666666666666666666C=9>?@ABC6C=DE6C=FE6C=GE6C=HE6666666666>IJ38641K>L6L4ME6:N8OP66@@@5I2012345��Q�R� !"�!$��S�T���U�&�).&�()&*�V+&�#,�-�.WXYZ[\]ZY[_a[ZXbaZaXcdeZf\agYcbh_ijZb_\kZl[XZ[XYZfXbfYaZ\mZnbe kZbZna[beYo����������R�!$�p��T���+�&�).&�()&*�)+&�#,�-��012345681JP66q>86L4ME6:N8P6674r7sN6tu6L4M6v6wL4MP666<=9>?6<=D6;L4MOE6<=F6;L4MOE6<=G6;L4MOE6<=H6;L4MOP66C=9>?6C=D6;L4MOE6C=F6;L4MOE6C=G6;L4MOE6C=H6;L4MOP667809:1385:67F6;<=DE6<=FE6<=GE6<=HE66666666666666xx61:6y3N86;@zO66666666666666666C=DE6C=FE6C=GE6C=HE6L4ME6:N8OP6685N866666668F6;<=DE6<=FE6<=GE6<=HE66666666666666xx61:6y3N86;@zO66666666666666666C=DE6C=FE6C=GE6C=HE6L4ME6:N8OP5I20123456{681J��Q�|� !"�!�.&}�+-*�()&*�V+&�#,�-�~bn]_YZ�o��ZaX\laZ[XYZ]bc[Z\mZ[XYZ[Ya[hYfXZ[Xb[Zfb][dcYaZfY__aZf\n kZZmc\nZ[XYZW�]\c[Z\mZ[XYZc\d[YcoZ�\[YZ[Xb[Z[XYZ[YcmbfYZbnYaZbcYZXbcg�f\gYgjZbgZa\Zi\dZXb�YZ[\gd]_fb[YZ[XYZabnYZf\gYZm\dcZ[nYaZm\cZ[XYZ�Z���Z�W�Zc\d[YcoZ�Xb][YcZ��ZaX\laZX\l[\Zan]_miZ[XYZf\gYZhiZdakZ�c[db_Z[YcmbfYao

Page 58: SystemVerilog for Verification

������������������ ����������������������� �!�"�#����"���$%����&"� �����'�("�#���'�()*+,*-./01203456789:;/45<=/45>=/45?=/45@=/////////////:56789:;/:5<=/:5>=/:5?=/:5@=/////////////7A)B0/C+,7D/DCE=/+B0)B0/C+,7D/*20FG//H70/IJK<L/HM012IN:O6PQRR6STUQLG//7A707-C/H1,7A////VV/41210/0W1/X1Y7D1////*20/Z[/>G////45<9DH9X-0-/Z[/<G/////999////*1D17Y16D1CC<3FG////999////1AX//0-2E/*1D17Y16D1CC<3FG////\3:5<9DHFG////:5<9DH9DC-Y/Z[/>G/////////VV/N221*0/*1-XM/0+/*1D17Y1////]-70/3:5<9DH92+D/[[/>FG///VV/-70/8+*/S0-*0/+8/P1CC////8+*/37A0/7[<G/7ZN:O6PQRR6STUQG/7__F/H1,7A//////]-70/3:5<9DH91A/[[/<FG//VV/-70/8+*/1A-HC1////////\3:5<9DHFG//////HM012I7L/[/:5<9DH9X-0-G//////\3:5<9DHFG//////:5<9DH9DC-Y/Z[/<G///////VV/1-221*0/8C+]/D+A0*+C////1AX//1AX0-2E/K/*1D17Y16D1CC<1AX)*+,*-./K/0120��ab�� ��c�%�d'$��e"$���"'�fghijkljmnopqrnsimptuvjhrwrsjxrypmirtnmjvinpszr{|}~r�purh�puotr�jr�wknonwmrxni�ri�j�������������rwstr�����rtnmjvinpsh~r��jrowhirnhr�pmrkptjonsqr�ntnmjvinpsworvpssjv�inpsh~r��rgpurtmn�jrwrhnqsworxni�rkuoinyojr�����rypmih�rfghijkljmnopqrxnoorvwovuowiji�jr�woujrp�ri�jrhnqswor�grvpk�nsnsqri�jr�woujhrp�rwoortmn�jmh�riw�nsqrnsriprj��jvirtmn�jmhimjsqi�hrwstr�r�woujh~�{|}rypmirnhrwrtn��jmjsir�jwhi~r�irnhrjhhjsinwoogrwr�njmwmv�nvwormj�jmjsvjriprwr�wmnw�oj�sj�jmrwrsji�rhpri�wiri�jr�woujrp�ri�jr�wmnw�ojrnhri�jrpsjrowhirwhhnqsjt~r��rgpurvpssjvirw�wmnw�ojriprkuoinyojr{|}rypmih�rgpurkwgrqjirmwvjrvpstninpshrwhri�jrypmirwhhnqskjsih�mpkrkuoinyojrkptuojhruytwijri�jrhnsqojr�wmnw�oj~ ��������������� ������������������������ ������������������ !�"#$%&'(# �)*+,-*./01-,+-2/30-/+04+5-.6074+8989:;+*0<=326074+-4,*+>?-4+6?-+32*6+@A@B@CD+137.E-4,*+04+6?-+F/7G/2<9+H?26+/-233I+?2FF-4*+0*+6?26+>?-4+6?-+32*6+@A@B@CD+137.E+.7<JF3-6-*;+06+0<F30.063I+.233*+KLM@B+67+*0G40NI+6?26+6?0*+F/7G/2<+0*+,74-9+H?-4+-O-/IF/7G/2<+?2*+-P06-,;+24+0<F30.06+.233+67+KQ@A@RS+0*+,74-9+T/;+I7=+.24+U=*6+.233+KQ@A@RS24I60<-+I7=+>246+67+-4,+6?-+*0<=3260749V7>-O-/;+*0<=326074+0*+476+I-6+7O-/9+)+<7,=3-+7/+F/7G/2<+.24+?2O-+74-+7/+<7/-Q@ACD+137.E*+6?26+.746204+.7,-+67+1-+/=4+U=*6+1-N7/-+6?-+*0<=3267/+6-/<0426-*9+W?0*+0*2+G/-26+F32.-+67+F-/N7/<+.3-24+=F+62*E*+*=.?+2*+.37*04G+N03-*;+24,+F/04604G+2+/-F7/6+7N6?-+4=<1-/+7N+-//7/*+24,+>2/404G*+-4.7=46-/-,9+X7=+.24476+*.?-,=3-+24I+-O-46*;+7/?2O-+24I+,-32I*+04+2+Q@ACD+137.E9+Y76-+6?26+I7=+,7+476+?2O-+67+>7//I+217=6+N/--04G24I+<-<7/I+6?26+>2*+2337.26-,+2*+6?0*+>033+1-+,74-+2=67<260.233I9"'$Z&�����[�\�Q@ACD�]& _abcadefghigjffklgfhaabaimfndalklcijffklkgkdofphcklffffqqqfrrfsdklfabcadefdtgkukgvffhlwffxkldoffffywkiodvz{|higfwblhfnkg}f~�wfhaabaifdlwf~�wfndalklci{mfffffffffffffhaabaimfndalklci�jhlwabcade������#��(������(�! ��(���������(���& _H06?+>?26+I7=+?2O-+3-2/4-,+*7+N2/;+I7=+.24+./-26-+2+*0<F3-+6-*6+7N+2+137.E+7N+2+32/G-/,-*0G49+W?-+/-*6+7N+6?0*+.?2F6-/+*?7>*+2+,0/-.6-,+6-*6+N7/+2+137.E+7N+6?-+���+<0./7.74673J3-/9+�26-/+.?2F6-/*+*?7>+I7=+?7>+67+./-26-+/24,7<+6-*6*;+24,+6-*6*+*6/=.6=/-,+=*04G+TT�9W?-+�0663-+�7<F=6-/+�+�����+0*+24+2**-<13I+324G=2G-+N7/+6-2.?04G+6?-+N=4,2<-4623*7N+F/7G/2<<04G+67+.7<F=6-/+*.0-4.-+24,+.7<F=6-/+-4G04--/04G+*6=,-46*9+W?-+���>2*+,-O-37F-,+1I+X23-+Y9+�266+26+6?-+�40O-/*06I+7N+W-P2*+26+)=*604+24,+524U2I+�9�26-3+26+6?-+�40O-/*06I+7N+�330470*+26+�/1242J�?2<F20G4+04+6?-+*-.74,+-,06074+7N+6?-0/6-P6177E;+�46/7,=.6074+67+�7<F=604G+5I*6-<*�+�/7<+�06*+24,+�26-*+67+�+24,+�-I74,;�266+24,+�26-3+������9�/9+�=4+�0=;+�/9+�?-66+�2O0*;+24,+�/9+�2=3+�/24�74+7N+Y7/6?+�2/73042+5626-+�40O-/J*06I+?2O-+0<F3-<-46-,+6?-+���+N7/+���+8�:;+��-*0G4+7N+�7<F3-P+�0G0623+5I*6-<*9�

Page 59: SystemVerilog for Verification

�������������������� �������������� �������������������� !"��"#$%��#&"�$'$�� $������� !"�&(� "� "��)"($��%����"�'(�*+,,-.//0+12343-561475,/383,59:512;<=>?!"�@AB�$*&�"*"� � $������ �$�#�#$C�D���E#F�G5,0+H5I50J,5HK12,5L60MH959N00533HO50<O5H�����0<7,1<;;51>�P �$*&�"*"� #� !"�'�����$�%�$�# (�� $��#FQRRH�QSRH�ST?H�UVH�WXYH�@RH�@RVH�@RPH�@Z[H�Z?H�Z?VH�����Z?P>\]_abcdefbghibj]klklmnlooabpankqbrolks?!"G5,0+�D���E�$��t$%�("�uv�w���*&� "#� !"����("##"#��'�$�# (�� $��#� ��'" �!'(�*�*"*�(x>�P �!�#� !"�'�����$�%�$�&� #Fy 0;<0MH1535,.��vD$ y L1z,6M57F��vD$ >�?"��#� !"�G5,0+�D���E� !� ������ (���#$%����!�#�D""�"����� "("������ !�#�7-0�$#�%�$�%� ���!��%"�'(�*�-0{�� ��,6OO1�| �(%" ���("##}��#���*&� "��Dx� !"�$�# (�� $��y ,6OO1F��~vD$ #>�?!"� �(%" �$�# (�� $�����*&� "��'�(���D(���!��(���*&$�# (�� $��>y 3,6,5F�uvD$ #>�?!"���(("� �# � "��'� !"�0<7,1<;;51�D���EH�#��!��#�G5,0+HO50<O5H�" �>?!"G5,0+�D���E�!�#� !"�'�����$�%��� &� #Fy 1OF��vD$ >�?"��#� !"�*"*�(x� ��&"('�(*���("��>�?!$#�#$%����$#�!$%!�$*&"����"|�}���($�%� !"�# � "#��56O�59<18H�12,5�59<18H������7O2150,NO�� �� ������� ������������������������������������������������������������������������������������ ¡����¢£¤�¥��¦��������§��¦ ¡����������� �¡���¢£¥���� �� �������� ������������������������������������������������������������������������������������ ¡����¢£¤�¥��¦��������§��¦ ¡����������� �¡���¢£¥��¢£¥�� ��������������� ������������������������ ����� ������������� !"�#�#$%%����&'()*�+,-."�� !"��!�,"+�&/��+/,-01� !"�")2)'"�3�4/,-01��''�( !",�� � "�5�����!(/'+�&"�!-1!36 7%8��9:&- �3�;!"�)/,,"0 �.�'/"�(<� !"�=,(1,�>�)(/0 ",�,"1-� ",5�?@A��B5�(,!-1!�->="+�0)"�C!"0����-��!-1!�->="+�0)"36 D7%8��9:&- �3�E'C�2��?@A��BF�3E � !"�=(�- -."�"+1"�(<�%GH%I5�C!"0�J�AK�I�D�-�� ,/"5�?@A��B�-��/=+� "+�C- !K����5��0+�C- !�D7%�C- !�J�AK�I�D�-��<�'�"3�?@A��B�-��,"�" � (��9L!M���3�E''��-1:0�'���,"�),"� "+�(0�(0"�)'()*�)2)'"3;!"�N",-'(1�)(+"�<(,� !"�<" )!�&'()*�!���-0=/ ��0+�(/ =/ �=(, �3�OPQRSTUVWVXUYTZ[\U]S[_UTabScU[dTefghijkljmnopnifnqrksjtjmrktmumjrkvnrkwvnrksgrkkkkkkkkkkkkkkmuggsrkxsymuqjwz{kk|wvhmknifnqrksjtjmrkxsymuqjw{kk|wvhmk}~����kmuggs{kk|wvhmk}����ktmumj{kkfhmvhmk}~����kvnrkwvn{kkk��knhssjwmkuwgkwj�mk��kkfhmvhmksg{��kvsfmjnmjgknfgjkfe|mmjgjwgefghij;!"� "� �/�"���0�-0 ",<�)"�C- !�)'()*-01�&'()*�� (�"0�/,"� !� ��-10�'���,"�,"�+��0+��>='"+��20)!,(0(/�'23�;!","�-�����"=�,� "�>(0- (,�>(+=(, ��(� !� � !"� "� �)�0�,"�+&�)*� !"�.�'/"�� !� �!�."�&""0�C,- "03

Page 60: SystemVerilog for Verification

�������������������� �������������� ������������� �!�"#$�%�&#'�()"�*+�#�,-./0123/41/.356,137,-89.4:,.43;<3=>?444;<@,340/A/.B4:06.2=/-B40C?444;<@,34DEFGHI4.2CC0?4443-.0;6/444444A.2./?4444444444444JJ4K/1,-/C4,-4L2M8;/4NOFP444;<@,34DEFGHI483B4-83?44444444444JJ43900/-.42-C4-/Q.4RS4443;<3=,-@43:4T78<A/C@/43;<3=>?44444,-89.483B4-83B40C?44444<9.89.4.2CC0B4A.2./B4:06.2=/-B40/A/.?444/-C3;<3=,-@4JJ43:444M<C8<0.4UVLU473;<3=,-@43:B4<9.89.40/A/.>?444M<C8<0.4KWU474444,-89.43;<3=B40/A/.B4:06.2=/-B4.2CC0B4A.2./B4444<9.89.483B4-83B40C>?4444JJ4X<04M<-,.<0,-@4KWU4A,@-2;A4443;<3=,-@43:M4T78<A/C@/43;<3=>?44444,-89.483B4-83B40CB4.2CC0B4A.2./B4:06.2=/-?444/-C3;<3=,-@4JJ43:M444M<C8<0.4YZ[\UZ]473;<3=,-@43:M>?/-C,-./0123/4JJ41/.356,13_abcdefbafgfaghie_djijkglhabdcmgagcniolgacifjaf_apfe_aqljeraf_djkn_af_cifdpoes ��������������� ������������������������ ��������������� �!�"#$�%�&#'�()*�#"�(�"�+",-./-012034.10456247849:746;<5:6=>?@>25:<4A22222222222222222222222:746;<5:6=BCDE>CF25:<1GH225I5450J2K7/5I22226I4-J<726I4-JH2222L4517:.-1049MNAOAPI8PAQGH2222L1.I54.-9PR4S2,6TR;2I,6TR;2-UTRK284047TR8PA22222222222222L-70J4517A25:<1=6K1=,6A25:<1=6K1=I,6A2222222222222225:<1=6K1=-UA25:<1=6K1=84047=I017GH2222LU58,J0V9PR4S2F787420JJ285/I0J8PA2L-70J4517GH22225:<4=-78742WT2XH22225:<4=6K=40UU-2WT2XYZ;[[[\H22225:<4=6K=K-<40]7I2WT2OH22225:<4=6K=840472WT2\D>F<_ab>?<\H2222-7,70429cG2d5:<4=6KH2222,6<,.84<-7874S20887-4295:<4=6K=,62TT2XYZ;eOOOGH2222ffX25:<4=6K=-78742WT2OH2gg2@VI6;-.I.38JV2U70887-42-78742222d95:<4=6KGH2222LU58,J0V9PhIR4S2>7842J.0U5I/2.:240-/7420UU-788PA2222222222222L-70J4517GH22225:<4=6K=840472WT2\D>F<_ab>?<\H22225:<4=6K=K-<40]7I2WT2XH2222d95:<4=6KGH2222d95:<4=6KGH2222,6<K-<40]7IS20887-4295:<4=6K=,62TT2XYZ;[[[\GH2222LU58,J0V9PR4S2a5U24;72\2-.JJ.i7-20827j,7647UkPA2222222222222L-70J4517GH22225:<4=6K=K-<40]7I2WT2OH22225:<4=6K=840472WT2\D>F<_ab>?<\H2222-7,70429QG2d95:<4=6KGH2222,6<-.JJ.i7-S20887-4295:<4=6K=,62TT2XYZ;OOOOGH2222LU58,J0V9PhIR4S2@47,24;-.3/;20JJ24;726.I4-.JJ7-2840478PA2222222222222L-70J4517GH2222:.-295I425T\D>F<[?>\lH25WT\D>F<\CB_>?<B?BH25mmG222222K7/5I222222L608496I4-JA25GH2222225:296I4-J2TT2\D>F<_ab>?<\G222222226.I45I37H

Page 61: SystemVerilog for Verification

�������������������� �������������� ����������������� !"#$�%&��'�#(�)*+#&*��,&��#�#,-".��"�!/����������������&,��#�0,/�)+#&�/�)+#&�1+�0,23�������45#1)616&5#�7,+�8-�.3�������45#1)61�#�#,�8-�)+#&�3������&,�,�#� 92�: �45#1)623�������)5+*5�*��$����,&#� �45#1)61�)�--�;<=(...;23����,+��>>�4*&�������������� !?+"#$�%&��#�#,�*+�@A�*B#�B#!/��&,��#�0,23�����45#1)61�#�#,�8-�AC%DE5DFGH5IFI3����: �45#1)623�����)5J5&,��50,0$����,&#� �45#1)61�)�---�;<=(JJJJ23�����45#1)61�#�#,�8-�AC%DE5KCH5GHHD5DH3����: �45#1)623�����)5J5�+�5���&5&�$����,&#� �45#1)61�)�---�;<=(JJJJ23�����45#1)61�#�#,�8-�AC%DE5LDK%F5IFI3����: �45#1)623�����)5J5'&�#,50,0$����,&#� �45#1)61�)�---�;<=(JJJJ23���,+�,+��&*M&�0�>>�#,�#NOPQRSTQUPVPUQWUSXYQZ[\R][RZ]RP\QROPQPRXOQZ[RP_]XPQROPQabcdeQWUSXYQ][fQROPQRP\RgQhR]U\SQfPZ[P\QROPQXS[R_SUUP_Q\R]RPQP[ijP_]RPfQRkTPQ][fQ\SQZRQX][QWPQi\PfQZ[QWSROQROPQRP\R][fQZ[RP_]XPg ��������������� ������������������������ �������������� !�"#����$���%�#&'�(#)�(�*&+�*�,*%�-&+./012345627893:893/;<2=2>729?17@ABCDEFGHIJCKFHA777L7MN77777777777777ABCDEFOKCAP7777777L78N77777777777777ABCDEFIKAQIK777777L7RN77777777777777ABCDEFKSKAGCK77777L7TN77777777777777ABCDEFGHIJCKFDKUO7L7VN77777777777777ABCDEFAQWHGCKFHA77L7XN77777777777777ABCDEFAQWHGCKFWKW7L7YN77777777777777ABCDEFDKJIFWKW7777L7ZN77777777777777ABCDEF[BIFJIIDFDI7L7\N77777777777777ABCDEF]D[CKFWKW777L7_749/6F2a1b=?627/b<a777c0/746b4da77756e5;37f8M746b4d7L7g46b4da777>2/4hF0>47>0>i46b4dja777/23/77/8i>0>N7>0>ja777>2/4h7>8i46b4dN7>0>k232/N7>0>k3/5/2N7>0>k<4N777777777777>0>k9<4N7>0>k=N7>0>k/5==N7>0>kcF/5d29ja29=1b=?627::7/b<��lm�n#-&�o,p#-qrstuvwsxuyzt{|s}~�suy�{s�{y|r{�su~�st~s�w{s�}wt{��{|v�~��wsvrt{|�yx{wst~s~|�yrv�{tu{sx~���rvxytv~rs�{t�{{rs�{wv�rs��~x�wsyr�s}~�|st{wt�{rxu�s�vtustuvws�{wv�rsx~r�wt|�xt�s}~�sxyrs|{z�yx{s�~�{rws~�swv�ry�sx~rr{xtv~rws�vtusyswvr��{svrt{|�yx{�s�y�vr�}~�|sx~�{s{ywv{|st~s�yvrtyvrsyr�sv�z|~�{�syr�s|{��xvr�stu{sr���{|s~�s�v|vr��vwty�{w��}wt{��{|v�~�sy�w~svrt|~��x{wstu{sz|~�|y�s��~x�st~su~��s}~�|st{wt�{rxusyr�st~|{��x{s|yx{sx~r�vtv~rws�{t�{{rstu{s�{�vx{s�r�{|st{wtsyr�stu{st{wt�{rxu�s�vtusysx�~x��vr�s��~x�svrsyrsvrt{|�yx{�s}~�|st{wt�{rxu{ws�v��s�|v�{syr�swy�z�{s�{wv�rswv�ry�wx~||{xt�}s|{�ytv�{st~stu{sx�~x��

Page 62: SystemVerilog for Verification

����������� ��������������� ��������������� ��!����"��##�$"�!�$" �"�%�% ����%�&���!�"��$���'��������%���%���$"��(�%��$�)��*��$������%�� �� ��%��$���������������� %�%����#+�,������!������$%��$��-��%��.�����������.��$��$�����..���$��.�!�����$������!"�����#%������#�$�� !�������#+�/%����% !�'������$�)����..�� !����� $���%��$������. $����$�!��-��.������"��#'��%������*���!(�%�����%�������+&���!�"� %��%���(������(�$�*��%�����$��� %��%'��%�����������$��%�� �� ��%��$�&���!�"'�$!-�)���(�����%��$������-%+�0.�-� �*�$�������%������$.��#����$��)� ����) %����$%�����$'-� �*� !��$����# !���!������-%1��$��.������������%%'��$��.�����������'��$��.��������##�$�'��$��#���+�0$.��#����$��)� �����$%�����$�2��%�%����������%%��!!���������-%+3� ����������������'����$%#��'��$�������(�����$%�����$%��%��$���#�� !�������#�-����#�-$���)����� �!!-���$$�������������) %+����%���.��!!'���������-%������!!�%�����'��$��%���.-� ����%�)�$����$!-��!!�������455�����-��$����%'��$������� ���$����%��$������454'�-� *� !����(��������������%� ���������������$"������%�6���$������#��!�+�/%�����% !�'��������-%�����%�6��������!������"�����%����$���(�)!��$ #)����.����$%�����$%'�) ��� ��$"��$��#�!���%�'�#�%���.������#�#��-��%�*�%���+7)8���97���$����:��"��##�$"�;77:<�!��%�-� ����������#�!�=�������-��%��$���������#��"������*���������� ��$�%������*��>�*�������#+�3� ���$����������%�)�$���%��$��%-%9��#9!�(�!�#���!%������#�����)%������!�(�!�)-���!!�$"��� ��$�%�������.��#��$������$����������$���""!�$"�)��%+����$�-� �*��>�*�������$%�����$%��$%������.�%�"$�!����$%�9���$%'�-� �����#�������� ���(�+�/%���)�$ %'�-� ����%�)�$����%����� �!���.��#���� ������������ ���������������������������������� !��! "#������������!�� ��������������!�#��� ��$#�#!�%! &�'��()$�* #���!���*��!��$������!�+��,�--.��������,���',�%��!�����/*����0�!�� ��$ �� +�--.��#���������$��!�*�'� ���*(�1���#!��� �!����/�'�� ��2(�3�� ����!��, +�� �"#���������"��',(�4,�%��!�3�%!���������5��'���--.�' �'�%����#',������,�!����'������� !�����"��',���',��6#��7�����, #���"��!����"*��5�!* ��(�89:;<=>?@;AB;CAD?EF;?AG;HIJKEL! #%�������������' ���� ���,�!�,��%��* #����'!�������������������������!�������M"��',��(�N +��, #������������' ���"��"! #�,��� ���,�!O�P #�'������!��"*��,������� $, +�* #�+ #���%�!$ !���,������"��',Q��& "(R,��� ��� $�������"��',����� ��%%�*�����#�#��� ���������������,���',�'���,��!��#���� �����$�������' !!�'�(�R,��������,���$� +����� ����� #�� $��,�������������! #%���� ���,�!��� ��!����'�� ��(�R,��"����+�*�� � !����S���,������"��',�����! #����,���!����'�� ��������,�� %�!��� ����,���* #�%�!$ !�� ���,��(�)��--.���,���!����'�� ������,��$ '#�� $* #!�����"��',(P #�'����,���� $�������� �*�"��+����'�!����������"��',��(�T,���* #�������� ���'�!�* #�+����� �%�!$ !�����'!�����'�� �����#',�������!������� 5����$ !+�!����#!�������� %M%�������������������� ��#��'�+,����* #��!�5�(�U�!�*�'�!��!�6#�!�������������� +������" #���,��!�����!������ � %�!���(�P #�,���� ���5��'�� !�!���!���,���%�!��� %������'� ����,��', �������%�����*�� ���,����������%���������"���+�!�� $��,���!�'�� �� $��,���!����$�* #��! 5�� �������%%�!*��#!$�'���#',������+���! ��(�R ��*�* #!�����!�'�� ��+��,��,��'�!��!�������,��,���5��(�)$�* #�+����� ����!����'�!��&#����#!���,����*�����,������M�� �������* #��!��� ��(�L����,��'�!�� 5����"*�%!��������,������%����7��� %����+��,��,�"!����(�V!��* #��!�5���� ���� +O�W �Q��+ !!*X��,������M� '��"!�����,��%�* #��� %��$��*������������!���,������(P #!�����"��',��, #���"����!#'�#!����,�������+�*(�R!����� ��������"��',���+�!�� !�M�������! #����,�� %�!��� ����,���,���� �,�%%��X�'!��������!����'�� ����!����������!�'��5������',�'�����������������!�% !�(�)��������* #��, #����,�����" #���,����!#'�#!�� $�,������"��',������+,�����',�%�!��� ��(�R,������!�� !�'!�������!����'�� �������%������,���� ��,����Y����5��(�R,���!�5�!�������+��,��,����������,���!��% ����+��,��!����'�� ���,����!��!�'��5���"*���� ��� !(�R,���' !�" �!��',�'����,�������������,���Y%�'��������(P #��, #�����5����* #!�����"��',���� �"� '���������,�����$����, +��,�*' ��#��'���(89Z;[ADJ;\>JEG;]_EEV�'�������'�%�#�������,�������� ���,�!�+��,��,��! #�������,�������%#�������(�/��%���2(��, +����'�����$ !�������!�'�%�'���(�R,��%�'����' �������������!�������4 4��������

Page 63: SystemVerilog for Verification

����������������� ��� ������������������������� !���������"������#$���#$��!��%&'()'*+,-(�.����/�����$.�#�$����#�0�����!��0�.1����������2��$���$��!����!���.�30������!��454�6.�.�#.�����$��$.�.!�.17�����!������� ��3�1��#�����#������3��.!��!��8�9#$$#$9��$���$�������$�3���8��.12����.�$�0�������8����$��!���$�����#���:$�;�30���<����!�����$����8���3������1�����$��$�2�8���#$������.����"#�!�3�$��$������8��.1�2��!���8����!��0������#$���!��3�����������#30����$�����=(>+')?2=(>@A(*+,-(2����=(>*B'))�CDEFGHIJKLICMEFGHINODPQDRNMSPIRGDQQTUVWWXYZV[WVT\][_XX]\XabcdefXVggZhXTZThXgV\Vaif_XXjk[T\][Xl]gXg]WmUVn_XXXXog]WmUVnpqYZV[WVT\][dXrsqhXVggZt_XXXu[gjk[T\][XdXg]WmUVnXXjk[T\][Xl]gXTVUTvTZT_XXXXTZTXwXVggZXxXgV\VyzZ_XXu[gjk[T\][XdXTVUTvTZTu[gTUVWWXdXYZV[WVT\][{�����.�30�$��!���#����"$�$�3#$9�������� !#��8��1�������!�������"|#$9�.�$��$�#�$/�4�����$�3���������"#�!���.�0#������������$�����#����#$9�$����.����2����#$�%&'()'*+,-(����}'*?=+��4�$���$������������00��.���2����#$�~��������2��$�����#�8����������"���.���2����#$�*-A(+���+&'()�+��=����������������������"!�����������������"�$��JK�I��HOHINSI�H�MPHIDI�GDQQ����.�$����#$����.�����#$�;����3���#��9�#$����&-�&'�2�->AB=2�'*?'�=2��������#������$������!�����4�������.�$�8�������#$�0��9��3���$��3�������� !#��8��1��$����!�"�.��������!������������#$���0��9��3�8��.12����#$�����.���#$�4!�0������$�#���!�$2��!#$1�����0��9��3�8��.1������3�������!���!���������������.����� !��0��9��3�!��������#$9��������$��.�$��#$���!���8��.����!���.�30�#����!������8�$.!2��$���!��#$#�#���8��.1�����.��|���2�#$#�#��#��2��$����$��!��������!�$�������������0����.�2�����3���"�$��������������#$9���.�����0����#�����!�$��!��$�3|8�������#����9�����������9�2�����.�$�9���0������������������.��������$����0�����#$#�#�$�#$�����;����3���#��9��'*?'�=������#$���$.�2�����3#9!��9���0���9��!�������;4;:�� �����$��.�#�$��#$������#$9����'*?'�=����"�����.�$�.�30#����!��0�.1�9����0�|����������3��!�����������!�������3���$��������.������2���.!�����!�����������$��.�#�$�2�.���8�����2�����#�����$��0����.���2��!�������3�#$�#$���0�������#���� ������������ ��������������������������� �!"#�$���������%$���&���%��%�'&()& ��*�+,+-../-01234567689:�&����'&�&������;<�&%�==>�%�?�(�<�$����&%��@'���A�B���$��������% ��������C��D����;;��*�E�;�&���&D��)%�C������==>�(�%(�'���$����C��)�% �C���������� *�F����&�������==>������<�D�$�%����%�<�&%D���; ���G;�?&��%����%������� H�II�*J K�&���L�&�M&��(�M;��D�% �M��()�(�%�&�%�% ���;��%���&%D�?&��&M���*�B���&%&H�� ;���%������� ����&���D;��*J =MN�(��L�&%��%��&%(���$�&�(�&��*�O%������� <���;�%��D�����%��&%��&���&���D;�����;�����*J F&%D���L�&�'��%�������&%��MN�(�*�O%������� <���;�;�������%&����$�&%��%��&%(�C��%���;���$�������� %&���&%D������D��$�����;���D��������D;��*�P%�==>�&%D��������)������&DD������$������MN�(�<�M;����������D��%�&�'��%������&��(&%��%����$�������%����'�*J >��'�����L�&�?&��&M�����&�����D��D&�&*�O%������� <���������&��� %&���;(��&��&��� H���������C���*J #����D�L�����'��(�D;�&��(�D����&���&%�';�&����?&��&M���<�(�%�&�%�D��%��&�)�&%D�$;%(���%�*������� ���D;�����&?���&�)��&%D�$;%(���%��'�;���%���&��&%D&�C&���M��()�*�J >������'��L�������&D����$�&���;��%����&�����C������%&��<���'�<�&%D�&� ;��%�����*�B���M�D���$�������;��%��(�%�&�%�������@�(;�&M���(�D�*B����M��)�;���������������&D����%&��������$���������� ��$�Q?&��&M��R�&%D�Q��;��%�R�&�������&%�==>S��Q'��'����R�&%D�Q�����D*R�O$���;�&���(��$���&M���C��������==>�����<���;�(&%��)��������(�&'���*O%������� ���;�M;��D�(��'��@�D��� %��M��(��&��% ���D;����&%D��%��&%��&��% ���������&�(��(&���*�O%�==>���;�(��&���(�&�����&%D��%��&%��&��������T(��&��% ��MN�(��U���(��&���&������&������&�(��*F�������&%�&%&�� ������@'�&�%�������==>������*�B��%)��$�&�(�&���&������M�;�'��%��$���&��;��*�B����'�&%�D��(��M����������;(�;����$�������;��<�M;����;�(&%%�����?���%�&�M�;�H'��%�V���;�%��D����M;��D�����'����(&����;��*�P%��MN�(���������&(�;&����;��*�W;���&���%������$�M�;�'��%���(&%�M��;��D����M;��D�&�C������;MD�?����%��$���;���<�&���% ���(�&���(&%M��;��D����M;��D��&%���MN�(��*�B�����;���&DD����������)��&��&%D����%���&�����;%�G;����D�%��$������;����;��*�O%��D����;����;�����;��&?�����% ���;(��&���� ����T�%�����$$U<C�����C��(�������(�%���������*�P�(�&����&��?&��&M������&�����D�?&�;��<�&%D���;��%�����&�(�%���������?&�;��*�P�(�&���$���������;����� ����&?���&%���� ���*�P���% ���(&�����XYZ[\][\]Z_\abcXde������������ ���?&��&M���=f��%�&���% �����;��*

Page 64: SystemVerilog for Verification

������������� ���� ������������������ �!"#�$�%&'()*+,-./'0*123*445*)16,*(),*7'27,8(*'9*.2:(12(.1(.'2;*<=(*(),-,*1-,*:'>,*3.99,-?,27,:*.2*(),*3,(1./:@*A*+,-./'0*>'3=/,;*:=7)*1:*1*7'=2(,-;*.:*.2:(12(.1(,3*B),2*C'=7'>8./,*C'=-*3,:.02@*A*DC:(,>+,-./'0*7/1::;*:=7)*1:*1*2,(B'-E*817E,(;*.:*.2:(12(.1(,31(*-=2?(.>,*B),2*2,,3,3*<C*(),*(,:(<,27)@*+,-./'0*.2:(127,:*1-,*:(1(.7;*1:*(),*)1-3?B1-,*3',:*2'(*7)120,*3=-.20*:.>=/1(.'2F*'2/C*:.021/*61/=,:*7)120,@*D(.>=/=:*'<G,7(:1-,*7'2:(12(/C*<,.20*7-,1(,3*123*=:,3*('*3-.6,*(),*HIJ*123*7),7E*(),*-,:=/(:@*K1(,-;(),*'<G,7(:*>1C*<,*9-,,3*:'*()1(*(),.-*>,>'-C*712*<,*=:,3*<C*2,B*'2,:@�J),*121/'0C*<,(B,,2*445*123*+,-./'0*)1:*1*9,B*'(),-*,L7,8(.'2:@*J),*('8?/,6,/+,-./'0*>'3=/,*.:*2'(*=:=1//C*,L8/.7.(/C*.2:(12(.1(,3@*M'B,6,-;*1*DC:(,>+,-./'0*7/1::>=:(*<,*.2:(12(.1(,3*<,9'-,*.(*712*<,*=:,3@*N,L(;*1*+,-./'0*.2:(127,*21>,*'2/C*-,9,-:('*1*:.20/,*.2:(127,;*B),-,1:*1*DC:(,>+,-./'0*)123/,*712*-,9,-*('*>12C*'<G,7(:;()'=0)*'2/C*'2,*1(*1*(.>,@����O��P��� %��%�QPPR��� %S2*D1>8/,*T@�;*UV*.:*1*)123/,*()1(*8'.2(:*('*12*'<G,7(*'9*(C8,*WXYZ[Y\]_Z@*'=*712:.>8/.9C*().:*<C*G=:(*71//.20*UV*1*WXYZ[Y\]_Z*)123/,@a�bcd����e�f�$d��������R�g%������h��Rd�iVjkljmUnokpUVqpprrpstmujVtpjpvjkwutUVpxpktyz{qpprrp|uuomjUtpjpiVjkljmUnokpo}~tmU�),2*C'=*3,7/1-,*(),*)123/,*]X;*.(*.:*.2.(.1/.�,3*('*(),*:8,7.1/*61/=,*Z���@*N,L(;*C'=71//*(),*Z����*9=27(.'2*('*7'2:(-=7(*(),*WXYZ[Y\]_Z*'<G,7(@*Z��*1//'71(,:*:817,*9'-(),WXYZ[Y\]_Z;*.2.(.1/.�,:*(),*61-.1</,:*('*(),.-*3,91=/(*61/=,*��*9'-*�?:(1(,*61-.?1</,:*123*�*9'-*�?:(1(,*'2,:�;*123*-,(=-2:*(),*133-,::*B),-,*(),*'<G,7(*.:*:('-,3@*�'-,6,-C*7/1::;*DC:(,>+,-./'0*7-,1(,:*1*3,91=/(*Z��*('*1//'71(,*123*.2.(.1/.�,*12*'<G,7(@D,,*D,7(.'2*T@�@�*9'-*>'-,*3,(1./:*'2*().:*9=27(.'2@����e��g%�Pb��P�%��g$�P�D'>,(.>,:*445*(,->.2'/'0C*712*>1E,*1*:.>8/,*7'27,8(*:,,>*7'>8/,L@*�)1(*3',:�.2:(12(.1(.'2�*>,12�*�),2*C'=*71//*Z��*('*.2:(12(.1(,*12*'<G,7(;*C'=*1-,*1//'71(.20*12,B*</'7E*'9*>,>'-C*('*:('-,*(),*61-.1</,:*9'-*()1(*'<G,7(@*�'-*,L1>8/,;*(),*WXYZ[Y\]_Z*7/1::*)1:*(B'*��?<.(*-,0.:(,-:*�Y��X*123*\X\�*123*12*1--1C*B.()*,.0)(*61/=,:�31(1�;*9'-*1*('(1/*'9*��*/'20B'-3:;*'-*��*<C(,:@*D'*B),2*C'=*71//*Z��;*DC:(,>+,-./'01//'71(,:*��*<C(,:*'9*:('-10,@*S9*C'=*)16,*=:,3*�;*().:*:(,8*.:*:.>./1-*('*(),*�Y��_\�&17E*('*(),*)'=:,*121/'0C�*(),*133-,::*.:*2'->1//C*:(1(.7;*=2/,::*C'=-*)'=:,*<=-2:*3'B2;71=:.20*C'=*('*7'2:(-=7(*1*2,B*'2,@*A23*01-<10,*7'//,7(.'2*.:*2,6,-*1=('>1(.7@ ������������ ������������������������� ��!"#��$%�&�'�(��#�#� ))����� '�$�$�&"���&�*+#� ���, &� -'�#� �)���#�.��/��(�����&$ �����#���� #������-0���1#��"/��23������#�&����&�)��#�$�&���� �� ''�� ���$�$�&"4���� '#������� '�5�#�����, '��#��6")�� �'�7�, &� -'�#� &��#����������&�)�� �'��, '��#�8�����&�9+#� ���, &� -'�#� �)�:���&�*+#� ����;���� ��)������"��&��<��=>?@A�������������#���"��&��<��, '��#��3� ���#�<�"���=>?@A�����������#� '#��� ''�)�����B���#�&����&7C� #����-��')#������-0���7�0�#�� #�"��&���#���#����#�&����)��&�$�<��)� �)�� �'#��������� ��"���#���')�����(�,�� �&���&�, '����"/�� #��������#�&����&� '< "#�&���&�#� �� �)'����� ���-0�����������# $���"/�� #�����' ##�DEFGHIJKLMJDNFGHIJOPIQRSITNUISJUIVWXJTOUYZN[U\]__abc_\defcg`]fhe\ijklmn oobp\b\p o diqng`rsc\defcctuvwg` ` oob xjg` `rfbt\yvo dienw` ` ` o dien xzg`tcorsc\defctco\]__! $/'��{���#��#�|}}~� �)�}|�|��������)�, '��#�-���'� ,�#��~�� ����#�)�� �'��, '�����:���!"#��$%�&�'�(� ''�� ��#�����#/ �����&������-0���� ���$ ��� ''"�2�;���� ���#� &(�$���#�<����)�� �'��, '��#����$ .�� �$�&���'���-'�����#�&����&7� #�#��<�����! $+/'��{�*����<�"���� ��#/����"�����, '�����&�|}}~� �)�}|�|�<����"���� ''�������#�&����&7��&��#������)�� �'��, '��#�DEFGHIJKL�J�JUIVWXJTOUYZN[UJVNZ�JEQ�OFIUZP\]__abc_\defcg`]fhe\ijklmn oobp\b\p o diqng`rsc\defcctuv]fhe\ijklmn xjpoxzwg` ` oob x g` `rfbt\yvo dienw` ` ` o dien xog`tcorsc\defctco\]__ecede ]�thec`abc_\defcdbg`db xctuvkmwg �� o d s_t_otrs]dfrztco��<�)��#�!"#��$%�&�'�(�.��<�<�����=>?@A�������������� ''�����'��.#� �������"/��������� �)'���������'����#�)��������� ##�(�$��������! $/'��{�{7������ ''����=>?���#�)�����

Page 65: SystemVerilog for Verification

������������� ���� ������������������������ ���!"�#�$%&�'����(���'���)�*#+*,-�.#/�"0"���!��1!��!"���"'����������(��� ��"�2�3(��"�-��(����)�*#+*,-�.#�!��4 "/�35��"67"�( �1�4�"���!"�(1!���!(�1���4���"��"������89"����'��5:"�)�*#+*,-�.#2;<=>?@ABCBAD<??EFGAHI@AJEGIHAF@KLMANOFPHEQFRSTUUVWXTYUTRZ[\Y]VV ^_YRSTUUVaVWXTYUTRZ[\YRSTUUVbX[c_X]VVWXTYUTRZ[\YVZX]VVdeYRZ[\YVY_fgh]VVVVVViiVbX[c_XjUVY_fVdeYRZ[\YVVVVZXVkVY_fgh]VVVVVVVViiVlTSSVZm_VWXTYUTRZ[\YVY_fVdeYRZ[\YVV_YdeYRZ[\Y_YRSTUUVaVbX[c_XBCnCoA;@><J<HEFGAHI@Ap@P?<J<HEQFA<FqADQFrHJOPHEQFs����!�� 4��0�(4�4"� ��(�1���!��4 "���4��� (�1��!"������������/�#�$/� �(����"�����"6"��2�t!( "��!(��(�� "1� ��5���u���4� "���0"�8��"/�(�������"��"���4"�(�1�:��8 "6�/�����!"�������������(���� "4�8"'��"��!"�'(���:���"4��� �����"6"��2�s���6(1!���""4����(�(�(� (v"��89"����(�����"���(���4"�/�8���('�5����� �#�$wx�(���!"�4"� ����(��/�5���y��z��!�0"��!"��6"������� 2�{44(�(��� 5/�('�5���'��1"�������"�*|-.}*-�,������1"/�!"�������������(���� "4�����!"��������'��(6� ��(��/�����y!"���!"�8 ��~�(��"��"�"42BCnC�A�I@ApENN@J@FP@A�@HK@@FA�@KLMA<FqA�@K��s���6�5�!�0"����(�"4��!����!(��#�$%&�'����(��� ��~���� ��� (~"��!"�#�$����:"�����/4"���(8"4�(��3"��(����2�/���"4�����"���!"��(v"��'�45��6(������5�2��!"5�8��!�� ����"6"6��5���4�(�(�(� (v"�0� �"�2��!"�8(1�4(''"�"��"�(���!����!"�#�$%&�'����(���(���� "4����������������(�1 "��89"��/�y!"�"����!"�#�$����:"������(��8�( 4(�1��������5�y(�!6� �(: "�" "6"���2�#�$%&�������~"���1�6"����'����"��(�1��89"���0� �"�/�y!"�"��#�$����� 5���~"�����(�1 "�0� �"�'����!"���68"���'�" "6"����(���!"�����52BCnCBA�@HHEFGA<A�<Fq?@AQFA���@PHr�"y�������"����'�"�����'��"�����89"���y(�!�(���!��4 "2��!"��y���"�0"�5�4(��(���2�s�������������!��4 "���4���������������89"��2�0"���!"������"��'����(6� ��(��/���!��4 "�����:�(������6��5�89"���2��!(��(���!"�45��6(�������"��'�������4�35��"67"�( �12���z��1"���!"�!��4 "����'��"4�y(�!��!"��89"��2����3�6: "��2�/�-��'(����:�(���������"��89"��/��!"������!"�2��(1��"������!�y���!"��"�� ��(�1�!��4 "����4��89"���2 ������������ ������������������������ !"#��$� !�����%&�� '()*+,*-./0+1.231.4511166178-9*)81.:01;*+<98,.21=1+8:>?51111111661@990-*.81A/),.1()*+,*-./0+10BC8-..41=1.251111111111661.21D1.41E0/+.1.01/..21=1+8:>?51111111661@990-*.81,8-0+<1()*+,*-./0+10BC8-.F!#$G���HI�J�"K��'��"K��%&�� '��L �G������� !"#��$� !�����%&�� 'MNOPQRSTUPORSPQVWXPXRPYZ[VX[PR\][YXPUOWV_YVTTOaPbSZWcPVP_STVXRWPORSP_VOW[[UPXRPYZ[VX[PNSWUZ[UPRZPXNRSVWUPRdPXZVWVYXRWePfOX[_g[ZTRcPT[XPORSPYZ[VX[W[QPRW[PVSXR_VXYVTTOhPQN[WPORSPW[[UPXN[_ePiWPg[ZTRchPORSPQRSTUPNVj[PXRPS[PVdk[Ulm[PVZZVOPTVZc[P[WRScNPXRPNRTUPXN[P_Vk_S_PWS_\[ZPRdPXZVWVYXRWenRX[PXNVXPXNPUOWV_YPYZ[VXRWPRdPR\][YXPPUdd[Z[WXPdZR_PVWOXNWcP[T[PRdd[Z[U\[dRZ[PWPXN[Pg[ZTRcPTVWcSVc[ePoWPWXVWY[PRdPVPg[ZTRcP_RUST[PVWUPXPWV_[PVZ[\RSWUPXRc[XN[ZPXVXYVTTOPUSZWcPYR_pTVXRWePqj[WPQXNPrstuvrtwxPjVZV\T[hPQNYNYR_[PVWUPcRPUSZWcP_STVXRWhPXN[PWV_[PVWUPXRZVc[PVZ[PVTQVOPX[UPXRc[XN[ZeoWPVWVTRcOPdRZPNVWUT[PPp[RpT[PQNRPVZ[PVXX[WUWcPVPYRWd[Z[WY[ePqVYNPp[ZRWPP_lTVZPXRPVWPR\][YXePMN[WPORSPVZZj[hPVP\VUc[PPyYRWXZSYX[UzP\OPQZXWcPORSZPWV_[PRWXeP{NP\VUc[PPVPNVWUT[PXNVXPYVWP\[PS[UP\OPXN[PRZcVWm[ZPXRP|[[pPXZVY|PRdP[VYNPp[ZlRWePMN[WPORSPXV|[PVP[VXPdRZPXN[PT[YXSZ[hPpVY[PPVTTRYVX[UeP}RSP_VOPNVj[P_STXpT[\VUc[PdRZPVXX[WU[[hPpZ[[WX[ZhPRZPRZcVWm[ZePMN[WPORSPT[Vj[PXN[PYRWd[Z[WY[hPORSZ\VUc[P_VOP\[PZ[S[UP\OPQZXWcPVPW[QPWV_[PRWPXhP]SXPVPVPNVWUT[PYVWPpRWXPXRPUdd[Zl[WXPR\][YXPXNZRScNPV cW_[WXeP~VXTOhPdPORSPTR[PORSZP\VUc[PVWUPXN[Z[PPWRXNWcPXRU[WXdOPORShPORSPQTTP\[PV|[UPXRPT[Vj[eP{N[PpVY[PORSPXV|[hPORSZP[VXhPPZ[YTV_[UdRZPS[P\OPR_[RW[P[T[e�����%&�� ��������� !�"nRQPORSP|WRQPNRQPXRPYZ[VX[PVWPR\][YXP�P\SXPNRQPURPORSPc[XPZUPRdPXaP�RZP[kV_pT[hORSZPX[X\[WYNPYZ[VX[PVWUP[WUPXNRSVWUPRdPXZVWVYXRWPSYNPVPXZVWVYXRWPWXRORSZPb�{eP�WY[PORSP|WRQPXN[PXZVWVYXRWPYR_pT[X[UPSYY[dSTTOhPVWUPORSPcVXN[ZXVXXYhPORSPURW�XPW[[UPXRP|[[pPXPVZRSWUeP}RSPNRSTUPZ[YTV_PXN[P_[_RZO�PRXN[ZlQ [hPVPTRWcP_STVXRWP_cNXPZSWPRSXPRdP_[_RZOhPRZPVXPT[VXPZSWP_RZ[PVWUP_RZ[TRQTOe�VZ\Vc[PYRTT[YXRWPPXN[PpZRY[PRdPVSXR_VXYVTTOPdZ[[WcPR\][YXPXNVXPVZ[PWRPTRWc[ZZ[d[Z[WY[UeP�W[PQVOPfOX[_g[ZTRcPYVWPX[TTPdPVWPR\][YXPPWRPTRWc[ZP\[WcPS[UPP\O����������������������.4�����������������������.2 ����������������������.4�����������������������.2

Page 66: SystemVerilog for Verification

��������������� ������������������������������������ !�"�����������������#�$��������!�"����� !�����!��������������"������%���&�'("���)���!�����!��"�"����������(�������#*+,-./012341560,789:1-;/78./01<=>0?7@ABCDECFGHIDJGKJJLLJMBNCGNJCJOCDPQNGJRJDNSTUKJJJJJJLLJVQQIFCGNJCJDNSJABCDECFGHIDGJRJDNSTUKJJJJJJLLJVQQIFCGNJCJENFIDPJIDNWJXBNNJGONJXHBEGGJRJDYQQKJJJJJJJLLJZNCQQIFCGNJGONJENFIDP[���"���� �!�������'���!��\#]���!!"�_ab�������"�����������%������ �"���������� ��""���������� !��cde[�����f����!!����_abe���"�����"���"���� ���%������ �"����"���"� ��""����c&��g��h��������������g���"�g�!��#�'��������������������� !�"�������������������"����%���&�'("���)���!������� ��!!��������#�[�����%������(���� �!��� ����� �i���!(&����h������"�����h���#�[���!�"��!�����f�!����!(��!���"�������� !��"���������h����"���� ���%����������� ��!!����� #j��(�����������!����h����kll&����"���������"������%���"��� ���� !�"�������!��������!i���&���������������"�������������� ���������"#�m�'("���)���!���������� !����!(�����������%���"���������(��&��� �"�����(�������!!� �n�(��i"���#o�j��k&����(����!�g�� ���������"���!(����� ��""���������(&��� �(�������"�����������(�g�!�������� ��(����h���������i���"�"�����"����i���������#�p�������������"����������������������!!(��"�g�!� #�m�kll�(�� ����������"������"����&�����(�����(���������� ��(�kq"��!�f���!��(#�'("���)��i�!��� ��"������!!�h���(��� ������������������ !������"��������� !����������(�������������������%����������������(��#�r'("���)���!��q"�sst�"��������������"��!�"������u�g������kll#v'���� !(&�"�����'("���)���!����������"���������������������!!�������h�������������� !�"���������������%���&�(����������"����(������ ���!h�("��"�"�g�!� ���� !�"#�j��k�wkll&�����������������������������%������������!�������f�"�"#�x���������!!�������������"�!�������"��"������!&��� �"��(������ ������"�����������n�����(�!���"o�h����(������������ ��!!��������%���"#'("���)���!��������������������!!���������%����������"�"��!!���������� "���h������(������ !�#�y����f���!�&����(����������%���"������!���� !�"�&�'("���)���!���������� ��!!������������%���"�����!�(��������!!(�!�����!!���� !�"��(�"���������������z{{#�j�������%�����������"������i��������������"������������ &�������%�����"����� ��!!����� �h��!���������� ��"��������#�|���h�"�&���(���%���"�����������"� ��(���"��h�� ����� ���(�������� ��!!����� �����!���������� ����������"#�'���k���#�]���������������i��������������� "#*[��������!��!�������������� ����"� ���%���"�g����"����h����"���!����"#�[��"�"������� �"�����"������������������&�h������"�������"��"������� ��"��� # ������������ ��������������������� !�"#$%&'(&%)#*%'(+,%(--#.(&,/%(0%#12,.&3%'#$%/#%)#*%*4,%5&6%7#508%1(.9%&#%&',%:,;5-#8<#/*-,%(0(-#8)3%)#*%.(0%;,=,;%&#%+(;5(1-,4%(0/%;#*&50,4%50%(0%#12,.&%$5&'%&',%>?@0#&(&5#0%(4%4'#$0%50%A(<B-,%CDEDFGHIJ������������KGL�G�J���G�M�LNO!��������G��N��� !PQRSTRUVWXSYVZYYYYY[[Y\]URQ]YRY_RS ]YVXYRYPQRSTRUVWXSVYaYS]bcdZYYYYYYYYY[[YeXSTVQfUVYRYPQRSTRUVWXSYXgh]UVViR QYaYjkl_mkZYYY[[Yn]VYV_]YoRf]YXpYRYoRQWRg]ViWTqRrcdZYYYYYYY[[YeR YRYQXfVWS]s0%4&;5.&%ttu3%&',%#0-)%(..,44%&#%+(;5(1-,4%50%(0%#12,.&%4'#*-/%1,%&';#*8'%5&4%B*1-5.<,&'#/4%4*.'%(4%vwxyz%(0/%{|xyzD%}'54%54%1,.(*4,%(..,44508%+(;5(1-,4%/5;,.&-)%-5<~5&4%)#*;%(15-5&)%&#%.'(08,%&',%*0/,;-)508%5<B-,<,0&(&5#0%50%&',%=*&*;,D%s=%(%1,&&,;%�#;45<B-)%/5==,;,0&�%(-8#;5&'<%.#<,4%(-#08%50%&',%=*&*;,3%)#*%<()%0#&%1,%(1-,%&#%(/#B&%5&1,.(*4,%)#*%$#*-/%(-4#%0,,/%&#%<#/5=)%(--%#=%&',%;,=,;,0.,4%&#%&',%+(;5(1-,4D}',%B;#1-,<%$5&'%&'54%<,&'#/#-#8)%54%&'(&%5&%$(4%$;5&&,0%=#;%-(;8,4#=&$(;,%(BB-5.(&5#04%$5&'%-5=,&5<,4%#=%(%/,.(/,%#;%<#;,D%�5&'%/#�,04#=%B;#8;(<<,;4%<(9508%<#/5=5.(&5#043%4&(15-5&)%54%B(;(<#*0&D%�#$~,+,;3%)#*%(;,%.;,(&508%(%&,4&1,0.'3%$',;,%&',%8#(-%54%<(�5<*<%.#0&;#-#=%(--%+(;5(1-,4%&#%8,0,;(&,%&',%$5/,4&%;(08,%#=%4&5<*-*4%+(-*,4D%t0,#=%&',%$()4%&#%(..#<B-54'%&'54%54%$5&'%.#04&;(50,/~;(0/#<%4&5<*-*48,0,;(&5#03%$'5.'%.(00#&%1,%/#0,%5=%(%+(;5(1-,%54%'5//,0%1,'50/%(%4.;,,0%#=%<,&'#/4D�'5-,%&',%vwxyz%(0/%{|xyz%<,&'#/4%(;,%=50,%=#;%.#<B5-,;43%7�s43%(0/%�us43%)#*4'#*-/%4&5.9%$5&'%B*1-5.%+(;5(1-,4%&'(&%.(0%1,%/5;,.&-)%(..,44,/%(0)$',;,%50%)#*;&,4&1,0.'D����F!G!� ��GL�G�J���K����JN�GJ��GL�G�J���+,;)%#12,.&%'(4%5&4%#$0%-#.(-%+(;5(1-,4%&'(&%(;,%0#&%4'(;,/%$5&'%(0)%#&',;%#12,.&D%s=)#*%'(+,%&$#%�������x���%#12,.&43%,(.'%'(4%5&4%#$0%����3���3%(0/%��x�%+(;5~(1-,4D%A#<,&5<,4%&'#*8'3%)#*%0,,/%(%+(;5(1-,%&'(&%54%4'(;,/%1)%(--%#12,.&4%#=%(%.,;&(50&)B,D%�#;%,�(<B-,3%)#*%<58'&%$(0&%&#%9,,B%(%;*00508%.#*0&%#=%&',%0*<1,;%#=%&;(04(.~&5#04%&'(&%'(+,%1,,0%.;,(&,/D%�5&'#*&%ttu3%)#*%$#*-/%B;#1(1-)%.;,(&,%(%8-#1(-+(;5(1-,D%}',0%)#*%$#*-/%'(+,%(%8-#1(-%+(;5(1-,%&'(&%54%*4,/%1)%#0,%4<(--%B5,.,%#=.#/,3%1*&%54%+5451-,%&#%&',%,0&5;,%&,4&1,0.'D%}'54%>B#--*&,4@%&',%8-#1(-%0(<,%4B(.,%(0/<(9,4%+(;5(1-,4%+5451-,%&#%,+,;)#0,3%,+,0%5=%)#*%$(0&%&#%9,,B%&',<%-#.(-D

Page 67: SystemVerilog for Verification

����������������� ������������� �������������������� ��!�" #� $��%&'()*+,-.,/0123')24'56&'5/,6+,'6'*+6+05'76/0681,'0&*09,'6'516**:';<0*'76/0681,'0**<6/,9'6-2&3*+'611'0&*+6&5,*'2='+<,'516**>'84+'0+*'*52?,'0*'10-0+,9'+2'+<,'516**:'%&'(6-@?1,'�:A>'+<,'*+6+05'76/0681,'BCDEF'<219*'+<,'&4-8,/'2='28G,5+*'5/,6+,9'*2'=6/:'%+'0*0&0+0610H,9'+2'I'0&'+<,'9,516/6+02&'8,564*,'+<,/,'6/,'&2'+/6&*65+02&*'6+'+<,'8,30&&0&3'2=+<,'*0-416+02&:'J65<'+0-,'6'&,K'28G,5+'0*'52&*+/45+,9>'0+'0*'+633,9'K0+<'6'4&0L4,'7614,>6&9BCDEF'0*'0&5/,-,&+,9:� ���������M� NN�O��P� �N� ��!�Q #� $��RSTUUVWXTYUTRZ[\Y]VVUZTZ[RV[YZVR\YZV_V]VaaVbcdeXV\fV\dgeRZUVRXeTZehVV[YZV[h]VVVVVVVVVVVVVVVaaViY[jeV[YUZTYReVklVVfYRZ[\YVYemno]VVVV[hV_VR\YZpp]VVVVVVVaaVqeZVklrVdcsVR\YZVVeYhfYRZ[\YeYhRSTUUWXTYUTRZ[\YVZtrVZu][Y[Z[TSVdev[YVVZtV_VYemno]VVVVVVVVVVVaaVtUZV[YUZTYRerV[h_rVR\YZ_tVVZuV_VYemno]VVVVVVVVVVVaaVuYhV[YUZTYRerV[h_trVR\YZ_uVVwh[UsSTxnyqeR\YhV[h_zhrVR\YZ_zhyrVZu{[hrVZu{R\YZo]eYh%&'(6-?1,'�:A>'+<,/,'0*'2&1)'2&,'52?)'2='+<,'*+6+05'76/0681,'BCDEF>'/,36/91,**'2='<2K-6&)'|}~E�~BF�CE'28G,5+*'6/,'5/,6+,9:'�24'56&'+<0&�'+<6+'BCDEF'0*'*+2/,9'K0+<'+<,516**'6&9'&2+'+<,'28G,5+:';<,'76/0681,'��'0*'&2+'*+6+05>'6&9'*2',7,/)'|}~E�~BF�CE'<6*0+*'2K&'52?)>'6*'*<2K&'0&'�034/,'�@�:'�2K')24'92&�+'&,,9'+2'-6�,'6'312861'76/0681,=2/'+<,'524&+:����#�������� ��!�Q #� $��N���� �!� NN�*0&3'+<,'%�'=0,19'0*'6'3229'K6)'+2'+/65�'28G,5+*'6*'+<,)'=12K'+</243<6'9,*03&:'�<,&'9,84330&3'6'+,*+8,&5<>')24'2=+,&'&,,9'6'4&0L4,7614,:'()*+,-.,/0123'92,*'&2+'1,+')24'?/0&+'+<,'699/,**'2='6&'28G,5+>84+')24'56&'-6�,'6&'%�'=0,19:'�<,&,7,/')24'6/,'+,-?+,9'+2'-6�,'6312861'76/0681,>'52&*09,/'-6�0&3'6'516**@1,7,1'*+6+05'76/0681,:'�'516***<2419'8,'*,1=@52&+60&,9>'K0+<'6*'=,K'24+*09,'/,=,/,&5,*'6*'?2**081,:RSTUUVWXTYUTRZ[\Y]UZTZ[RV[YZVR\YZV_V][YZV[h]eYhRSTUU [h�VR\YZ[h�VtR\YZRSTUUVWXTYUTRZ[\Y]UZTZ[RV[YZVR\YZV_V][YZV[h]eYhRSTUU [h�VR\YZ[h�VtR\YZ ������������ ������������������������ ! ���"!#�!$%���&'#()�'� '��*%!���+!,�-./01234563789:2;389:3<9=3>.?3@2A2@2?>23.37B.BC>[email protected]=7C?F3.38.?;1253G9=3;9?HB?22;3.38.?;12I3<9=3>9=1;3=723B823>1.773?./23A9119:2;3E<3JJK3B823>1.7737>9023@[email protected]@3.73789:?3C?3-./012345�M�!,N%����OP�&'���%!�����(N��#��(%) �(��(N�#! (#QRSTTUVWSXTSQYZ[X\UUTYSYZQUZXYUQ[]XYUU_\UUUUUUUU Ua]bcdWU[eU[cfdQYTUQWdSYdgUUhhhdXgQRSTTZXZYZSRUcdiZXUUW]XjYdTYkl\UUmgZTnRSokpqgUYWSXTSQYZ[XUrdWdUQWdSYdgpsUUUUUUUUUUUUUVWSXTSQYZ[XttQ[]XYl\UU UudedWdXQdUTYSYZQUr[UvSXgRddXg����w�x�� �!%�y����� ! ���"!#�!$%��z37B.BC>[email protected]=7=.11<3C?CBC.1C{2;3C?3B823;2>[email protected]?53G9=3>.?HB32.7C1<3C?CBC.1C{23CBC?3B823>1.773>9?7B@=>[email protected]>.112;3A9@32D2@<37C?F123?2:39E|2>B53G9=3:9=1;3?22;[email protected]>[email protected].>B3.73.3A1.FK3C?;C>.BC?F3:82B82@3B8239@[email protected].;E22?3C?CBC.1C{2;53}A3<9=38.D23.3/[email protected]@.B23C?CBC.1C{.BC9?K3<9=3>9=1;3=723.?3C?CBC.1E19>~53�=7B3/[email protected]>[email protected].@23C?CBC.1C{2;3E2A9@23B823AC@7B39E|2>B3C7>9?7B@=>B2;5������� ! ����� '(��z?9B82@[email protected]>[email protected]:82?32D2@<3C?7B.?>239A3.3>1.773?22;73C?A9@/.BC9?A@9/3.37C?F1239E|2>B53�9@32�./012K3.3B@.?7.>BC9?3>1.773/.<3@[email protected]>[email protected]?9E|2>[email protected]/9;23ECB53}A3<9=38.D23.3?9?7B.BC>38.?;123C?3B823�����������3>1.77K32D2@<9E|2>B3:C1138.D23CB739:?3>90<K3:.7BC?F370.>253-./012345��3789:7389:3B93=723.37B.BC>[email protected]?7B2.;5

Page 68: SystemVerilog for Verification

����������������� ������������� ���������������������� �!"�#��$!"���%�&'��()*++,-.*/+*(012/3,,+0*01(,42/516,(563,,,,,,77,8,9*/:);,<109,+0*01(,+02.*6;,,=>?@A@,B2:;3,,5C/(012/,/;<DE3,,,,B2:;,F,(56GB2:;3,,;/:5C/(012/;/:()*++42/516,(5631/101*),H;61/,,(56,F,/;<D=>?@A>IE3,,-.*/+*(012/JJ(56,F,(563,,GGG;/:KLMNOPMQRSTONMROUQMLVWVXYMZWUXW[TQL\MV]QMYOQMVOMRW_XSPTWVQMV]QRMRWNMUOaMX_VOMWbPTTMbTQ QMUOPVX_QcMd_MeNLVQRfQUXTO\MNOPMYW_MYUQWVQMWMLVWVXYMRQV]OMX_LXQMWMYTWLLV]WVMYW_MUQWMW_MaUXVQMLVWVXYMZWUXW[TQL\MQZQ_M[QbOUQMV]QMbXULVMX_LVW_YQM]WLM[QQ_MYUQWVQceWRSTQMgc�hM]WLMWMLXRSTQMLVWVXYMbP_YVXO_MVOMXLSTWNMV]QMZWTPQLMObMV]QMLVWVXYMZWUXW[TQLceNLVQRfQUXTOMOQLM_OVMWTTOaMWMLVWVXYMRQV]OMVOMUQWMOUMaUXVQM_O_LVWVXYMZWUXW[TQL\LPY]MWLMijcMkOPMYW_MP_QULVW_MV]XLMUQLVUXYVXO_M[WLQMO_MV]QMYOQM[QTOacMl]Q_MV]QbP_YVXO_MjimnopqrmspsitmMXLMYWTTQMWVMV]QMQ_MObMV]QMQuWRSTQ\M_OMvwpxmptsiyxO[zQYVLM]WZQM[QQ_MYO_LVUPYVQ\MW_MLOM_OMLVOUWQM]WLM[QQ_MYUQWVQMbOUMijMZWUXW[TQLc ������������ ������������������������ ����!"#�#�$���%$�$���� �&�'��(��)*+,,-./+0,+)12304--,1+12)-530627-)674--,1+12)-201-)3801-9-:4--201-2;4--<<-=1+12)->?1@3;-13-;2,A*+B-,1+12)-C+/2+D*?,E--,1+12)-680)1230-C32;-;2,A*+BF,1+12),GH4----I;2,A*+BGJ./+0,+)1230-)67E>3;?9K,L-)38019K:;ML-------------)67E>3;?E0+>?GHL-)3801H4--?0;680)1230?0;)*+,,530627-)67420212+*-D?720--)67-9-0?NGOPQRFPSH4--./+0,+)1230TT)67-9-)674--./+0,+)1230TT;2,A*+BF,1+12),GH4--<<-=1+12)->?1@3;-)+**--?0;���U�V��$$�W��!"#$XYZ[\]_YaYbYcdbeeYeYfge\YbYhijkYlYmnophqroY_[sa[_Yae_[Y\][Yect[YsY\][YcdbeeuvbZtd[Ywu��Y_[sa[eYxqjyzi{|}YZ[\]_eYslY\][Y~�iojiphqroYba_Y����~�iouv�e\[Z�[ld�YcbddeY\][Ycll[c\Ya[�Y�be[_YaY\][Y]ba_d[Y\�t[u

Page 69: SystemVerilog for Verification

��������������� ����������������� ��������������� !"#$%�&�$%�#'��(��&&)*+,,-./+0,+)12304--521-6789:;-+<</=-)/)=-<+1+6>;4--?@0)1230-A32<-<2,B*+CDE4----F<2,B*+CDGHI:19-.J-+<</KIL=-)/)KILG=-F12MN=-+<</=-)/)E4----FO/21NDGP1<+1+6:QR;KGE4----?3/N+)L-D<+1+62;E-FO/21ND<+1+62;E4----F<2,B*+CDE4--N0<?@0)1230N0<)*+,,)*+,,-STUV./+04--521-6789:;-+<</=-<+1+4--WW-X,N-/N+*2,12)-0+MN,--?@0)1230-A32<-<2,B*+CDE4----F<2,B*+CDGHI:19-STU9-+<</KIL=-<+1+KILG=-F12MN=-+<</=-<+1+E4--N0<?@0)1230N0<)*+,,./+0,+)1230-14STUV./+0-B)420212+*-5NY20--1-K-0NODE4-----WW-T30,1/@)1-+-./+0,+)1230--1Z<2,B*+CDE4---WW-[2,B*+C-+-./+0,+)1230--B)-K-0NODE4----WW-T30,1/@)1-+-STU-1/+0,+)1230--B)Z<2,B*+CDE4--WW-[2,B*+C-+-STU-./+0,+)1230N0<\]_abc]de]f]ghfii]ji_i]fjb fdg]ibkfl_]mn]c_ofjhp]fec]ib]nbj]cbeq]afr_]b]sbkknfmbj]k_ _m_kdel]a_]tuvwxtvyz]bcdod_k{�����|�}$%$%~���#'!�&��"#&$���!}�#'�����&&\]lbbc]kjh_]bo]aj m]di]nbj]iabjhc]hdd]f]�d_g_]bo]gbc_]b]be_��fl_�]b]�__�]d]jec_kifecfmh_{]�bj]fn]m_]ofdhdfk]sda]adi]kjh_obk]kbjde_ip]mj]d]fhib]f��hd_i]b]ghfii_i{]�o]nbj]gfe]i__]_r_knadel]def]ghfii]be]a_]igk__e]f]be_]d_p]nbj]gfe]bk_]_fidhn]jec_kifec]d{�bs_r_kp]do]_fga]_abc]f�_i]f]�fl_p]abs]gfe]a_]sabh_]ghfii]od]be]f]�fl_�]�e]�ni�_�_kdhbl]nbj]gfe]mk_f�]f]_abc]deb]a_]�kbbn�_]�_abc]ef_]fec]fklj _ei�deidc_]a_]ghfiip]fec]a_]mbcn]�a_]�kbg_cjkfh]gbc_�]af]lb_i]fo_k]a_]ghfii{�_k_]di]abs]nbj]gk_f_]bj�bo�mhbg�]c_ghfkfdbei{]�b�n]a_]odki]hde_]bo]a_]_abcpsda]a_]ef_]fec]fklj _eip]fec]fcc]a_]��v���]�_nsbkc]f]a_]m_ldeedel{]�bsf�_]a_]_edk_]_abc]fec]br_]d]fo_k]a_]ghfii]mbcnp]fec]fcc]a_]ghfii]ef_]fec ������������ ����������������������������������� !�� "�#�$� ������%����&��!%�'�(���!#�)����!�������*�&#��&�$+��&�!��$������',-./01234562789:;<:=0;>?2.19@;A2A1>0-B-9C;DEFGHIIJKLHMIHFNOPMQJJRONJSTUVWXJHYYLZJFLFZJYHNHS[XQJJ\]N\LMJ_MFNOPMJPOYJYOIaGHbcdQ\MYFGHII_MFNOPMJPOYJKLHMIHFNOPMVVYOIaGHbcdQJJeYOIaGHbcfghWNVJKLHMIHFNOPMJHYYLihjZJFLFihjfZJJJJJJJJJJJeNOk\ZJHYYLZJFLFdQJJelLON\cfmNYHNHSWnoXifdQJJPL\HFjJcYHNHSOXdJelLON\cYHNHSOXdQJJeYOIaGHbcdQ\MY_MFNOPMFGHIIJpqrsKLHMQJJRONJSTUVWXJHYYLZJYHNHQJJttJuI\JL\HGOINOFJMHk\IJJ\]N\LMJ_MFNOPMJPOYJYOIaGHbcdQ\MYFGHII_MFNOPMJPOYJpqrsKLHMVVYOIaGHbcdQJJeYOIaGHbcfghWNVJpqrVJHYYLihjZJYHNHihjfZJJJJJJJJJJJeNOk\ZJHYYLZJYHNHdQ\MY_MFNOPM v���%%�����&+�w�%+��!x��+�����������%����&�� ����y���&�������%!������������+������#�&y'�zy���%{� +��w� �|*+ �����!������� ���}�y���#��+&���+�!����������*�}�$}#���x�%����&�&���! !�+��~��������$� ������!����!%��!�&���������� !�� '�v&&+�+��!��y~���%��������%}�+�� ���w���!�&�{�z"�� ��+#+��y�*�$ �%�����+$y+�w�����&�$!*��! w*%����)!�*���+��#��������� ����y���!�&�����#�&y'�z+����&�$!*���! w*%����)!�*��! ��+%�� �!��������&����!���!����!�%����&~��������+���+%���%���!�+��~����y����*�&����y#��� ������+����!���&���! !�+��'v����� ���%%���%+��!x��+�������!)���*��������!����!%�������y�*&���! ������%����&��*��+&���$�������!��'�v��!� ��*��~�+��+��&�$+��&�!�����������+w�� ��������� �#!#�y������ �w !%�� ��!�x!w�������"~�!�&������%�+�� �w+)���!��� � �����������!�x�� +������!��������!��}��)��)! +!#����!�&�%����&�'�(�+��+��������+��z!%�����'��'

Page 70: SystemVerilog for Verification

����������� � ��������������������� !���"#��$""$%&�'��""�%���()*++,-./0123,,425,463,,1751.2,892(54/2,:/46,64+;)*<3126()*++892(54/2,:/46,64+;)*<3,==,>4++42?,-./012@@,,A64+;)*<BC-./012@,46DEF6CG,46H3,==,I../.G,46,2/5,8/926126892(54/2���J��'��$%&�K���"LMNOPQRSTSOUPVWXRPTNYTZNO[M\PVWXPONN]PTWP[RNTNPO]PRN_NRPTWP OVPaRSZbNYcPdVYTNefNRSbWUP_WbbWQYPTMNPY NPZYS[PRXbNYPYPfNRSbWU\PQSTMPP_NQPMNbg_XbPSgRWaNNOTYchPY[WgNPSYPPZbW[iPW_P[W]NPYX[MPYPPW]XbN\PgRWUR \PTYi\P_XO[TSWO\P[bYY\PWRPjklmneknoPZbW[icPpMNPqrsPO]PqrsktuvebWWgYPXTW TS[bbVP[RNTNPPZbW[iPYWPTMTPOPSO]NwaRSZbNP[OPZNP]N[bRN]PWRP[RNTN]PbW[bPTWPTMNPY[WgNPW_PTMNPbWWgcxWXP[OP]N_SONPONQPaRSZbNYPSOPPZbW[icPyNQPSOPdVYTNfNRSbWUPSYPTMNPZSbSTVPTW]N[bRNPPaRSZbNPSOPOPXOO N]PZNUSOzNO]PZbW[i\PYPYMWQOPSOPTMNPqrsebWWgYPTMT]N[bRNPTMNPSO]NwPaRSZbNchPO NP[OPZNPRNbTSaNPTWPTMNP[XRRNOTPY[WgNPWRPZYWbXTNPYTRTSOUPQSTMP{srr|cP}WRPPRNbeTSaNPO N\PdVYTNfNRSbWUPbWWiYPXgPTMNPbSYTPW_PY[WgNYPXOTSbPSTP_SO]YPP T[McP~_PVWXQOTPTWPZNPXO ZSUXWXY\PXYNP{srr|PTPTMNPYTRTPW_PPO Nc�d gbNP�c �PXYNYPTMNPY NPO NPSOPYNaNRbPY[WgNYcPyWTNPTMTPSOPRNbP[W]N\PVWXPQWXb]XYNPWRNPNOSOU_XbPO NY�PpMNPO NP�m�m|PSYPXYN]P_WRPPUbWZbPaRSZbN\PPgRWeUR PaRSZbN\PP[bYYPaRSZbN\PPTYiPaRSZbN\PO]PPbW[bPaRSZbNPSOPOPSOSTSbPZbW[icpMNPbTTNRPSYPSOPOPXOO N]PZbW[i\PO]PYWPTMNPbZNbP[RNTN]PSYPTWWbP]NgNO]NOTc�pMNYNPNw gbNYPQNRNPTNYTN]PQSTMPf�dP����c��cPpMNP�p~P�XNYTPYSXbTWRPXYNYP�XOSTPSOYTN]PW_P�RWWTcPdNNdN[TSWOP�c�P_WRPWRNPSO_WR TSWOPWOPTMNYNPTQWP[WOYTRX[TYc ������������ ������������������������� !��"#$%&"'"$(%%%%%%%%%%%%%%%%%%))%*+,,$-&"'"$.+,/+0'%01$,'0$"2%.(%%"#$%&"'"$(%%%%%%%%%%%%%%%%))%*+,,$-.-&"'"$%%2&033%4,,(%%%%"#$%&"'"$5%0++0678(%%%%%))%*+,,$-.-4,,-&"'"$%%%%))%*+,,$-.-4,,-.+"#$-&"'"$%%%%91#2$",#%:,";%.+"#$%<"#$%&"'"$=(%%%%%%%9,+%<"#$%">?(%"@&"'"$(%"AA=%%%%%%%%*;"3.&06<BC'D%0++067C?;8>C?;B5%"5%0++067"8=(%%%%E#;91#2$",#%%E#;2&033%%"#"$"0&%FE/"#%%%%"#$%&"'"$%>%*+,,$-&"'"$(%))%GG3EE%#,$E%0F,:E%%%%4,,%F0+(%%%%F0+%>%#EH<=(%%%%F0+-0++06%>%#EH7&"'"$8(%%%%F0+-.+"#$%<&"'"$=(%%%%E#;E#;.+,/+0'IJKLMNOMPNQRSNOTLUJVLRWQLXNRYWKNLZWK[WPYNOL[QLMSNL\]_]aLJKL[QLMSNLbcbdbeLPYJRfghiLWLZWK[WPYNL[OLJQYULVONXL[QO[XNLWLO[QjYNLbcbdbeLPYJRfTLOVRSLWOLWLRJVQMNKTLUJVLOSJVYXXNRYWKNL[MLMSNKNLMJLWZJ[XLkJOO[PYNLQWlNLRJQiY[RMOLm[MSLJMSNKLPYJRfOgLnJMNLMSWML[iLUJVXNRYWKNLWLZWK[WPYNL[QLWQLVQQWlNXLPYJRfTLOVRSLWOLMSNLbcbdbeL[QLoWlkYNLpg�qTLMSNKNL[OQJLS[NKWKRS[RWYLQWlNLMSWMLmJKfOLRJQO[OMNQMYULWRKJOOLWYYLMJJYOgrNRYWKNLUJVKLRYWOONOLJVMO[XNLJiLWQUL\]_]aLJKLasteuL[QLWL\vw_ugLxS[OLWkkKJWRSLRWQLPNLOSWKNXLPULWYYLMSNLMNOMPNQRSNOTLWQXLUJVLRWQXNRYWKNLMNlkJKWKULZWK[WPYNOLWMLMSNL[QQNKlJOMLkJOO[PYNLYNZNYgLxS[OLOMUYNWYOJLNY[l[QWMNOLWLRJllJQLPVjLMSWMLSWkkNQOLmSNQLUJVLiJKjNMLMJXNRYWKNLWLZWK[WPYNL[QO[XNLWLRYWOOgLoUOMNlyNK[YJjLYJJfOLiJKLMSWMLZWK[zWPYNL[QLS[jSNKLORJkNOgLhiLWLPYJRfLVONOLWQLVQXNRYWKNXLZWK[WPYNTLWQXLWQJMSNKLZWK[WPYNLm[MSMSWMLQWlNLSWkkNQOLMJLPNLXNRYWKNXL[QLMSNLkKJjKWlLPYJRfTLMSNLRYWOOVONOL[ML[QOMNWXTLm[MSLQJLmWKQ[QjgLhQLoWlkYNLpg�{TLMSNLiVQRM[JQ|s}}sb~\e�LX[XLQJMLXNRYWKNLMSNLYJJkLZWK[WPYNLbTLWQXLOJLoUOMNlzyNK[YJjLVONOLMSNLkKJjKWlLYNZNYLbL[QOMNWXgL�WYY[QjLMSNLiVQRM[JQRSWQjNOLMSNLZWYVNLJiLdu~d�bTLkKJPWPYULQJMLmSWMLUJVLmWQM�

Page 71: SystemVerilog for Verification

����������� ��������������������������� !"�#��$�%��&'()'*+,-./-0,,12-,10,,33,4'()'*+56.7.6,7*'1*86.,,96*//,:*;0,,,,6()19,<=>?@A,;*-*<A0,,,,33,B*6612),-C1/,DE29-1(2,9C*2)./,-C.,&'()'*+,7*'1*86.,,,,DE29-1(2,7(1;,;1/&6*F0,,,,,,33,G(')(-,-(,;.96*'.,1,12,2.H-,/-*-.+.2-,,,,,,D(',I1J@0,1K;*-*L/1M.IN0,1OON,,,,,,,,P;1/&6*FIQ;*-*<R@;AJRHQS,1S,;*-*<1AN0,,,,.2;DE29-1(2,,.2;96*//.2;&'()'*+TUVWXYVZX[\V]\V_abbVcd]XVaVea_fag\hV]\V_abbV_addX]Vb\\V]\VeiXgiaZj\[\V[aicak\bhadlV]YbVmXdn]VYb\V]\ZVYdcd]\d]cXdaWo����������p�q #��r�����$!s ���rt�"��s �u$!v�%�"&*9w*).,x1/-*w.0,,96*//,:*;0,,,,6()19,<=>?@A,;*-*<A0,,,,33,y166,2(-,9(+&16.,8.9*E/.,(D,E2;.96*'.;,1,,,,DE29-1(2,7(1;,;1/&6*F0,,,,,,D(',I1,J,@0,1K;*-*L/1M.IN0,1OON,,,,,,,,P;1/&6*FIQ;*-*<R@;AJRHQS,1S,;*-*<1AN0,,,,.2;DE29-1(2,,.2;96*//.2;&*9w*).&'()'*+,-./-0,,12-,10,,33,4'()'*+56.7.6,7*'1*86.,,1+&('-,x1/-*w.??z0,,LLL.2;&'()'*+���{���|}�s�$��-C1/~� \dVWXYVYb\VaV[aicak\VdaZ\hV�Wb]\Z�\icXgVXXfbVcdV]\V_Yii\d]Vb_Xe\VUXiVc]hVadl]\dVcdV]\Veai\d]Vb_Xe\bVYd]cV]\V[aicak\VcbVUXYdloV�cbVcbV]\VbaZ\VagXic]ZVYb\lVkW�\icXgoV� a]VcUVWXYVai\Vl\\eVcdbcl\VaV_abbVadlVmad]V]XVYdaZkcgYXYbWVi\U\iV]XVaV_abbj\[\VXk�\_]�V�cbVb]W\V_Xl\VcbVZXb]V_XZZXdWVYb\lVcdV_Xdb]iY_]XibhVm\i\V]\VeiXjgiaZZ\iVYb\bV]\VbaZ\VdaZ\VUXiVaV_abbV[aicak\VadlVadVaigYZ\d]o�VTdV�aZe\V�o �hV]\��XZ\Ve\Xe\V]cdfV]cbVZaf\bV]\V_Xl\V\abc\iV]XVi\al�VX]\ibV]cdfVc]VcbVaVbXi]_Y]VkWVaVa�WVeiXgiaZZ\io ������������ ������������������������ �!�"�#$��% &'()'#��#��*�#�+�"#� ,��'*�(��-���#$%#���)�%���%""'(-.'-(�#$��*�/%*�!%�'%&*�0�123450�#��#$��/*%""�!%�'%&*�0�123456789:;<=>?@A=BCDEF=GHIJ=KL=M<N<M=KL=O;8CC=P8MD8Q;<RSTJJUVRWXIYZ[UUJG\IYZUWYT][UU_YRGIWYUYabJG\IYZUWYT]c[UUUUGHIJdWYT]UeUWYT][UUUUffURSTJJUWYT]UeUSWRTSUWYT]UUYg_YRGIWYYgRSTJJ>?@h=BCDEF=iE<=j;8CC=kECDl<=mELKn<Mo�/*%""�/%-�/�-#%'-�%-�'-"#%-/���p�%-�#$���/*%""0�)"'-(�%�$%-�*��#��%-��&q�/#6�r$'"�'"q)"#�*'���,��'*�(s"�/�-/�t#��p�'-"#%-#'%#'-(�%� ��)*��'-"'���%-�#$��� ��)*��#��&)'*��)t#$����"'(-�$'��%�/$�6�u� �-���%"�-"�p���)"'-(�/�-#%'- �-#�%�����)"��%-��/�-#��*.*'-(�/� t*�v'#�6�w����v% t*�0��!�����-���p���)��#�%-"%/#'�-"� %��$%!��%�"#%#'"#'/"�&*�/�0��'#$�#' �".#% t"��-��$�-�#$��#�%-"%/#'�-�"#%�#���%-���-���0�%-��'-p�� %#'�-�%&�)#�%**#�%-"%/#'�-"0�%"�"$��-�'-�w'()���x.y6zDF{M<=>|h=jLEK8DE<l=LQ}<OKC+% t*��x6~��"$��"�#$����3��������/*%""6RSTJJU�\TYJTRGIWY[�IGU������UTgg\�UR\R�UgTGT���[VGTGIJGIRJUJGTGJ[YgRSTJJ RSTJJUVGTGIJGIRJ[GI]UJGT\G��UJGWX�[JGTGIRUIYGUYG\TYJeU�[JGTGIRUGI]UGWGTS�STXJg�GI][YgRSTJJRSTJJU�\TYJTRGIWY[�IGU������UTgg\�UR\R�UgTGT���[VGTGIJGIRJUJGTGJ[YgRSTJJ RSTJJUVGTGIJGIRJ[GI]UJGT\G��UJGWX�[JGTGIRUIYGUYG\TYJeU�[JGTGIRUGI]UGWGTS�STXJg�GI][YgRSTJJ

Page 72: SystemVerilog for Verification

��������������������� ������ ��������������� !"!#$!#%$�&��''�(�&��)�*+,-%."$$/ !"!#$!#%$0//!#12/$!"3!45/$!6740//////88/43"9$"%!#69/!#12$//$!"!#%/#9!/9!3"9$/:/;0///88/43"9$"%!#69/%6<9!//$!"!#%/!#12/!6!".=2."7$2>=!#12/:/;0//?<9%!#69/!#12/@6A=.69B0////@6A=.69B/:/$!674/C/$!"3!40////9!3"9$DD0////!6!".=2."7$2>=!#12/D:/@6A=.69B0//29>?<9%!#69//?<9%!#69/E6#>/$!"3!0////$!"3!4/:/F!#120//29>?<9%!#6929>%."$$GHIJKHLJMNOJLPQJRSTPJMUNPPJTOPTVQJNOHRSQWX����������Y�Z-&��'[��*+-\�*]�� !"!#$!#%$�&��''%."$$/43"9$"%!#690//#!/_ab;c/">>35/%3%5/>"!"_dc0// !"!#$!#%$/$!"!$0////////88/ !"!#$!#%$/@"9>.2//?<9%!#69/92Aef0////$!"!$/:/92Aef0/////////88/g"h2/#9$!"9%2/6?/$!"!$//29>?<9%!#69//!"$h/%32"!2=7"%h2!ef0////88/i#../7"%h2!/A#!@/>"!"////$!"!$j$!"3!ef0////88/43"9$1#!/7"%h2!//29>!"$h29>%."$$kSQJHLRQWlHPRJMUNPPmJnopqrpstuvqmJMNOJWQwQWJRHJRSTOxPJTOJRSQJytpturtusrJMUNPPLPTOxJRSQJLPLNUJSTQWNWMSTMNUJPKORNzmJPLMSJNPJrtptr{rtpotnX|QlQl}QWJRHJTOPRNORTNRQJRSQJH}~QMR�JHRSQWITPQmJRSQJSNOVUQJrtptrJTPJq���JNOVJRSQJMNUURHrtpotJwNTUPXJkSTPJTPJ}QPRJVHOQJTOJRSQJMHOPRWLMRHWJHwJRSQJHLRQWJMUNPPmJnopqrpstuvqX�PJKHLWJMUNPPQPJ}QMHlQJUNWxQWmJRSQKJlNKJ}QMHlQJSNWVJRHJlNONxQXJ�SQOJKHLWJ�NWT�N}UQJVQMUNWNRTHOPJNOVJlQRSHVJ�WHRHRK�QPJxWHIJUNWxQWJRSNOJNJ�NxQmJKHLJPSHLUVJPQQJTwRSQWQJTPJNJUHxTMNUJxWHL�TOxJHwJTRQlPJTOJRSQJMUNPPJPHJRSNRJTRJMNOJ}QJP�UTRJTORHJPQ�QWNUPlNUUQWJHOQPXkSTPJTPJNUPHJNJ�HRQORTNUJPTxOJRSNRJTR�PJRTlQJRHJWQwNMRHWJKHLWJMHVQmJTXQXmJP�UTRJTRJTORHJPQ�QWNUPlNUUQWmJWQUNRQVJMUNPPQPXJ�QQJ�SN�XJ�JwHWJlHWQJVQRNTUPJHOJMUNPPJTOSQWTRNOMQXJ�HH�JNR ������������ ������������������������ ����!���������"#�$$%�&$�������$�'����� �����"��#!�'�(�������������'����)�$��"#�$$�$*��%�%*�!�"�'+�$����$�� #��"#�$$��������"#�$$�������"��,�-�"#�$$�"���!�."�������$�$�'�#���"�!���++����� ����(�����$�+#�"�$��������"#�$$%�/������!����0�"��������"�!�������������0��"������������"�������"#�$$*������0�����"�������"#�$$�$�+������"#�$$�$*���)���%�123423567859:;57<5=>?@@5=A7B@C5DE5F@?GG59HIJ�$���$�����'�����������$+#����+�"#�$$�$��������������)� *�����$���#!�#$����(����#�����#�'����������$'�##���"#�$$�$���#!�)�%�-�"#�$$�����K�$�������������'�')��$�'�L�$�����"�!�����!��������!��$���!��$����!!$�����M����#������0�������"�����!�0��"�$��������"��$����#��K�'+)�"L���!�0�����)�����������+������"#�$$���!��##�����"��#!���������!��.$���!���������!��$%�&���!!�����*�#��L���������0��������$��$�!%�&0���$'�##"#�$$��$���#����$��������!���"�*�����'� �����������'�� ��������������+������"#�$$%N���O���+$�$�"�$��'���+�����"������$�"�����(����)#���������$�����"#�$$�0���0����"��.���#��0����!�'�P�����%�Q�������$�"�������!���$�+�������)K�"��0��������!!��$$*�RSR*!���*���"%�&��������!*����$��++���"����#��'�!������"#�$$�������"���'����"�'+#�M%�N�������M��+��K�"�������0#������!�����������"��%O���O�"�����T%��0���'�����!��$����+���������� �"#�$$�$%12342U5F7>V:@?W:7X5Y<CH<5ZGGBHO�'���'�$��������!����"�'+�#����"#�$$��������"#�!�$���������"#�$$�������$��������!�0���!%�Q���!�"#���������0��������!#��"��$�$���������*��$�����"�'+�#���!��$�������"� .��P������������+�%�[�"#��������"#�$$���'���������\] __a�$����'���*��$�$����)�#��%=?>V@H512UU5bG:X;5?5cdefgfhijklmm5GW?WH>HXWcdefgfhijklmminclcomcojmpiiqqirfhosfiliktufvikfwfkijklmmjklmmixvlsmljcotspiinclcomcojmimclcmpiiiiiiiiqqiymfinclcomcojmijklmmiizzzfsgjklmmjklmminclcomcojmpiiiiiiiiiiqqirfhosfinclcomcojmijklmmiizzzfsgjklmm

Page 73: SystemVerilog for Verification

���������������� ��������� �������������� !��"�#�$%�!&"'�()*�' �+,-.-/0.012.334-.3352.067-3.,89.86-/92:-./-;6<1358=-6>6<[email protected]/9.334-:./-.>.<1.A36-.//521.067-B10:-10C-D5<-6E.F?36=-0:6<6-F.4-A6-.-B1<6-2.3367-GHIJK=-0:6-1,06L86<MNOJK=-.,7-.-F57936-1,/0.,26-PQC-+,-RRS=-0:6<6-1/-,50-0:6-/.F6-5,6L05L5,625<<6/?5,76,26C-T:6<6-2.,-A6-F.,4-5AU620/=-A90-5,34-.-@6B-,.F67-:.,736/C-V-06/0LA6,2:-F.4-.3352.06-.-0:59/.,7-0<.,/.2015,-5AU620/-79<1,8-.-/1F93.015,=-A90-F.4-5,34:.>6-.-@6B-:.,736/-05-F.,1?93.06-0:6FC-T:1/-/109.015,-0.W6/-/5F6-86001,8-9/67-05-1@459-:.>6-5,34-B<1006,-;6<1358-2576C+,-<6.3104=-0:6<6-1/-.-:.,736-?51,01,8-05-6>6<4-5AU620C-X5F6-:.,736/-F.4-A6-/05<67-1,.<<.4/-5<-Y9696/=-5<-1,-.,50:6<-5AU620=-31W6-.-31,W67-31/0C-D5<-5AU620/-/05<67-1,-.-F.13LA5E=-0:6-:.,736-1/-1,-.,-1,06<,.3-X4/06F;6<1358-/0<9209<6C-X66-X62015,-�CZ-@5<-F5<61,@5<F.015,-5,-F.13A5E6/C�������[!��"�#�()*�' �� \�]� \��_:.0-:.??6,/-B:6,-459-?.//-.,-5AU620-1,05-.-F60:57-S6<:.?/-0:6-F60:57-5,34,667/-05-<6.7-0:6->.396/-1,-0:6-5AU620=-/92:-./-KHIJabPK-.A5>6C-R<=-459<-F60:57-F.4F571@4-0:6-5AU620=-31W6-.-F60:57-05-2<6.06-.-?.2W60C-c10:6<-B.4=-B:6,-459-2.33-0:6F60:57=-459-?.//-.-:.,736-05-0:6-5AU620=-,50-0:6-5AU620-10/63@Cd"#e����f��g!��h���!���\)*�' ��!'�\���&� \��+,-D189<6-iL�=-0:6-GjJjHIKNH-0./W-:./-U9/0-2.3367-KHIJabPKC-T:6<6-.<6-0B5-:.,736/=GjJjHIKNHkK-.,7-KHIJabPKkK=-0:.0-A50:-<6@6<-05-0:6-/.F6-5AU620C_:6,-459-2.33-.-F60:57-B10:-.-/2.3.<->.<1.A36-l,50-.,-.<<.4-5<-5AU620m-.,7-9/6-0:6-Hjn.<89F6,0-W64B5<7=-X4/06F;6<1358-?.//6/-0:6-.77<6//-5@-0:6-/2.3.<=-.,7-/5-0:6-F60:572.,-F571@4-10C-+@-459-75,o0-9/6-Hjn=-X4/06F;6<1358-25?16/-0:6-/2.3.<o/->.396-1,05-0:6.<89F6,0->.<1.A36=-.,7-/5-.,4-2:.,86/-05-0:6-.<89F6,0-75,o0-.@@620-0:6-5<181,.3->.396Cpqrstruvwxsvrtyz{|s|qrvxq}pqrstruvwxszv}vz~zs|�}vqrst�wv�v�}|s�vrtyvrtyzvqrst�wv�pqrstruvwxsv�}�|s�vrty pqrstruvwxsvrtyz{|s|qrvxq}pqrstruvwxszv}vz~zs|�}vqrst�wv�v�}|s�vrtyvrtyzvqrst�wv�pqrstruvwxsv�}�|s�vrty ������������ ����������������������� !"�#$%�&'�(()*+,-./01),)2,3451)6-16),)789:01):;.1,.4)1+,-./01<*+,-.,3106-)1=>))?@:;.A+BCD,1,)EF)1AD,1,>))1A.1,1.A.1,+1*)F)G10/5>))AAA5-D1,.4*+,-.,3106-)1>0-010,H):5I0-))1)F)-5J<=>)))))))(()KHH63,15)1L5)6:M531))1A,DD+)F)N8>)))))(()O-010,H0P5)Q,H;5.))1+,-./01<1=>)))))(()R,..)6:M531)16)1,.45-DSTUVWXYZ[U\]_Uab[UcTcacWZUdZefgUWZZefWa[hUWUijklmknopqlUedr[faUWTsUfWZZhUab[ojklmtpoUaWhgUucabUab[UbWTsZ[UabWaUYecTahUaeUab[Uedr[fa]UvhcTwUabchUbWTsZ[UojklmtpoUfWTUx[WsUWTsUuxca[UyWZz[hUcTUab[Uedr[fa]U{eu[y[xUc|UojklmtpoUaxc[hUaeUXesc|}ab[UbWTsZ[Uab[Ux[hzZaUueT~aUd[Uh[[TUcTUab[UcTcacWZUdZefgUWhUab[UoUWxwzX[TaUuWhUTeas[fZWx[sUWhUj��]�UX[abesUfWTUXesc|}UWTUedr[faU[y[TUc|Uab[UbWTsZ[UWxwzX[TaUse[hTeaUbWy[UWUj��UXesc|c[x]U�bchU|x[�z[TaZ}UfWzh[hUfeT|zhceTU|exUT[uzh[xhUWhUab[}UXc�UzYUab[UbWTsZ[UucabUab[Uedr[fa]U�hUhbeuTUWdey[ojklmtpoUfWTUuxca[UWUacX[haWXYUcTaeUab[Uedr[faUucabezaUfbWTwcTwab[UyWZz[Ue|Uo�US|U}ezUseT~aUuWTaUWTUedr[faUXesc|c[sUcTUWUX[abesUYWhhUWUfeY}Ue|UcaUheabWaUab[UexcwcTWZUedr[faUchUzTaezfb[s]UV[[UV[faceTU\]�\U|exUXex[UeTUfeY}cTwUedr[fah]��������#� �� !"�����!���� !��������UfeXXeTUfescTwUXchaWg[UchUaeU|exw[aUaeUzh[Uj��UeTUX[abesUWxwz�X[TahUabWaU}ezUuWTaUaeUXesc|}U[hY[fcWZZ}UbWTsZ[h]USTUVWXYZ[U\]�ab[UWxwzX[TaUojUchUTeaUs[fZWx[sUWhUj��UWTsUheUWT}UfbWTw[UaeUcaUchTeaUd[Uh[[TUd}Uab[UfWZZcTwUfes[]U�b[UWxwzX[TaUojUbWhUab[Us[|WzZascx[faceTUe|Upl��o]

Page 74: SystemVerilog for Verification

���������������� ��������� ��������������� �!�"#�$%�&"'($�&#��"(#�"�%)*��'%%'$+�,-.�($�/�$!��.01234516754862,-93-:;,91<92345163,=>6??6@0AB6C4<<41A6,-.663,6D61-E:=>663,F988,6D6GH>66??6I14349J4K-653L-,6.4-J8<66FFF-18.0123451;,91<92345163>414349J6M-A41662,-93-:3=>666666666666??6N,-93-6963,91<92345166O84<PJ9Q:3F988,=>66666??6R94J<6M-290<-63D10JJ66-18STUVWXYZ[\YW] _a_WbZcdedUcWXYUWfg\[bUVXWahWXYUWYfVciUWaWdVWXYUWjfiidV\WkiZjlgUbfdVmWnoppqWrZ[WVUUcWXZWcUjifgUWXYUWfg\[bUVXWaWfmW_sq������������t((!�"#�$%�&"'($�&#��"(#�"�%)�u'"/�,-.�($�/�$!��.01234516754862,-93-:,-.6;,91<92345163,=>666FFF-1839<v��w��x�y(!'z{'$+�|}~�&"%�'$���'+/"�WTUg�WjZbbZVWbdmXflUWdmWeZg\UXXdV\WXZWjgUfXUWfWVU�WZk�UjXWeZgUfjYWXgfVmfjXdZVWdVWXYUWXUmXkUVjYqW�VW�fb�iUW�q��hWXYU�_n_ a_���WXfmlWjgUfXUmWfW� n�]a��nWZk�UjXW�dXYWgfVcZbTfi[UmhWfVcWXgfVmbdXmWdXWdVXZWXYUWcUmd\VWZTUgWmUTUgfiWj�jiUmq������������ �!�+�$�#�"(#�&#��"�%�($�{�($��(}~�&"39<v6A-1-,935,�M98:41361=>66;,91<92345163>6636D61-E:=>6666666666666666666??6N,-93-651-61-E65M�-2366,-P-936:1=6M-A4166663F988,6D6O,9185C:=>66666666??6I14349J4K-679,49MJ-<6666O84<PJ9Q:��-1841A6988,D�L�B63F988,=>66663,91<C43:3=>666666666666666??6�-186436413563L-6��;66-18-1839<v�YfXWfgUWXYUWm�b�XZbmWZeWXYdmWbdmXflU�W�YUWjZcUWfkZTUWjgUfXUmWZVi�WZVUW� n�]a��nhWfVcWmZWUTUg�WXdbUWXYgZ[\YWXYUWiZZ�hW�_n_ a����WjYfV\UmWXYUWZk�UjXWfXWXYUmfbUWXdbUWdXWdmWkUdV\WXgfVmbdXXUcqW�YUVW�Z[Wg[VWXYdmhWXYUW�����p�WmYZ�mWbfV���WTfi[UmhWk[XWfiiWXgfVmbdXXUcW� n�]a��nWZk�UjXmWYfTUWXYUWmfbUWTfi[UWZeW��q�YUWk[\WZjj[gmW�YUVWa n� �aWm�f�VmWZeeWfWXYgUfcWXYfXWXflUmWmUTUgfiWj�jiUmWXZWmUVc ������������ ����������������������������������� �!"�����������#$����������%�����&�'����������&���!���(�����&������)�*(�+�"��,-./012,����3�&�3�������4+��(������#$�����+�"��������+�!�������&���#$����� �������� ��)�5����#"6������!�����44���7����&��!#�8���������7���9�&4!��:);�)5��� ���������#"6��+�"��������������������7�<-./0.=,2>/��"���6������4��������"6�����!��4)?@ABCDEFGHIEJKKLEMDNDO@PKOEQOD@PDREA@NSEKTUDQPRVWXYZ[\]\WV_ [__abc]VZ]deZZfW]XWgVc_]ZVeZZ\h\WVZb]dZi\[c]ZZZZVZjZ]\kbdeZZZZZZZZZZZZZZZZZZllZm\WV\Z_]\Z]\kZ_in\gVZZZZVoWaaZjZpW]a_qbdeZZZZZZZZZllZr]cVcWsct\ZuWcWis\XZZZZpacXhsWvbwx\]ac][ZWaajyzw{ZVoWaadeZZZZVW]XqcVbVdeZZZZZZZZZZZZZZZZllZx\]aZcVZc]V_ZVz\Z|}fZZ\]a\]aVWXYFG~�G�E�OO@SREK�E�@NLCDR���+�"�7���������#��������+�"���������#���#!�����������������(�������&��+��#$����)��"�����&�3������+���(�����!����������(�7�������(�����������#$���)�9�&4!���)�����7��������6�����#"�������������������������+)?@ABCDEFGH�E�R�NME@NE@OO@SEK�E�@NLCDRVWXYZ[\]\WV_bdeZZfW]XWgVc_]ZVW Wv����eZZ�_\WgzZbVW Wv�c�dZZZZi\[c]ZZZZVW Wv�c�ZjZ]\kbdeZZZZZZllZm_]XV�gVZ\WgzZ_in\gVZZZZVW]XqcVbVW Wv�c�deZZZZ\]a\]aVWXY5�������+�,.--.�����&�����(�����!���������#$����)�9��+�"���������������"��������#$���������������+�#�(����"���6�����$"������+�"�7�"!��(��������&�!�����!�)�5����������7�+������!!�]\k������������������+��(�����!��)5������������"�������6������������+��(��#$����������"6��+�"�&�+�"�����������&���������������(����������+��(�����!��������4����������#$����)���"����"!��3��4����&����������&���(�����������!���&�+�����4������������#$�������������&"!��4!������!�����"!��4������������6!���#$���)

Page 75: SystemVerilog for Verification

����������� � �������������������� !"#$%&'()&*(+,&,$&'(-.&(&/$0)&$1&(+&$23./,&,$&-..0&(&'.,4$5&16$'&'$571)7+8&,4.&$67879+(:;&$6&7+&(&8.+.6(,$6&,$&06.<.6=.&,4.&/$+<,6(7+,<>&#$%&/(+&.7,4.6&%<.&,4.&<7'0:.;&2%7:,97+/$0)&(=(7:(2:.&*7,4&?@A&$0.6(,$6&$6&)$%&/(+&*67,.&)$%6&$*+&1$6&'$6.&/$'0:.B&/:(<<.<>C..&C./,7$+&D>E&1$6&'$6.&6.(<$+<&*4)&)$%&<4$%:5&'(-.&(&/$0)&'.,4$5>���������������F������ !�G�!H�!H��?@A����IF!�IJ$0)7+8&(+&$23./,&*7,4&,4.&?@A&$0.6(,$6&7<&.(<)&(+5&6.:7(2:.>&K.'$6)&1$6&,4.&+.*$23./,&7<&(::$/(,.5&(+5&(::&=(67(2:.<&16$'&,4.&.B7<,7+8&$23./,&(6.&/$07.5>&L$*.=.6&(+)?@AMN&1%+/,7$+&,4(,&)$%&'()&4(=.&5.17+.5&7<&+$,&/(::.5>OFP�Q����RS���������F�"�P�Q�� QF""�G�!H�TUVWXYZZ[\]YTZYW _Ta[[b_[cdefgh[Yii]j[W]Wj[iYYckhaUTiWXYZZ\]YTZYW _T[Z]Wj[iZa_T__YX[bUl_T[[Z]W[m[TUVnoa[[[[[[[[pp[q]UYU[r_]Z [bsUW[[iZ[m[TUV[Z]Wa[[[[[[pp[tYuU[Y[Wvw[V_x[TUV[vU]Y ][[UTiy47<&7<&(&<4(::$*&/$0);&<7'7:(6&,$&(&04$,$/$0)&$1&,4.&$6787+(:;&2:7+5:)&,6(+</6727+8&=(:9%.<&16$'&<$%6/.&,$&5.<,7+(,7$+>&z1&,4.&/:(<<&/$+,(7+<&(&4(+5:.&,$&(+$,4.6&/:(<<;&$+:)&,4.4(+5:.{<&=(:%.&7<&/$07.5&2)&,4.&?@A&$0.6(,$6;&+$,&,4.&:$*.6&:.=.:&$+.>&z+&C('0:.&�>|};,4.\]YTZYW _T&/:(<<&/$+,(7+<&(&4(+5:.&,$&,4.&~ Y_Z_WZ&/:(<<;&$6787+(::)<4$*+&7+&C('0:.&�>E}> ������������ ���������������������� !"#���$�����%�$��&&�'!()�*+,-./+012.034155-601*51327.*8--972-:;<=>?-1@@0A-303A-@121:B?8--521273-7*2-3.C*2-D->8--7*2-7@8--E212752735-521258--------FF-G1*@4+-/.7*25-2.-E212752735-.9H+32--IC*327.*-*+,JK8----52125-D-*+,JK8---------FF-L.*520C32-1-*+,[email protected]*2MM8--+*@IC*327.*+*@34155601*51327.*-503A-@5287*72714-9+N7*--503-D-*+,JK8-----------FF-L0+12+-1-601*51327.*-.9H+32--503O52125O521026-D-PQ8-FF-R+5C425-7*-S7NC0+-TUT--@52-D-*+,-5038---------FF-L./V-503-2.-@52-,72W-*+,-./+012.0-------------------------FF-R+5C425-7*-S7NC0+-TUX--@52O52125O521026-D-YX8-FF-LW1*N+5-52125-I.0-@52-Z-503--[@75/41VJ503O52125O521026K8-FF-\YX]A-5++-S7NC0+-TU--+*@_abcdcecfgbhgijkbjlafeambeabnclmeb601*51327.*bihoajebfdpbqipcncambfbrflcfhgabcdeabjidefcdapbihoajebE212752735stbfmbmiudbcdbvcwxlab�y�sz!#{|���}��~���$(&��"��)�"���&�����|��$�� �'!()�()��*+,����|�(�|� adb�ixbxmabeab���bi�alfeilbeibqfkabfbji��tbeab601*51327.*bihoajebcmbji�capthxebdiebeabE212752735bidasb_cmbcmbhajfxmabeab���bi�alfeilbpiambdiebjfggb�ixliudb�����bnxdjecidsb�dmeafptbeabrfgxambinbrflcfhgambfdpbfdpgambflabji�capsb�ibdiuhieb601*51327.*bihoajembfrabeabmfqab��bfmbmiudbcdbvcwxlab�y�sz!#{|���}��~���$(&��"��)�"���&���(�|�$�� �'!()�()��*+,����|�(�|7@D>52125--@52503 521026DPQ7@D>52125--@52503 521026DPQ7@D>52125--@52503 521026DPQ7@D>52125--7@D>52125--@52503 521026DPQ7@D>52125--

Page 76: SystemVerilog for Verification

����������� � ���������������������� !�"#$% ���&�'���(�)*����������+,��-#�#$!#$"!���&�'��+*.���,�.)/�)*0�123425�6)�������147��+*.8��+//�'���6�+��)�����*�6)�������912��+*.8�:;<=>?@ABCDAEFG@HIJAKLMANKLMO@JAKPI@?AHQRSAT<INAIN@A UVAQR@?KIQ?BWXBWYAZ?<I<L=A[Q>?AETLA\<]RO@AQRSA;>LHI<QL_/�����+a��+��),(8��'8+�����+��.����*���'�*�+)*�+*����/���*'������������'8+������6�)�b)*0�+�7cde�/*'�)�*�)���+��:\K]RO@ABWfXA\<]RO@AHOKJJAT<INA"%ghAP>LHI<QL"i�!!j��� !�"#$% kjjl$#jmnopqrj�ss�tj"�"tjs�#�murkjjvvjw%j-#�#$!#$"jx� siUjjyz "#$% j��� !�"#$% j"%gh{|kjjjj"%ghj}j UV{|kjjjjjjjjjjjjjjjjjvvj~% !#�z"#jsU!#$ �#$% jjjj"%gh��ss�j}j�ss�kjjjjjjjjjjjjjvvj�$iij$ js�#�j��izU!jjjj"%gh�"�"jj}j"�"kjjjj"%gh�s�#�j}js�#�kjjjjjjjjjjjjjvvj����hj"%ghjjU syz "#$% U s"i�!!\K]RO@ABWfYA�J<L=AKA"%ghAP>LHI<QL��� !�"#$% j!�"tjs!#k$ $#$�ijlU�$ jj!�"j}j UV{|kjjjjjjjjjjjjjjjjjjjjvvj~�U�#Ujy$�!#j%l�U"#jjs!#j}j!�"�"%gh{|kjjjjjjjjjjjjjjjvvj���Uj�j"%ghj%yj#xUj%l�U"#U sBWXBWfAZ?<I<L=AKA�@@RAQRSA;>LHI<QLA����*�*��)a)+8�'8+������������8.�+86+���'��+��������6*�7cde�/*'�)�*:����'+*,+���)��+�.��(�'�(�����'+88)*0�����7cde�/*'�)�*���/�+88�����'�*�+)*�.���&�'��:�����6*�7cde�/*'�)�*�,+��������+88���������/)�8.����'��+��+*�_�����,+)*�'�*�)���*�:����.�6*�).���/�,+�)*0������6*�7cde�/*'�)�*�)����+�����*��.�������(�)��(���$s}q!#�#!jjs!#!�" !#��#�}��$s}q!#�#!jj$s}q!#�#!jjs!#!�" !#��#�}��$s}q!#�#!jj ������������ ������������������������������ �!"���#�$��%���������������&��"���'����(�������!�%% �%���$ ����(��) �� �%���"��*�+,-./012344156-./0718/,991:;<=1>00.186.?1@AB8<;6BCDEFFGHIEJFECKLMJNGGOLKGPQRSTUGEVVIWGCICWGVEKEPXUNGGYKEKLFKLCFGFKEKFNGGGGGGGGGZZG[EJVD\G]MLJKFGKMGYKEKLFKLCFGMO\CKGGFKEKLCGLJKGCM_JKGGTNGGLJKGLVNGGa_JCKLMJGJ\bcdNGGGGFKEKFGGJ\bcdNGGGGLVGGCM_JKeeNGG\JVa_JCKLMJGGa_JCKLMJGHIEJFECKLMJGCM]fcdNGGGGCM]fGGJ\bcdNGGGGGGGGGGGGGGZZGgMJFKI_CKGV\FKLJEKLMJGMO\CKGGGGCM]fhEVVIGGEVVINGGGGGGGGGGZZGiLDDGLJGVEKEGjED_\FGGGGCM]fhCICGGGCICNGGGGCM]fhVEKEGGVEKENGGGGCM]fhFKEKFGGFKEKFhCM]fcdNGZZGgEDDGYKEKLFKLCFSSCM]fGG\JVa_JCKLMJ\JVCDEFFk(�lmnop�&������&���� ��&�""���!��qrst���������������!u�&��%�������� v���wx*�y����qrstop�)��(���$����(��z{|{w}{wq}�&"���~�������������(���&"���� ���(��( ����&(�*+,-./01234�1YKEKLFKLCF18/,991>08/,�,<;6BCDEFFGYKEKLFKLCFNGGKL�\GFKEIKHWGFKM]HNGGGGGGZZGHIEJFECKLMJGKL�\FGGhhhGGGGGGGGGGGGGGGGGGGGGGZZGY\\GYE�]D\G�h�TGaMIGI\FKGMaGCDEFFGGa_JCKLMJGYKEKLFKLCFGCM]fcdNGGGGCM]fGGJ\bcdNGGGGCM]fhFKEIKHGGFKEIKHGGGGCM]fhFKM]HGGFKM]HNGG\JVa_JCKLMJ\JVCDEFF�����(�������)������&�'���$��(����|l}|q{wrl��!u�&�~� ��� ""�(���� �������z{|{w}{wq}��!u�&������(���� ����)'"���*��*����(�'���(������ ����$������)��� "�%�)��� �&"���������'��!u�&��&�'�*��������~��( ���� ""������u������&�'�~������������&������&�����lmn�$��&� ����������!��&�""��~�����$ �"�����&(�������� ""�����!���'�����*

Page 77: SystemVerilog for Verification

����������� � ��������������������� ���!�����"�!��##�$�%&�'()*+,(-./+-0-.'1.2/3+'*1-24*51/63'3/3.7*8(93'**1-2*:*'();<6***********==*>-(./(*?3-1/*+8@(2/**1-2A1/./1A1/.-/0*:*BC6*==*D(/*1/.-/*/3E(**51/*:*'()*1-26*********==*>+,F*1-2*/+*51/*)3/G*5((,*2+,F**51/A1/./1A1/.-/0*:*HI6*==*>G.'9(1*1/./1*?+-*51/*+'7F**J531,7.F;1-2A1/./1A1/.-/0<6*==*KBCL4*D((*M39N-(*OPQ**('5R� ST���UV�WXY�!%#���Z�&��Z��#��[%�T�Z����!�����\��]��!_�� �WXY�!%#�%����Z�[T���TT��#�a#�� ��%T����� �W��T�%�T#bcdefghcicjcklmflnjofplfqrsmfihptlduifjctihckfptvfvpipfwpknelfctefxyiefpifpfiudez{e|chefycnfletvfcnifpfihptlpjiuctmfycnfteevficfgpj}fic~eioehfioefwphupxkelfutfioecx�ejificfpfxyiefphhpyzf�u}e�ulemfp|iehfhejeuwut~fpflihut~fc|fxyielmfycnfteevficfntgpj}ioedfxpj}futicfpfihptlpjiuctfcx�ejizf�chfxciofc|fioelef|ntjiuctlmfnlefioeflihepdut~cgehpichlmfplfchu~utpkkyfloc�tfutfbejiuctf�z��z�zf�cnfjpt�if�nliflihepdfioefetiuhefcx�ejifplfioulf�cnkvf~pioehfpkkfghcgehiuelmfutjknvut~xciofvpipfptvfpklcfdeip�vpipflnjofplfiudelipdglfptvflek|�joej}ut~fut|chdpiuctfiopiycnfdpyftcif�ptifgpj}evzf�cnfteevficf�huiefycnhfc�tf����f|ntjiuctfiopifctkyfnlelioefghcgehiuelfiopifycnfjocclez35:�1/./1**51/1-2 1/.-/0:HI35:�1/./1** 1/.-/0:BC35:�1/./1**51/1-2 1/.-/0:HI35:�1/./1** 1/.-/0:BC ������������ ���������������������� !�"#$% �"��!!�&$#'���"(�� )�* ��"(�+* "#$% !,-.//012.3/.,456370085409:;<=>0.??2@0,2,@0?.4.9A>70BB0CD.-0?.4.00/4.45,05340,6E340F0=70000000000BB0GD4.H?.4.0?6D/03640053405?7000000000000000000000000BB00000ID40J.,KD?00LE3,456303DMNO700005?0F0,6E34PP700D3?LE3,456300LE3,45630Q65?0?5/J-.RNO70000SM254DNT12<05?FU=?@0.??2FUV@0,2,FUVT@05?@0.??2@0,2,O70000L62D.,WN?.4.95>O0SM254DNT0UVT@0?.4.95>O70000S?5/J-.R700D3?LE3,456300LE3,45630Q65?0J.,KN2DL08R4D08R4D/9X=>O700008R4D/0F0Y0ZZ0Y.??2@0,2,@0?.4.[[700D3?LE3,456300LE3,4563012.3/.,45630E3J.,KN2DL08R4D08R4D/9X=>O70000Y0ZZ0Y.??2@0,2,@0?.4.[[0F08R4D/700D3?LE3,4563D3?,-.//0<012.3/.,4563����������\�]!$ �#'����"(�� )�* ��"(�+* "#$% !12.3/.,4563042@042_78R4D089X=>700000000000000000BB0.??20P0,2,0P0?.4.0F0X=08R4D/53545.-08DI5300420F03DMNO70042.??20F0:_aW.=.=.=.=7000BB0b5--068cD,40M54W0Q.-ED/0042,2,0F00a;700L62D.,W0N42?.4.95>O0000042?.4.95>0F0570042J.,KN8O7000000000000000BB0d.,K068cD,40534608R4D0.22.R00SM254DNTd.,K02D/E-4/<0TO700L62D.,W0N895>O0000SM254DNTUWT@0895>O7000S?5/J-.R70042_0F03DMNO70042_E3J.,KN8O70042_?5/J-.RNO7000D3?

Page 78: SystemVerilog for Verification

�������������� ����������������������� !"#$%&"#$%'$"()#%*#++,#-.#"'$/(.01/)-'2#3/)/#/'3#&"1/)"3#4")!%3.#-')%#/#$1/..5#6/&-7/81".#/&"#9"()#1%$/1#)%#)!"#$1/..#8:#3"*/01)#)%#9""(#%'"#$1/..#*&%4#(%9-'2#/&%0'3#-'.-3"/'%)!"&5#;#$1/..#(&%<-3".#/#.")#%*#/$$"..%&#4")!%3.#)%#/$$"..#/'3#4%3-*:#)!"#3/)/5 !-.#=%013#/1.%#/11%=#:%0#)%#$!/'2"#)!"#-4(1"4"')/)-%'#=-)!%0)#'""3-'2#)%#1")#)!"0."&.#%*#)!"#$1/..#9'%=5#>%&#-'.)/'$"?#/#2&/(!-$.#(/$9/2"#$%013#$!/'2"#-).#-')"&'/1&"(&"."')/)-%'#*&%4#@/&)".-/'#$%%&3-'/)".#)%#(%1/&#/.#1%'2#/.#)!"#0."&#-')"&*/$"#A/$$".7.%&#4")!%3.B#!/<"#)!"#./4"#*0'$)-%'/1-):5@%'.-3"&#)!"#CDEFGEHIJKF#$1/..#)!/)#!/.#/#(/:1%/3#/'3#/#@L@#.%#)!/)#)!"#!/&3=/&"$/'#3")"$)#"&&%&.5#M'#$%'<"')-%'/1#++,?#:%0#=%013#4/9"#/#4")!%3#)%#.")#)!"#(/:1%/3/'3#/1.%#.")#)!"#@L@#.%#)!/)#)!":#=%013#.)/:#.:'$!&%'-N"35# !0.#:%0&#%8O"$).#=%013/1=/:.#8"#*-11"3#=-)!#$%&&"$)#</10".5P%="<"&?#)".)8"'$!".#/&"#'%)#1-9"#%)!"&#(&%2&/4.?#.0$!#/.#/#="8#8&%=."&#%&#=%&3(&%$"..%&5#;#)".)8"'$!#'""3.#)%#$&"/)"#"&&%&.5#Q%0#=/')#)%#!/<"#/#8/3#@L@#.%#)!/):%0#$/'#)".)#!%=#)!"#!/&3=/&"#&"/$).#)%#"&&%&.5++,#1/'20/2".#.0$!#/.#@RR#/'3#S/</#/11%=#:%0#)%#.("$-*:#)!"#<-.-8-1-):#%*#</&-/81"./'3#4")!%3.5#T:#3"*/01)?#"<"&:)!-'2#-'#/#$1/..#-.#1%$/1#0'1"..#1/8"1"3#%)!"&=-."5M'#U:.)"46"&-1%2?#"<"&:)!-'2#-.#(081-$#0'1"..#1/8"1"3#VKHEV#%&#WDKIXHIXY5#Q%0#.!%013#.)-$9#=-)!#)!-.#3"*/01)#.%#)!/)#:%0#!/<"#)!"2&"/)".)#$%')&%1#%<"&#)!"#%("&/)-%'#%*#)!"#Z[ ?#=!-$!#-.#4%&"#-4(%&7)/')#)!/'#1%'27)"&4#.%*)=/&"#.)/8-1-):5#>%&#"\/4(1"?#4/9-'2#)!"#@L@<-.-81"#/11%=.#:%0#)%#"/.-1:#-'O"$)#"&&%&.#-')%#)!"#Z[ 5#M*#)!"#@L@=/.#1%$/1?#:%0#=%013#!/<"#)%#=&-)"#"\)&/#$%3"#)%#8:(/..#)!"#3/)/7!-3-'2#4"$!/'-.4.?#&".01)-'2#-'#/#1/&2"&#/'3#4%&"#$%4(1"\#)".)8"'$!5���]�_�a�bc�dee�f���g;.#/#'"=#++,#.)03"')?#:%0#4/:#8"#)"4()"3#)%#.9-(#)!"#"\)&/#)!%02!)#'""3"3#)%#2&%0(-)"4.#-')%#/#$1/..?#/'3#O0.)#.)%&"#3/)/#-'#/#*"=#</&-/81".5#;<%-3#)!"#)"4()/)-%'h#;#8/.-$Z[ #4%'-)%&#./4(1".#."<"&/1#</10".#*&%4#/'#-')"&*/$"5#Z%'i)#O0.)#.)%&"#)!"4#-'#.%4"-')"2"&.#/'3#(/..#)!"4#)%#)!"#'"\)#.)/2"5# !-.#./<".#:%0#/#*"=#4-'0)".#/)#*-&.)?#80)"<"')0/11:#:%0#'""3#)%#2&%0(#)!"."#</10".#)%2")!"&#)%#*%&4#/#$%4(1")"#)&/'./$)-%'5U"<"&/1#%*#)!"."#)&/'./$)-%'.#4/:#'""3#)%#8"#2&%0("3#)%#$&"/)"#/#!-2!"&71"<"1#)&/'./$7)-%'#.0$!#/.#/#Zj;#)&/'.*"&5#M'.)"/3?#-44"3-/)"1:#(0)#)!%."#-')"&*/$"#</10".#-')%#/)&/'./$)-%'#$1/..5#k%=#:%0#$/'#.)%&"#&"1/)"3#-'*%&4/)-%'#A(%&)#'048"&?#&"$"-<"#)-4"B/1%'2#=-)!#)!"#3/)/?#/'3#"/.-1:#(/..#)!-.#%8O"$)#)%#)!"#&".)#%*#:%0&#)".)8"'$!5 ������������ ����������������������� !"#$!�%&'()*+,-*./(0-,*1(*.,-+1234*+*0256/-*1-017-3.8*9,(5*./+00-0:*;-,-*20*18-*<2+4,+5*9,(5=8+6:*�:*>7?2()0/@A*18-*1,+30+.12(30*23*B24),-*�CD*+,-*(7E-.10A*7)1*-+.8*7/(.F*20*,-6,-C0-31-<*+0*+*./+00*+/0(:G���H!��IJ�K�L!H!��#!"#$!�%&M8-NOPOQRSTQAUVOPSAWQXYOQAZTPXSTQA[\O]OQA*+3<*_]TQOTRQa*+,-*+//./+00-0A*5(<-/-<*+0*1,+30+.1(,0*b<-0.,27-<*7-/(cd:*M8-@*+,-*2301+312+1-<*2302<-*18-e3?2,(35-31*./+00:*B(,*0256/2.21@A*18-*1-01*20*+1*18-*1(6*(9*18-*82-,+,.8@A*+0*20*18-*6,(C4,+5*18+1*2301+312+1-0*18-*e3?2,(35-31*./+00:*M8-*B)3.12(3+/*.(?-,+4-*<-923212(30*.+37-*6)1*2302<-*(,*()102<-*18-*e3?2,(35-31*./+00:f*1,+30+.1(,*20*5+<-*(9*+*0256/-*/((6*18+1*,-.-2?-0*+*1,+30+.12(3*(7E-.1*9,(5*+*6,-?2C()0*7/(.FA*5+F-0*0(5-*1,+309(,5+12(30A*+3<*0-3<0*21*1(*18-*9(//(c234*(3-:*g(5-A*0).8+0*18-*NOPOQRSTQA*8+?-*3(*)601,-+5*7/(.FA*+3<*0(*1820*1,+30+.1(,*.(301,).10*+3<*,+3C<(52h-0*-?-,@*1,+30+.12(3A*c82/-*(18-,0A*0).8*+0*18-*WQXYOQA*,-.-2?-*+*1,+30+.12(3+3<*0-3<*21*231(*18-*ijM*+0*0243+/*1,+30212(30:klmnoopqrstuokqsvpq wtusrtqmpor xytqpzt{q| }~py�pq�pupq{rtq ��uyrstu{��}tvpq{�p�����������n�pur klmnoopqrstuokqsvpq wtusrtqmpor xytqpzt{q| }~py�pq�pupq{rtq ��uyrstu{��}tvpq{�p�����������n�pur

Page 79: SystemVerilog for Verification

���������� ��� �������������������������� !""#$%!&"!�'(%)##**#+,&,%-�#� !""##$%!&"!�'-(&#'%)##'!".#%/&01)####2(%,3,%#4,5-&######**#+,'#'%!&"!�'-(&#2%(6#/7"'%,!6#4 (�.######888######**#9(#"(6,#7%(�,""-&5######888######**#:,&;#-'#'(#;(<&"'%,!6#4 (�.######888######,&;##,&;'!".,&;� !""=>?@A>@B>C@DEFGHIJD@KLHIMHFKN>IM@ODK?DDI@OP>FQMR@SNKG@TL>FDACLHP@F>AD@B>C@F>CPAGHUD@>ID@>OVDFK@FHPP@KGD@IDEKW@>L@B>C@F>CPA@CMD@H@AHKH@MKLCFKCLD@MCFG@HM@H@XYXZ@K>@G>PAKLHIMHFKN>IM@NI@[PNJGK@ODK?DDI@OP>FQM\@YI@]GHT\@W@B>C@?NPP@PDHLI@G>?@K>@CMD@_HNPO>EDMW@?GNFG@HLD@XYXZM@?NKG@KGD@HONPNKB@K>@MKHPP@H@KGLDHA@CIKNP@H@ID?@UHPCD@NM@HAADA\��ab�c����d����eMNIJ@ZOVDFKZLNDIKDA@fL>JLH__NIJ@NM@H@ONJ@MKDTW@DMTDFNHPPB@N[@B>CL@[NLMK@F>_TCKDLPHIJCHJD@?HM@gDLNP>J\@hGD@THB>[[@NM@KGHK@B>CL@KDMKODIFGDM@HLD@_>LD@_>ACPHL@HIA@KGCMDHMNDL@K>@ADUDP>TW@ADOCJW@HIA@LDCMD\=HUD@THKNDIFD@i@B>CL@[NLMK@ZZf@KDMKODIFG@_HB@P>>Q@_>LD@PNQD@gDLNP>J@?NKG@H@[D?FPHMMDM@HAADA\@jM@B>C@JDK@KGD@GHIJ@>[@KGNM@ID?@?HB@>[@KGNIQNIJW@B>C@ODJNI@K>@FLDHKDHIA@_HINTCPHKD@FPHMMDM@[>L@O>KG@KLHIMHFKN>IM@HIA@KGD@KLHIMHFK>LM@NI@KGD@KDMKODIFG@KGHK_HINTCPHKD@KGD_\YI@]GHT\@k@B>C@?NPP@PDHLI@_>LD@ZZf@KDFGINlCDM@HIA@M>@B>CL@KDMK@FHI@FGHIJD@KGDODGHUN>L@>[@KGD@CIADLPBNIJ@KDMKODIFG@?NKG>CK@GHUNIJ@K>@FGHIJD@HIB@>[@KGD@DENMKNIJF>AD\ ����������� ����� ��������� ����� �������������� !�"�����#����$�% &���& �����''�%("��� �%��������% &�"�������� '����&("��������� �%��%)�������'(�%�� ��"��*+�, (�%���!�����������%���������%����� �%��%)���%��-��������� '�'���(���#�$(��* (�%��� ��!������� (�������%���������%�����!���������(&$�� '�'���(����)������ ($"���� ����%���� .�%�+�/ ����*��#�����������%�� ���$��!�����""������'���(������������� (�%��' ������& �����0� (��$(���������������"�����"�)�"*�� �$�%�(����$*�� ������� (�����"�(���*�"���� '�'���(���+1���� "(�� ������ �%�����������%������(� &���%�""*�(�����% ���������-���� &������2�314+�������%���������'���������$(���* (�����)����������#�$(�����31�'�����$(���* (��0����� (�����$ (�#�$*�(��������� &����&("(�+�, (�������%������������%����� ��� �� ������������$ ���0�"������� '����������$*�(�����% ���������+������������31���0�� �&������)���& ���! �)������%�������� ���' ������%���������+����&�"������%���������.(������"�������&("(�#����������* (�&��(�""*�%��%)��������("�+1��������("�������%���(���������� "����" ��'�"������% &������!����'(�(�����&("��� ��� �����!����������������������� ��'��"�+����31���0�� �&����������� �� �"*�� �%������������&("(��$(���"� �� ������%���������("�#�(���������'����%��& ��"#������'���'(�%�� �# �� �������%���5(��+�6 !�0��#� �%���������0�� �&�����������"�%�#�* (�%����(���(�-������ '�������!��� (����0����� �����-%��%)��������("��#������$*��&�� 0����* (��� �(%��0��*+�1���������- ''� '�����-�(�� �������&��2* (��! �)4�' ���78���&��2&�%����! �)4����!����&�)����31�� �0�"(�$"�+

Page 80: SystemVerilog for Verification

������������ ������ ������������������� �!"��#�$!�%�!&��!��!�'����!&�!�(�������!$����� �$�)����*�+(���!��'$�,�!���)#(!�!��!&��-.�/��)���������!��!&��#��(��,$�)����)(�0�$�1�)�$�!�$�23�456/�&�")��)�7�'!��)��8��8�8�9�(�'�)���:��������0�&�*���� �$�)!+;�<(�!�0;�(��)1���)�"����8��&��� ��!($���++�"��;�(�!��+�*�$�1����'&�!��!����!&�!���'&����!&�� ()'!��)�+��=(�*,�+�)!�� ���);���$�'!���!��!�/�<(�!�0;�'&�)1�)1������8�9�(��$���0+��!��'$��!����$��=(�*�+�)!�!��!��(��)1�!&����!�'&)�=(���!&�)�"�!&���$�'!���!��!�)189�(���;� ��+�!&�!�!&����$�)����!��!���$��+�:��!&$�"�)1���$!�8�>�"����;�(�:)�"�"&�);�(�&�*��'�*�$����++���#�'!��� �!&������1)?��&���!��(+(���#�'�����!���+�$1��!��1�)�$�!��*�$;�#����0+���)#(!�0;�(��)1�@AB,+��#�/��)�����;�(�)����!��1�)�$�!����(�� (+��(0��!8C)��&�#8�D�;�(�"�++�+��$)�&�"�!������($��*�$� �'�!��)�#$�1$����0;�(��)1� ()'!��)�+'�*�$�1�8�&�$���$����);�"�;��!��(���$�)����E�!��)/��)��!&���'&�#!�$�1�*�����"����$�)1��� �F��#+��8�C!�&�1&+�1&!��!&�����!�(�� (+�!�'&)�=(��/�0(!�;�(��&�(+��'&�����"&�!�"�$:�0��!� �$�;�(8GHIJKLMNJNOJPMQROSTUVW&�)�;�(�!&�):�� �$�)����E�)1�!&���!��(+(��!��������1)/�!&�� �$�!�!&�)1�;�(���;�!&�):� ��$��!&����!�� ��+��8��&�����$��!&��������!�!��'$��!��X�<(�!�'�++�YBZ[\A]8��&��#$�0+�����!&�!�!&����##$��'&�&�����*�$;�+�"�#�;0�':��)�!�$���� �0(1�� �()�%�;�(��)+;� �)���!�,#�!&�0(1�/�#�$&�#��"�!&�0�!,+�*�+����!�:��8��&��!��!�����!�++��)&�$�)!+;���$�'!��8�&��'&�++�)1�)1�0(1���$���)�!&��'�)!$�+�+�1�'8������$��(+!/�;�(�)����!��$�)����E���++��'����)�#��)!���)�;�($�-.�8�W&�$�*�$�'�)!$�+�#�!&����*�$1�/�$�)����E�!��)��)'$�����!&��#$�0�0�+�!;�!&�!�;�(++�!�:������ �$�)!�#�!&��)���'&�!��!�'���8�9�(�)����!��!&�):�0$���+;��0�(!��++�����1)��)#(!��('&����!&�� �++�"�)1%_ -�*�'��'�) �1($�!��)_ )*�$�)��)!�'�) �1($�!��)_ 3$���$;��)#(!���!�_ )'�#�(+�!����)#(!���!�_ 3$�!�'�+��F'�#!��)�_ -�+�;�_ �$�)��'!��)��!�!(�_ $$�$���)��*��+�!��)�GHIHaJbVcTdVJeOQfTghiMNTOQW&�!����!&�����!�'����)�$����)�"&;�0(1���$����������($�)1�!��!�)1�� �!&����j����1)?�4�!��)�(1&��� �$�)!�'�) �1($�!��)��&�*��0��)�!$���k�l��!�!��!��<(�!�(���!&�����1)�����!�'������(!�� �$���!/��$��##+;��� �F�����!�� ��)�!��+�E�!��)�*�'!�$��!��#(!��! ��������������� ���������������������������������������������� !���"�#�������$���%�#������&��#��������'�����������()���(������*����$��""��+������,��&�+�*#�������"�#&�#%��+�����&���)���(����#��#�����+#������-.�#���%�)������#������#�(���.�#��%���)�����/0�!��+��&��*#������'�+�%���%�#����(%�#��#��(�%��1�#��2�%"��)���.�#�&�+�������������#���(����.�#�&$�����%�3(�.������%*�3��"��2�#�����+���������(��44���"*��+����������(� 5��*�"*��+���������6��������(�.�+�������������(����������(3+*���%�#!���$���%)�+����������*�(�'������+���(���(�(�����3+���(��.�#���(��.�#��7����$�"����������%�)����#����*�(�'���������+�##��������'�������(8�+����+���������9������#���#(�)�����+��&��*#��������*�(����%�#��(�%��������������(�.�+�)�����.�#�&�+�������������#���(�����#������.�#���(�:����������&��+�+�(�����+��&��*#����+��+��������7����#��*��)�����������.�#��'�������#$�+��&��*#�����������%�#������������(&*���&�+�����������'��(��0������� ;��%����(����$)������#���������'��+�������#��(�%�:�(�����"�#�%���#��&�#����������+������)���(������"*��������������"����+��&��*#������������(�.�+���<���������(�+��&�(��+���������#���������*�(*�+�.�#�'*��������"#�.��*��$���*�(���.��'����%����(�=>?>?@ABCDEFBGHBI@JFBKDLMENIDFB����(�.�+�������$�*��#��(����������"�#�������������.�#��%����+��������������#(�.�+����6����$�*��#��.�#�&$��������/0�)�������+����+��(����������'��+�������%�%�+��������.�#��%�����O�*����*�(�#��(�%�:����������#����.�#��%���)���+�*(���������*%3'�#��&��'8�+�����(��������$��#��+��&��*#�(�7�����#�+�%"��$�����+#����������9P-�����+��+��"������+����+��(�%*���"���� 9�'*�������������#����%�%�#$�'*���7���������#���&���%*�����������+*���%�#�*��(�#��(�%�:��������+�����������*%'�#��&�� 9�'*����Q RST)������*%'�#��&�(�.�+��������+��'*��Q RUT)��(�����"�#�%���#��&�#���+��(�.�+��Q%����#��#����.�)� V;��((#�����)���+�T��W.�����*������#����#��%��$�"����'���+�%'��������)������+�%"��$������������(�'���+�.�#�(�=>?>X@YEDGNEZ@[B\MI@]NIN�������������$�*�"#�'�'�$����*�����&�&�#��������$�*�#��(��'�*��#��(�%����%*�*���������#����+������*+�������'*���#�����#�7�_�+������(�&��������������%��#��(�%�.��*��������#(�+��������'�a�7+�*���$�������&��#�$���#�����&�#��#(������������$�*�+�#�&*��$"#�"�#��$�*#��#����+�����+��������O�*����*�(�����+�"������$���$�#�(�"#���+������(�##�#���8�+������=>?>b@ABcN\dMeNIHf@[B\MI@]NIN_��$�(�.�+���"#�+����%*���"�����$�#���&����%*�*���1�#��2�%"��)���(�.�+��%�$�+#�3����� ���#�&&�+����������������+�(�(��������9��"#���+��)���(�&�����$�������*������(�W���#����"�+������W�+����.���������������+���#���&���(�������+���'��#��(�%�:�(�����#$����+�%'����������V��$�*��#��#��(�%�:��������(������(�������$�#��������*##�*�(����

Page 81: SystemVerilog for Verification

������������ ������ ������������������������� ��!��� ��"!�����!���#!$���������$�%��$� �&����"!��!$ ��!$$����'�����(������ )*+,+-./0121314.56378291:;<.50010;<.=:>.?914=291:;@�A�"��(��"!���!��(������(B���$$B��#����!$$A)�C"��D� ���"!$$��(��(�E!����%��� �(�!���#���%��!������ �"������"!��$������� �����"�� A ��D)�������������!�����E!���!$$��"��! � ��"�����"��( ��!��(������(B���'�����"�D�������"�� A ��DB�!���D!F�� �����"��� �(��"!��$� ��"�D�(�!��%�$$AB����"����$��F��(��E����(���(������!���$$�(!$� �!��)�@(����#���%��!�������(�������� � ��"��&�"!#�����%��"���� �(������"����(���%��"��%���G����!$� E���%��!�����!��� �D���D� ��#���&�A���)H"���������#��� ���DD����!��B��"!��"!EE�� ��%��"����!� %��� ��E �E!���!A��"���("IJ!��A������ �&���"� �D�$!����"� ��&��!F I�K%��"����!�������������������!�������������%��$� B�A���D� ��D!F�� ����!$$���D&��!���� �!��������)C"���!���D���DE�������%��"� ������� �� ��"!��A������ �&���"� "��$��&��!&$����� ���%�������!$$A��������� ��D�$��!����"��B����"��"��%$�E��%�!����%�(��!�����&��B� �!�����'���G��(��!���D��AE� ��%������ �!���!���D������#!$ )*+,+*.L74=M;N!�A���DD����!�����E������$ � E���%A��!�(� ��%���$!A )�C"��&� �(�!�����D� ��������"�����A�$� �!%������O�� �)�P!�!�%��D��"��D�D��A�� �#!$�������"��%����"��������"�&� �A�$�)�Q���#��B�D!�A������������ � B��E��D�R���%����"��%! �� �� �D�$!����B�� ���"� "���� ��$!����AB��S��E��%����"!�������� ���"!����$A����� �#!���� ���$!A )�������� �&���" "��$��!$�!A �� ���!���DB�$�(!$���$!A ������(��#��A��� �������A����%�����"!��T"�E�G%�$$AU�������D&��!������"!���SE� � �!��� �(��&�()V�$����"���A�$��$�#�$B� �D���� �(� �!��� �� ���#������$��F�'�����)�VA� $����(��"���$��F��(� �&!�F�!���%���"�&A� D!$$�!D���� B�A����!��D!F�� ����A������ �(��� ������#��$A �� ���#����� D!$$��"!�(� �����"���$��F��A�$�)C"���$��F�(����!���� "��$��&�����!�D���$����� �����"���� �&���"� ���"!��������!�� �#��� �����"��@���#����(����!$��(����"���"����� �(���#��� )�Q���#��B��"��(����!��� "��$��"!#��E!�!D���� � ��"�! �%��O����A�!����%% ����"!���!��&�� ���&A��"���� �&���"�����(��"�����%�(��!�����E"! �)TW�����"!��A���!���$��F��(�%���%�������!$������ B�������D��(������ )�������� �&���" "��$��������A����#��$!��� ���E�!���"�$����O����D��� )�C"� ��!���&������#!$��!����� ��(��D��(�!�!$A � ����$ )U ������������������ �� ����� �������������� �!�������"#$!%�&%'�(�)*+,-./0123-45637874-9,0,./5620-60-:;45,3<,.6829-64-3245-74,=78->+,0-74,1->65+??@A-B27-=6.45-C.,/5,-/-C8/44-52-+281-/-9.27D-2=-.,8/5,1-./0123-E/.6/F8,4G-/01-5+,0+/E,-5+,-./0123H428E,.-=688-5+,3->65+-./0123-E/87,4A-B27-C/0-C.,/5,-C2045./6054-5286365-5+,-./0123-E/87,4-52-8,9/8-E/87,4G-2.-52-5,45H4D,C6=6C-=,/57.,4AI25,-5+/5-;27-C/0-./01236J,-6016E617/8-E/.6/F8,4G-F75-5+64-C/4,-64-5+,-8,/45-605,.,45609A*.7,-C2045./60,1H./0123-4563786-64-C.,/5,1-/5-5+,-5./04/C5620-8,E,8G-025-20,-E/87,-/5-/-563,A����K�"��L(%�M(�$$�N�!O��������&�'��P(%$:/3D8,-�A�-4+2>4-/-D/CQ,5-C8/44->65+-./0123-E/.6/F8,4-/01-C2045./6054G-D874-5,45HF,0C+-C21,-5+/5-C2045.7C54-/01-./01236J,4-/-D/CQ,5A"��L(%���K�"��L(%�'������R(�$$STUVVWXUSYZ[\WW]]W_ZWUabcdWeUfUgTZVWWUabWgf[WhijklmWVSnWbV[nWbU[Uhom\WWUabSWgf[WhpklmWYfab\WW]]Wqfdf[W[_ZWeUTrZVWscWVSWWScaV[Ufa[WSWtVSWuWjl\WWWWWWWWWWWWWWWWVSWvWjw\xZabSTUVVXUSYZ[Wy\faf[fUTWgZzfaWWyW{WaZ|}~\]]W�ZU[ZWUWyUSYZ[WWUVVZ[W}y�Uabcdf�Z}~~WWZTVZW�sU[UT}lnW�XUSYZ[kkUabcdf�ZWsUfTZb�~\WW[UaVdf[}y~\Zab*+64-C8/44-+/4-=27.-./0123-E/.6/F8,4A-*+,-=6.45-5+.,,-74,-5+,-����-3216=6,.G-42-5+/5,E,.;-563,-;27-./01236J,-5+,-C8/44G-5+,-E/.6/F8,4-/.,-/44690,1-/-E/87,A-*+60Q-2=-.288H609-16C,�-,/C+-.288-C2781-F,-/-0,>-E/87,-2.-.,D,/5-5+,-C7..,05-20,A-*+,-����-E/.6/F8,64�����G->+6C+-3,/04-./0123-C;C86CG-42-5+/5-5+,-./0123-428E,.-12,4-025-.,D,/5-/./0123-E/87,-70568-,E,.;-D2446F8,-E/87,-+/4-F,,0-/44690,1A-*+60Q-2=-1,/8609-C/.14=.23-/-1,CQ�-;27-1,/8-275-,E,.;-C/.1-60-5+,-1,CQ-60-./0123-2.1,.G-5+,0-4+7==8,-5+,1,CQG-/01-1,/8-275-5+,-C/.14-60-/-16==,.,05-2.1,.A-I25,-5+/5-5+,-C;C86C-D/55,.0-64-=2.-/46098,-E/.6/F8,A-�-�����-/../;->65+-,69+5-,8,3,054-+/4-,69+5-16==,.,05-D/55,.04A�-C2045./605-64-�745-/-4,5-2=-.,8/5620/8-,�D.,446204-5+/5-3745-F,-5.7,-=2.-5+,-C+24,0E/87,-2=-5+,-E/.6/F8,4A-�0-5+64-,�/3D8,G-5+,-���-E/.6/F8,-3745-F,-9.,/5,.-5+/0-��-/018,44-5+/0-��A-I25,-5+/5-5+,-C2045./605-,�D.,44620-64-9.27D,1-74609-C7.8;-F./C,4�-��A*+64-64-F,C/74,-5+64-C21,-64-1,C8/./56E,G-025-D.2C,17./8G->+6C+-74,4-�����AAA���A

Page 82: SystemVerilog for Verification

������������ ������ ����������������� !"#$%&'($!)�&#)$*!+!'"!,!-)(./�0!'*!"(#$1!2'&�!&��!%($*&),'$&*3!���-)(%�1#),/!,**�)&'($!'*!#*�1!&(!%��%4!&��!)�*#/&5!,*!*�(2$!'$!6�%&'($!7383!��'*!�9,0-/�#*�*!,!:;�<�=!&(!*&(-!*'0#/,&'($5!.#&!&��!)�*&!("!&��!.((4!/�,>�*!(#&!&�'*!�9&),!%(1�3?(#!$��1!&(!"'$1!&��!&((/@*-�%'"'%!*2'&%��*!&(!"()%�!&��!,**�)&'($!&(!&�)0'$,&�!*'0#/,@&'($3!��'*!.((4!#*�*!�AA��<!&(!&�*&!&��!)�*#/&!")(0!���������� 5!.#&!B(#!0,B!2,$&&(!&�*&!&��!)�*#/&5!%,//!B(#)!*-�%',/!)(#&'$�!&�,&!-)'$&*!,$B!#*�"#/!'$"()0,&'($!,$1!&��$C),%�"#//B!*�#&!1(2$!&��!*'0#/,&'($3?(#!*�(#/1!$(&!),$1(0'D�!,$!(.E�%&!'$!&��!%/,**!%($*&)#%&()3!?(#)!&�*&0,B!$��1!&(!&#)$!%($*&),'$&*!($!()!(""5!%�,$C�!2�'C�&*5!()!�>�$!,11$�2!%($*&),'$&*!.�"()�!),$1(0'D,&'($3!���!%($*&)#%&()!'*!"()'$'&',/'D'$C!&��!(.E�%&F*!>,)',./�*5!,$1!'"!B(#!%,//�1!),$1(0'D�GH!,&!&�'*�,)/B!*&,C�5!B(#!0'C�&!�$1!#-!&�)(2'$C!,2,B!&��!)�*#/&*3!I//!>,)',./�*!'$!B(#)!%/,**�*!*�(#/1!.�!),$1(0!,$1!-#./'%3!��'*!C'>�*B(#)!&�*&!&��!0,9'0#0!%($&)(/!(>�)!&��!JK�F*!*&'0#/#*!,$1!%($&)(/3?(#!%,$!,/2,B*!&#)$!(""!,!),$1(0!>,)',./�5!,*!*�(2!'$!6�%&'($!�3��3L3M"!B(#!"()C�&!&(!0,4�!,!>,)',./�!),$1(05!B(#!0#*&!�1'&!&��!�$>')($@0�$&5!2�'%�!B(#!2,$&!&(!,>('13NOPOQRSTUVWXYZR[TUR\U]_[RabcR\dYebcXfd[XbY������������� !"#$%&'($!,**'C$*!),$1(0!>,/#�*!&(!,$B!>,)',./�!'$&��!%/,**!&�,&!�,*!.��$!/,.�/�1!,*!����!()!����g5!,$1!,/*(!0,4�*!*#)�&�,&!,//!,%&'>�!%($*&),'$&*!,)�!(.�B�13!h,$1(0'D,&'($!%,$!",'/!'"!B(#)%(1�!�,*!%($"/'%&'$C!%($*&),'$&*!G*��!$�9&!*�%&'($H5!,$1!*(!B(#!*�(#/1,/2,B*!%��%4!&��!*&,&#*3!M"!B(#!1($F&!%��%45!&��!>,)',./�*!0,B!C�&#$�9-�%&�1!>,/#�*5!%,#*'$C!B(#)!*'0#/,&'($!&(!",'/36,0-/�!�3�!%��%4*!&��!*&,&#*!")(0!���������� !.B!#*'$C!,!-)(%�1#),/!,**�)&'($3!M"),$1(0'D,&'($!*#%%��1*5!&��!"#$%&'($!)�&#)$*!�3!M"!'&!",'/*5!���������� !)�&#)$*!+3���!,**�)&'($!%��%4*!&��!)�*#/&!,$1!-)'$&*!,$!�))()!'"!&��)�!2,*!,!",'/#)�3!?(#!*�(#/1*�&!B(#)!*'0#/,&()F*!*2'&%��*!&(!&�)0'$,&�!2��$!,$!�))()!'*!"(#$13!I/&�)$,&'>�/B5!B(#0'C�&!2,$&!&(!%,//!,!*-�%',/!)(#&'$�!&(!�$1!*'0#/,&'($5!,"&�)!1('$C!*(0�!�(#*�4��-'$C%�()�*!/'4�!-)'$&'$C!,!*#00,)B!)�-()&3NOPOPRiTURSbY][adXY[Rjb_kUa���!-)(%�**!("!*(/>'$C!%($*&),'$&!�9-)�**'($*!'*!�,$1/�1!.B!&��!6B*&�0l�)'/(C!%($*&),'$&*(/>�)3!���!*(/>�)!%�((*�*!>,/#�*!&�,&!*,&'*"B!&��!%($*&),'$&*3!���!>,/#�*!%(0�!")(0!6B*@&�0l�)'/(CF*!mhno5!2�'%�!'*!*&,)&�1!2'&�!,$!'$'&',/!*��13!M"!B(#!C'>�!,!6B*&�0l�)'/(C*'0#/,&()!&��!*,0�!*��1!,$1!&��!*,0�!&�*&.�$%�5!'&!,/2,B*!-)(1#%�*!&��!*,0�!)�*#/&*3���!*(/>�)!'*!*-�%'"'%!&(!&��!*'0#/,&'($!>�$1()5!,$1!,!%($*&),'$�1@),$1(0!&�*&!0,B$(&!C'>�!&��!*,0�!)�*#/&*!2��$!)#$!($!1'""�)�$&!*'0#/,&()*5!()!�>�$!($!1'""�)�$&!>�)@*'($*!("!&��!*,0�!&((/3!���!6B*&�0l�)'/(C!*&,$1,)1!*-�%'"'�*!&��!0�,$'$C!("!&���9-)�**'($*5!,$1!&��!/�C,/!>,/#�*!&�,&!,)�!%)�,&�15!.#&!1(�*!$(&!1�&,'/!&��!-)�%'*�!()1�) ���������������� � ����������������������������������� �!���!������� � �"���#��������������������#���#$%���&��������� '()(*+,-./+0.1+23+4.15678935:!;���#<�����&��������;�����������#�=������&���������%���>��������>������%������������$���������#���������"�%��� �?�������������@$����������A$�������;���>�����&�������#�=��������;����B�������@$������������ �C����������������&���>�%����������>���� �C���������������������#������&>������"������������������������������ �'(*+D61E/F.81/+G3/.8HEI��"������#��������#���������J���������#��������K�������������������������%���������������%��� �L��������>����#�;���B���������&����&������������������&����#�����������>����������#�����#�&���������������&��������� �C�����"��������������������������!;���#<��$���&�����&������������%���B����������������������#����������������M��������� !;���#<�����&��������������#���������������������M������������������ N�����������������%������������M����������������%�������#>�������OPQR����OPQRS �?���"�������&�������"���������������#�=��>�������PTU������������%�����������&������&� �?��������������������������#��$�"���OPQR����OPQRS�%�"����PTU V.7WH3+'(X+D61E/F.81/+Y8/-6Z/+F.1567+[.F8.2H3E\]__abc]de`fcghijklm noe ppqrrsr t_bsu]dfo rvdsr rvd\`\sv_grcvg\wgoovnor xno yjze` ` ` ` ` ` ` ` ` ` ` ` `no {zle|ovd\]__?��OPQR}~��U���"���������������������&���������������������#������%����������#�B��������������������������������"��� ����!�#���� @>�������������������������#�����$�%���>OPQR}~��U���J��������B�������������"��}Q���������"��������������%����������"����%;����������������S��UUQPTUO �I���������������%��������������"�������������&���"������>�OPQR}~��U���"���� �������;�������������������������������B���������������#������%��������������������>��������P��UO�������$�����#����������� ������#����������������%�&�;�������������������B�����������������������&�����������#��$��&��"��#����������#������� �N���"������@���>����������!;���#<�����&���##������������������B��&���������";��&�������������#�=������������%��� �?����������������������������#�;�����%���%����������������������������������������������� �����������"�������������������%����������������������;�������������#%��

Page 83: SystemVerilog for Verification

������������ ������ ����������������� ���!����"#$� ��%&'()*+�,-+./01.+&+.2'()*+3)&..+124/+5&670'+8&52&9)*.+&67+306.45&264.,+:/*+.(*32;23306.45<34.+&5*+*=()&26*7+26+4/*+;0))0126>+.*34206.,?�@ABC���D�������� �C"E���"�@�$B���FGHIIJKLMNOJJFPQILJRMLJSTUVWXJYZ[\]K _aabJcJdeOJJLfghihjJhQkNJlb]amJnbo]mJYZ[bZpqJILMN_hOJJrHQiFJILMN_hJsMQiOJJJttJ]QkNhrHLhiJuHrJJrHQiJRMLJSTUVWXJGhQmJIrFmJiILOJJRMLJFPQvhILMPQ_LhILOJJFPQILrHMQLJF_ILMNJlJJJJGhQJwJUWWWOJJJJGhQJxJWOJJJJMjJyFPQvhILMPQ_LhILzJlJJJJJJiILJMQIMihJlSYZ[\]K _aab{UWWVYZ[\]K _aab|UWWXqOJJJJJJIrFJccJYZ[\]K _aabOJJJJqJJJJhGIhJJJJJJIrFJMQIMihJlWmJSeVUWXmJSUWWVUW}XqOJJqhQiFGHII����~�? @ABC���A�C�� ���%&'()*+�,-+./01*7+&+306.45&264+9)03�+124/+.*8*5&)+*=(5*..206.,+:/*+;25.4+410+306450)4/*+8&)<*.+;05+4/*+���+8&52&9)*,+�.+�0<+3&6+.**�+&+8&52&9)*+3&6+9*+<.*7+26+'<)42()**=(5*..206., :/*5*+3&6+9*+&+'&=2'<'+0;+06)�+06*+5*)&4206&)+0(*5&405+������������+05+��+26+&6+*=(5*..206,+%&'()*+�,�+263055*34)�+452*.+40+>*6�*5&4*+4/5**+8&52&9)*.+26+&+;2=*7+057*5,?�@ABC�������"���"C� ���$������ ��FGHIIJPrihrOJJrHQiJRMLJS}VWXJGPmJNhimJ�MOJJJFPQILrHMQLJRHiJJlGPJwJNhiJwJ�MOqJttJ\PLF�H�hQiFGHII ���������������� � ������������������������ !"����"����#�� !$�"�!���� !�%&'('')*+',-.'('))/+'01'('23/%&'('22/+',-.'(''45+'01'('265%&'('263+',-.'('2/6+'01'('232%&'(')2/+',-.'('))4+'01'(')*2789:;<= >?=@ABC@=DA<=E<@F;D@G=CAHIA=8E<=JBD=CA8D=C8@=HJD<JK<K>=LA<=IBJ@DE8HJD=MNO=HJ789:;<= >P=H@=QEBR<J=KBCJ=HJDB=9F;DH:;<=QHJ8ES=E<;8DHBJ8;=<T:E<@@HBJ@G=UBHJU=VEB9;<VD=DB=EHUADW=XXYZ[\[]O_[\[a_>=bHE@DG=DA<=<T:E<@@HBJ=XYZ[\[]O_=H@=<c8;F8D<KGCAHIA=UHc<@=d=BE=�>=LA<J=a=H@=IBJ@DE8HJ<K=DB=Q<=UE<8D<E=DA8J=DA<=E<@F;D>=LA<=c8EH8Q;<@YZ=8JK=]O=8E<=E8JKB9He<K=QFD=JBD=IBJ@DE8HJ<K>=LA<=IBEE<ID=IBJ@DE8HJD=H@=@ABCJ=HJ789:;<= > >=bBE=9BE<=<T89:;<@G=@<<=7FDA<E;8JK=8JK=fH;;@=ghddij>�����������k�!���� !�l�� �m�������m�� !���� n�#���#��o%pqq'&r.-rs''rpt.'u1v'w2xy*z'%&+',-.+'01s'''o&tqvrp1tv'{&&.'|%&'}',-.s'''~~'�t%�'�q-'u1tpr�'o&tqvrp1tvq''''''''''''''''''',-.'}'01s�-t.o%pqq��������� l���!"���n����� �!�LA<=9B@D=IB99BJ=9H@D8R<=CHDA=IBJ@DE8HJD@=H@=DESHJU=DB=98R<=8J8@@HUJ9<JD=HJ=8=IBJ@DE8HJD=Q;BIRG=QFD=HD=I8J=BJ;S=IBJD8HJ=<T:E<@�@HBJ@>=�J@D<8KG=F@<=DA<=<�FHc8;<JI<=B:<E8DBE=DB=@<D=8=E8JKB9c8EH8Q;<=DB=8=c8;F<G=<>U>G=Y�����>=�BF=I8J=QFH;K=IB9:;<T=E<;8�DHBJ@AH:@=Q<DC<<J=BJ<=BE=9BE<=E8JKB9=c8EH8Q;<@G=@FIA=8@=Y�[��[ NO��NOO��]ZO�[�[�[�N�YZNO��a�X_>�������� $���#�� ��� m�� �!�LA<Oa��=B:<E8DBE=8;;BC@=SBF=DB=IE<8D<=C<HUAD<K=KH@DEHQFDHBJ@=@B=DA8D=@B9<=c8;F<@=8E<IAB@<J=9BE<=BVD<J=DA8J=BDA<E@>=LA<=Oa��=B:<E8DBE=D8R<@=8=;H@D=BV=c8;F<@=8JK=C<HUAD@G@<:8E8D<K=QS=DA<=��=BE=DA<=��=B:<E8DBE>=LA<=c8;F<@=8JK=C<HUAD@=I8J=Q<=IBJ@D8JD@=BEc8EH8Q;<@>=LA<=c8;F<@=I8J=Q<=8=@HJU;<=c8;F<=BE=8=E8JU<=@FIA=8@=�YZ�a�>=LA<=C<HUAD@8E<=JBD=:<EI<JD8U<@=8JK=KB=JBD=A8c<=DB=8KK=F:=DB=�dd>=LA<=��=B:<E8DBE=@:<IHVH<@=DA8DDA<=C<HUAD=H@=DA<=@89<=VBE=<c<ES=@:<IHVH<K=c8;F<=HJ=DA<=E8JU<G=CA<E<8@=DA<=��=B:<E8DBE@:<IHVH<@=DA8D=DA<=C<HUAD=H@=DB=Q<=<�F8;;S=KHcHK<K=Q<DC<<J=8;;=DA<=c8;F<@>

Page 84: SystemVerilog for Verification

������������ ������ ������������������ !"�#�$�%#&��#�'"$�()"�&%�*�"!�+,-./01+2,1.2-/342+-.5361-./0,1.237+,-.28222-/32+,-.289:;<942=>:?@:;A9B5222CC2-/32;2942DE,FG.2;2<9CHH9222CC2-/32;2>42DE,FG.2;2A9CHH9222CC2-/32;2H42DE,FG.2;2A9CHH9222CC2-/32;2?42DE,FG.2;2A9CHH9222+-.2+,-.289:C<942=>:?@:CA9B52222CC2+-.2;2942DE,FG.2;2<9C>99222CC2+-.2;2>42DE,FG.2;2H9C>99222CC2+-.2;2H42DE,FG.2;2H9C>99222CC2+-.2;2?42DE,FG.2;2H9C>99BIJKLMNOPQKRS�TKUVWKXQYZKY[QK\MP]QK�TK�TKTK_KaSKb[QKcQdX[YK_eK�KdZKf�TKc[QQMZTK�TKTMJgKaKQMh[K[M\QKY[QKcQdX[YK_eKR�TKe_KMKY_YMPK_eK �SKb[QKO_iMidPdYjK_eKh[__ZdJXK�KdZf�k �TKMJgKY[QKO_iMidPdYjK_eKh[__ZdJXK�TKTK_KaKdZKR�k �KQMh[SlQmYTnUoKXQYZKY[QK\MP]QK�TK�TKTK_KaSKb[QKcQdX[YK_eK�KdZKf�TKc[QQMZK�TKTKMJgKaKZ[MQMKY_YMPKcQdX[YK_eKR�TKe_KMKY_YMPK_eK���SKb[QKO_iMidPdYjK_eKh[__ZdJXK�KdZKf�k���TKMJgY[QKO_iMidPdYjK_eKh[__ZdJXK�TKTK_KaKdZK_JPjK�k���KQMh[SpJhQKMXMdJTKY[QK\MP]QZKMJgKcQdX[YZKhMJKiQKh_JZYMJYZK_K\MdMiPQZSKq_]KhMJK]ZQK\MdrMiPQKcQdX[YZKY_Kh[MJXQKgdZYdi]Yd_JZK_JKY[QKePjK_KQ\QJKY_KQPdNdJMYQKh[_dhQZKijKZQYYdJXY[QKcQdX[YKY_KsQ_TKMZKZ[_cJKdJKLMNOPQKRStS���������u�vw%���x���w�x!�% �% �#�'"$�()"�&%�*�� !"'CC2yz-26{E/0.,6142|}.E42D6/+426/2~61FD6/+3~0--2yz-�{522CC2�{E/01+2~E1F.G22.}{E+E�2E1z�28y���42����42����2B2~E1F.G7E522/01+2~E1F.G7E2~E1522CC2�E,FG.-2�6/2+,-.2361-./0,1.22|,.2=?>:9@2D7|}.E;>42D7D6/+;?42D7~D/+;�522361-./0,1.237~E1282222~E12+,-.28y���2:;2D7|}.E422222CC2�G66-E202/01+6�22222222222222����2:;2D7D6/+422222CC2~E1F.G2z-,1F22222222222222����2:;2D7~D/+B52222CC2�0/,0|~E2DE,FG.-22BE1+3~0--IJKLMNOPQKRStTKY[QK���KQJ]NQMYQgK\MdMiPQK[MZKY[QQK\MP]QZSK�dY[KY[QKgQeM]PYKcQdX[YrdJXK\MP]QZTKP_JXc_gKPQJXY[ZKMQKh[_ZQJKN_QK_eYQJTKMZK����VnK[MZKY[QKPMXQZYK\MP]QS ���������������� � ������������������������������������������������ !��"��������#�!���������������"� ��$����"�����%�����&'()(*+,-.+/-01-23456+789+.4-+:8359-+;6-27.<2=�������������������� �>�!�������������?@A?BC��D������&�E���F����#G���!�����!>����������%�����������>�!���������������������H��!�D��%�%�!�������!����������>��������������������������>����%!�&�I���!������������������>����%!��������������&,706J-+'(K+L789<0+3-.3+<M+N7JO-3PQRSTURVTWXTTTTTTTTTTTTYYTZQRS[\T]QPUQ _URVT_[aTbUXTTTTTTTTTTTTYYTc[RdPQRS[\T]QPUQ _eTfeSTQeT_U\UVeW[ReVPQURVTWgPQRhTiTTWTUReUSTij_[kbUlmXTTYYT_[TnoTWTppTWTnoTbUmq��F�#D!��r&s��F����#G���!������������>�!���� ���tu���"�v?����"����#��������������� D����%!��>�!���&�=�������������������D���#�����w�����������������������������������$%����������!��������%���>����� ��������#�!���������������������������������������������&�x���������� �tu�y�v?������#D���������� ��#�"����"���������������� ��!�&=�����������z��������������� �������#���#�#���"�#�{�#�#�>�!���� �����������������������F�#D!��r&�|&�E���������!D �!��������������%��!"���������������� ���>����%!�������"� ������������&,706J-+'(}~+,6-�5M�58�+05850O0+789+07�50O0+278�-+�5.4+�PQRSTUVTj�k�lTXTTTTTTTTTTTYYT�TnoTTnoT���PQRSTUVTj�k�lTXTTTTTTTTTTTYYT�TnoTTnoT��W[ReVPQURVTWgPQRhTiTTTUReUSTij�k�laTj��k�mXTTYYT�TnoTTnoT�T��T��TnoTTnoT���TTTUReUSTij�k�laTj��k�mXTTYYT�TnoTTnoT�T��T��TnoTTnoT��mq ��������������>�!�������!���������������������"�����������>���������������������������x�E��D���������,706J-+'(}}+:8N-2.-9+2789<0+3-.+�<83.2758.W[ReVPQURVTWgPQRhTiTT��WTUReUSTij_[kbUlm�XTTYYTWTnT_[T[PTWT�TbUm'()('+�358�+78+�227�+58+7+,-.=�������������� ��#�������� �>�!����%�������������#������������&�

Page 85: SystemVerilog for Verification

������������ ������ ������������������ !"��#�$�%" #$&�' $�("&�� ��&&�)*+,-./,0.12/,0.1/3456.7.89:;<;=;5;>?2@A,B0*+/,0.@C1/3A,+@@/.9..1./,B/-D.1/32?EFGHIGHIJKLMNOJOIGNPQIPFJIRQSSQTGNUIHJPIQRIVQNHPWMGNPHX����������Y�Z[\']��� $�#�$�"(�%" #$&�' $#@A,B0*+/,0.@C1/3A,+@@/.9..1.77.1/34_6.aa...bb.177:..1.77.1/34:6.aa...bb.177<..1.77.1/34<6.aa...bb.177=..1.77.1/34=6.aa...bb.1775..1.77.1/34c62.....bb.177>?dSSIeMSfJHIGNIPFJIHJPIMWJIVFQHJNIJgfMSShiIJeJNIGRIPFJhIMLLJMWIjfSPGLSJIPGjJHkIlQfIVMNMSHQIPFGNmIQRIPFJInopnqrIVQNHPWMGNPIMHIsJGNUIPfWNJOIGNPQIMItuvrwxyIVQNHPWMGNPiIMHJKLSMGNJOIGNIzJVPGQNI{k�|k}kzMjLSJI{k�}IVFQQHJHIeMSfJHIfHGNUIMNInopnqrIVQNHPWMGNPITGPFIWJLJMPJOIeMSfJiIMNOIMSHQLWGNPHIMIFGHPQUWMjIQRIPFJIVFQHJNIeMSfJHIMNOIHQIhQfIVMNIHJJIPFMPIPFJhIMWJIVFQHJNJgfMSShk ���������������� � ����������������������������� !� !� ���"#!��$� !�%&'(()*+,-./+01))2'30),3/)4'&1)),3/)'22'567)8)9:;<;<=<><?<@<@<@<@<@A1))%B3(/2',3/)%):4'&),3(,0+)'22'51A+30%&'((*+,-./+0)C1,3,/,'&)D+-,3)),3/)%BE3/6F7<)G'HH6I71))C)8)3+CJK1))2+L+'/)J=MMMK)D+-,3))))'((+2/JCN2'30BG,O+JKK1))))%BE3/6CN4'&7PP1))))))))QQ)RBE3/)/.+)3EGD+2)BS).,/()))+30))G'HH)8)%BE3/NG'HJK1)))))QQ)T+/)&'2-+(/)4'&E+),3)%BE3/))QQ)U2,3/).,(/B-2'G)BS)%BE3/))SB2+'%.J%BE3/6,7K)),S)J%BE3/6,7K)D+-,3))))IC2,/+JV%BE3/6WM078W?0)V<),<)%BE3/6,7K1))))2+L+'/)J%BE3/6,7XYMQG'HH6M7K)IC2,/+JVXVK1))))I0,(L&'51))+30+30����������Z�[������\$#�� !� ���"#!��$� !��#��$��#$��!��]� _�����$$��%BE3/6;78)>FY;)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%BE3/6=78)YM>@)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%BE3/6>78)>Fa@)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%BE3/6?78)YM=a)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%BE3/6@78)YM;b)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXcdefghidjfklmfjnfophqrflfkehidjerfrhsjghopjhntfhsfkhjdfjdefuvwxfnyegljngflsfsdnktfhtze{jhntf|}~}~}��l�yqesf|}�|fltrf|}� f{dnnseflfrlmfn�fjdefkee�f�gn�flfqhsjfn�fetp�egljerf�lqpes}�npf{ltf{dltiefjdefqhsjfn�f{dnh{esfntfjdef�qm}f��fmnpf�l�ef���v��flf���u�f�lghloqe�jdefsh�pqljngfjghesfe�egmfynsshoqef�lqpefoe�ngefgeyeljhti}

Page 86: SystemVerilog for Verification

������������ ������ ���������������������� !�"#!!���$%!���&��%%�'�!$��!��()���*��+��,-.//01.2/3004256768069:;0<=>?@0AB?@0C>D@0ED1@00000000000000000CF>@0GHI@0=JCK07.2/L63007.2/L60,MNO,6/PQR300S.9707.2/L60,MNO,6300,N9/4S.O940,7.20<,MNO,60O9/O760,MNO,6/3K697,-.//����������T��#!!�(&U�$%!���&��%%�'�!$�*��+��O9O4O.-0V6WO9001.2/07.2/3007.2/0X096YZ[3007.2/\,MNO,6/0X0<1.2/]]=>[email protected]/]]=JCK300.//6S40Z7.2/\S.97N;O6Z[[300Q7O/5-.2Z_H.97N;0Y6669707.20a/[email protected]/\,MNO,6\9.;6[3007.2/\,MNO,6/0X0<1.2/]][email protected]/]]C>[email protected]/]][email protected]/]]CF>@01.2/]]GHIK300.//6S40Z7.2/\S.97N;O6Z[[300Q7O/5-.2Z_H.97N;0Y6607.20a/[email protected]/\,MNO,6\9.;6[3697cdefghijklmnopqrsolteqntoulvluqtrowlxrqdlqdelovyelsmlvoleonyetvqezl{v|ne}~ml�snlxvoqlqslz�ovyrpv||�lvzzlstlteys{el{v|neulmtsylvlueq�lqdro�lqxrpel�emstelnurowqde�f���ils�etvqstl�epvnuelsmlrqul�etmstyvope}l�stle�vy�|e�l�etdv�ul�snldv{elvlueqsml{v|neulqdvql�snlxvoqlqslpdssuel�nuqlsope}l�snlpsn|zlnuel�f���ilqslpdssuel{v|neumtsylvl�nene�lvozlze|eqelqdeylqslu|sx|�ludtro�lqdel�nene}lcdrulte�nrteulqdelus|{etlqsus|{e�lpsouqtvroqu�lxdetel�lrulqdelony�etlsmle|eyeoqul|emqlrolqdel�nene}l~ouqevz�lnuev�gf��l{vtrv�|elqdvql�sroqulroqslvolvttv�lsmlpdsrpeu}l�dssurowlvl�gf��l{v|nelqv�eulvudstq�lpsouqvoqlqrye�lxdetevulus|{rowlvl|vtwelony�etlsmlpsouqtvroqulrulystele��eour{e�eu�eprv||�lrml�sntlvttv�ldvulystelqdvolvlmexlzs�eole|eyeoqu} ���������������� � �������������������� !"#�$%�&'%%����((�)�*��+������(��,%��%(,�(#- ../0 !"#1!.2"34//2!5/ �� 6784/////////////////99/: -;3./5</#=<<.3//� !"#/>25/7?@AB8/2!"3C4//////99/1!"3C/2!5</ �� 6//D;!#52<!/!3EF2!G;5/2!5/ 78H4/99/I<!.5�;#5/J/2!252 -2K3//// �� 6/L/ 4//3!"D;!#52<!//D;!#52<!/2!5/G2#M4///////////99/035;�!/N<.5/�3#3!5/G2#M////�35;�!/ �� 672!"3C84//3!"D;!#52<!//#<!.5� 2!5/#O.2K3/P2!"3C/Q/ �� 6R.2K3FH4S3!"#- ..//2!252 -/>3T2!////0 !"#1!.2"3/�24////�2/L/!3EFUP?VWV@VXVYV??V?WSH4////�3G3 5/F�2R �� 6R.2K3FHH/>3T2!////// ..3�5F�2R� !"<N2K3FHH4//////Z"2.G- 6F[\2#M3"/]"/7]B"8[V/�2RG2#MFHV//�2R2!"3CH4////3!"//3!"_ abcadeacfghaiejgahcegkcilajgbhcfegcmbcnjobkcjgcegpcikbiq��r�s�t%�,�$�%����t%��$(���$�_ineuupvceuucfghaiejgacbowibhhjghceibcefajxbcjgcecmufyqczdeacj{cplc|egacacdexbcegbowibhhjgcefajxbcgupchnbc{cadbcajnb}c~icboenwubvcecmlhchlwwiahcmpabvc|ikvcegkug�|ikcibekhvcmlacgupcug�|ikc|ijabhqc�phabn�biju�chlwwiahca|cjnwujfeajgwbieaihvc��cegkc�������qzdbgcplceibcfd hjg�c{incecujhac{cbowibhhjghvchlfdcehcegcbglnbieabkcapwbvcadbjnwujfeajgcwbieaiv��vcubahcplcfibeabcecfehb�ujybcmufyqc�dbcweibgadbhbhceilgkcadbbowibhhjgceibcgacib�ljibkvcmlackcneybcadbcfkbcbehjbicacibekq

Page 87: SystemVerilog for Verification

������������ ������ ����������������� !"#$�%!#�&� '(�)%#*�%���%'�#% !� ��$�# $+,-../01.234//555//+67.89-:78/+;:6/<////=:6;.3-+>;?6@>A/BC//////-@@9DEFG/HH/FIJF4//KLMNOPQNRSTUNSNVWQUXMSYZUNU[\WUZZ]P_NVRUNaXbcdbNP\UWSVPWNeSONfUNfUVVUWg���������hi�� !"#$�%!#�&� '(�)%#*�:jk>,.>� ��$�# $+,-../01.234//555//+67.89-:78/+;,>7;9l/<////:j/=63/HH/mnopA//////,>7/:7.:@>/<D0qrnstumpGK4////>,.>//////,>7/HH/tump4//KLNvPZVWS]VNfYPvwZ_NOPQNQZUNvQWYONfWSvUZ_Nxyz_NVPN{WPQ\NeQYV]\YUNU[\WUZZ]PZgN|RU}b~�gggb��NwUO�PW�ZNSWUNMPWN\WPvU�QWSYNvP�Ug�������%�%$�'#% !���� !"#$�%!#"�ONP�NOPQNeSONRSTUNWUSY]�U�NVRSVNvPZVWS]VNfYPvwZNSWUNPVN\WPvU�QWSYNvP�U_NU[UvQVX]{NMWPeNVP\NVPNfPVVPegN|RUONSWUN�UvYSWSV]TUNvP�U_NSYYNSvV]TUNSVNVRUNZSeUNV]eUgNLMNOPQvPZVWS]NSNTSW]SfYUN�]VRNVRUN�d�bNP\UWSVPWN�]VRNVRUNZUVN�������NS�NRSTUNSPVRUWU[\WUZZ]PNVRSVNvPZVWS]ZNVRUNTSW]SfYUNVPNfUN{WUSVUWNVRSN��_N�OZVUe�UW]YP{NZPYTUZfPVRNvPZVWS]VZNZ]eQYVSUPQZYONS�NPYONvRPPZUZNTSYQUZNfUV�UUN��NS�N��g�OZVUe�UW]YP{NvPZVWS]VZNSWUNf]�]WUvV]PSY_N�R]vRNeUSZNVRSVNVRUNvPZVWS]VZNPNSYYWS�PeNTSW]SfYUZNSWUNZPYTU�NvPvQWWUVYOgN���]{NPWNWUePT]{NSNvPZVWS]VNPNSOPUNTSW]SfYUNSMMUvVZNVRUNTSYQUNvRPZUNMPWNSYYNTSW]SfYUZNVRSVNSWUNWUYSVU�N�]WUvVYONPWN]�]XWUvVYOgN�PZ]�UWNVRUNvPZVWS]VN]N�Se\YUN�g��g���������h���%�%$�'#% !���' !"#$�%!#9-7@/,6�:+/DF�s�G/9�/.�/84+67.89-:78/+;J:@:9/<//9/�/84//./HH/94//8/�/E�4//./C/��4K ���������������� � �������������������������������������� �!��"�#�����#������!���#��!���$����������%���&�������%����������#�'(�)��"���������%����������#�*+$�,�)����(�&���������"�#�����#�-���%���.!������/(�)��"����������������#�01$�2��#����!������������#��-���"��"�#�����#���#������)������!��� �'(�����"�#�����#���#�/�������"�������"���"��$���%���34�����)�����5����%������!��� ��������������������%���$2��#�����"�#-����#���"�#�����#����!"�����67��#-�89$$$:;/:(�)��"��"�#�������������5��4"�-!���894:;/:��������#�(�����%�-���"���#��$�<����=��5��(�����"�#�����#��>?@AABCD67D?EAAFCG�����.!�����#�����>H?@DAADBCDIIDEDAADFJG$������������5�"������!��� �����������%�������������������"�#�����#�(��#-�-����#��� �����"��"��� �@AAB(����#� ��"�EAAF$�K#� �"�(�� ���!��--������--����#���"�#�����#��LEAABJG(������������)��������@����+$MNONPQRSTTUVQWSVQXYZSWQ[\YWS]VWYQ_ V\aWT\QWTQbTTUWQcddYYVef���5������������"��5���������!"������--����#��#-��!%���"���#(�%����=���"��(��#-���� ��������#-��-������� �"��#����%��������������#���"�#�����#�$�,�)����(��!���5��"����#(-������#(��#-���-!�������������=5�#�����)����*04%������!��$�g����%���������#��"�#4���#��)����!���#��=5��"�����h�(��!"�����ij(����������-������*04%������!�$K ���!�)�#�������#��������#-����--����������������#������5����%�!#-���(�)�������5������k+l3�%����(���!�"�!�-�)��������� ����)�#��"�-�(�%!��������������������������#��������� �#-��!���%������!��� ���@mm&$na] oVQMNppQcqVeUYrVQTeUW\aYeWQsYWSQ]TtQaetQueUYvVtQra\YawoVxyz{|}~�|������|y{{x���z��xy~z�|�����z�yx��y���}��z{yx�|�||y{{x|�|����|~z�~{�|��������|����������������#��"�#���#����#����-)��������5�)����� �0(��#-����������-��#������ ������%��!��#�%����=���"���#�����������#�-������#��#-���-!��$�����)���(��!���5��"����#�%����5�)���� �)��"�#�%����5��"�-�%������� �$�awoVQM�  ���!���#�� ���%�-���"���#���"�#�����#����!���# � � �¡ 03 03 0 ¢ 03 03 0£¤ 03 03 0l¥ 0 0 0£2 0 0 0l< 0£ 0£ 0l

Page 88: SystemVerilog for Verification

������������ ������ ����������������� !"!�#$�"%#&$'�!#$�(!$)�*!$��+$'�"$,-./012304567890-//,:;<.=3,-2.30.>-,?@-A>?1<B./,C0D00-//,46678902.=2/>0D487E89F04G8HI7G8JI9K:K��L��%�M$!%#�N'%*�*!�!$!�&OPQRQSQTUVWXUYQZ[U\]PUTZRYW_USZ[XQaUVWXURQQYUWUXRYQTZRYUPQUbTWcZc][]VUWdUPQWXeW_QfUgVQ_hQT][WiUYWQURWUiXZTZRQQUPQUQjZeUW[X]WRUdWXRYUcVUPQUTZRYW_eWRTZ]RUW[SQTaUcXUVWXUeZRU]Rd[XQReQUPQUY]T]cX]WRfUkRVU]_QUVWXU\WTlU\]PUTZRmYW_URX_cQTaUVWXUPZSQUWU[WWlUZUPWXZRYUWTU_][[]WRUWdUSZ[XQUWUZSQTZiQUWXUPQRW]QfUnPZRi]RiUPQUWW[USQT]WRUWTUTZRYW_UQQYUeZRUeZXQUY]ddQTQRUTQX[fUgW_QU]_mX[ZWTaUXePUZUgVRWbVUhngaUPZSQU_X[]b[QUW[SQTUWUZ[[W\UVWXUWUTZYQU_Q_WTVXZiQUSfUbQTdWT_ZReQf��L�o�p#"%#&$'�!#�qgZTU\]PU\WUSZT]Zc[QU\]PURWUeWRTZ]Rf����������r�s��&&�t.;<.=3,-2.>/;u-==0t.;<.=3,-2.>/:00,-./01230v:000000000ww080<,0600,-./01230467890C:000ww08F06F0EF0<,05>./;u-==xPQTQUZTQUQ]iPUbW ]c[QUW[X]WRaUZUPW\RU]RUxZc[QUymzfUg]ReQUPQTQUZTQURWUeWRm`TZ]RaUQZePUPZUPQUZ_QUbTWcZc][]VfU{WXUPZSQUWUTXRUPWXZRYUWdUTZRYW_]|Z]WRWUQQUPQUZeXZ[UTQX[UPZUZbbTWZePUPQU[]QYUbTWcZc][]]Qfz}�*����~� gW[X]WRUdWTU�������������Ue[ZgW[X]WR j V �TWcZc][]Vk � � ���� � � ���n � z ���� � � ���� � � ���� � � ���� � z ���� � � ���zxPQUZc[QU\QTQUiQRQTZQYU\]PUgVRWbVUhngUz���f�yUX]RiUPQUTXRm]_QU\]ePU������������������� ������������������ �������������������� !"#$%&'(")*+,-"./("0$'1("23"4"5(&(!56"2!"./("0$'1("23"7*"8/96"96"9!59:$.(5";9./"./(9%&'9:$.92!"2&(<$.2<"9!"./("32''2;9!=":2!6.<$9!.*"8/96"(>$%&'("$!5"./("<(6."9!"./96"6(:?.92!"$'62"@(/$0("9!"./(";$A"6$%(";9./"./("BC"9%&'9:$.92!"2&(<$.2<*D����E������F��GG�H��I������������JKLMMNOPQRSNNTLUVNWXYNZSNNNNNNNNN[[N\N]TNRNNTLUVNWXYNR_\NaSNNN[[N\bNRbNcbN]TNdNNJ]UMYTLXUYNJeZaNfNNNNgZhh\iNjkNahh\SNNlmUVJKLMMn(<("$<("./("&2669@'("62'1.92!6"$!5"&<2@$@9'9.A*"o21":$!"6(("./$."./("<$!52%"62'0(<<(:2=!9p(6"./$."./(<("$<("(9=/.":2%@9!$.92!6"23"7"$!5"4-"@1."$''"./("62'1.92!6";/(<(7qqr"stuvw"/$0("@((!"%(<=(5".2=(./(<"s8$@'(")?xw*y�z�E��{| #2'1.92!6"32<"}~��":'$66#2'1.92! > A �<2@$@9'9.At � � ��+� � � �� � + �v � x �� � � ���� � � ���� � + ���n � x ���

Page 89: SystemVerilog for Verification

������������ ������ ����������������� �!"��"#�$�#�%&� �!"���'!"( %��" ()*+,-+./+-+.,-012304/+0*5-*2,6/+*6-7/87-+./+-9.,5-:;;<=>-07-?*64,@-+*-�=-AB+-9.,5>;;<=-+.,6,-07-5*-4*57+6/05+-*5-:C-D*9,E,6=-012304/+0*5-07-A0@06,4+0*5/3-05-+./+-0?->9,6,-?*64,@-+*-/-5*5F,6*-E/3B,=-:-9*B3@-./E,-+*-A,-�C-G/123,-HCIH-./7-+.,-4*57+6/05+>J<=-/5@-7*-:-4/5-5,E,6-A,-�-KL/A3,-HMNOCP����&���Q��'��((�R� S�������� �!"��"#��!"( %��" TUVWWXYZ[\]XXV_XabcXd]XXXXXXXXXeeXfXgXhXXV_XabcXihjfkXl]XXXeeXfmXhmX\mXgXnXXTg_WcVb_cXTodlXpXXXXXlXqXf]XXXXrdssftXuqXlssf]XXvw_TUVWW����x�yz�#�"{�|�( %�}z �!"�R� S�WgU~w���aw�gw�*B-4/5-�B0@,-+.,-G87+,1�,603*�-7*3E,6-B705�-+.,-������CCC�������-4*57+6/05+-/77,,5-05-G/123,-HCI�C��}�&���x G*3B+0*57-?*6-����-43/77G*3B+0*5 � 8 �6*A/A030+8� � � �� � � �� � I �� � � �� � � �� � � ���� � I ���D � � ��� ������������������ ������������������������ ������!���"#��#$�%&'()���*)+&,)-'.%%/0&'()1)+&,)2//,.34/*56/72/////////88/9/&,/://,.34/*56/;:<9=/>2///88/9?/:?/@?/&,/A//-&3%6,.536/-B7>/C////D7EE9F/GH/>EE92////%&'()/7/*)+&,)/>2//I)34-'.%%JKLMNOPQRRRSQTNUQVWXYZ[\]Y[V_XLZVYX[VWK]YLV[KLVZXab[XYVZc]WLdVebZ[V[KLVc\Xf]fa[gXhV[KLV\LZba[ZRVJKLVZXaiL\VWKXXZLZVi]abLZVXhVjVkldV�mVn[KVLob]aVc\Xf]fa[gRVpYV�dlllVW]aaZ[XVUqrsNtuvQwxdjVZVlV]fXb[VyllV[zLZdV]Y_V�V]fXb[VyllV[zLZRV{KLYVjVZVldV|VzbZ[VfLlRV{KLYVjVZV�dV|VW]YVfLVldV�dV}dVX\V~Vn[KVLob]aVc\Xf]fa[gVkJ]faLV��ymR�XnLiL\dVhVgXbVbZLV[KLVWXYZ[\]Y[VMNOPQ�|�SQTNUQ�jdVgXbVL[V]ViL\gV_hhL\LY[V_Z�[\fb[XYVkJ]faLV���mR��������� �Xab[XYZVhX\VMNOPQ�j�SQTNUQ�|VWXYZ[\]Y[�Xab[XY � g �\Xf]fa[g� l l ��}� l � l� l } l� l ~ l� � l ���� � � ���� � } ���� � ~ ������������ �Xab[XYZVhX\VMNOPQ�|�SQTNUQ�jVWXYZ[\]Y[�Xab[XY � g �\Xf]fa[g� l l ���� l � l� l } l� l ~ l� � l ���� � � ���� � } ���� � ~ ���

Page 90: SystemVerilog for Verification

������������ ������ ���� ������������� !!!" #�$ �%&��'��()��*%��(+%�&%�*�,%+-�-',�'&+���'.��/(�����'00�)!�120���%/������0(����',�+-��0'��+)(%�+��'�/�)(�*�.(3���'�)�0'��+)(%�+��*%&&%0��+�&')�'+-�)��+'���*�)�+(�*!4546789:;8<<=9>6?@<:=A<B6789C:;D=9:6E<8FGCH�0�(���0(��0'�+(%��.��+%I���0'��+)(%�+�J�'03�!�����.%K-+�.(3����)���'��-(/��(�/(�%*+)(��(0+%'�L�(��*��0)%J�*�%��M�0+%'��N!OL�J�+��'��.%K-+����*�+'�*%�(J���+-%��,-���+��+P%�K�+-��QRST���))')�-(�*�%�K!��)��'��.%K-+�,(�+�+'�-(/��(���I()(+��0'��+)(%�+�&')�(0-�+��+!�U�)-(I��'���0'��+)(%�+�,'��*�)��+)%0+�+-��*(+(����K+-�+'�0)�(+���.(���+)(��(0P+%'���VK)�(+�&')�+��+%�K�0'�K��+%'�WL�,-�)�(��(�'+-�)�,'��*�.(3���'�K�+)(��(0+%'��!H+�)��P+%.�L��'��0(������+-��J�%�+P%��X�Y�Z$[\YZ]�_ a�)'�+%���+'�+�)��0'�P�+)(%�+�� '�� (�*� '&&!� b'�� 0(�� 0'�+)'�� (� �%�K��� 0'��+)(%�+� ,%+-c[Y_� dX�Y�Z$[\YZdX�Y�Z$[\YZ]�_ a!�S'�0'�+)'��(���0'��+)(%�+��%��(�'Je�0+L�����c[Y_� dX�Y�Z$[\YZ]�_ aL�(���-',��%��M(.I���N!��! ������������� � �������������������� !"#$%&!#'( )*�+%"",-%�.*#/,,$%!),&!#,+*!0#1/,,� !"#$%&!#,�'"1 $#,2+*!0#1,&!"&)*,23456789/,9,,� !"#$%&!#,�'+ !0,,2+*!0#1,&!"&)*,234:::54:7689/,9*!)�+%""-%�.*#,;/&!&#&%+,<*0&!,,;,=,!*>?@/,,AA,B$*%#*,%,+ !0,;%�.*#,<C,)&"%<+&!0,"1 $#,� !"#$%&!#,,;D�'"1 $#D� !"#$%&!#'( )*?:@/,,%""*$#,?;D$%!) (&E*?@@/,,#$%!"(&#?;@/,,AA,B$*%#*,%,"1 $#,;%�.*#,<C,)&"%<+&!0,%++,� !"#$%&!#",,AA,#1*!,*!%<+&!0, !+C,#1*,"1 $#,� !"#$%&!#,,;D� !"#$%&!#'( )*?:@/,,;D�'"1 $#D� !"#$%&!#'( )*?4@/,,%""*$#,?;D$%!) (&E*?@@/,,#$%!"(&#?;@/*!)��F�G���H�IJ��KL���K�MNOPPQNRSTQPUVWSXVPTNXYZ[TV\]YNVNXPNZRYSXYNY_YRSNZPTXRSVTXNXPNYT]RYNX[YNZPRRYZXaTYNPbNcP]RNRSTQPUNXVU]]dNeTPfTNSNg_SVQNZPTXRSVTXhiNjPRNYkSUlYdNSNm]NRYSQnUPQVbcnfRVXYNZPUUSTQNUVO[XNPTcNmYNSPfYQNbPRNSNPTOfPRQNQSXSNYTOX[h����������o�Ip�qr����sL�K������Kp�s�Kp���t���H�qJ��KL���K�+%"",u$%!"%�#& !/,,$%!),*!v(,2wxuyz,{|}~z,�{}~z,�{}~9,+*!0#1/,,$%!),*!v(,2}y�~z,{}�uyz,}�{z,��u}9, ;�/,,� !"#$%&!#,�%+&)'}�{'�{}~,2,,,,? ;�,==,}�{@,��,+*!0#1,==,�{}~/,,9*!)�+%""�PfNcP]NeTPfNX[YNm]NXRSTSZXVPTNPmYcNX[YNR]YhN�SXYRdNVbNcP]NfSTXNXPN_VPSXYNX[YR]YdN]YN���������������NXPNX]RTNPbbNX[VNPTYNZPTXRSVTXhN�P]N[P]QN[S_YNS

Page 91: SystemVerilog for Verification

������������ ������ ������������������������������� �!�����!�"����!�!���#��$�%�!$� ��!�$!����� ��&"�'�()*+,-��!�! �.���/���01234567896:4;<6=>?@96>=A!�B�$�."������"����!�!%�B�$�������#�$&�.�� ����B����!�"����!0�C �B���������"���.�� ���� ��� �"����$��(&����#�.�B!%���#�� ���(�"����#��������/D����#�#�!�/D��� ���##!����� ����!�����&D�(��B0�A##������DDB%����!����DB��##������#��#���������!�"����!������D�!!���$D#���$!��&"�/D��!���������������"������0E��B���!�!���DB�"��#���F���/G���!��������&D�������� ����#�0�HB!���I�"�D����DD�.!B�$�����##�����(�"�����!�"�����$!�����J*K-LM,NOPQR,ST0�C �!��!��U$���D��������##V��������(�"�����!�"����������B��(�!��������!�����''���0�H��&D��W0XY�! �.!���/�!���D�!!.�� ����!�"����!%�� ����.��J*K-LM,NOPQR,ST�!��������!0Z@[\8:412]4_:4abcdefghijklmgno4=>@>:[:6>pqbrrlsabcrbpngectllabcdlugnlvwxyz{lbdda|ldbnbtllpecrnabgcnlpxl}bddalgcrgdi}vzyxzz{|vxzzzy~zzz{�t�icdpqbrrsabcrbpngeclntgcgngbqlui�gcllnl�lcimjktll��lbddalgrl�z�xzz|lxzzz�x�zz|ldbnbl�lxzllbrrianjn�abcdefghijklmgnol}bddal��l�ztlbddal��lx�zztllllllllllllllllllllllllllldbnbl�lxzt�ktlldag�i��rjnktll��l�eapilbddalnelblr�ipg�gpl�bq�i|ldbnbl�lxzllbrrianjn�abcdefghijklmgnol}bddal��l~zzztldbnbl�lxzt�ktlldag�i��rjnktllicdC ���(�"�����!�"����!��"���##�#����� ���(�!��������!�����''���0��!���LK�SJ*,KS�ML-O�'�B�$����#����#�!�/D�������'D����������!�"����0������� �����!�#��� ��R,ST���!��������%HB!���I�"�D���$!�!�� ��!��&���'�� ���D�!!0�C ����!�. B�H��&D��W0XY�$!�#�G$!��*--J%����S�*--J0 ������������� �������������� ���������� ����������������� !��������"##�"�$�%�"#���&'��!������#������(��)*�#!��)!��������!�$��+��"#'%�,#��!��-./�0"���#!�!�,!#��)������&��#�����,'�� ��"�!��"#'%�,#��!�1���$����%�"#���&'��!������#������"��"�!��)!�����/�2#��!���#!�+�#�$!�'�#���3!���$!/456789:7;<=><?@ABCDE=7FGH7;BIJ><?@ABCDE=7KLGMNOPGQR��!���!��%�"��!!$����*!#+�#���������������!$���!'%�,!+�#!�!3!#%�STUVWXYZ[\]��''��#����!$���!'%��+�!#(�#$�/��#�!_��*'!1�%�"���%�(��������!�����!����#��$���'����3�#��,'!���"�)����'�������#�(!�a)��b�,!+�#!�#��$���c���������#��1��#�%�"���%�!!$������'�"'��!��)!�!##�#���##!������,����+�#�#��$���$���/R%��!�d!#�'�a�'!���%�"�$���)���(��)��(���*!���'�3��$�+"�������1�eS[fSTUVWXYZ[���$eWghfSTUVWXYZ[/�R!������i/j��)�(!$��)�����3��$�+"�������$�!������#!�"#����3�'"!1,"�1�,!��"�!���������������� 1�$�!����������"�!����!/�k+�%�"�(���������''���$!,"a�#�"&���!�+#���eS[fSTUVWXYZ[��#�leWghfSTUVWXYZ[1�����"���,!���+"������/4565m7nLOoHOGp7F7nFN9NLq7rOQNsOqLNOPG�#����!��**'��������1�%�"�(���������'��!�#�#��$���$���#�,"����/��#��������!1����''��$�'�#a!�*�� !����#!���#!�'� !'%����+��$���$!��a��,"a��"�)����,"++!#��3!#+'�(��)���!$�"�&��c!$�*�� !��/�R��%�"�(������,��)�",��)�*!$�$���#�,"����t�)�a)����,��)�!�$�1��$�'�(�����)!���$$'!/�u�"���"'$�,"�'$����!'�,�#��!�VYgh������#����1�,"�������a)�#!v"�#!�'�����+��(!� ��a����a!���)!��)�*!�%�"�(���/�d!#�'�a�)����!3!#�'�+"��������+�#���'��!�#�$���#�,"������"�)����wVYghf[xeWU[UhYTy�,"�����!�+�#���,��)�",/�z)!a#�*)�����a"#!�{/���)�(��)�(�%�"��������,��!��(��!_*��!����'��"#3!������� !��,��)�",��"#3!/�z)!�eS[fSTUVWXYZ[��!�)�$����R��*'!�{/i����'�"'��!����*����������!_*��!����'��"#3!1���$��)!��#��$��'%��)���!�����*"���)�������)!�'!+���"#3!1��#�#�a)�/���%�"�*�� �*���������!��)!#��)!�'!+����$�#�a)���"#3!�1�%�"�a#�$"�''%�,"�'$���$���#�,"&������+��)!����,��!$�3�'"!�/

Page 92: SystemVerilog for Verification

������������ ������ ������������������� �!��"�#"$%$�#� �&$��#�$�'!(")*����+,������ �!��"�#"$%$�#� �&$��#�$�'!-./0012/343567118931:/.5;711<<1=/9>?@1:/A8/6.;1B83416/343561>803118931CDEFG1H1IJK1ELMFGHNK10;;>HO711P59-38?91:?8>1QA;RA/9>?@8S;TU71111<<1V/.-5./3;1/91;WQ?9;93/.1-5A:;1111:/.5;1H1X>803R;WQ?9;938/.T0;;>K1ELMFGU711118P1T:/.5;1Y1CDEFGU1:/.5;1H1CDEFG71111<<1=/9>[email protected]?8931?9134;1.;P31?A1A8[431-5A:;11118P1TX5A/9>?@RA/9[;TOUU111111:/.5;1H1CDEFG1\1:/.5;711;9>P59-38?9;9>-./00]_abcde_bcfdgbhij_kcbdgblmnhedo_npbcf_bldliq_brstuvbw_cgbxynlc_nzb{khggbelmalmnhedolcdhmgpbahxb|dqqbg__bcf_bn_gd_nbmhmqdm_lbndgcdixcdhmzb}dmk_bcf_bldliq_bdgklqkxqlc_nbyhk_nxlqqapbmhcbcfhxwfbcf_blmnhebkhmgcldmcbghq_pbdcbnh_gbmhcbm__nbcf_~s��behnd�d_z�+�+���'$��'!��'� ���!�$�'!&�f_b�xmkcdhmgb�~v�~s������vblmnb�����~s������vbklmbhmqabklqqhcf_b�xmkcdhmgpbmhcbclg�gbcflcbkhxqnbkhmgxe_bcde_zb{�c_blqqpbahxbklm�mhcbfl_blbn_qlabdmbcf_bednnq_bh�blbklqqbchb~s������v��zb�f_mbahxl_bn_ixwwdmwblblmnhedolcdhmbyhiq_epbahxbklmbklqqbahxbndgyqlahxcdm_gbd�bahxbyqlmm_nblf_lnblmnbeln_bcf_ebhdnb�xmkcdhmgz��������������  ¡�¢£����������� ¤¥¦§�§�©��£�¥©ª«�©�©� ��¬ ­� ¥� CDEFGJ ��������������  ¡�¢£����������� ¤¥¦§�§�©��£�¥©ª«�©�©� ��¬ ­� ¥� CDEFGJ ��������������� ����� ���������������� �!"#�$ �%&'��()*+,-./,+01,.22,341,51672*89�::;,<70367=+37*/,>+/-37*/0?,@2+0,01A16.2,34.3,.61,/1B,>*6CD031E51672*8F,G*/0+23,.,03.37037-0,=**H,>*6,E*61,<13.720,*/,341,I<703J,>+/-37*/0FC*E1,*>,341,+01>+2,>+/-37*/0,7/-2+<1,341,>*22*B7/8FK LMNOPQRST,U,V2.3,<70367=+37*/?,613+6/7/8,078/1<,WX9=73,6./<*EK LYMNOPQRST,U,V2.3,<70367=+37*/?,613+6/7/8,+/078/1<,WX9=73,6./<*EK LYMNOPQRZMNO[\ST,U,V2.3,<70367=+37*/,*A16,.,6./81K LP]_Z\aQO\O_]Nbcd,U,ef@*/1/37.2,<1-.D?,.0,04*B/,7/,V78+61,g9�K LP]_ZOQMRNbcd,U,h122904.@1<,<70367=+37*/K LP]_ZaQ] QOcd,U,h122904.@1<,<70367=+37*/K LP]_ZYO]iQMRcd,U,V2.3,<70367=+37*/j41LYMNOPQRZMNO[\cd,>+/-37*/,3.H10,3B*,.68+E1/30?,./,*@37*/.2,2*B,A.2+1?,./<,.4784,A.2+1Fk��lm"���no�p #�����q#��r"� (�r"stutvwxsyz{|}xsy~����t����t��t����tst�s�w�t�x{|t�t�{t��stutvwxsyz{|}xsy~�����t���t��t����tst�s�w�t�x{|t�t�{t���tutvwxsyz{|}xsy~�����ttttt��t����tst�s�w�t�x{|t�t�{t���������(&#�'�&(��'l(������"%��'� "(�*B,-./,D*+,-61.31,G�j,34.3,-./,=1,1.072D,E*<7>71<�,j4161,.61,01A16.2,367-H0,D*+-./,+01F,j41,E*03,81/16.2,31-4/7�+1,70,3*,+01,���,3*,1f31/<,341,*6787/.2,-2.00,.0<10-67=1<,7/,C1-37*/0,gF��F�,./<,�FXF�?,=+3,3470,.20*,61�+7610,E*61,@2.//7/8F,C*?,>760321.6/,0*E1,07E@21,31-4/7�+10?,=+3,H11@,./,*@1/,E7/<F����������(&#�'�&(��'&����#'�!m"(�*03,-*/036.7/3,1f.E@210,7/,3470,=**H,+01,-*/03./30,3*,E.H1,341E,E*61,61.<.=21F, /C.E@21,gFWW?,]¡\,70,6./<*E7¢1<,*A16,.,6./81,34.3,+010,.,A.67.=21,>*6,341,+@@16=*+/<F

Page 93: SystemVerilog for Verification

������������ ������ ������������������� !"�#�!�$#!%���&�"#�'���'�(�)*+,--./0123-4..5,23.627.-6894..627.:,;<-689.=.>??4..*02-75,627.*<[email protected].@A>B:,;<-689CD4...D923*+,--EFGHIJKLMNOGNPQRGSMKRRGSTIKNIRGTKUHVWGRQXIRGYINZIIUG�GKUHG�[[OGYLNGYFGSPKU\QU\GNPI]KTQKYMI _abcdeOGFVLGSKUG]KTFGNPIGLffITGMQWQNghVLGSKUGLRIG]KTQKYMIRGQUGNPIGicbjGSVURNTKQUNGNVGNLTUGVUGKUHGVJJG]KMLIRGKUHGTKU\IRgGkUlKWfMIGmgnoOGIKSPGYLRGSVWWKUHGPKRGKGHQJJITIUNGZIQ\PNG]KTQKYMIg����������p�36-7�q�� !"�#�!�$#!%�&�"#�'���$�#r%! 7st939u.921:.vwxyz{|.wxyz>}|.wxyz~��.59,3<94*+,--.w9,3�0::,23-4..5,23.59,3<9.59,3<*:34..627.59,3{<�7=>|.59,3>}<�7=>|.59,3~�<�7=>4..*02-75,627.*<59,[email protected],3<*:3.36-7.@wxyz{..B=.59,3{<�7|...................wxyz>}.B=.59,3>}<�7|...................wxyz~�.B=.59,3~�<�7D4....D923*+,--EFGHIJKLMNOGNPQRGSVURNTKQUNGfTVHLSIRGIKSPGSVWWKUHGZQNPGI�LKMGfTVYKYQMQNFgGkJGFVLZKUNGNVGPK]IGKG\TIKNITGULWYITGVJG�����GSVWWKUHROGQUSTIKRIGNPIG�e_i�a�jGZIQ\PN]KTQKYMIgG�VRNGQWfVTNKUNMFOGFVLGSKUGNLTUGVJJG\IUITKNQVUGVJGRVWIGSVWWKUHRGYFGHTVf�fQU\GNPIQTGZIQ\PNGNVG[g�������� #�r����"��)������(� �kJGFVLGPK]IGKGRINGVJGSVURNTKQUNRGNPKNGfTVHLSIRGRNQWLMLRGNPKNGQRGKMWVRNGZPKNGFVLGZKUNOYLNGUVNG�LQNIOGFVLGSVLMHGSKMMG�_�i�cde��OGKUHGNPIUGRINGKG]KTQKYMIGNVGNPIG]KMLIGFVLZKUNG�GFVLGHVU�NGPK]IGNVGLRIGNPIGTKUHVWGVUIgG�VZI]ITOGFVLTGRNQWLMLRG]KMLIRGWKFGUVNYIGSVTTISNGKSSVTHQU\GNVGNPIGSVURNTKQUNRGFVLGSTIKNIHGNVGSPIS�G]KMQHQNFgkJGNPITIGKTIG�LRNGKGJIZG]KTQKYMIRGNPKNGFVLGZKUNGNVGV]ITTQHIOGLRIG�_�ia�ieGNVGWK�INPIWGUVUTKUHVWg �������������������� ������� ���������������� !"#$%"&�'()�*��)�+�,'-�(.�/(-,�-0�1�+(�*��)2234 56&73897:3; �9 <=&3=&!>7:3? @=% "5= AA34 56&7B33� !"3<973CDEFG3=&!>7:H3? @=% "CGB335%!A7� 9!735#; =9"3I=&!>7:3J3FB3333333333333333333333? @=% "KA9L&MN3OO3=&!>7:BP33QR!579%!3;%9"3"9A?= @MA7�9!>3$A>NB3333S"9A?= @MTU!VATH3$A>NB3333S8�97&MT4 56&73=&!OVF"H3? @=% "3A9L&OVF"H3<@7&A3O3TH33333333333=&!>7:H3? @=% "KA9L&MNNB3333Q%�M9!739OFB3M9WX3YY39W? @=% "KA9L&MNNB39ZZN333333S8�97&MT3VF"TH3? @=% "C9GNB3333S"9A?= @B33&!"QR!579%!&!"5= AA4 56&73?B9!979 =3<&>9!33?3O3!&8MNB33223[ !"%$9L&3 ==3; �9 <=&A33 AA&�73M?K� !"%$9L&MNNB33?K"9A?= @MT\9$?=&3� !"%$9L&TNB33?K=&!>7:K� !"#$%"&MFNB333223] 6&3=&!>7:3!%!� !"%$H33?K=&!>7:3O3XB33333333333223A&739737%3 35%!A7 !73; =R&33 AA&�73M?K� !"%$9L&MNNB332237:&!3� !"%$9L&37:&3? @=% "33?K"9A?= @MT[ !"%$9L&3897:3� !"#$%"&TNB&!"_abcdefgahijklamngaecopgmaqrsgarqaqmtugvaramngaucvtdawcurcxfgayz{|}~ia�nga�ruqmancf�t�amngamgqmaucvtdrsgqaxtmnamngayz{|}~awcurcxfgacvamngaotmgmqat�amnga���y���v�cdroacuuc�ia�ngaqgotvancf�aocffqa��{�����zamtadcpgayz{|}~acatucvtdawcur�cxfglaqgmqarmamta��lacvamngaocffqa��{�����z��ia�ngaotqmucrmaqgmqamnga���y���aqrsgcmamngaotqmcma��lax�mamngacuuc�arqaqmrffa�rffgva�rmnaucvtdawcf�gqi������������(,�������)��)(,���-,)/+�(,/)_�a�t�aucvtdrsgacatx�gomacvamngadtvr��aqtdgawcurcxfgqla�t�aocaongopamncmamngtx�gomarqaqmrffawcfrvax�aongopr�ar�acffaotqmucrmqacugaqmrffatxg�gvia�cffa~�{�yz���{�����z�{ yy�acvab�qmgd¡gurft�amugcmqacffawcurcxfgqacqa tucvtda¢£qmcmgwcurcxfgq¤¥acva��qmagq�ugqamncmacffaotqmucrmqacugaqcmrq�rgvi

Page 94: SystemVerilog for Verification

������������ ������ ������������������ ��!�"���#��$�%�&�'��(%)*+,--./012.,1345616.17458.9:;0141<031=47:4>?0/1:5/:80141@?4//A1B.,1@451@4??1CDEFGHIJKLM13:6N16N01/,>/061.<1=47:4>?0/A1O5?216N./01=47:4>?0/1-4//081:516N0147P,90561?:/63:??1>017458.9:;08Q16N0170/613:??1>01670460814/1/64601=47:4>?0/145815.617458.9:;[email protected]/674:56/17094:51:510<<0@6A1S51+49-?01TAUTV16N01<:7/61@4??16.1CDEFGHIJKLM1.5?2@N45P0/16N01=4?,0/1.<163.1CDEF1=47:4>?0/1HKF14581WIA1XN01/[email protected]@4??1.5?21@N45P0/6N01=4?,01.<1HKFV13N0704/1WI17064:5/1:6/1-70=:.,/1=4?,0A1+,7-7:/:5P?2V12.,1@451-4//145.57458.91=47:4>?0V14/1/N.351:516N01?4/61@4??V14581YGZ1:/1P:=051417458.91=4?,0V14/?.5P14/1:61.>02/[email protected]/674:56A[��\%)���]��������� ��!���*$(*)��_�#�'��(%)*������%�**abcddefgdghijeeklmnebopjeeeeeeeeeeeqqeromeschtoueeschteklmneuntvewgjeeqqefchtouexcsgckbneeaohdmscghmeyzeeee{ebope|euntjeunte|ewgje}eqqe~nne~namgohe�����nhtabcddghgmgcbeknigheefgdghiesjeese�ehnp��jees�schtoug�n��jeeeeeqqefchtoug�neuntvewgjebopeyhmoyawntees�schtoug�n�unt�jeeqqefchtoug�neohbleuntees�schtoug�n�bop�jeeqqefchtoug�neohblebopnhtXN:/167:@�1.<1.5?217458.9:;:5P141/,>/061.<16N01=47:4>?0/1:/[email protected]?21,/081:51704?60/6>05@N0/14/12.,1470170/67:@6:5P16N017458.950//1.<12.,71/6:9,?,/A1B.,1345612.,760/6>[email protected]�-?.7016N01<,??1745P01.<1?0P4?1=4?,0/V15.61�,/6141<[email protected]/A��������$'�����*'���*��__�������R1/:9-?0160/6>05@N19421,/014184641@?4//13:6N1�,/6141<[email protected]/674:56/A1�N461:<12.,345616.1N4=0163.160/6/13:6N1=07218:<<070561<?4=.7/1.<18464�1B.,1@.,?81,/016N01:9-?:�@46:.51.-0746.7/1���1.71I��KY�K�16.1>,:?8141/:5P?0V10?4>[email protected]/674:[email protected].??08>215.57458.91=47:4>?0/A �������������������� ������� ����������������� !"�#$�� ��� %�# &!�%&!�#'� !#������()*+��#�#���!#(,)**-./*012(034/5--067+8+9-+/2:-;<=>?-@ABC?-DBE?-<=CF-47(48+G+5--1)/8-47(48+G+-47(48+5--H30-IJKLM-/G47+1)/8*5--NNN--(4/*01)3/0-(G47+1)/8*-;----39-O/G47+1)/8*-PP-LQ------47(48+-PP-<=>-RR-47(48+-PP-@ABC5----+,*+-39-O/G47+1)/8*-PP-JQ------47(48+-PP-DBE-RR-47(48+-PP-<=C5----NNN--F+/8(,)**STUVWXYVZ[[V\]X\V]X_YVTY[VaXb[VWTYZ\bX_Y\VWXYVcU_WdaeV[\VTU\VTfVWTY\bTaVXZVeTUVXggfUb\][bV[hib[ZZ_TYZVfTbV[XW]VTi[bXYgjVXggb[ZZ_YVkTg[ZjV[\WlVmVkTb[VkTgUaXbXiibTXW]V_ZV\TVUZ[VXVZ[iXbX\[VWTYZ\bX_Y\VfTbV[XW]VfaXTbVTfV_YZ\bUW\_TYjVXYgV\][YVg_ZXna[XaaVnU\V\][VTY[VeTUVY[[gjVXZVZ]ToYV_YVpXkia[Vqlrsl����������t�uv'! !"�%&!�#'� !#��&!��!w�&xx�y #$�(4/*01)3/0G:48+(,)**-./*012(034/5--1)/8-47(48+G+-47(48+5--z--(4/*01)3/0-(G/4G47+1)/8*-;----47(48+-PP-<=>-RR-47(48+-PP-@ABC5F--(4/*01)3/0-(G4/+G47+1)/8-;----47(48+-PP-DBE-RR-47(48+-PP-<=C5F+/8(,)**./*012(034/-3/*0153/303),-H+{3/--3/*01-P-/+|OQ5--}}-~+/+1)0+-)/-3/*012(034/-|30�-/4-47+1)/8*--3/*01N(4/*01)3/0G:48+OLQ5--}}-C21/-499-),,-(4/*01)3/0*--3/*01N(G/4G47+1)/8*N(4/*01)3/0G:48+OJQ5--)**+10-O3/*01N1)/84:3�+OQQ5--}}-~+/+1)0+-)/-3/*012(034/-|30�-4/+-47+1)/8--3/*01N(4/*01)3/0G:48+OLQ5--}}-C21/-499-),,-(4/*01)3/0*--3/*01N(G4/+G47+1)/8N(4/*01)3/0G:48+OJQ5--)**+10-O3/*01N1)/84:3�+OQQ5--+/8

Page 95: SystemVerilog for Verification

������������ ������ ���������������������� ��!"���!������#�$��� %�� "��&��'�(���!�)�!���*" ����� &�!%"���#!���� ����+� &&����� "��� �*��',�- "��'��*��)�.����� %�!%"�� &&������ ��!"���!��!��!�"��!��+�!�)�� %��"����� �+���(���#�����!��� ����!��!�����/�!���+�!�0��$���+�!�,123321456789:;9<=4>4?@<ABC>9<B49<4>4D7AB4EA9<=4F<GH9<74?@<ABC>9<BAI&�� %�/��*��++��#�� ��!"���!��! ��������)��!�(�� ������"+�! �����#����+�� �!" �,J �)��$�"� ����������/��#� %!�!��������&����&" ��� %"�� %"���� �!" �����!��,�K���!�������� ��!"���!���� ����%��+�(�������#���!��!)���+�� �.�����$���!�$���(���! ��$�"�!��!L�M���.���! �� ����N��!����&&��!�� &���� ��!"���!����! �%�����O������ ��!"���!�)�PQRSTUVWXYZ[V\])��� .�����J��!� ��,_,�����. "/��.�����&�� %"���.�� ��!"���!����++�!�$��! �!���+�&�%�!�� ��!"���!�,�I&�� %�& �� .�!���"�� ����+�!� ������J��!� ��,a! ��"��!��b$���+�� ��!"���!�)c�� %�����d%��/���� ��!"����$���+���d%�����,�- "��"" "��e��!� �)�� %�����+���(�������� ��!"���!�!��!�� �&���!��.�!��.��!�� %��"��!"���#�! �+ ,- "��'��*��)��&���!��!����+��! ���e��!���*�"!��%��"�&��$ "� &�� ""%*!�+�+�!�)��!�. %�+&�"�!�!%"�� &&�!���*�"!��%��"�$���+�!��� ��!"���!�!��!�����/��& "�!��!��"" ",��"���"����$�"���!"�+� &&��.�!��%���#���O������ ��!"���!�,����&�"�!����!��!�� .�� %"� ��!"���!���"������%�!�*���� ��!� ��,�I&�� %��++�����.�� ��!"���!�! �!��� "�#����������)�!������ �&���!�.�!��!�����O������ ��!"���!,������� �+����!��!��!�����(��$�"����"+�& "� %�! �"�%��������O������ ��!"���!���" ����%�!�*���!��!�,�f��+�&���!� �)������O������ �O�!"���!� �����'��!����� ���*����� &�� +�,�g %�� %�+�*%!��!������" %!�����������*�"�!��&�����+�!����������!�������+�+,�h!�!��!�* ��!��!�����(�� ������"���!���������������'!�"���� ��!"���!,12332i456789:;9<=4>4?@<ABC>9<B49<4>4D7AB4j9Bk4lmB7C<>n4?@<ABC>9<BA���( +�� &���� ��!"���!�+ ���� !���$��! �(��+�&���+�.�!����!��������)�e%�!������" %!���( +������(��+�&���+��'!�"�����)������ .�����J��!� ��o,��,�g %"�+�!��������� %�+�(�+�&���+���� ���&���)�.�!�� �����*!��� ��!"���!,����������!��!�� %�+�+�&�����!�� .�$�"�� �� &�!����� ��!"���!�! �#���"�!���!�� .��&��$ "�� &��!��%�%�,5>p6n7412qr4?n>AA4j9Bk4><47mB7C<>n48@<ABC>9<Bsstuvwxyz{|}w~v||t�vwxyz�tt�v��t��zt�����t~y��z��tt�v��t��zt�����tuv�~�v����ttw��|z�v��ztw�}v~��t�~y��z�t�t��ttttttttttttttttttttttuv�~�v�{|��y��t��t~y��z���ttw��|z�v��ztw�y�zy��v~�y��w~v|| ���������������������� ���� ���������������� !" ���#�$%&%&"��&��'(� &���)!&*( �%&(++,-./-0/12345367,-./-8,,94:/-36;:-,<69=.->>[email protected]:6A,BA.:5-C,DD,E8F,,000.:G2345367HIJKLMNOPQRMSJLNTMJSPUNVKPSKVKLNOPNWVNMJNXKSPRVKLPTMYOTMKPQRMSJLNTMJSZP[UK\PQNMP]KP_JTMPNPTOKPNMWPJU_SPLK_SKWP]KJaKKMPJKSJSZPbMPKIJKLMNOPQRMSJLNTMJPN OTKSPJRPNOOPTMSJNMQKSRPJUKPQONSScPaUKLKNSPNMPTMYOTMKPQRMSJLNTMJPRMO\PNKQJSPJUKPSTMXOKPQNOOPJRPdefghijklmnZPoRMSKp_KMJO\cPNMPKIJKLMNOPQRMSJLNTMJPLRVTWKSPNPLTqTJTVKPaN\PJRPQUNMXKPNQONSSPaTJUR_JPUNVTMXPJRPOKNLMPNWVNMQKWPrrsPJKQUMTp_KSZPtKKPTMPqTMWPJUNJPaTJUPJUTSJKQUMTp_KcP\R_PQNMPRMO\PNWWPQRMSJLNTMJScPMRJPNOJKLPKITSJTMXPRMKScPNMWP\R_PMKKWPJRWKTMKPJUKPKIJKLMNOPQRMSJLNTMJPLRJRJ\KPTMPJUKPRLTXTMNOPQONSSZuTvKPTMYOTMKPQRMSJLNTMJScPKIJKLMNOPQRMSJLNTMJSPQNMPQN_SKPLR]OKqScPNSPJUKPQRMSJLNTMJSNLKPSLKNWPNQLRSSPq_OJTOKPTOKSZPbPTMNOPQRMSTWKLNJTRMPTSPaUNJPUN KMSPaUKMPJUKP]RW\PRLPNMPKIJKLMNOPQRMSJLNTMJPTSMKVKLPWKTMKWZP[UKPw\SJKqxKLTORXPuyzPWRKSPMRJPQ_LLKMJO\PSKQT\PaUNJPSUR_OWPUNYKMPTMPJUTSPQNSKZP{KRLKP\R_P]_TOWPNPJKSJ]KMQUPaTJUPqNM\PKIJKLMNOPQRMSJLNTMJScPTMWPR_JURaP\R_LPSTq_ONJRLPUNMWOKSPqTSSTMXPWKTMTJTRMSZP|SPJUTSPNMPKLLRLPJUNJPLKVKMJSPSTq_ONYJTRMcP}_SJPNPaNLMTMXcPRLPMRPqKSSNXKPNJPNOO~��������'(�&#%&"������**|MPoUNZP�cP\R_PaTOOPOKNLMPURaPJRPKIJKMWPNPQONSSZP�TJUPJUTSPJKQUMTp_KcP\R_PQNMPJNvKPNJKSJ]KMQUPJUNJP_SKSPNPXTVKMPQONSScPNMWPSaNPTMPNMPKIJKMWKWPQONSSPJUNJPUNSPNWWTJTRMNOPRLLKWKTMKWPQRMSJLNTMJScPLR_JTMKScPNMWPVNLTN]OKSZPwKKPwNq OKP�Z��PRLPNPJ\TQNOPJKSJ]KMQUZ�RJKPJUNJPTP\R_PWKTMKPNPQRMSJLNTMJPTMPNMPKIJKMWKWPQONSSPaTJUPJUKPSNqKPMNqKPNSPRMKPTMJUKP]NSKPQONSScPJUKPKIJKMWKWPQRMSJLNTMJPLKONQKSPJUKP]NSKPRMKZuKNLMTMXPrrsPJKQUMTp_KSPLKp_TLKSPNPOTJJOKPqRLKPSJ_W\cP]_JPJUKPOKIT]TOTJ\PRPJUTSPMKaN LRNQUPLKN\SPaTJUPXLKNJPLKaNLWSZ������!��!&���&#!�%��(%!&�� !����*�R_PqN\P]KPQRqRLJN]OKPaTJUPLRQKW_LNOPQRWKcP]_JPaLTJTMXPQRMSJLNTMJSPNMWP_MWKLYSJNMWTMXPLNMWRqPWTSJLT]_JTRMSPLKp_TLKSPNPMKaPaN\PRPJUTMvTMXZP�KLKPNLKPSRqKPTSS_KS\R_PqN\PKMQR_MJKLPaUKMPJL\TMXPJRPQLKNJKPLNMWRqPSJTq_O_SZ

Page 96: SystemVerilog for Verification

������������ ������ �������������������� �!"#�"$%���&�'(�)"#�*+,-./0,123-4.1.2,526,-/+7.89:.;18.6,.2,;<2,=.29.:5,.2+,.>?@[email protected]+,0.534-,=28<,5.D90./9:-2,05.1-=.92+,0.53;<E,.F10316E,5G.H9-I2.:5,.2+,;.3-.01-=9;./9-52013-25:-E,55.89:.0,1EE8.J1-2.534-,=.F1E:,5G.*+12.F1E:,5.10,.<09=:/,=.J+,-.2+,./E155.3-K1;<E,.LG��.35.01-=9;3M,=N.O2.+15.2J9.01-=9;.F10316E,5.1-=.J1-25.29.;1P,.2+,.5:;9D.2+,;.L�G�"QR%����S������� �T"#�"$%���U"V���#"� WQ�X"'�W��R#W$%�Q�YZ[\\] _abcd[e\f]]e[ac]ghib]jkilmZban]jkomZbaf]]Ypa\ie[_ai]ipi[ZmZba]q]]]]jkilmZba]r]jkomZba]ss]tuf]]vbacYZ[\\w6F39:5E87.89:./9:E=.4,2.<1305.9D.F1E:,5.5:/+.15.xyz7.yz{.1-=.xz7.Lz{G.|==3239-1EE8789:./9:E=.5,,.x}Ly7.�z~{7.15.2+35.35.1.E,4323;12,.59E:239-.9D.2+,.,�:1239-7.,F,-.2+9:4+32.;18.-92.6,.J+12.89:.J1-2,=G.�9.1F93=.;,1-3-4E,55.F1E:,5.5:/+.15.-,4123F,E,-42+57.:5,.9-E8.:-534-,=.01-=9;.F10316E,57.15.5+9J-.3-.K1;<E,.LG�zG�"QR%����S���"� WQ�X����V������ ����$�'�T"#�"$%��YZ[\\]d[e\�of]]e[ac]g_i]��l���]jkilmZban]jkomZbaf]]��]�a\_abc]ihjb]]Ypa\ie[_ai]ipi[ZmZba]q]]]]jkilmZba]r]jkomZba]ss]tuf]]vbacYZ[\\�F,-.2+35.F,0539-./1:5,5.<096E,;57.15.E104,.F1E:,5.9D.��@���C?.1-=.��@���C?7.5:/+15������������.1-=.������������7.J01<.109:-=.J+,-.1==,=.294,2+,0.1-=.43F,������.90.������G.�9:.;34+2.2+3-P.9D.1==3-4.1-92+,0.<130.9D./9-52013-25.29.0,5203/22+,.F1E:,5.9D.2+,5,.2J9.F10316E,57.6:2.2+,.6,52.1<<091/+.35.29.;1P,.2+,;.9-E8.15.J3=,15.-,,=,=7.1-=.29.1F93=.:53-4.yz�632.F10316E,5.3-./9-52013-25G.O-.K1;<E,.LG�y7.2+,.5:;9D.2J9.��632.F10316E,5.35./9;<10,=.29.1.��632.F1E:,G�"QR%����S���"� WQ�X����V������ ���$�'�T"#�"$%��YZ[\\]d[e\�f]]e[ac]g_i]�����]jkilmZban]jkiomZbaf]]��]� g_i\]¡_cb]]Ypa\ie[_ai]ipi[ZmZba]q]]]]jkilmZba]r]jkiomZba]ss]¢£ctuf]]]]]]]��]¢ g_i]\�¤]]vbacYZ[\\ ������������������� ��������� ������������������������ !"��#$%&'()*+),-./0(1-/+.,2340+*(.+1/.+./04-5/*.+(-6+74(8-4..4.9+:;/+/*404+(04+.,<4+5;16421-4./*(/+=,;+)(-+>,22,7+/,+1<?0,34+/*4+.?446+,>+=,;0+.1<;2(/1,-.+71/*+),-./0(1-46+0(-@6,<+3(01(:24.AB3,16+4C?4-.134+,?40(/,0.+.;)*+(.+6131.1,-9+<;2/1?21)(/1,-9+(-6+<,6;2;.+DEFA+G>+=,;-446+/,+613164+,0+<;2/1?2=+(+3(01(:24+:=+(+?,740+,>+H9+;.4+/*4+015*/+(-6+24>/+.*1>/+,?40@(/,0.A+B+<,6;2;.+,?40(/1,-+71/*+(+?,740+,>+H+)(-+:4+04?2()46+71/*+:,,24(-+BIJ+71/*(+<(.8A+G>+=,;+-446+/,+;.4+,-4+,>+/*4.4+,?40(/,0.9+=,;+<(=+54/+:4//40+?40>,0<(-)4+1>=,;+)(-+;.4+3(01(:24.+24..+/*(-+KH@:1/.+7164A���L�MN�� N$��� !O�P�� Q�R�!&N� $!N&S*4+),-./0(1-/.+?04.4-/46+.,+>(0+(22,7+=,;+/,+.?4)1>=+21<1/.+,-+.)(2(0+3(01(:24.A+T*(/1>+=,;+7(-/+/,+0(-6,<1U4+(-+(00(=V+S*4+WXYZ[\]+),-./0(1-/+(-6+.4340(2+(00(=+>;-)@/1,-.+24/+=,;+.*(?4+/*4+61./01:;/1,-+,>+/*4+3(2;4.A.1-5+/*4+WXYZ[\]+),-./0(1-/+)04(/4.+<(-=+),-./0(1-/.+/*(/+)(-.2,7+6,7-+.1<;2(/1,-A+B+5,,6+.,2340+)(-+_;1)82=+.,234+*;-6046.,>+),-./0(1-/.+:;/+<(=+.2,7+6,7-+71/*+/*,;.(-6.A+'.?4)1(22=+.2,7(04+-4./46+WXYZ[\]+),-./0(1-/.9+(.+/*4=+?0,6;)4+H+),-./0(1-/.+>,0(-+(00(=+,>+.1U4+A+a44+a4)/1,-+bA�KA�+>,0+(-+(25,01/*<+/*(/+;.46Y[cd\+3(01(:24.+1-./4(6+,>+-4./46+WXYZ[\]A���L���P�� Q��$e�S*4+4(.14./+(00(=+),-./0(1-/+/,+;-640./(-6+1.+/*4+fghZij+>;-)/1,-A+k,;+(04+.?4)1>=1-5/*4+-;<:40+,>+424<4-/.+1-+(+6=-(<1)+(00(=+,0+_;4;4A� �%�����ll�R�!&N� $!$!m�OQ! �$"� �� Q�&$e�nopqqrstuvqwxyzrr{pusro|}wnr~�����rs~�zrrn|uq�{pwu�rsvqwxyr�s�qwxy��rwuqwsyr�~������zr�yusnopqq.1-5+/*4+gcfgdZ+),-./0(1-/+24/.+=,;+.4/+(+2,740+(-6+;??40+:,;-6(0=+,-+/*4+(00(=.1U4A+G-+<(-=+)(.4.+=,;+<(=+-,/+7(-/+(-+4<?/=+(00(=9+/*(/+1.9+fghZ���A+�4<4<:40+/,.?4)1>=+(-+;??40+21<1/�+,/*4071.49+=,;+)(-+4-6+;?+71/*+/*,;.(-6.+,0+<1221,-.+,>+424@<4-/.9+7*1)*+)(-+)(;.4+/*4+0(-6,<+.,2340+/,+/(84+(-+4C)4..134+(<,;-/+,>+/1<4A

Page 97: SystemVerilog for Verification

������������ ������ ������������������� !�!"#$%&'()*+(,-+.(*(/*+.&0(*//*1(&2(.*3*(4+3&(*(.-,45+6(7'3(1&'()*+(*8,&(',-(43(3&()&+3/&839-(28&:;(<-/9*=,(1&'(9*>-(*+(4+3-/2*)-(39*3(9*,(3&(3/*+,2-/(2&'/(.*3*(:&/.,;(?9-:&/.,()*+(7-(,-+3()&+,-)'34>-81(&/(&>-/(0*+1()1)8-,;(@(,3/&7-(,45+*8(3-88,(:9-+(39-.*3*(,45+*8(4,(>*84.;(A45'/-(�BC(,9&:,(,&0-(8-54340*3-(,3/&7-(=*33-/+,6(,-+.4+5(2&'/>*8'-,(&>-/(3-+()1)8-,;DEF�G!��H��IJ"K���$#G�L!�MJN!��G�$%&'()*+()/-*3-(39-,-(=*33-/+,(',4+5(*(/*+.&0(*//*1;(O&+,3/*4+(43(3&(9*>-(2&'/(743,-+*78-.(&'3(&2(39-(-+34/-(/*+5-(',4+5(39-(PQRST(2'+)34&+; ������������������� ��������� ������������������� ��!"# $����""�#��%��!!&'(')*+*(,-./012.345620763,8,9:;<='>>,4+(?@*A'+;,,('BC,@D+,>+(?@*E-./012.345620763F;,,<?B>+('DB+,<0>*+0G?H(,I,>+(?@*J>H)KL,88,MNOM;,P*BC<='>>DBD+D'=,@*QDB,,4+(?@*A'+,>&;,,DB+,<?HB+,8,:;,,,,,,,RR,SBC*T,DB+?,C'+','(('U,,>&,8,B*VKL;,,'>>*(+,K>&J('BC?)DW*KLL;,,G?(*'<O,K>&J>+(?@*EDFL,@*QDB,,,,X@H>J<@;,,,,@H>J<@J>+(?@*,Y8,>&J>+(?@*EDF;,,,,RR,SG,>+(?@*,D>,*B'@=*CZ,C(D[*,?H+,B*T+,C'+',V?(C,,,,DG,K>&J>+(?@*EDFL,,,,,,,@H>J<@JC'+',Y8,C'+'E<?HB+\\F;,,*BC*BC]_ab_cdedefdc_gcae_hijkl_mn_oid_be_ag_jp_jccj_ag_qprsdtfqo_dsdedpo_uabsv_pactejss_fd_j_qprsd_fqon_dlrln_w_ac_�l_xjeksd_ylz{_|aekjcd_}~�����}����_oa_j_ztfqo�jsbd_������n_jpv_a_oid_be_q_|js|bsjodv_uqoi_ztfqo_kcd|qqapl_�id_d�jeksd_bd_ztfqo_kcd|qqap_oa_oacd_oid_ej�qebe_pbefdc_ag_dsdedpon_uiq|i_q_�wl��������!!��!���"���##���� �!"#���"!�id}����_gbp|oqap_saa�_qeksd_fbo_|jp_|jbd_d�dcjs_kcafsde_fd|jbd_ag_�dctqsar�_jcqoiedoq|_cbsdl_xojco_uqoi_j_qeksd_kcafsdel_�ab_ujpo_oa_rdpdcjod_gcae_apd_oadqrio_ocjpj|oqapn_b|i_oijo_oid_oaojs_sdproi_ag_jss_ag_oide_q_sd_oijp_�nwmz_fodlxjeksd_ylzy_iau_j_gqco_joodekol_�id_���_gqdsv_q_j_fod_qp_oid_acqrqpjs_ocjpj|oqapl

Page 98: SystemVerilog for Verification

������������ ������ ������������������ !"��""���"��"�!#��$%&!" ��&"'�()*+,-./01),,2()*+,-./3224)5*2(67821859:3220;5,74)<5720+1852=185>,-.2?2/@AB322222222222222222222185>,<C8DE2<5,<*82=9/FG:H3H22I-507<;52J;<*2*<,K1)6DE32222LM4<78DN,-.OPB*Q2J)1ONQ2185>,-.E32222I;48)0RD1859<:E2LM4<78DNPB*2NQ21859<:E32222L*<,K1)632285*I-507<;585*01),,����������S�T %U ���"%�" V�$%&!" ��&"�W�"X�� �V�!#�K4;Y4).2)-7;.)7<0278,7322()*+,-./20322<5<7<)12(8Y<5222202O258MDE3222248K8)72D/@E2(8Y<5222222),,8472D0>4)5*;.<C8DEE32222220>*<,K1)6DE3222285*2285*85*K4;Y4).����������Z�[#"�#"�\ %��()*+,-./,-.O22G/Q2J)1O22]A2A@22_,-.O22_Q2J)1O2Aa22]a222/22a]2 a2bG22aa,-.O22_GQ2J)1O22]@2AA,-.O22aAQ2J)1O/A@22A2/A_2/@A2B/2A/,-.O2b_Q2J)1O2bG2Gb//b2//A/@/2]Acdefghijiklmifgfnoigfolppikgpijhmdfqgrsmgmdigfsogefgfnoimeoifgjihlmetigljugefglpvlwfpiffgmdljg�xygzgui{ejemipwgjnmgvdlmgwnsgvljmiu|gckwglhlejqgmdefgmeoigvemdgljgsjfehjiu{eipu}g~cdig�������g{sj�menjgefgsj�dljhiu}���������������$%&���""���"��"�!#��$%&!" ��&"'�()*+,-.A01),,2()*+,-.A3224)5*2(<729aF@:21859:322��2G2(<7,220;5,74)<5720+1852=185>,-.2?2/@AB322222222222222222222185>,<C8DE2<5,<*82=9/FG:H3H85*01),, ������������������� ��������� ����������������������� !��"#$%&'()&'(*++,-.+/#0*++11+233+)45+++)++24+))1+25-&'(*+2)3.+/#0*++,4++,6+242++15&'(*++7-.+/#0*++7-&'(*+2-7.+/#0*++72+265+2,)++77++6,&'(*+2,7.+/#0*++6-+263++)6+232+271+)2)89:;<=>?@AB>C9D>9>DEFG<=>;HIF<=:J>GC=>DE:>IK>9<<>GH9LD9MGNIL><=LOGCD>ND>9<P9QD><=DDGC9L>RA?S>=T=L>GCIEOC>QIE>MILDGH9NL=U>GC=>9HH9Q>DE:>GI>F=><=DD>GC9L>�SBRV@>WC=>;HIFX<=:>C=H=>ND>GC9G>NL>Y=HN<IOS>GC=>DE:>IK>:9LQ>ZXFNG>T9<E=D>ND>MI:;EG=U>EDNLO>9L>ZXFNGH=DE<G@>[E:;>GC=>\]>KN=<U>E;>GI>_R>FNGD>EDNLO>GC=>ab>GQ;=>KHI:>cC9;@>R@����������d�efg h������������i���j!ki� �gk�l�"#$%&'(7m0#&&+"#$%&'(7n++o#p$+'qpr+0sptun++vv+7)+"qr&++mwp&ro#qpr+m%0sp+x0spy&'(+z+23)4n++++++++++++++++++++0spy&q{s|}+qp&q$s+xt2~1u�n�sp$m0#&&�������������������� !��"#$%&'(7&'(*+)46.+/#0*2741-65--6+7,41)656-1+-1664511)+)63,2,475)+&'(*+533.+/#0*)3,)2-71)-+7262-24-2+4144-,-,5+73635-1)31+)733251))3+7-115,2465+7--13,-353+-,375-644+&'(*++2,.+/#0*2-)4,5,33,+76631)3543+424-)26737+7)533-1-66+&'(*+443.+/#0*72-),12444+5)417335,+273356)))5+43,))6)765+75-4715)76+&'(*+154.+/#0*7652411451+,774,-5-)�IP>�>PC9G>C9;;=L=U>C=H=�>WCND>ND>DN:N<9H>GI>GC=>DNOL=U>;HIF<=:>NL>8=MGNIL>?@�R@�SNL>GC9G>GC=>DE:>IK>GPI>T=HQ><9HO=>LE:F=HD>M9L>PH9;>9HIELU>GI>9>D:9<<>LE:F=H@>�IEL==U>GI><N:NG>GC=>DN�=>F9D=U>IL>GC=>MI:;9HNDIL>NL>GC=>MILDGH9NLG@�������������!� �f������������i���j!ki� �gk�l�"#$%&'(4m0#&&+"#$%&'(4n++o#p$+"qr+t-~3u+0sptun++vv+23+"qr&++mwp&ro#qpr+m%0sp+x0spy&'(+z+23)4n++++++++++++++++++++0spy&q{s|}+qp&q$s+xt2~1u�n�sp$m0#&&

Page 99: SystemVerilog for Verification

������������ ������ ������������������ �� �!"#��$%&'()*+()*,-./.0-1%2,-3/3-454()*,65460-1%2,-78+--38-694-497---5---/---8()*,-/340-1%2,-84+-656-698--66()*,-.3/0-1%2,-/.5--//()*,-.570-1%2,-889-4+4:;<=>?@A=>B@C>D@EF>A<C;AEG>H=>C;A><B?<I<?JHK>LMN>O<AK?=>HEA>P@EA>C;HB>Q>R<C=G>HB?>=@>C;ALMN>IHKJA=>HEA>@OCAB>SEAHCAE>C;HB>�TTU>V@J>BAA?>C@>=WAX<OY>C;HC>AHX;>LMN>O<AK?><=RACDAAB>Z>HB?>�TTG>RJC>J=A>H>Z�[R<C>O<AK?>=@>C;HC>C;AY>=JP>X@EEAXCKYU>:;<=>EA\J<EA=X@B=CEH<B<BS>AIAEY>AKAPABC>@O>C;A>HEEHYU��]���_#a "�bbc�debfbe����g""�h��e�i�����j���� akY=CAPlAE<K@S>KAC=>Y@J>X@B=CEH<B><B?<I<?JHK>AKAPABC=>@O>HB>HEEHY>J=<BS>mnoMpqrUs;<KA>Y@J>P<S;C>RA>HRKA>C@>DE<CA>X@B=CEH<BC=>O@E>H>O<tA?[=<uA>HEEHY>RY>K<=C<BS>AIAEYAKAPABCG>C;A>mnoMpqr>=CYKA><=>P@EA>X@PWHXCU>:;A>@BKY>WEHXC<XHK>DHY>C@>X@B=CEH<B>H?YBHP<X>HEEHY>@E>\JAJA><=>D<C;>mnoMpqrU�������������b�����vwxy%z{�|#a "�b }�~ww&'()*7z2%((-~ww&'()*7�--x%�&-)���-2y����--zw�(�x%���-z'2y�-�vwxy%z{-�2y�����-----------------------2y����-��(�&y-��6�477���--------------------2y��()*-�-654+�--------------------2y��(��y��-��(�&y-��6�/����y�&z2%((�������������� �� �!"#��~ww&'()*7()*,65660-1%2,--/9-4+.-6.3-6/3-674--.7--+5---/()*,65640-1%2,-469-474-469--++-6.8--45--45--7+()*,-9350-1%2,-66/--38-638()*,-.380-1%2,-499-6/3--++-673-456--/6--39()*,-+640-1%2,-634-683--39:;A>H??<C<@B>@O>C;A>X@B=CEH<BC>O@E><B?<I<?JHK>AKAPABC=>O<tA?>C;A>AtHPWKAU>�@CA>C;HC>C;ALMN>HEEHY>XHB>RA>Z�>@E>P@EA>R<C=>D<?AG>RJC>PJ=C>RA>JB=<SBA?UV@J>XHB>=WAX<OY>X@B=CEH<BC=>RACDAAB>HEEHY>AKAPABC=>H=>K@BS>H=>Y@J>HEA>XHEAOJK>HR@JCC;A>AB?W@<BC=U>:;A>O@KK@D<BS>XKH==>XEAHCA=>HB>H=XAB?<BS>K<=C>@O>IHKJA=>RY>X@PWHE<BSAHX;>AKAPABC>C@>C;A>WEAI<@J=G>AtXAWC>O@E>C;A>O<E=CU ������������������� ��������� �������������������� !"��#$�!% !"�����&�'��(�#�) �*�+,-./0102/334530.67844-/6749:6;47<=>?8440,63;-/:6;404@4444+,-./014A7<:?B44444CC4D,-4.E.-F4.2.G.6;444444:+4A:H>B444444444CC4.I0.J;4;1.4+:-3;444444447<:?4H47<:K=?84CC40,GJ/-.4L:;14J-.E:,934.2.G.6;44M.6702/33NOPQROSTUVWQRXYQZ[V\VQROY\Z]XYZ\Q_VROSVQaOY\Z]XYZ\Q[XbVQ_VVYQP]ZZVYQZOQ\OUbVcY\ZVYd\QT]O_UVSQeXQUOfRQTghhUVQPZ[QibVQTVOTUVjQVXR[QPZ[QibVQ\VTX]XZVXZZ]_gZV\kjQZ[VQcf[ZQlgVVY\QT]O_UVSQeTUXRVQVf[ZQmgVVY\QOYQXQR[V\\Q_OX]nQ\OQZ[XZYOYVQRXYQRXTZg]VQVXR[QOZ[V]kjQXYnQVbVYQognOpgqr[VQ���sQtuvQ]Vmg]V\QXQwxyz{|}QROY\Z]XYZQZOQOYU~Q[XbVQXQ\STUVX]]X~QYXSVjQYOZQ[V]X]R[RXUQ]ViV]VYRVqQr[g\Q~OgQRXYYOZQg\VQXwxyz{|}QROY\Z]XYZQYQOYVQRUX\\QZOQROY\Z]XYQXYQX]]X~QYQ\g_RUX\\q���������!���� !"��!�����&�����! �(�����(�#NOPQRXYQ~OgQR]VXZVQXYQX]]X~QOiQ]XYnOSQgYmgVQbXUgV\Q�iQ~OgQZ]~QZOQSXpVQXQy{��|X]]X~jQVXR[QX]]X~QVUVSVYZQPUUQ_VQ]XYnOShVnQYnVTVYnVYZU~jQXYnQ\OQ~OgQX]VQXUSO\ZRV]ZXYQZOQfVZQ]VTVXZVnQbXUgV\q�OgQSX~Q_VQZVSTZVnQZOQg\VQXQROY\Z]XYZQ\OUbV]QZOQROSTX]VQVbV]~QVUVSVYZQPZ[QVbV]~OZ[V]QPZ[QYV\ZVnQwxyz{|}�UOOT\QX\Q\[OPYQYQoXSTUVQ�qs�qQr[\QR]VXZV\QObV]Q�j���YnbngXUQROY\Z]XYZ\jQP[R[QROgUnQ\UOPQnOPYQ\SgUXZOYq����������������� !"�(! �(������&�'��(�#�) �*�+,-./0102/334�6:�9.�2,L844-/674�:;4<��>?49/<��?8440,63;-/:6;404@4444+,-./014A9/<:?B44444444CC4D,-4.E.-F4.2.G.6;444444+,-./014A9/<�?B44444444:+4A:4��4�B44444444CC4.I0.J;4;1.47:/�,6/2344444444449/<:?4��49/<�?844CC40,GJ/-.4;,4,;1.-4.2.G.6;344M.6702/33�Y\ZVXnjQ~OgQ\[OgUnQg\VQT]ORVng]XUQROnVQPZ[QXQ[VUTV]QRUX\\QROYZXYYfQXQy{��|QbX]�X_UVQ\OQZ[XZQ~OgQRXYQ]XYnOShVQZ[VQ\XSVQbX]X_UVQObV]QXYnQObV]q

Page 100: SystemVerilog for Verification

������������ ������ �������������������� !"#�$"!%$������&�'��$�(�)! *�����"+,�*������,��((-./0012/34-56112/34-17891:;<=>1?/.6@34-./00-./001A899.@B38CD@E22/F6117891:;<=>1D/1:GH>611111II1E22/F1JK1D38CD@1?/.D@011KD3-98J31?J841L2@M2/34JN8O@611112/34-512-5611112-51P13@QRS61111KJ2@/-T1RD/:8>S17@U83111111/00@29R2-5V2/34JN8O@RSS6111111D/:8>1P12-5V?/.61111@3411@34KD3-98J3@34-./00WXYZ[\][[_ aX[bXcXad[]deZ\cf[ga[XY_hdXi[je[_j[cXXk[Z[]]\bc[lm[ce_nXa][Zo[ne][ka\pXa]i[qr\sr[aX[\c[ZrX[acbX[t[�[Z[uvwxy[qrXaX[uvw[z{of����������|�}"!%$��'��$��#�"��� ~�II1�2@/9@1D38CD@12/34JN1?/.D@01831/12/3U@1=<N/���-./001�/34-�/3U@6112/34-17891:��<=>1?/.D@6118391N/�M?/.D@611II1�/�8NDN1LJ0087.@1?/.D@11KD3-98J313@QR8391N/�M?/.D@1P1�=S611119T80VN/�M?/.D@1P1N/�M?/.D@611@34KD3-98J311-J3092/8391-MN/�M?/.D@1�?/.D@1�1N/�M?/.D@6�@34-./00 ������������������� ��������� ������������������������ �!�"������"�!#����""�$��%�&!'(&��)��&��*+,--./01234566,78..109.:,;<,66,7<-1=4>.:,;<?,+348..6,[email protected].,BF8.......GG.566,7.HI.301234.?,+34-..*H0-96,109.*<-1=4.J,[email protected]:,;<,66,7<-1=4FO8O..I30*91H0.04PL109.:,;<,66,7<-1=4QR>.:,;<?,+34QRM8....9S1-K:,;<,66,7<-1=4.Q.:,;<,66,7<-1=48....GG.TI.:,;<?,+34.1-.-:,++46.9S,0.,66,7.-1=4>....GG.,66,7.*[email protected],?4.@3U+1*,94->.-H.,@V3-9.:,;<?,+34....1I.L:,;<?,+34.W.:,;<,66,7<-1=4M......9S1-K:,;<?,+34.Q.:,;<,66,7<-1=48....4+-4......9S1-K:,;<?,+34.Q.:,;<?,+348..40@I30*91H0..GG.566,7.,BF.,++H*,[email protected],0@H:1=4LM>.I1++.PG301234.?,+-..I30*[email protected]<6,0@H:1=48....X,0@*X,0Y4.668....66.Q.04PL:,;<?,+34M8....IH64,*S.L,B1FM.A4Y10......,--469.L66K6,0@H:1=4LMM8......,B1F.Q.66K?,[email protected]@I30*91H0..I30*91H0.?H1@.@1-U+,7LM8....ZP6194L[\1=4D.]@D[>.,K-1=4LMM8....IH64,*S.L,B1FM.ZP6194L[]_@[>.,B1FM8....Z@1-U+,78..40@I30*91H040@*+,--abacdecfcgbhibfjcklfkcmeaecklacnopqrstuuvwcxyfeez����������{�|�'! ��}��/01234566,7�~����U6HY6,:.,39H:,91*.94-98../01234566,7.3,8..10191,+.A4Y10....3,.Q.04PL�EM8..............GG.566,7.-1=4.Q.�E....64U4,9.LNEM.A4Y10......,--469L3,K6,0@H:1=4LMM8..GG.�64,94.6,0@H:.,66,7.......3,K@1-U+,7LM8.............GG.�1-U+,7.?,[email protected]@40@U6HY6,:

Page 101: SystemVerilog for Verification

������������ ������ ������������������ ��!����"##�$��%�&���'()*+,-./,0112,3.,451631,7/839:81,5602.7,.;<143=>,-./,79?@3,451631,6,5602.7,6556-,.+@60281=A,B089C1,60,6556-,.+,9031?15=>,-./,0112,3.,688.4631,688,3@1,1817103=,;1+.51,560D2.79E639.0,6=,3@1,5602.7,=.8F15,01F15,4.0=35/43=,.;<143=A,*+,-./,@6F1,6,2-067946556->,688.4631,3@1,76G97/7,0/7;15,.+,1817103=,-./,76-,0112>,602,3@10,/=1,6,4.0D=356903,3.,51=9E1,3@1,6556-A,H,2-06794,6556-,.+,@60281=,460,517690,3@1,=671,=9E1,.5=@590C,2/590?,5602.79E639.0>,;/3,93,460,01F15,904516=1,90,=9E1AI��J'(������K��)L#MNL��!�('(�(�L)������#�������##�$OPQPRSTSQUVWXYZ[\]UU_abcPddUePfgZThiiaUUQPfgUjfTUkPchSaSfgbcPddbcPddUePfgWQQPlaUUQPfgUePfgZThiiUPQQPlmnaUUUUooUpqfrTUiqQsSTUQPfgtUUbqfdTQPjfTUbUuPQQPlvdjwSxyUjfdjgSUum_zVWXYZ[\]n{aU{UUihfbTjqfUfS|xyaUUUUPQQPlUUfS|mVWXYZ[\]naUUUooUWccqbPTSURP}jRhRUdjwSUUUUiqQSPb~UxPQQPlmjnyUUUUUUPQQPlmjnUUfS|xyaUUSfgihfbTjqfaSfgbcPddePfgWQQPlUQPajfjTjPcU�SsjfUUQPUUfS|xyaUUUUUUUUUUUUUUUUooU�qfdTQhbTUPQQPlUPfgUPccUq��SbTdUUPddSQTxQPvQPfgqRjwSxyyaUUUUooUePfgqRjwSUPfgURPl�SUd~Qjf�UPQQPlUUiqQSPb~UxQPvPQQPlmjnyUUUU�gjdOcPlxQPvPQQPlmjnvkPchSyaSfg�11,�1439.0,�A��A�,+.5,7.51,.0,6556-=,.+,@60281=A�����"L���N�IL��M'M)��(�(#�L�����)��IN(��#����(�(#�L���B:,/0398,0.�>,-./,@6F1,=110,63.794,5602.7,3560=6439.0=A,�./,@6F1,8165012,@.�,3.76C1,6,=90?81,5602.7,;/=,3560=6439.0>,6,=90?81,013�.5C,:64C13>,.5,6,=90?81,:5.41==.590=35/439.0A,�@9=,9=,6,?..2,=3653�,@.�1F15>,-./5,<.;,9=,3.,F159+-,3@63,3@1,21=9?0,�.5C=�93@,5168D�.582,=397/89A,H,;/=,76-,@6F1,8.0?,=1�/1041=,.+,3560=6439.0=,=/4@,6=,��H3560=+15=,.5,464@1,+988=A,�13�.5C,356++94,4.0=9=3=,.+,1G310212,=1�/1041=,.+,:64C13=,6= ���������������� ������ ������� ������� ������ ��������������� ������! �"� #����$�%!�&� ���& %�'�( $���"�"�&����"�����)�*!����+ � �$��������'�!��� �,�-!�) ���!��+�. �" '�'�' ��� ���+����! �*��� "�&��+��+ �)�" �*�!�!��#��� �)����$�/01#���'�$���"���� !!�'��+��"� !�,�2 � !����(��!����)�������� ��������� �������3 ����������)������*��+ � ��) ��!���,45675689:89;<=>?8@A:ABC;<B8D>;E8F>G;<BHI+ � ��� ���&������)! �� �����! ����*�! ��� "��!����)������������+�. ���������)�( � !�#��!�%�� ���� ��*�����!��"���.��� ������� ��*!���'! .������!����)�����,�I+ �)������(+��)����!������%����!����)��������! ' ����+ �'! .�����)�����"$���)+������&!�� $J�K��*��+ ���� $���"�������� ��+ �'! .�����" �����������""! ���'���������)! � ��,�L��)����� ��+ �M0NOP1QRS0TUVW�*��)����������3 ���)�'���*��+ �( � !�� "��!����)����*�!��� �%���+ �� X��)�������1QRS0TUVWYZ,I+����)+ � �&�!3��& ���*�!������ !�)�� ��%���( ���������!��%� �&+ ������� "���*�!#��������%�����+ � ���! �� [� �) ��+ �"��*���� ,�\�!� X��'� $��+ �] I������ "���3��&��+ �� �(�+��*���� [� �) ��*�� �&�!3��!����)������% *�! �������!��,45675_8C:aGAbcA:?A8I+ �� X��&������( � !�� ���� [� �) ��*��!����)���������%������(��+ �!��"� [� �) )����!�)�����d��� �e !���(,�f��+�1QRSNWghWRiWj�����" �)!�% ��+ �(!����!��*��+ �!����)����$�����(��������X�������!����kl\�mk�)3��#l��!�\�!�n,oC=pqA845478r<==C:a8sA:ABC;<B8cG>:s8tuvwxyz{yv|y}v}~}u���y�}v����t��}v~�}����}�����}�����y�}v����tuvwxyz{yv|y��x~tyu��������x~tyu�����|���tyuw�����������������������}��tyuw�������������������������y��tyuw������������|���tyuw�����|���tyuw�~ux��������������������������|���tyuw�~ux�����|���tyuw��������y��tyuw������y��tyuw�~ux��������������������������y��tyuw�~ux������y��tyuw�������}��tyuw������}��tyuw�~ux�������������������������}��tyuw�~ux�����}��tyuw�����yvwxyz{yv|y��yvw������tyvw~ux��|���tyuw�~ux�������yvw~ux�

Page 102: SystemVerilog for Verification

������������ ������ ���������������������� �!���!�"#��$��$����%�&'()*+��,�&'()*+�$���-���. /��0123()*45673()*45�8��+)+3()*4��9/�����%8��!�"#��$�����.������%8��:��.$;!8����9/��0123()*4���-���/�!���<�.�/ �8=�>5�673()*4�/�!� <.$�� /��<�.�/ ���%�!8�.! <.$���!��.;��:� 8�-��$/8!����!�0123()*4��9/����-���+)+3()*4�.!��8! ��.;��:� 8�-�$/8!��5�<. /���<�.�/ �8=�?�,0123()*4�$���-���. /�����!.�����$���� 8� /��0123()*43'*&@5�8����$���� 8� /�� �!;=8��8<�%�-:���8 /���0123()*4��,!�����!#� 5� /�� �!;�.!���<�:!�$����%�� ����! �8�$�5��%��8!!.-�:����:� .��!�A���-.���%B�� ����8=�(*C4&)DE)C0)�.!� /� �. �.!���8$�%#����$8%����%�:8#�$���%�-#�. �-:�! ���.��� /8#�/� /���F�$# .8�5�8���%%.���G46&HI*J�! � ���� !��K/���:8#�$���(*C47+6L)MN�=8�����8-O�$ 5�. ��. /�������<8�;!�8������=�.�!5�-# �:8#�$��P �!��� /��! ��! �;��� 8��� � 8�����!#� �9/��������!�B�������8-���!�<. /�#!.���(*C4&)DE)C0)��9/��$8%�� 8������� �� /�!�"#��$��.!�!����� ����%���B��:�%.==���� �! :���=�8�� /��$��!!�!�<. /�%� ����%�$8�Q! ��.� !�#!�%�-:� /��!�"#��$����8�.=�:8#�#!��-8 /�(*C47+6L)MN���%�(*C4&)DE)C0)5:8#�/�B�� 8���! ��� <8�%.==���� �=8��!�8=����%8�.R� .8���S8���!��.8#!�:5�.=�:8#�<�� 8��8%.=:���!�"#��$�5����/��!� 8��%%�����<�-���$/�8���$ .8�5�:8#�/�B�� 8��8%.=:� /�8�.�.����!�"#��$��$8%���T8#�$��P �O#! ���;������F ��!.8���,!�:8#�<.���!���.��U/����V5:8#�$����F ��%���$��!!� 8��%%���<�$8%�5�%� �5���%�$8�! ��.� !�<. /8# �/�B.��� 8��%. /��8�.�.����$��!!�WXYZX[\] _ab\cdde\af\ghijklm9/����! �=8���8=������� .������%8��!�"#��$�!�.!� 8����%8�.R������� .�������:�8=8-O�$ !��T8#�$���$��� ��$8�! ��.� !� /� ���=��� 8� /�����B.8#!���%���F �8-O�$ !�.�� /�����:5���%� /���:! ��n��.�8��!8�B���!8�B�!�����$8�! ��.� !�!.�#� ���8#!�:���.�$�� /��� .���!�"#��$��.!������� �%�� �8�$�5�:8#�$��� /����F ��$ �.�=8��� .8��!#$/��!� /� 8 ����#�-���8=� ���!�$ .8�!�8����$/�$;!#��8=�����%� ��B��#�!�-�=8��� /��=.�! � ���!�$Q .8��.!�!�� ��,� ���� .B��:5�:8#�$���-#.�%���!�"#��$��=8����oS,� ���!=��� /� �.!$8�! ��.��%� 8�-���F�$ �:�>5����-: �!5���%��� � /��!8�B����.$;� /���.�/ ��#�-���8= ���!�$ .8�!� 8����$/� /� ��8���WXYZXZ\pabhq_q_r\sjtuj_kjmT8#�$���$8�-.����#� .����!�"#��$�!� 8�� /��� 8���;�����8�������.! .$�=�8<�8=� ���!Q�$ .8�!��v8���F�����5�=8������ <8�;�%�B.$�5�:8#�$8#�%���;��8���!�"#��$�� /� ��!��-��!�%8<��8�%.����Q��.�5���!�$8�%� /� �.!�B.�<.�����<�-�����5���%��� /.�%� /� �.!�� ��.���!.�����$/���$ ��!�.� 8�<�-Q-�!�%�=8���9/�� �$/�."#�!� 8�$8�-.��� /�!�=�8<!�.!�-�:8�%� /��!$8���8=� /.!�-88;5�-# �:8#�$����������8���=�8�� /��nSS5��!%�!$�.-�%�.��w�����8��� �����x���?y� ������������ �� ����������������������� !"�#$!%��&$'�()&�*+�� !%,!%-�� )��� !"�#.$/+""�!"�)�-.+)��0)&��$�/.+)�+�1$%-"�.+)("�$2�.)%3$(�!%#'��!%�$�&$'.�3+"!-%4�5.�&$'�()&�� !%,�� )��� !"�!"�)�1$��$2�0$.,!2�)11�&$'�0)%���$�3$�!"�$//)"!$%)11&��$�(),+�)�.)%3$(�3+/!"!$%�!%�&$'.�/$3+4�6$'()&�#.+2+.�)�"+��$2�#.$/+3'.)1�"�)�+(+%�"�� )��&$'�/)%�"�+#�� .$'- �'"!%-�)�3+*'--+.4�������7�����89�:������;<=>?<@A6$'�/)%�'"+�;<=>?<@A��$�(),+�)�0+!- �+3�/ $!/+�*+�0++%�"+B+.)1�)/�!$%"C�0!� $'� )B!%-��$�/.+)�+�)�/1)""�)%3�!%"�)%/+4�D)(#1+�E4EF�/ $$"+"�$%+�$2�� +�� .++�*.)%/ +"*)"+3�$%�� +�0+!- �4�D&"�+(G+.!1$-�)33"�'#�� +�0+!- �"�HIJKJI�L�I�MC�/ $$"+"�)B)1'+�!%�� !"�.)%-+C�)%3�� +%�#!/,"�� +�)##.$#.!)�+�*.)%/ 4�N +�*.)%/ +"�).+�%$��$.3+.3+#+%3+%�C�� +�0+!- �"�/)%�*+�B).!)*1+"C�)%3�� +&�3$�%$�� )B+��$�)33�'#��$�I��O4P��Q�R�������������9�������S:�T�UVWXYVZ[�����\]UVWX _UVWa[bWbcbVdef[abWeebWced[WgeeUVWXYVZ[eeeehied[Weje\]UVWX _UVWa[klmenogeeppehlqielmehmeUeneeeeried[Weje\]UVWX _UVWa[ksmetogeepperlqiesmeumeUeteeeehied[Weje\]UVWX _UVWa[kvmewogeeppehlqieveUewee[WXYVZ[ee\XbZxdVykzd[WjqlXzmed[Wogee[WXN +{|;<=>}~�;<=�A�2'%/�!$%�.+�'.%"�)�.)%3$(�%'(*+.�!%�� +�"#+/!2!+3�.)%-+4�6$'/)%�"#+/!2&�� +�).-'(+%�"�)"�H1$0C� !- M�$.�H !- C�1$0M4��2�&$'�'"+��'"��)�"!%-1+�).-'�(+%�C�D&"�+(G+.!1$-��.+)�"�!��)"�H�C� !- M46$'�/)%�0.!�+�D)(#1+�E4EF�'"!%-�)�/1)""�)%3�� +�;<=>}~��A���2'%/�!$%4��$.�� !""()11�/)"+C�� +�55��B+."!$%�!"�)�1!��1+�1).-+.4��$0+B+.C�!2�� !"�0+.+�#).��$2�)�1).-+./1)""C�� +�/$%"�.)!%��0$'13�*+�($.+�/$(#)/��� )%�� +�+�'!B)1+%��;<=>?<@A"�)�+(+%�4

Page 103: SystemVerilog for Verification

������������ ������ ������������������� !���"#�$%"&#'� "�(�$��&&)*+,,-./012,34--5+06-203-*/04--)70,35+203-)-----8*/0-62,3-89:;<=-;>-?@-9A;B=-;>-C@-9D;E=-;>-?F4-F/06)*+,,./012,3-*/01420232+*-G/H20--*/01->-0/IJK4--+,,/53-J*/01L5+067M2N/JKK4--O62,P*+QJRST7,/-*/0>U:6R@-*/01L*/0K4--/06VWXYZ[\]_ZabcdaefZ]\ZgWhYZX]ii]j[klZlWZWmYhh]XYZnXZgWX]ioZlpnZhnXWgZjWq\lhn]l\rZspYZWkoZtnoZlWZgWX]ioZlpYZhnXWgZhY\[kl\Z]\ZlWZhYth]lYZlpYZjWXYZWhZ[\Ymnh]nukYZtY]_pl\rvYZjnhYi[kZ[\]_ZabcdaefwZn\Z]lZXWY\ZWlZkYnmYZnoZlhnjx\ZuYp]XrZyWhZYzng{kYwZoW[jW[kXZ[\YZ]lZlWZXYj]XYZtpYlpYhZWhZWlZlWZ]|YjlZnZYhhWhZ]ZnZlhn\njl]WrZspYZ{hWukYgZ]\lpnlZlpYZXWt\lhYngZlhn\njlWh\ZnXZ\jWhYuWnhXZYYXZlWZxWtZWiZlp]\ZjpW]jYrZspYZuY\ltnoZlWZ]iWhgZlpYgZtW[kXZuYZlWZ[\YZnZmnh]nukYZ]ZlpYZlhn\njl]WZWhZYm]hWgYlr}WtYmYhwZ]iZoW[ZnhYZ_W]_ZlWZjhYnlYZnZmnh]nukYZlpnlZ]\Z{nhlZWiZlpY\YZjkn\\Y\wZoW[ZjW[kXpnmYZgnXYZ]lZnZhnXWgZmnh]nukYZnXZ[\YXZjW\lhn]l\ZlWZjpn_YZ]l\ZuYpnm]WhZ]ZX]iiYhqYlZlY\l\r��~������ �( "������$ & %"��'���� #��abcdaef�W[ZjnZ[\YZabcdaefZtpYZoW[ZYYXZlWZjhYnlYZnZXYj]\]WZlhYYrZ�ng{kYZ�r��Zpn\Z|[\lltWZkYmYk\ZWiZ{hWjYX[hnkZjWXYwZu[lZoW[ZjnZ\YYZpWtZ]lZjnZuYZYzlYXYXZlWZ[\YZgWhYr ���������������� ��� ��������������������� !���"�#�$�% ������&��'�()*+,)-./*/0/)123.4/*225526.7.12822()*+,)-.22229*.:;(/0.:;0<2+9:9*.:;(/0.=>?22229*.:(.)+:;0<22+9:9*.:(.)+=>?2222-.@:;(/0.:;0<2+9:-.@:;(/0.=>?2222-.@:(.)+:;0<22+9:-.@:(.)+=>?22.*+,)-.22.*+5526.7.12A0)-B2+9:9*.:;(/0.?22()*+,)-.2222C.C:;(/0.:;0<2+9:C.C:;(/0.=>?2222/9:;(/0.:;0<22+9:/9:;(/0.=>?2222,D4:;(/0.:;0<2+9:,D4:;(/0.=>?22.*+,)-..*+0)-B0)-B2+9:9*.:(.)+?22()*+,)-.2222C.C:(.)+:;0<2+9:C.C:(.)+=>?2222/9:(.)+:;0<22+9:/9:(.)+=>?2222,D4:(.)+:;0<2+9:,D4:(.)+=>?22.*+,)-..*+0)-B��E��F� "%��GH�I���J� ����%�$KLMNOPQRLSNTUNVWUXYSZYOT[L\]NQNX_YNLQYN_PQRNWLaONXYUXbYQc_NRYdYQRUNLQNPQaQcLOOY[PXYRNUXOYPSNLeNOPQRLSNfP[aYUNXLNcOYPXYNUXTSa[aUNdPXXYOQUNX_PXN\LNbYWLQRNPQWRTOYcXYRNXYUXgNQNX_YNLX_YON_PQRNWLaNQYYRNXLNOYdYPXNX_YNdPXXYOQUNLfYONPQRNLfYONRaOTQ\RYba\NLeNPNdPOXTca[PONXYUXNYfYQNTeNX_YNRYUT\QNPQRNXYUXbYQc_NSPhYNSTQLONc_PQ\YUg��E��E��i$�H"%�� "%��GH�I���J� ����%�$ZYOT[L\NaUYUNPNUTSd[YNjklmNX_PXNWLaNcLa[RNPccYUUNMTX_NX_YNnopqrstNeaQcXTLQgNu_Y\YQYOPXLON_PUNPQNTQXYOQP[NUXPXYNX_PXNWLaNcPQNUYXNbWNdOLfTRTQ\NPNUYYRNXLNnopqrstgNv[[wxxxyz{|}ycLSd[TPQXNZYOT[L\NUTSa[PXLOUNaUYNX_YNUPSYNP[\LOTX_SNXLNcP[ca[PXYNfP[aYUgNVPSd[YN|g|~NU_LMUNPNUTSd[YNjklmNQLXNX_YNLQYNaUYRNbWNVWUXYSZYOT[L\gNu_YNjklm_PUNPN{�ybTXNUXPXYgNuLNcP[ca[PXYNX_YNQY�XNOPQRLSNfP[aYNU�aPOYNX_YNUXPXYNXLNdOLRacYNP|}ybTXNfP[aYNXPhYNX_YNSTRR[YN{�NbTXUNX_YQNPRRNX_YNLOT\TQP[NfP[aYg

Page 104: SystemVerilog for Verification

������������ ������ �������������������������� !"#�$!"��$ �%�#�&�$�#�'"#()*+,-./01+2343)+5+-678.6-9:;<=>?@AB3CDA+ED*CB+,-./01+FGH(4AIDF>++ED*CB+,;-/01+2;9>++2;9+5+2343)+J+2343)>++2343)+5+K2;9+LL+.;M+N+2343)>++FGH(4AIDF+5+2343)>)AI?@AB3CDAOPQRSTURVWWRXPYRZX[VRV[\]WRSP_WR]P_QSWVRTRVZWT\RPaRbTQWVRZXTZRVWW\RTU_P\cRdQZSTURdWRW]WTZW_RdeRQV[UfRZXWRVT\WRVWW_RbTQWgRheVZW\iW[PfRSTVR[ZVRjklmRZPRfWUnWTZWRTRUWYRbTQWRaPRopqrstuvwxyRTU_Ropqrzp{wg��|��}�~�$!"���'�%���'����� �'�������$�#�'"#�iW[PfRXTVRTRV[UfWRjklmRZXTZR[VRQVW_RaPRZXWRWUZ[WRV[\QTZ[PUgR�XTZRYPQ_RXT]]WU[aRheVZW\iW[PfR�W]ZRZX[VRT]]PTSX�R�WVZdWUSXWVRPaZWURXTbWRVWbWTRVZ[\QQVRfWUWnTZPVRQUU[UfR[UR]TTWcRSWTZ[UfR_TZTRaPRZXWR_WV[fURQU_WRZWVZgR�aRZYPRVZWT\VRVXTWZXWRVT\WRjklmcRZXWeRWTSXRfWZRTRVQdVWZRPaRZXWRTU_P\RbTQWVg��& #���������#�$&�����$&���#�$!"��&�$�#�'"#�UR�[fQWR�n�cRZXWWRTWRZYPRVZ[\QQVRfWUWTZPVRTU_RTRV[UfWRjklmR]P_QS[UfRbTQWVpc�czcRWZSgR�wq�RXTVRZYPRTU_P\RPd�WSZVcRTU_RVPR_Q[UfRWbWeRSeSWcR[ZRQVWVRZY[SWRTV\TUeRTU_P\RbTQWVRTVR�wq�gR�R]PdW\RSTURPSSQRYXWURPUWRPaRZXWRSTVVWVRSXTUfWVg�wq�RfWZVRTURT__[Z[PUTRTU_P\RbT[TdWcRTU_RVPRSPUVQ\WVRZYPRTU_P\RbTQWVRWbWeZ[\WR[ZR[VRSTW_gRBE422+�)A.>�(4A24B3CDA+3(>?D()�)(+�KCA3.�B�M3(�(4AIDFC�)KM)AIBE422 BE422+�)A6>�(4A24B3CDA+3(.�+3(6>?D()�)(+�KCA36�B�M3(.�(4AIDFC�)KM>3(6�(4AIDFC�)KM>)AIBE422++���  ¡¢£¡¤¥¡¦§ ©ªBE422+�)A.>�(4A24B3CDA+3(>?D()�)(+�KCA3.�B�M3(�(4AIDFC�)KM)AIBE422 BE422+�)A6>�(4A24B3CDA+3(.�+3(6>?D()�)(+�KCA36�B�M3(.�(4AIDFC�)KM>3(6�(4AIDFC�)KM>)AIBE422++���  ¡¢£¡¤¥¡¦§ ©ª ���������������� ��� ������������������������������������ ������!�"�!���#$%&'())*+(,$',$(-./&'0$/'1(23/&'3&/4'-+0'+-25'65'789:'630'(2&+'65'789;<=%.3*/'>?@ABC-'D5&0/EF/*%2+.G'0$/*/'%&'('&/)(*(0/'HIJK'L+*'/1/*5'+6M/,0'(-4'0$*/(4B'N$(-./&'0++-/'+6M/,0'4+-O0'(LL/,0'0$/'*(-4+E'1(23/&'&//-'65'+0$/*&'<=%.3*/'>?PAB���������Q�R�S��������� �T������������S����UV�W��XY�XZ�[�� �T�R��U�!��\��� �]�����W�W�!�R�� ���C-'D5&0/EF/*%2+.G'/1/*5'+6M/,0'(-4'0$*/(4'$(&'%0&'+_-'HIJK'(-4'3-%3/'&//4B'a$/-('-/_'+6M/,0'+*'0$*/(4'%&'&0(*0/4G'%0&'HIJK'%&'&//4/4'L*+E'%0&')(*/-0O&'HIJKB'#$3&'(&%-.2/'&//4'&)/,%L%/4'(0'0$/'&0(*0'+L'&%E32(0%+-',(-',*/(0/'E(-5'&0*/(E&'+L'*(-4+E&0%E323&G'/(,$'4%&0%-,0Bbcdeefghijklmdiedbnopifnmdqfnmrkspmhthmfuvoinjwbrxnmdwmdiypzo{hvxknmrwmdiypzo{hvxkhiybcdee bcdeefghi|klmdiedbnopifnmjqfnm|kspmhthmfuvoin|wbrxnmjwmdiypzo{hvxknm|wmdiypzo{hvxkhiybcdee}~��~��~� �~��~��~�����bcdeefghijklmdiedbnopifnmdqfnmrkspmhthmfuvoinjwbrxnmdwmdiypzo{hvxknmrwmdiypzo{hvxkhiybcdee bcdeefghi|klmdiedbnopifnmjqfnm|kspmhthmfuvoin|wbrxnmjwmdiypzo{hvxknm|wmdiypzo{hvxkhiybcdee}~��~��~� �~��~��~�����bcdeefghijklmdiedbnopifnmdqfnmrkspmhthmfuvoinjwbrxnmdwmdiypzo{hvxknmrwmdiypzo{hvxkhiybcdee bcdeefghi|klmdiedbnopifnmjqfnm|kspmhthmfuvoin|wbrxnmjwmdiypzo{hvxknm|wmdiypzo{hvxkhiybcdee}~��~��~� �~��~��~������� ������bcdeefghijklmdiedbnopifnmdqfnmrkspmhthmfuvoinjwbrxnmdwmdiypzo{hvxknmrwmdiypzo{hvxkhiybcdee bcdeefghi|klmdiedbnopifnmjqfnm|kspmhthmfuvoin|wbrxnmjwmdiypzo{hvxknm|wmdiypzo{hvxkhiybcdee}~��~��~� �~��~��~������� ������

Page 105: SystemVerilog for Verification

������������ ������ ����������������������� �����!�"!���#�$��������$���%�!�$�����&�'��#���(�)'���* !�����+��&�"!�� % !�$������#�����"�&���#��"��!���!�"!���#��!��������!��� ,,����!������&'�%��"(�-� "�#������'����,��"!��! ��� ,��������� ��!���& ��%���,������� �����./-�,� %+���$�����!���!�"!���#�����%������#���!�"�!���"�&��"! &�%�"(�0���#���& � & 1��!���,,�#!��,�#����&�� , #�! ��"������� ���������*���2�#!"����!�����"��,!����3 "! ������"(4�&5%��6(67�"��*"������! ���,��&�!�"!���#��!��!�#��"!��#!"���2�#!"$��������"�!��&� �5���%%�%�!�����"(89:;<=>?@?A>B=CD>EFG=>H=IFJ=>:FGKIKE9DKFLMNOPQRSOTUSRVTWNRXVYZ[TT\PR]_OT_OaT_Ob[TT_OTcTO_dYZ[TT_ObTcTO_dYZ[TTMSefTTTT_OgeNOYZ[TTTT_ObgeNOYZ[TThSRO_OVMNOPQRSOTiTWNRXV4�&5%��6(jk����"�����*�������!��$��������"� !� ������*�!�����(�-�����*���2�#!� "�#��+"!��#!����,!���!����3 "! ������"$�����!�����*�!������ "�"5�*�����,!���!����%�����"(89:;<=>?@lm>B=CD>EFG=>9ID=J>:FGKIKE9DKFLMNOPQRSOTUSRVTWNRXVYZ[TT\PR]_OT_OaT_Ob[TTnQo]_OTn_O[TTTTTTTTTppTq_dTrstT_O_enQSeTT_OTcTO_dYZ[TT_ObTcTO_dYZ[TTO_d]_OTcTO_dYZ[TTTTTTppTuSOvQeNPQTO_dTSWh_PQTnMQ_eTSXVTSO_vTTMSefTTTT_OgeNOYZ[TTTT_ObgeNOYZ[TTTTO_d]_OgeNOYZ[TTTTTTppTw\ndOTO_dTQxe_nVTnMQ_eTSXVTSO_vTThSRO_OVMNOPQRSOTiTWNRXVy,�#���"���"���*�#���� "������$�����&�����!������%��!��z��5�!��������&�"!���&"�!��"�&���"�!����%�����"$���!�����& ��!������%��!��5�"!5����!�������" ���%��" ����,,�#!",��&�!��"��#�����"( ��������������� ������� ��������������� !"#$!�%��&#'()�*#��+,-./01234,3-0423-15-6172-89:-31-3;<3-.<-3=;->1,5.?7243.1,-15-@13=-3=;.,3;2,4A-89:-<;33.,?<-4,B-3=;-<6<3;/-3=43-<72217,B<-.3C-+<-B;<>2.@;B.,-D;>3.1,-EC�C�F-6172-3;<3<-<=17AB-24,B1/.G;-3=;-;,H.21,/;,3-<1-3=43617->4,-@;->1,5.B;,3-.3-=4<-@;;,-3;<3;B-.,-4<-/4,6-/1B;<-4<-01<<.@A;CD4/0A;-ECI�-<=1J<-=1J-31->2;43;-4-24,B1/-3;<3@;,>=->1,5.?7243.1,4,B-/1B.56-.3<-2;<7A3<-4<-,;;B;B-43-3=;-3;<3-A;H;AC-:=;-KLMNOPQ->A4<<-B;<>2.@;<-3=;>1,5.?7243.1,-512-4-RS0123-T3=;2,;3-<J.3>=C-U3-.<-.,<34,3.43;B-.,-4,-;,H.21,/;,3->A4<<FJ=.>=-.,-372,-.<-7<;B-.,-3=;-3;<3C-:=;-3;<3-1H;22.B;<-1,;-15-3=;->1,5.?7243.1,-H4A7;<F;,4@A.,?-4AA-R-0123<CV��WX!������Y*Z!)�!*�[\#*$Z�$��&#'()�*#���$X�[[] _ abcde]fghaai_jkalmcanaopqramjesbhaaaaaaattauvicasbkamjacbcaai_jkalmcanwxpqray_]e_kkinwrhaattaz{|a_kkib baai_jkalmcanaopqrame}qqhaaaaaaatta}qqylayvkbaai_jkasmjcaisjefviejefi_ybhaaatta~afi_ybamjacbcaatta�vi]bavyba_kkialmca�dbjaisjjmjgamjasjm]_cayvkbaa]vjci_mjcav]_esjm]_ca�aaaafvib_]da�y_]e_kkinmr�aaaaaay_]e_kkinmrnw}pwqra��a��lqqhaa�aa]vjci_mjcaib_vj_lba�aaaaaaatta�mymcacbcabjgcdaaaaisjefviejefi_ybamjmkba�n}p}qqr�haa�bjk] _ apabcde]fg:=;->1,5.?7243.1,->A4<<-.<-7<;B-.,-3=;-��������K�L->A4<<-B72.,?-<;H;24A-0=4<;<C-:=;>1,5.?7243.1,-.<->1,<327>3;B-.,-3=;-��������K�L->1,<327>312F-@73-,13-24,B1/.G;B7,3.A-3=;-QK�NOPQ-0=4<;C-:=.<-4AA1J<-617-31-372,->1,<324.,3<-1,-4,B-155-@;512;-��������K��-.<->4AA;BC-+53;2J42B<F-617->4,-1H;22.B;-3=;-?;,;243;B-H4A7;<-@;512;-3=;�����-0=4<;->2;43;<-3=;-H.2374A->1/01,;,3<-4217,B-3=;-89:C

Page 106: SystemVerilog for Verification

������������ ������ ����������������� !�"!#$��#%!&'#��#(�)!(*�&�#"'��+'#,!$ &�(!'#-./0012345673893:;119:<=->?1->?;119:<=06-1?93@AB;119:<=8551C64@AB;11>D3-:573139EFG;1111->?1H139EFG;11111111111111II1J730:6D-:1:<91->?1193C>D3-:57311>D3-:5731475C1?93=->?;1111/0096:F->?K6/3C785L9FGG;11II1M/3C785L91:<91->?1193C>D3-:57311II1N0916/3C781-73>5?D6/:5731:71OD5.C1:<919345673893:11>D3-:5731475C1OD5.CFG;1111>769/-<1F?93@5BG1111115>1F->?K53=D09@5BG1O9?5311111111?93@5B1H139EFG;11111111C64@5B1H139EFG;111111115>1F->?K50=PQQ@5BG11111111111C64@5BK09:=0R99CFPQQG;1111111193C111193C>D3-:57311:/0S16D3FG;1111>769/-<1F?93@5BG1111115>1F->?K53=D09@5BG1O9?5311111111II1T:/6:1:<91:90:O93-<1:6/30/-:76011111111?93@5BK6D3FG;11111111KKK111193C1193C:/0S11:/0S1E6/R=DRFG;1111II1U7:1-D6693:.V1D09C1193C:/0S93C-./001W12345673893:XYZ[\Z]_ a_b[a][cdebbZb[bfcY[eb[ghijklm[e_\[ghijnoo[epZ[_a[bYaq_rsaq[taf[YeuZ[edd[YZ[cavwa_Z_b[a[xfd\[e[Zby[qYcY[b[\ZbcpxZ\[_[e[wpazpevxdac{r[XYZ[Zb[_be_eZb[YZ[Z_upa_vZ_[cdebb[e_\[YZ_[pf_b[ZecY[bZwr ��������������� ������� ���������������� �����!�"!�#" $%�&�$'(��)($* %#&�! ($+,-.,/0123425116789,-70372137851197929/:1;3.9711113781<173=>?51111@@1A-742,BC213789,-703721111378D.37ECF.51111@@1A,3/231,/7G-01C-7F9.B,/29-71111378D;B9:G>?51111@@1HB9:G12I312342;37CI13789,-703721111378D,B7>?5111111@@1JB712I3123421111378D=,/+EB+>?511@@1A:3/71B+1/F23,123421K1,3+-,2111137G37G+,-.,/0LMNOPQROSQTUOUMOMVWXXYZWOU[WOXQTZMPO\MT]YNXQUYMT_OWX[QaOUMOXWQ\[OQO\MXTWXO\QaWbc[WO]MddMSYTOUWaUOXQTZMPYeWaOU[WO\MT]YNXQUYMTO\dQaaOQTZOU[WTOWTQfdWaOQddOU[WOMXUab����������g�� �����!�"!�!h�!�(i�&& '�"�&�$'(��)($* %#&�! ($+,-.,/0123425116789,-70372137851197929/:1;3.9711113781<173=>?51111@@1A-742,BC213789,-703721111378D.37ECF.51111@@1A,3/231,/7G-01C-7F9.B,/29-71111@@1j83,,9G31,/7G-0197kB431l12B,71/::1m1+-,241-71111378DCF.D97EB431<1mn;oooo51111378D;B9:G>?51111@@1HB9:G12I312342;37CI13789,-703721111378D,B7>?5111111@@1JB712I3123421111378D=,/+EB+>?511@@1A:3/71B+1/F23,123421K1,3+-,2111137G37G+,-.,/0 pMUY\WO[MSOYTOqQP dWOrbs�OQddOWTWXQUMXaOSWXWO\MTaUXN\UWZ_OfNUMTdROQO]WSOSWXWOXNT_OZWWTZYTOMTOU[WOXQTZMPO\MT]YNXQUYMTbOt]ORMNMTdRO\MTaUXN\UWZOU[WOWTWXQUMXaOU[QUOQXWOYTONaW_ORMNOSMNdZO[QVWOUMaNXXMNTZOQTROXW]WXWT\WOUMOuvwxyzOSYU[OQOUWaUOM]Oyw{|}vxyz_OMU[WX~SYaWORMNXOUWaUfWT\[OSMNdZO\XQa[OS[WTOYUOUXYWZOUMOXW]WXOUMOU[WOTMTW�YaUWTUOWTWXQUMXbc[WOW�UXQOPWPMXROUQ�WTONOfROU[WaWOWTWXQUMXaOU[QUOQXWOTMUONaWZOYaOQOaPQddOXY\WOUMQRO]MXOQOPMXWOaUQfdWOUWaUfWT\[b

Page 107: SystemVerilog for Verification

������������ ������ ���������������� ��!"#$%&'(%)*(%+,-.%/'&0)10&-%2&.%)+%3(,('&)(%)*(%$)145-5$%,((6(6%)+%7('18.%&%0+4/-(96($13,:%;.$)(4<('1-+3%+88('$%4&,.%2&.$%)+%0'(&)(%&%'&,6+4%$)145-5$%&,6%)*1$%0*&/)('/'($(,)$%4&,.%+8%)*(%&-)(',&)17($:=%)($)%,((6$%)+%>(%8-(91>-(?%&--+21,3%.+5%(1)*('%)+%5$(%)*(%7&-5($%3(,('&)(6%>.%6(8&5-)+'%)+%0+,$)'&1,%+'%+7(''16(%)*(%7&-5($%$+%)*&)%.+5%0&,%'(&0*%.+5'%3+&-$:%=-2&.$%/-&,&*(&6%2*(,%0'(&)1,3%.+5'%)($)>(,0*%>.%-(&71,3%$588101(,)%@*++A$B%$+%)*&)%.+5%0&,$)(('%)*(%)($)>(,0*%8'+4%)*(%)($)%21)*+5)%4+618.1,3%(91$)1,3%0+6(: ����������� ��� ������������������������ �������������������� �����!�"#���$����%&$'�$!��'�$(�����%��'�%')���&�! �������!�'%*+$��,�$%�����%&$'�$!�'%�!�����-�'���&$�&��������-�$��#�!�'���&�.�/�����$!�����������'�$($�-�$!!$*#������$��0��$�%&�123�#!$�&�4546478�����7897:;�+�%')! ���#!�����%''�!$%���&��������'%��$�#%#!��!!$&�*����!����*���.�2%�!�$*#���������'��')����!��+�%')! �-%#���!�+��'��#!�!�*��-�������!�%<��=�'#�$%� ������#��$�&�$����������.�>%!��+�%')!�$��-%#���!�+��'����($�%�*��������*%�������$���������!�'�%�������#��$�����$��%���������.2���?-!��*0��$�%&�!'���#����$!��������<<$'�'%�������'�%%!�!���$'����������#�!���=�.@%#�'���#!��������'��$"#�!�$����$!�'��������%�'%���%������������!�������#!�-%#���!�+��'�.A�'��%<����!��������!�'%**#�$'���!��$���$�!���$&�+%�!.����B$&#����,C �����&������%���!!�!�����!�$*#�#!��%������&���.�2�����($�%�*����'��!!�����!��%�)�%�����������&��,����%��'%*�����!���������������������!��%<�������!�+��'��������!��%����*$����.�2�$!�$!�%����$���$������%'�!!�'%**#�$'��$%��D�E�F�'%�!��#'�!�!#'���!�����!��������0��$�%&�(���! ��(����'%���%������9746�!����*���! ���������?-!��*0��$�%&�*�$�+%=�!����!�*���%��!.CC2���?-!��*0��$�%&�31>�#!�!�G������H�����G��%'�!!H�$����'���&��+�-.�2������*�G��%'�!!H�$!�*%!��'%*,*%��-��!!%'$������$���I�$=���%'�!!�! �$����$'����'��'%���$�!�����%&��*��#��$�&�$��$�!�%���*�*%�-�!��'�.2�����!������$&����$&�����%'�!!�!������*�-�!�����'%**%��'%�������*�*%�- �����'%�!#*��<���<�������,!%#�'�!���������-�$'�����%'�!!.�2�$!�+%%)�#!�!��������*�G������.H�J%��(�� �G$������%'�!!�'%**#�$'��$%�H$!�!#'����'%**%�����*������$��$!�#!���$����$!�+%%).

Page 108: SystemVerilog for Verification

����������������� ��� ���������������� ������ ������������ �!�"#$�%&'��%(��)%*�%#�$+)&,"�- �.)�,�%��/�#'�!'��01"2345678557936793:68;7<=>?9:@<9?7<8>7A67@?6;74>7A=937B=;@56?78>;7C:=D:8B7A5=<E?F7G=@:96?9A6><36?7A65=>D79=7C:=D:8B7A5=<E?H7I?787:6?@59F7G=@:7<=;6785J8G?7?98:9?7J4937KLKMKNO7A5=<E?793897?98:976P6<@94>D789794B67QH7R=@7<8>>=97C@978>7NOSNTU7A5=<E74>78C:=D:8BH7V=J6W6:F7G=@7<8>768?45G7D6978:=@>;7934?7AG7@?4>D787XYZ[\[Z75==C74>78>KLKMKNO7A5=<EH]58??4<76:45=D738?79J=7J8G?7=_7D:=@C4>D7?9896B6>9?77J493787a[bKLHHH[Lc7=:XYZdHHHeYKLH7f9896B6>9?74>787a[bKLHHH[Lc7:@>7?6g@6>94855GF7J36:68?793=?674>78XYZdHHHeYKL76P6<@9674>7C8:85565H7h36758996:74?7W6:G754B496;74>7938978557?9896B6>9?74>?4;6936XYZdHHHeYKL738W679=7_4>4?37A6_=:679367:6?97=_79367A5=<E7<8>7<=>94>@6H7I?787:6?@59F7494?7:8:67_=:76:45=D796?9A6><36?79=7@?67934?7_689@:6HfG?96B 6:45=D74>9:=;@<6?79J=7>6J7J8G?79=7<:6896793:68;?7 7J4937936XYZdHHHeYKLiLYL[78>;7XYZdHHHeYKLiNLT7?9896B6>9?F7?3=J>74>7j4D@:67kl�Hmnopqqrstuvwqmsuxrs yvwutvsz{vsr|v}s~ ��r{�rs�rwrs}tvs �����������p�rwt mnopqqrstuvwqmsuxrs yvwutvsz{vsr|v}s~ ��r{�rs�rwrs}tvs �����������p�rwt �������������� �� ����������������� !!!"�#$�%&'()*+,-./012031456/5,77-4859012:/2;456.,48<12:/94=/5,40.,>2/06121/06.19=2/?806/1@82084A5,420.-502/2-56/92/1B1402:/C/1B140/5,40.,>:/061/DEFG/94=/HFIEJKL/2090171402:/M>-241?/>94A-9A1/1>171402/2-56/92/2179M6,.12/94=/798>3,@12N�!O!O�P*�Q��RSTU!!!VSFW�XQY�JLZFW!!!LWH[97M>1/\N�/692/9/RSTUNNNVSFW/M9.9>>1>/3>,5]/?806/94/145>,21=/JLZFWNNNLWH/21-14089>3>,5]:/94=/26,?2/061/=8__1.1451/310?114/061/0?,NXab&���!O�cQd��X(d�'Q�'e�fgh#$!!!g$i�XQY�j�� !!!"�#$#$#k#lmnfgh#$nnnnnnoi#pqmlrstuvwkxnpkl�knj�� yyy"�#$ngzl{qmgt|nok#{g}~nn��wnoi#pqmlrstuvwkxnpg��g$k#lmnljkg�n��wt|nok#{g}~nnj�� nnnnnnnnoi#pqmlrstuvwkxnql�lmmgmnpkl�kt|nok#{g}~nnnn��wnoi#pqmlrstuvwkxnql�lmmgmnljkg�n��wt|nok#{g}~nnnn��wnoi#pqmlrstuvwkxnql�lmmgmnljkg�n��wt|nok#{g}~nnnnfgh#$nnnnnn��wnoi#pqmlrstuvwkxnpg��g$k#lmnljkg�n��wt|nok#{g}~nnnnnn��wnoi#pqmlrstuvwkxnpg��g$k#lmnljkg�n��wt|nok#{g}~nnnng$inn"�#$nnoi#pqmlrstuvwkxnljkg�n"�#$t|nok#{g}~nn��wnoi#pqmlrstuvwkxnj#$#p�nljkg�n��wt|nok#{g}~g$i �������� ������������� �������� ������������ ������������� �������� ����

Page 109: SystemVerilog for Verification

����������������� ��� ���������������� ������ �������������� !"#$$$%!&'�()*+,-./01231/401.5/65/1708.91/4:/1;.<01231/401=>?@AAAB>CD10E0;5/0F12316:G:8808H1:3<1F.F/:/0I03/F192/41F4.G/0G1<08:JF10E0;5/0170K.G01/4.F0192/418.3L0G1<08:JFA1MF1F4.93123N:I6801OA�H1/401=>?@AAAB>CD1;.I680/0F1:K/0G1/4018:F/1F/:/0I03/H1942;41F/:G/F192/4PQRASTUV)���$W�X�YV�Y�Z�*U�[\]&'$$$\'�T_�a!"#$$$%!&'bcdefgh"gea!"#iii%!&'e\jhklm\bncdef\op\'g&hmehag\"eqncbncdelh"hmm\mefgh"gbrcdelh"hmm\mehag\"eqncbscdef\op\'g&hmehag\"eqtcbucdef\op\'g&hmehag\"eqncbvcdelh"hmm\mehag\"equcbvcdehag\"e%!&'bnscdea&'&fwehag\"eqxc�$y$W�SVTz_�_��{|��T}�z�Y|�=>?@$$$B>CD~D>D�M=>?@AAAB>CD~D>D�178.;�1F;40<580F10:;41F/:/0I03/1231/40178.;�H175/10E0;5/2.31;.3�/2350F1231/4016:G03/1/4G0:<A1N:I6801OA�12F12<03/2;:81/.1N:I6801OA�10E;06/1/4:/1/401B>CD4:F170031;.3�0G/0<1/.1B>CD~D>D�A&'&g&hm�&flmh�qnce�&flmh�a!"#i%!&'�&flmh�qxce�&flmh� �&flmh�qtce�&flmh�qnce�&flmh�quce�&flmh�qnce�&flmh������� ������������&'&g&hm�&flmh�qnce�&flmh�a!"#i%!&'�&flmh�qxce�&flmh� �&flmh�qtce�&flmh�qnce�&flmh�quce�&flmh�qnce�&flmh������� ������������ �������������� �� ��������������������� �!"#"�"$�%&'�!"!(!)*+,$-!"++./!01*)234567(8+0()�(+9���::: �!"#"�"$+$;)<1*$4=+.(!<$>?++@A7+./!01*)234567(8+0$BC$"(!)*+)9($�+@A74=+.(!<$>?++9���++++++++./!01*)234567(8+1)�)**$*+0()�(4=+.(!<$>?++++@D7+./!01*)234567(8+1)�)**$*+)9($�+@D74=+.(!<$>?++++@A7+./!01*)234567(8+1)�)**$*+)9($�+@A74=+.(!<$>?++++,$-!"++++++@E7+./!01*)234567(8+0$BC$"(!)*+)9($�+@E74=+.(!<$>?++++++@A7+./!01*)234567(8+0$BC$"(!)*+)9($�+@A74=+.(!<$>?++++$"/++ �!"#"�"$++./!01*)234567(8+)9($�+ �!"#"�"$4=+.(!<$>?++@F7+./!01*)234567(8+9!"!0G+)9($�+@F74=+.(!<$>?$"/HIJKLMNOPNQKRSPKTIMUKVWSXYKMUKUMQMWNPKTSKZMO[PJK\]_KSTJKTINTKTIJKUTNTJQJaTKNRTJPKTIJbcdefecegKVWSXYKJhJX[TJUKVJRSPJKNaiKUTNTJQJaTKMaUMLJKTIJKjckl___bcdefeceg_���������m�������� �!"#"�"$�&no�no578+0()�(+9���::: �!"#"�"$+$;)<1*$5A78+0$BC$"(!)*+)9($�+@A75A78+)9($�+ �!"#"�"$5A78+1)�)**$*+0()�(5p78+1)�)**$*+)9($�+@A75q78+0$BC$"(!)*+)9($�+@E75D78+0$BC$"(!)*+)9($�+@A75r78+1)�)**$*+)9($�+@D75s78+9!"!0G+)9($�+@F7��t����uv%wx&vyzyv{�|wx��'}�~yow�jckl���bcdef�e��jckl___bcdef�e�KVWSXYKUXIJL[WJUKJNXIKUTNTJQJaTKMaKTIJKVWSXY_KHIJa�K�IJaKTIJKRMPUTUTNTJQJaTKXSQ�WJTJU�KJhJX[TMSaKXSaTMa[JUKMaKTIJK�NPJaTKTIPJNL_K�WWKSTIJPKPJQNMaMaOTIPJNLUKXSaTMa[J_K�NQ�WJK\_�KMUKMLJaTMXNWKTSKTIJK�PJ�MS[UKJhNQ�WJU�KJhXJ�TKTINTKTIJbcdeKINUKVJJaKXSa�JPTJLKTSKbcdef�e�_

Page 110: SystemVerilog for Verification

����������������� ��� ���������������� ������ ��������������� !"���# $%&'%(�)*+�$%$,$'-./01$%..23$45-'(6789:,;.4,'!,.< !"===# $%&'%(.0>'[email protected],$?0AB..CD:.23$45-'(6789:,;.40EF0%,$'-.'<,0!.CD:[email protected],$?0AB..< !"........23$45-'(6789:,;.5'!'--0-.4,'!,[email protected],$?0AB....CG:.23$45-'(6789:,;.5'!'--0-.'<,0!.CG:[email protected],$?0AB....CD:.23$45-'(6789:,;.5'!'--0-.'<,0!.CD:[email protected],$?0AB..../01$%......CH:.23$45-'(6789:,;.40EF0%,$'-.'<,0!.CH:[email protected],$?0AB......CD:.23$45-'(6789:,;.40EF0%,$'-.'<,0!.CD:[email protected],$?0AB....0%3..# $%&'%(..23$45-'(6789:,;.'<,0!.# $%&'%([email protected],$?0AB..CI:.23$45-'(6789:,;.<$%$4J.'<,0!.CI:[email protected],$?0AB0%3KLMNOPQORSTUVNOWXYZOM[NO\MSMNTNQMO] _abcdefcghijkl_mncmdfoOpLTUVNMN\OSqMNrM[NOqPr\MO\MSMNTNQMOPQOM[NOUSrSVVNVOsVLptX���������u�vwx�wx�yz*��< !"���# $%&'%(8:;.4,'!,.< !"===# $%&'%(.0>'?5-08D:;.40EF0%,$'-.'<,0!.CD:8D:;.5'!'--0-.4,'!,8D:;.'<,0!.# $%&'%(8{:;.5'!'--0-.'<,0!.CD:8|:;.40EF0%,$'-.'<,0!.CH:8G:;.40EF0%,$'-.'<,0!.CD:8}:;.5'!'--0-.'<,0!.CG:8~:;.<$%$4J.'<,0!.CI:�������z��x������z��+�������������L�OpSQO�\NOSOglj�XXXkl_mnmlmiOMLO\MSrMOSOM[rNS�ZO\�p[OS\OM[NOpL�NOqLrOSOrSQ�LTMrSQ\SpMLrO�NQNrSMLrXORSTUVNOWXWO\[L�\OSO�NQNrSMLr��rP�NrOpVS\\O�PM[OSOj�mOMS\tOM[SMprNSMN\O�OUSptNM\XO�[NOq�VVOMN\MsNQp[O[S\OpVS\\N\OqLrOM[NO�rP�NrZOTLQPMLrZOp[NptNrZOSQ�TLrNZOSVVO�PM[OMrSQ\SpMLr\OM[SMOQNN�OMLOr�QOPQOUSrSVVNVX �������������� �� ������������������������ �!�"#���$��%%�&"�'����(����%)*+,--./012345607..88.94,1-,*:;4.:<,:.*40,:0-.=.>,*?0:-..:,-?.4@1A51:.1B7....C,*?0:.>7....D;4?......40>0,:.A1B.E0F51........>.G.10HAB7........,--04:A>I4,13;J5K0ABB7........:4,1-J5:A>B7......013....L;5121;10.......88.M-0.D;4?NL;5121;10.-;[email protected];0-.1;:.E+;*?..013:,-?..:,-?.:4,1-J5:A51>@:.C,*?0:.>B7..III..013:,-?013*+,--./01234560.F017515:5,[email protected]:,4:.:<0.*<0*?04R.J;15:;4R.,13.;:<04.:<40,3-..III013 STUVUWXVUWYUZUVX[W\]_YWa]bWYT]b[cW_]dUWe TWfXg\[UWhihiWjVYkWTUVX_YXd]VWYW_]WYXVUcW_WTUWlmnopWqb_d]_iWSTUWd]_YVbd]VWYT]b[crbYW_ X[sUWZX[bUYkW_]WYXVWX_aWTVUXcYiWfU\XVX_tWTUWd]_YVbd]VqV]gWTUWd]cUWTXWc]UYWTUWVUX[We]VuWX[[]eYWa]bW]WdTX_tUWX_aWZXVvXw[UYWwUq]VUWa]bWYXVWUxUdb_tWTUWd]cUW_WTUW]wrUdiWSTYWX[[]eYa]bW]W_rUdWUVV]VYkWg]cqaWTUWcUqXb[YkWX_cWX[UVWTUWwUTXZ]VW]qWTU]wrUdiyUxkWTUWz{lWXYuWYXVYWXWTVUXcW_WXW|}z~iii�}�l�l}lmWw[]duiWSTUWTVUXcWYWX_g\[UgU_X]_WcUX[W]qWTUWVX_YXd]VWX_cWYT]b[cWwUWY\Xe_UcWTUVUkW_]W_WTUW\XVU_d[XYYi������!����"$��'����%�UV[]t�YWTVUXcYWXVUWZUVaW\VUcdXw[UiW�]bWdX_WVUXcWTUWY]bVdUWd]cUWX_cWd]b_WTU�l�����k��n���kWX_cW|}z~iii�}�lWw[]duYW]Wu_]eWT]eWgX_aWTVUXcYWeUVUW_WX

Page 111: SystemVerilog for Verification

����������������� ��� ���������������� ������ ������������� !��"�#$��%���! �����&#�'!��!(#�'� ���)'�$&'���*�')����� �)�!�#�+�$#�����!��,'$!�-�#�!(���!��-$)$ (��.)��'�/���0�1*�!(��!� !2�)&(�%�)�#'!� �#')����!#') '&!$�) �')�� �)� �!(���!��'�345!('!� !�#� �!(���-�#� ����/#���!�#�$)���!$��*�')��!(�)�#�!�#) �!(����5(��!� !2�)&((' �!��,'$!�-�#�!(��!#') '&!$�)�!��&��/��!�*�2�!���� �)�!�,')!�!�� !�/�!(��%�)�#'!�#�6789:;<=>?<@AB78CD<EFG;7H<DG;7ECIBJKLMKNOPNQRLONRSTPRUVRWXQVYSZT[\]PXQV_PP PaLbUPZLKPScRUKZNTUPcLRPVdLecPPRNVfPTdUTfYRKNcVW\KNcVNTRSLcPRK_PPPPZLKfPPPPPPXUMScPPPPPPeNSRPWXQV[TX[NbbKPggPRK[NbbK_PPPPPPhbSVJiNjWklmnRoPpbbKPONRTdPmbkqPhRSOUqPRK[NbbK_PPPPPPUcbPPPPrLScYcLcUPPUcbRNVfPP\KNcVNTRSLcPRK_PPScSRSNiPXUMScPPPPKUJUNRPWsnPXUMScPPPPPP PaKUNRUPNPKNcbLOPRKNcVNTRSLcPPPPPPRKPgPcUeW_PPPPPPNVVUKRWRK[KNcbLOStUW _PPPPPP PuUcbPRKNcVNTRSLcPScRLPRdUPvw\PPPPPPRKNcVOSRWRK_PP P\NVfPcLRPVdLecPPPPPP PxNSRPZLKPKUJijPZKLOPvw\PPPPPPTdUTfYRKNcVWRK_PPPPUcbPPPPysnn_P PxNSRPZLKPZScNiPRKNcVNTRSLcPRLPTLOJiURUPPUcbUcbJKLMKNOz(�)�!(��{|}{~�������!' ��$ �&'����*�$!� /',) ��--�'�!(#�'��!��,'!&(�!(��2� �-�#�!(��'!&($)%�!#') '&!$�)�'��#� ��3�#$)%�'�)�#�'�� $���'!$�)*��')���-�!(� ��!(#�'� �#�)&�)&�##�)!����.)�!($ � $�/�����'�/��*�!(��!(#�'���� !�/#$)! �'��� '%�*�2�!�����&����'�����#����'2�#'!��&�)!#�� �=>�>�<��EI87ECD<�7GC7�:;�<CB<�FG;7H���&����)�2�!� �2!���2�%��&&�# �,(�)�����('���'����/�!('!� /',) !(#�'� �')��������)�!� '����'#$'2����'��� �2�-�#��!(��)��!�$!�#'!$�)��'�/���0�1��)���,�#� �$)�'����������#������}�,$!(�'�!��'!$& �������������� �� ������������������� !"#$%&�'��(�����)*��������+���*,��,���(�-�'.(��,�����,����/��0��)1�2.�"#+��3(����.�����*�..��-�'.(��0��-�)����,��0�.'������24����.)����3����5)6�-)��+�)��,���7�/8.��,�(��,��9:# ���;:<%!%:%��)3�)(���,��#�=�$"�.��8+�)��-�'.(���4����/��*,)3*�/)3�����3��*�)�3��'�)3��"#+�2'��)���0�.'��-�'.(�*,�3����,��3�7���)/���,��'�,��,�.��8��>.-�4��'����'��/��)*�0��)�2.������,�.(�0�.'���)3�*�3*'���3���,���(��?�/8.��@�A�,�����9:# ���;:<%!%:%��)3�)(����9:#1.��8��?4���/B��).����*,�('.����,��,���(��)3�)(����9:# ���;:<%!%:%�+�2'���,�4�����3����7�*'��(�'3�).��������,����)�)3�.*�(��2.�*6�+�,����2�*�'�������,��CD�(�.�4��?��?�/8.��@�A�8�)3���EFGFGF+H�-,)*,�����,��0�.'�������,��)3(�7�0��)�2.��;�-,�3��,��.��8����/)3�����IJKLMNOPQROSJTOUVWXQQQYVZ[\[V[]O_ TNOJOMaaLbWVcWdef[V\dghViffZ[ZhZdjfk]cZ[ffffUVWflZ[hfYmnifYopifYqqrffffffUVWXffffffffstWZh]lYriffuufvgcfwfbWZ[hxfUZ[djfydjg]fVUfZ[z]{ffffffYVZ[\[V[]ffff|nfszZxbjd}l~�[~riff][z][zbWVcWdeIJKLMNOPQ��O��N���a_Oa�O�JTOUVWXQQQYVZ[\[V[]O_ TNOJOMaaLYfff�hdh]e][hnfffUVWflYmnif���nfff�bdt[fstWZh]lYrf�h�W]dzfn��fffYqqfffffffffffffYm��fff�bdt[fstWZh]lYrf�h�W]dzf���fffYqqfffffffffffffYm��fff�bdt[fstWZh]lYrf�h�W]dzf��pfffYqqfffffffffffffYmppfffYVZ[\[V[]pfff|npfffstWZh]lYrfffffff�h�W]dzfn�fYmp�pfffstWZh]lYrfffffff�h�W]dzf��fYmp�pfffstWZh]lYrfffffff�h�W]dzf��fYmp�pfffszZxbjd}l��[�r�,�CD�(�.�4�2.�*6���,��*'���3���,���(��3(����*,�('.���)�����������.�����('�)3���,��*'�1��3���)/���.�����3�?�/8.��@���+��,��(�.�4�/�6����,��*'���3���,���(��'3��������,���,���(��8�-3�(�)3��,��9:# ���;:<%!%:%�������/�3����,)��(�.�4�)��'���'.�����2.�*6)3����,���(+�2'��4�'��,�'.(�2��*����'.+�����7*���)0��'���*�'������*��*�3()�)�3���3(�'3�718�*��(����'.�����'��,�'.(�'���$�":�$"<��0��)�2.���)3�)(����9:# ���;:<%������/�3�������0����*�84�����0��)�2.�+�����,�-3�)3�?�/8.��@����

Page 112: SystemVerilog for Verification

����������������� ��� ���������������� ������ ��������������� !"#��"$%�&�'$�(��)�$*���+,-.���/,0121,13010405678390177+,-7:0147/;<=7/>?=7/@@A7777+,-.7777775B4,C540D70147.7;7/=7777EE7F5.37D,GH7,+701I3J777777KL-043:.A=77777777777777EE7M-0147D,GH7777/,0121,1377N<7KI0OG65H=31IPQRSTUVWWWXTYZ[ZTZ\]_ab]cd]de_cf]cgf]fh]eijfdW]PQR]klmTnkmYo]pijci_R]qRa_irjifcg]hcfQ]cgcfci_csifcg]jtgd]cg]fQR]fQjRiq]cgdcqR]fQR]STUr_ eW]utjcgv]RiaQ]_ ew]iaex]y]V]cd]ajRifRq]igq]dRf]f]fQR]atjjRgf]pi_tR]y]XW]PQRg]fQR] qx]y]fQRSTUVWWWXTYZ[ZTZ\]z{|UYm\}]cd]daQRqt_Rqw]cga_tqcgv]i]aex]y]VW]~yfRj]fQR]_ e]ycgrcdQRdw��]_abd]fQR]atjjRgf]fQjRiqw]igq]d]fQR]fQjRR]fQjRiqd]jtgw]ejcgfcgv]fQR]pi_tR]yfQRcj]aex]y]VW]�QRg]fQR]fQjRiqd]a�e_RfRw]igq]fQRjR]cd]gfQcgv]R_dR]_Ryf]qtjcgv]fQRatjjRgf]fc�Rrd_f]jRvcgw]�xdfR��Rjc_v]iqpigaRd]f]fQR]gR�f]dfifR�Rgf]igq]fQR{�Y���k�]R�RatfRdW�i�e_R]�W��]fjiaRd]fQR]aqR]igq]pijci_Rd]yj�]�i�e_R]�W��W]PQR]fQjRR]aecRd]y]fQRitf�ifca]pijci_R]V]ijR]ai__Rq]V�wV�w]igq]V�W�������������"��)�$*����%!"$*���!"#��"$%�&�'$�(���%#��/7.<7.�7.�77�4543C314<77777777777+,-7:/;<=7���<77<77777777�-35437.<�7OG5L17KL-043:.A7�4�-35I7<��77<77777777/@@�77<77�77777�-35437.��7OG5L17KL-043:.A7�4�-35I7���77<77�77777/@@�77<77�77�77�-35437.��7OG5L17KL-043:.A7�4�-35I7��?77<77�77�77/>??77<77�77�77/,0121,13?77<77�77�77N<?77<77�77�77KL-043:.<A7777777�4�-35I7<�?77<77�77�77KL-043:.�A7777777�4�-35I7��?77<77�77�77KL-043:.�A7777777�4�-35I7��?77<77�77�77KI0OG65H:��1�APQR]v q]gRhd]cd]fQif]xt]q]gf]QipR]f]tdR]fQR]klmTnkmYo]bRxhjq]cg]fQR]qRa_ijirfcg]cy]fQcd]aqR]cd]cg]i]ejvji�]j]� qt_R]fQif]tdRd]itf�ifca]dfjivRW]�y]xt]ijRtdcgv]fQR]vtcqR_cgR]cg]�Rafcg] W�W�w]xt]ijR]i_jRiqx]apRjRqW]~__]xt]gRRq]f]jR�R�rRj]cd]f]�ibR]i]aex]y]fQR]_ e]pijci_RW~gfQRj]hix]f]hjcfR]�i�e_R]�W��]cd]f]qRa_ijR]fQR]itf�ifca]pijci_R]tfdcqR]y]fQRSTUVWWWXTYZ[ZTZ\W]�i�e_R]�W� ]hjbd]cgdcqR]i]ejvji�]hcfQ]itf�ifca]dfjivRW �������������� �� ������������������ ���!"�#�$!�%��&�!'���()*+���,)-./.).01*)2*345367)437-85962/(*00:55-.-7-3;5902-.5555()*5<-.75,=>:5,?@:5,AAB5902-.555555-.75+5=5,:5555555555555555CC5D3+058)1E5)(5-.F0G555555()*+55555555HI*-70<+B:55555555555555CC5J*-.758)1E555555,)-./.).055550.F5555K>5HF-L1;3E:550.F0.F1*)2*34������M�!�!'N�O $��������P'�Q�RS$��Q&TUVWXYZ[\][_abcVde[UVfVZe[VghgigjkVlamnYV_UVZe[Voabf\Vf[VpaU[cVZe[VY_\qfrZaV[s_ZYtVWf\o[V�tuvVYeadYVeadVXaqVmfUVYofdUV\fUXVZe[fpYcVde_meV\_beZVYZ_Vl[qUU_UbtVwY[VZe[Vxjgiyz{|}VYZfZ[\[UZVZaVdf_ZV~aVfVme_pVZe[fpYt�������������&!'N�I3-75()*+�� �P�!��O $�"S!�Q��S$��Q&73L+5*6./7�*03FL:55���555555555555555555CC5�*03705L)4057*3.L387-).L55()*+55558�08+/7*3.L<7*�B:55CC5�13I.5(-*L757�*03F55558�08+/7*3.L<7*�B:55CC5�13I.5L08).F57�*03F55558�08+/7*3.L<7*@B:55CC5�13I.57�-*F57�*03F55,)-./.).055���555555555555555555CC5�)5L)405)7�0*5I)*+55CC5�)I5I3-75()*57�0539)�057�*03FL57)58)41;07055I3-75()*+:0.F73L+�������S�$!'N���$!�%��&��"$ &&�RS$��Q&TUY_p[VfVmfYY�YVaqZ_U[YcVXaqVmfUVqY[VamfV�f_fl[YcVmfYYV�f_rfl[YcVaV�f_fl[YVp[~_U[pV_UVZe[Voabf\tVT~VXaqV~ab[ZVZaVp[mf[Vf�f_fl[cVWXYZ[\][_abVaanYVqoVZe[Ve_be[VYmao[YVqUZ_V_ZV~_UpYVf\fZmetV�e_YVmfUVmfqY[VYqlZ[VlqbYV_~VZdaVofZYVa~VZe[Vmap[Vf[VqU_UrZ[UZ_aUfXVYef_UbVZe[VYf\[V�f_fl[cVo[efoYVl[mfqY[VXaqV~abaZVZaVp[mf[V_ZV_UVZe[_UU[\aYZVYmao[t�aV[sf\o[cV_~VXaqV_n[VZaVqY[VZe[V_Up[sV�f_fl[cVgcVl[Vmf[~qVZefZVZdaVp_~~[[UZZe[fpYVa~VXaqVZ[YZl[UmeVpaU�ZVmaUmq[UZXV\ap_~XVZe_YV�f_fl[VlXV[fmeVqY_UbV_ZV_UVf

Page 113: SystemVerilog for Verification

����������������� ��� ���������������� ������ �������������� �!�"�#$!�%� &'(�(��)'*�$ '�$���*$��+$ ,$-�'�,.�$�*�$//0�/"*1�$/�234450/1�6.�-'��6��7%�!�" �� �& $#�-��*8�)'*�$ '/�$�&��-$��90�(1'�*�$//�:"/(�"/'/�(1'�&��-$�,./('$)��%�(1'���*$��(1$(�!�"�,.('.)')��;�"�#,&1(�.�(�'+'.�.�(,*'�(1,/�".�'//�(6���$ (/�%�(1'�� �& $#�( !�(��#�),%!�(1'�/1$ ')�+$ ,$-�'�$(�(1'�/$#'�(,#'�<=>?@ABCDEFBGHIBHJKLIBJM=NAOB?NPIN=>BQ=NK=R@ASTUVTWXYZ[V\YY]W__Y[VVa\YYYYbcdYeWdWfghi\YYYYdW_jYdTWc_Xbd\YYYYYYkUTjYYYYYYYYkUTYlbmh\Ybngh\YboopYYqqYbYb_YcUdYer]WTreYsrTrYYYYYYYYYY_rceleWdWfbip\YYYYYYtUbcucUcrYYYYrcedW_jYYrce]W__YYbcdYb\YYYYYYYYYYYYYYYYYYYYYYqqYvTUVTWXwrxrYbyY_sWTreYYY[VVaYZ\YYrxrcdYTr]rbxr\YYbcbdbWYZrVbcYYYYZYmYcrzlp\YYYYkUTYlbmh\Ybngh\YboopYYYYYYqqYbYb_YcUdYer]WTreYsrTrYYYYYYZ{eWdWfbiYmYb\YYYYZ{dTWc_Xbdlp\YYYYkUTYlbmh\Ybngh\YboopYYYYYYqqYbYb_YcUdYer]WTreYsrTrYYYYYY|lTr]rbxrpY}eb_SWalZ{eWdWfbip\YYYYrcerceSTUVTWX~1'�/��"(,�.�,/�(��)'*�$ '�$���!�" �+$ ,$-�'/�,.�(1'�/#$��'/(�/*��'�(1$(�'.*��/'/�$���"/'/�%�(1'�+$ ,$-�'��7.��$#��'�����0�)'*�$ '�(1'�,.)'��+$ ,$-�'/�,./,)'�(1'���������/0�.�($(�(1'�� �& $#�� �/*��'��'+'����'((' �!'(0�"/'�(1'���������/($('#'.(�61'.'+' ��//,-�'�CD�B�KJ=R@KLIB�MNA=OJ�"/(�$/�!�"�.'')�(��* '$('�(1 '$)/�,.�(1'�('/(-'.*10�!�"�$�/��.'')�(��/(���(1'#��~1'�' ,��&��9������/($('#'.(�6� 8/��.��!/('#�' ,��&�(1 '$)/� ������������� � ����������������������������� !��"#$%$&'(&)*$&+,-+./01234&)5(67&)*'(&)'8$&9(':;&5&<=1.>>>?=@3/23A&BC9(&5&D@42EF-)G&H%$5)$&5&I5)H*&I')*&5&)'8$JG9)>&K:&)*'(&H5($7&LG9&5%$&M'(5NC':;&5&C5N$C&)G&B%$H'($CL(B$H'OL&)*$&NCGH6&)G&()GB>P*$&)5(6&5:M&G9)$%8G()&<=1.>>>?=@3/3=3-&5%$&'M$:)'H5C&)G&Q58BC$&R>S>&P*'(&T$%('G:*5(&)IG&)*%$5M(&':('M$&5&<=1.>>>?=@3/23A&(9H*&)*5)&)*$&('8BC$&U2@0&()5)$8$:)&'(MG:$&':&B5%5CC$C&I')*&5&M$C5L$M&M'(BC5L>&KO&)*$&HG%%$H)&N9(&5MM%$((&HG8$(&N5H6&V9'H6CL$:G9;*7&)*$&U2@0&HG:()%9H)&HG8BC$)$(7&)*$&?=@3/23A&$W$H9)$(7&5:M&)*$:&)*$&D@42EF-&6'CC(&GOO&)*$&%$85':':;&)*%$5M>&#GI$T$%7&'O&)*$&N9(&5MM%$((&MG$(&:G)&;$)&)*$&%';*)T5C9$&N$OG%$&)*$&XYZ[/\]X&M$C5L&HG8BC$)$(7&)*$&$%%G%&8$((5;$&'(&B%':)$M7&)*$?=@3/23A&$W$H9)$(7&5:M&)*$&D@42EF-&6'CC(&)*$&)*%$5M&I')*&)*$&U2@0>�� _�������������������a !��"bcdcefgfdhijklmnoihphqrrrsgctuhvwfvumgdcxtyidcxtcvgz{xhgd|shh}{duhhhh~f�zxhhhhhh��h�czgh}{dhdftb{xtf�h{dht{efhec�ze�eh�f�c�hhhhhh}{duh�hgzef{�gm~�{vuhhhhhhhh~f�zxhhhhhhhhhh�czghy~�t�v~�c��dhpphgd�c��d|shhhhhhhhhh��ztb�c�y���rg�h���dhecgvwh����h�gzef�hgd�c��d|shhhhhhhhfx�hhhhhhhh�ijklmnoih��ztb�c�y���rg�hldd{d�hgzef{�g��h�gzef|shhhhhh�{zxmcx�hhhhhh�ztc~�fhgzef{�gm~�{vushhhhfx�hhh�{zxmx{xffx�gctu�������������������a�_���� !��"�Q58BC$&R>��&9($M&)*$&HC5(('H&�$%'CG;&D@42EF-&()5)$8$:)&)G&()GB&)*$&)*%$5M(&':&5:58$M&NCGH6>&QL()$8�$%'CG;&':)%GM9H$(&)*$&D@42EF-�<=1.&()5)$8$:)&(G&)*5)&LG9H5:&()GB&5CC&H*'CM&)*%$5M(&)*5)&*5T$&N$$:&(B5I:$M&O%G8&)*$&H9%%$:)&)*%$5M>&�5)H*&G9)7&5(&LG9&8';*)&9:':)$:)'G:5CCL&()GB&)GG&85:L&)*%$5M(7(9H*&5(&)*G($&H%$5)$M&O%G8&)5(6&H5CC(>&�G9&(*G9CM&5CI5L(&(9%%G9:M)*$&)5%;$)&HGM$&I')*&5&<=1.>>>?=@3&)G&C'8')&)*$&(HGB$&GO&5&D@42EF-<=1.&()5)$8$:)>&Q58BC$&R>�R&*5(&5:&5MM')'G:5C&E-�@3>>>-3D&NCGH6':('M$&)*$&<=1.>>>?=@3&)G&856$&)*$&()5)$8$:)(&($V9$:)'5C>

Page 114: SystemVerilog for Verification

����������������� ��� ���������������� ������ �������������� !�"�#$�� "�"��������%�&�#' �'"% #�(� �&"�%�)�"'*���+&�$�,���$�(�')"-���"�#' �#'&"��& �.,�#$�)�*��'/��(0�' )�"��%�&�"��&�)��'$#���&$���(�"�)������#$"��� �'�$�(�')��"�"$�,,�)�+�)"$(�'+-�1�&�+'%�� "$�')��' $�$��)�"�! �%�&(�'�!�(�$�+$��#��#2���(�� $�((&,$"�'$�"$'*���,�� $"0�' )�$�� �!('#��&��%�!�/��&,��$"�(�"�&(#�"-���� �.$������.'+,��"�&"��$���34536789:;<�$'"2��(�+�='+,���>-?@-�1�&�#' �A&"$$�� 2����$��"�$'"2�'"�)�� !�'�BCDEF7GHC-IJKLMNOPQRPOSTKTUTVWOUXNOYZ[LNO[\OJO] _abcdefghi j bdackiddlmclhnjgi_ojgpqrddddddssdtmgc]dpddssdugcjcddjmgc]djfdb vjd_lfwcdfed] _abcddefghdddddddddddddddddddssdtmgc]dxddddackiddddddlmclhnjgi_ojgxqrddddssdtmgc]dyddddddefghdddddddddddddddddssdtmgc]dzddddddddlmclhnjgi_ojgyqrddssdtmgc]d{dddddd|fiddddddssd}jfwdjmgc]_dx~{�da�jdbc�cdpdbficdddddd�ot���n��tsyqd] _abcdefghrdddci]dd|fici]�TW��NOP��O�fghQQQ|fiO�M[Z�O�TJW�JK����#�)��#'��"�34536789:;<�$�'$�"$'($"�$�(�')��-���.$�'���96---���;�#(�'$�"�$�(�')?-�� "�)��$��"�$�(�')0�� ���"�",'� �)�*%�$���34536789:;<�$'"2�' )�� ��*%�$���� �(�+�"$���96---���;0����#��",'� "�$�(�')���*%�#'��� !�$���$'"2����!&(��>���-���$�(�')��'%0�'���<:��5 ��96�"$�,"�$�(�')�?�' )�'����$"�#���)(� 0��¡�-���(�')����"��&$"�)�$����96---���;�*��#2�$�'$��'"�$�����<:��50�' )�"���$��"�& '���#$�)-='+,���>-?¢��"�$���+�(��(�*&"$�/�("�� ����='+,���>-?>0���$����<:��5 ��$��'��'*��$�'$��.,��#�$�%� '+�"�$���$�(�')"�$�'$�%�&��' $�$��"$�,-i j bdackilmclhnjgi_ojgpqefgh£££|fici] ¤¥¦§©ª«lmclhnjgi_ojgxqefgh£££|fi�t���n��tsy] _abcdefgh¤¥¦§©ª¬ ¤¥¦§©ª­¤¥¦§©ª®lmclhnjgi_ojgyq¤¥¦§©ªi j bdackilmclhnjgi_ojgpqefgh£££|fici] ¤¥¦§©ª«lmclhnjgi_ojgxqefgh£££|fi�t���n��tsy] _abcdefgh¤¥¦§©ª¬ ¤¥¦§©ª­¤¥¦§©ª®lmclhnjgi_ojgyq¤¥¦§©ª ������������� � ������������������� �!"#$%&'���(���)*��)*��)+,��-�"."/"$&0%'1".0023'245/6$.#7/689:000000;;0<36'$!0800=>640000000000000000000;;0<36'$!0?0000%'1".0@0/36'$!#5"..'600000023'245/6$.#7/6?9:00;;0<36'$!0A00000023'245/6$.#7/6A9:00;;0<36'$!0B0000'.!0000;;0C/>D0/36'$!#0A0E0BF0%G/0&'$H'080$&>.'0000I7<JKL5MN<;A90!"#$%&'0/36'$!#5"..'6:00O>".'.!��P�Q�R���(�����S��T�)+�)�U���V����-�WX�)�����S����YZ[\]Z_a[bcZd[ef[ghi]jaZ[][jaf\k[_fl[hdihgZ[mc]m[jaf\k[n[ef[lhocm[Zdg[p[imfpphdolfZ[mc]d[ef[ZqpZ\mZgr[si[ZqpZ\mZgt[h_[ef[ghi]jaZ[][m]ik[_fl[hdihgZ[mcZ[m]ikt[hm[hi[ahkZ][Zmd[im]mZlZdmt[jm[hm[]aif[khaai[]aa[mcZ]gi[im]mZg[je[mcZ[m]ikr[u_[mcZ[m]ik[c]i[jZZd\]aaZg[_fl[lamhpaZ[mcZ]git[ghi]jahdo[fdZ[bhaa[ghi]jaZ[mcZl[]aarud[v]lpaZ[wr�xt[mcZ[yz{|}~��}|{��}��|[m]ik[hi[\]aaZg[mcZZ[mhlZit[ip]bdhdo[mcZZmcZ]gir[ud[]gghmhfdt[mcZ]g[�[]aif[ghi]jaZi[mcZ[m]ik[]_mZ[��r[�cZd[ef[d[mchi[\fgZtef[bhaa[iZZ[mcZ[mcZZ[mcZ]gi[im]mhdot[jm[dfdZ[_hdhicZit[jZ\]iZ[f_[mcZ[�{�z���[hdmcZ]g[�r

Page 115: SystemVerilog for Verification

����������������� ��� ���������������� ������ ������������� �!"#$%�&'()*+,���-���./�"./����.�"01)(234)'1567851'9,57:1;'<13'&=>33'63;'&3??3@=33336782333333*,A'<33333333BC>33333333D&'(E+)F;GHI@1J3&'()*+,34)'1567851'9,57:1GK3D1'9,=>33333333&'()*+,34)'1567851'9,57:1>333333,<&3333L7'<5<7<,3367823J3L:(15)5+'11+,3333*,A'<333333D&'(E+)F;GHI@1J3I9J3I@&3,<1,8'<A31M8,)&GK3D1'9,K3'&=>333333BNOPQ5RSN>333333D&'(E+)F;GHI@1J3I9J3I@&3&7<,GK3D1'9,K3'&=>3333,<&33L7'<5<7<,,<&1)(2'<'1')+3*,A'<334)'1567851'9,57:1;@=>3TT3UE)4<31M8,)&3@334)'1567851'9,57:1;V=>3TT3UE)4<31M8,)&3V334)'1567851'9,57:1;C=>3TT3UE)4<31M8,)&3C33B;NOPQ5RSNWC=3D&'(E+)F;GHI@1J3X++3&7<,GK3D1'9,=>,<&��Y�Z$.�[�[/\�""�]/�� $#\�.#/$_ abcdedabcfdgheaijaklmfabdebndjocajddhablaekjocfljipdagjhadqocgjrdahgbgsa_babcdtlebangeioadudvaljdabcfdghawgibeaxlfagjlbcdfvaemocageabcdadjuifljtdjbalnydobawgibijrxlfabcdardjdfgblfablaoltzdbdsa{mbizdabcfdgheatircbabfkablagoodeeagaeijrdafdelmfodemocageanmeaijabcda|}~vagjhaelabcdabdebndjocajddheabladjemfdabcgbaljdagjhaljkaljdbcfdghaiearfgjbdhagoodeesa_babcdacircdebadudvabcfdgheajddhabladqocgjrdahgbgaemocagebfgjegobiljalnydobeabcgbagfdazgeedhaxfltabcdardjdfgblfablabcdagrdjbsa_ alxabcieahgbgdqocgjrdagjhaoljbflaekjocfljipgbiljaieaogdha���vawciocaieahljdaija�kebdt�dfilrwibcadudjbevaedtgzclfdevagjhatginlqdesa~cdedagfdahdeofindhaijabcdafdtgijhdfalxabcieocgzbdfs ������ ������ ����������������������� !����"����!��#$�%�&�������'��#�����#�(!���)�*!��������(������*#���+���#� #���+��'�#���!���(�����%�&����������#��!��#$�*#����+���#��������*��!��!��,��(��-#���%�.!����(��#��������$������������)�#�$�������#�*#���/�� 0�)�*#������+����!���������� !#���%�����!����!��#$�����������!��������*��!��!��12��(��#���)�3�/�� 0�����!��+�����!��#$%4����'����������!#� ����!������������������������#��*#��%���������������*�#�!#�$�����#���� !����"#������/5� ���!#�� #��/��(#���$�#��3�$������3�����%�.!���+�#�3���#���*���3�����!#����������# ������/5� ���*��!�3��!#��������'#0���!������������/#�%�.!��'��� �''���*#��������(#����!��������������!�� �����3 ����+���#���/5� �%.!�������#�*#����!��(����/�������+�#��# �� ��$�����������������*!���������!��#$�/�� 0����#��������#���!���#'����'��#���!��������������%�&+��!��������������!��#$��6� 3���/�+�����!��/�� 0�����!��#$)��!�������������'����$%�4����'�������������$3 ����!��789::;8;<=>�'��!�$��!#���������3� !� 0�*!��!���#��������!#��/������������$)��� �3$���$3������!�� 3��������'�-����%����!��#$� #��*#�������!���+3� ����������#$��+�/�� 0���*��!��!��,��(��#���%�?�@ABCDE�F�B���G���HF��BI�J��� ���K!�����3��3��4#'(���L%�M)����������#��/�� 0���#���)�������������������)�#�$��!���/�� 0�����!����!��������)�#���!�*������!���3�(3�����4#'(���L%�N%�.!���� ��$�/�� 0���#���)�������������������O*#0����3(��!��+����P)�#�$��!���/�� 0������!��+����������%�Q�*����)�!���� ��$��!��#$��� 0��3(�/� #3������'����$��!��+����������)�#��������#�"���-*�$�!�(3���%RJSTA���UV�@ABCDE�F�B��J��� ����E��W�XEABFYZY[\]Y_]Yab[b\bcd]eYfb[]]ghbijdcklmnop\q]q]eYrstY]\tbffYtm_]g\buYva]]wx]Ya]]nYa]]ghbijdcklmnop\q]q]cr\Yt]\tbffYtm_]g\buYvaY[hb[b\bcd]eYfb[]]ghbijdcklmnop\q]q]eYrstY]\tbffYtm_]g\buYva]]wx]Ya]]nYa]]ghbijdcklmnop\q]q]cr\Yt]\tbffYtm_]g\buYva]Y[h

Page 116: SystemVerilog for Verification

����������������� ��� ���������������� ������ ������������ !�"#$�#$�%&'��(�')*+,-�',��,��.�,$/012312456785298:;;58/012<12456785298:;;58/012312=6958298:;;58��>� �?�+$+,-�%'&��,�@.�,$�A&+--�&BCDEFGHIJKIELFIFHMFNDFCDOEOPFIQRJSTIUVWXIYDFIELFIRFPFRNDFCDOEOPFIZ[\]VW_]\aaVVbccdIeLODIHJFDICJEIQRJSTIOKIELFIFPFCEILGDIQFFCIEfOMMFfFHIHYfOCMIELODIEOgFIDEFhdiELFfjODFXIOEIjGOEDIYCEORIELFIFPFCEIODIEfOMMFfFHd��������� �?�+$+,-�%'&��,��.�,$5k5l9253m25<n:l:9:=o245;:l22pq:rso=tuv/w0912312456785298:;;58vm2p9:x5yn22z{253n22|=:92u5<}98:;;585quyyn22pq:rso=tuv/w0912312=6958298:;;58vm2p9:x5yn5lq:l:9:=o245;:l22pq:rso=tuv/w0912<12456785298:;;58vm2p9:x5yn22z{25<n22|=:92u53}98:;;585quyyn22pq:rso=tuv/w0912<12=6958298:;;58vm2p9:x5yn5lq~LFCI�JYIfYCI�GghRFI�d��XIJCFIOCOEOGRIQRJSTIDEGfEDXIEfOMMFfDIOEDIFPFCEXIGCHIELFCIQRJSTDJCIELFIJELFfIFPFCEdIeLFIDFSJCHIQRJSTIDEGfEDXIEfOMMFfDIOEDIFPFCEI�jGTOCMIYhIELFIKOfDE�IGCHELFCIQRJSTDIJCIELFIKOfDEIFPFCEXIhfJHYSOCMIELFIJYEhYEIOCI�GghRFI�d��d��������� ��"#$�#$�%&'����+$+,-�%'&��,��.�,$/012312456785298:;;58/012<12456785298:;;58/012312=6958298:;;58/012<12=6958298:;;58�FPFfGRIJKIELFDFIF�GghRFDILGPFIfGSFISJCHOEOJCDIGCHIgG�ICJEIF�FSYEFIF�GSER�IELFIDGgFJCIFPFf�IDOgYRGEJfdI�JfIF�GghRFXIELFIJYEhYEIOCI�GghRFI�d��IGDDYgFDIELGEIjLFCIELFDFSJCHIQRJSTIEfOMMFfDIV�XIF�FSYEOJCI�YghDIQGSTIEJIELFIKOfDEIQRJSTdIBEIjJYRHIGRDJIQFRFMGRIKJfIELFIDFSJCHIQRJSTIEJIEfOMMFfIV�XIjGOEIJCIVWXIGCHIHODhRG�IGIgFDDGMFIQFKJfFSJCEfJRIODIfFEYfCFHIQGSTIEJIELFIKOfDEIQRJSTd ������ ����� ����� ������ �� � ��������� !�"#!�$%�!&'(�)*��)$%( +"�*&)$� !�(,(!)-�.�)��"(�� �)&�!/01�#����"(�234567389:73;<=5>4??<><96@@�&!� �A��B-�.(�"�%(�)� +, !�(�)$(�)&C(�.(1�%(�* &)&!D� D &!/�E)$(%*&"(�#��%���+(�*&AA�D�&!)�� �'(%��+(A #�A��B� "�)$(�2345���!)&!�("��,(%� !+��,(%� D &!��! �"&!DA(�(,(!)�)%&DD(%/�F CBA(�G/�H�&!��%%(�)A#��"("� �A(,(AI"(!"&)&,(.A��J&!D�") )(C(!)�1�%�!�)&1&� )&�!�)$ )� �)% !" �)&�!�&"�%( +#/K�L�M� N� O������ �� ����� P�Q��� � R�S� T�M�U M���VWXYZYX[\Y]_[[ [abc[c[d[eYXW[fYgdh[gWWij[[kdlmbd_fcbdnYolX]]YXYfmppq[[rfcigdhmstYuYZYf[_Yvl[YZY_lspq[[iXWuYccw_weYXWwlxYmpqY_fy�")� "�#���A( %!(+�)�� A* #"�B�)� �+(A #�&!"&+(� !�3z23{:�.A��J"-�#���!((+�)��B�)� +(A #�&!� �)% !" �)&�!�B%��(""�A��B/�|$(�(+D(I"(!"&)&,(�+(A #�") )(C(!)�&!�F CBA(G/�����!)&!�("��!�(� !+��!A#��!�(�B(%�(,(!)�)%&DD(%/�K�L�M� N} O������ ~�S �� �T�� �� �� �����VWXYZYX[\Y]_[[ [abc[iXYZY_lc[d[eYXW[fYgdh[gWWij[[�bd_fcbdnYq[[rfcigdhm�tYuYZYf[_Yvl[YZY_l�pq[[iXWuYccw_weYXWwlxYmpqY_f����"$��A+� ,�&+�(,(!)"�&1�#���!((+�)��"(!+�C�A)&BA(�!�)&1&� )&�!"�&!� �"&!DA(�)&C("A�)-� !+�A��J� )��)$(%�0���C()$�+"�*&)$�.�&A)I&!���(�&!D�"��$� "�"(C B$�%("� !+C &A.��("-�+&"��""(+�A )(%�&!�)$&"��$ B)(%/�� ������� �������"�+("�%&.(+� .�,(-� !�(,(!)�&!�F#")(C�(%&A�D�� !�.(�B ""(+� "� !� %D�C(!)�)�� %��)&!(/�0!�F CBA(�G/��-� !�(,(!)�&"��"(+�.#� �)% !" �)�%�)��"&D! A�*$(!�&)�$ "��CBA()(+/

Page 117: SystemVerilog for Verification

����������������� ��� ���������������� ������ ������������ !�"�##$%&��%��'�%(�$%()���*)%#(+,*()+-./00123435/675811393461:743811;<4-6=74143>1?393461:743@81AA1B/001393461;57C1DE11116F=0G:7431H1:74381134:;<4-6=74116/0I15<4?@81111;75I111111J3K=4111111GGG11111111111111111111AA1L53/63165/40/-6=740111111MN1:7438111111111111111AA1D3..16F3163061>31/531:74311111134:1111O7=4P47431134:6/0I34:-./00Q57K5/C1/<67C/6=-16306811393461K34P:74381123435/6751K34811=4=6=/.1J3K=41111K341H143>?K34P:743@811111111AA1R406/46=/6316306J34-F1111K34G5<4?@8111111111111111111AA1S<4165/40/-6751111>/=6?K34P:743G65=KK353:?@@81AA1T/=61;751;=4=0F1134:34:Q57K5/C��U�V�W�$($%&�X)+�Y,�($����Z'�%(#[\]_abc]de��f]ghi]j_k]_]lm\nbc]nc\co_pho]pj_p]qmock]_]lm\nbc]crc\pe]sj_p]mq]ghio]pclptuc\vj]c\rmoh\ c\p]vb_ll]ilp]w_mp]qho]ibpmabc]vjmbk]aohvcllcl]ph]qm\mljf]livj]_l]xnc\co_pholy]zjc]c_lmclp]w_g]ml]ph]ilc]{|}~�����f]wjmvj]w_mpl]qho]_bb]vjmbk]aohvcllclph]c\ke]zjc]aohubc]ml]pj_p]pjml]_blh]w_mpl]qho]_bb]pjc]po_\l_vpholf]komrcolf]_\k]_\ghpjco]pjoc_kl]pj_p]wcoc]la_w\ck]ug]pjc]c\rmoh\ c\pe]�hi]\cck]ph]uc]hoc]lcbcvpmrce�hi]lpmbb]w_\p]ph]ilc]crc\pl]ph]lg\vjoh\m�c]ucpwcc\]pjc]a_oc\p]_\k]vjmbk]pjoc_kle�hi]vhibk]ilc]_]���tbhha]m\]pjc]a_oc\p]ph]w_mp]qho]c_vj]crc\pf]uip]pj_p]whibk]h\bgwho�]mq]pjoc_k]�]qm\mljck]ucqhoc]pjoc_k]�f]wjmvj]qm\mljck]ucqhoc]pjoc_k]�f]cpve][q]pjcpjoc_kl]qm\mlj]hip]hq]hokcof]ghi]vhibk]uc]w_mpm\n]qho]_\]crc\p]pj_p]pomnncock]_\gvgvbcl]_nhezjc]lhbipmh\]ml]ph]_�c]_]\cw]pjoc_k]_\k]pjc\]la_w\]vjmbkoc\]qoh ]pjcoc]pj_p]c_vjubhv�]h\]_\]crc\p]qho]c_vj]nc\co_phof]_l]ljhw\]m\]_abc]de�de]�hw]ghi]v_\]kh]_{|}~�����]ucv_ilc]ghi]_oc]ucm\n]hoc]lcbcvpmrce ������ ����� �������������������� ��� �������������� !"#$%&'()*)+#$,&+)-./01.123452678"+"#"!9$:);"+$$%&')!<=$>;)+-"7?$:);"+$$$$;)+-"7$@$+) >?8$$$$$$$$AA$B')!#)$.$;)+)'!#&'C$$$$;)+-"7D'E+>,&+)-"7?8$$$AA$6#!'#$#=)F$'E++"+;$$)+,$$AA$G!"#$%&'$!99$;)+$#&$%"+"C=$:H$ !"#"+;$%&'$)!<=$)*)+#$$%&')!<=$>;)+-"7?$$$$$%&'($$$$$$!E#&F!#"<$"+#$($@$"8$$$$$$ !"#$>,&+)-(7D#'";;)'),>??8$$$$I&"+/+&+)$$ !"#$%&'(8$$AA$G!"#$%&'$!99$#=&C)$#'";;)'C$#&$%"+"C=)+,JKLMNOPQRSTQMLQULVWOQMNXUQYPLZVO[QXUQMLQ\OOYQMPS]\QLQMNOQK_[ZOPQLQOWOKMUQMNSMQNSWOMPX OPOabQSUQUNLRKQXKQcS[YVOQ�d�ed�� �����f�������������� ��� ���������gh�i����������������)*)+#$,&+)-./01.123452678"+#$,&+)/<&E+#8"+"#"!9$:);"+$$%&')!<=$>;)+-"7?$:);"+$$$$;)+-"7$@$+) >?8$$$$$$$$AA$B')!#)$.$;)+)'!#&'C$$$$;)+-"7D'E+>,&+)-"7?8$$$AA$6#!'#$#=)F$'E++"+;$$)+,$$AA$G!"#$%&'$!99$;)+)'!#&'C$#&$%"+"C=$$%&')!<=$>;)+-"7?$$$$%&'($$$$$$!E#&F!#"<$"+#$($@$"8$$$$$$:);"+$$$$$$$$ !"#$>,&+)-(7D#'";;)'),>??8$$$$$$$$,&+)/<&E+#jj8$$$$$$)+,$$$$I&"+/+&+)$$ !"#$>,&+)/<&E+#@@./01.1234526?8$AA$G!"#$%&'$#'";;)'C)+,kNSMQRSUQUVXNMVTQVOUUQ]L[YVX]SMOadQlNTQKLMQOMQPXaQLQSVVQMNOQOWOKMUQSKaQm_UMQRSXMQLKQS]L_KMQLQMNOQK_[ZOPQLQP_KKXKQOKOPSMLPUnQkNXUQ]L_KMQ]SKQZOQSQUMSMX]QWSPXSZVOQXKQMNO

Page 118: SystemVerilog for Verification

����������������� ��� ���������������� ������ �������������� !""#�$%&'�&(!&�)%"&�%*�&('�&(+'!,�)!-./0 !&.%-��%,'�(!"�1''-�+'/ !�',2.&(�!�".-3 '�4�5���%-"&+0�&#6('� !"&�1 %�7�.-�8!)/ '�9#�:�2!.&"�*%+�&('��%0-&�0".-3�&('�� !""�"�%/'�+'"% 0&.%-%/'+!&%+;<<#�=%0��%0 ,�(!>'�0"',�!-?�(!-, ';�"0�(�!"�@��ABC;�10&�&(!&�2%0 ,�1'� '"",.+'�&#DEFGHIJKLMNJOEPQPRSJTUVJFWHQPGHIJQXVIEYZJWZPRSJEJQXVIEYJ[UWRQ\]__abcbdefdg`_eeh\hceeidbjk\flce mng` e_odlcpqg` `eidbjk\flcerrg ` ` `sstede cfeibdeidbj` `ufdo` ` `vbwhc` ` `ssxfeibdb ]yfdohcibdb`` ` `sszcjyibcjfcb{jb\db|bceeibeidb j\flce` ` `eidbjk\flce}}g` ` `bcj` `~fhckcfcb`bcje_obcj\]__abcbdefdwbc��ka����z���t�g` `hcheh ]vbwhc`ss�dbeb �wbcbdefd_`ufdb\ipwbc�h�q` `wbc�h� mcbypqg`sstedeeib|dlcchcw`ufdb\ipwbc�h�q` `wbc�h��dlcpqg`ss �heufd ]]eibwbcbdefd_ef\f|�]beb` yhepabcbdefd��eidbjk\flcemmnqgbcjKL�JDIFEGXUVIZ��"')!/(%+'�! %2"�?%0�&%��%-&+% �!��'""�&%�!�+'"%0+�'#��)!3.-'�&(!&�?%0�!-,�?%0+"/%0"'�"(!+'�!��!+#��1>.%0" ?;�%- ?�%-'�/'+"%-��!-�,+.>'�.&�!&�!�&.)'#�=%0��!-�)!-!3'&(."�".&0!&.%-�1?�!3+''.-3�&(!&�2(%'>'+�(!"�&('�7'?��!-�,+.>'�.&#��('-�?%0�!+'�,%-'2.&(�&('��!+;�?%0�3.>'�0/�&('��!+�"%�&(!&�&('�%&('+�/'+"%-��!-�0"'�.&#�6('�7'?�."�&('"')!/(%+'�&(!&�)!7'"�"0+'�%- ?�%-'�/'+"%-�(!"�!��'""�&%�&('��!+#��-�%/'+!&.-3�"?"&') ���������� �� �������������������������������������� � ����! �� ���"���#������� ��$��� ������������������ �"���#������ #���� �������� ��������� ���� %& ��$��� �� ���' ��� #������� ��' � ���� ��������! ���� ���� ���� �������'��������������! ������$� �� (� ������)��������# ��� �� ��' � ��'�������$�����)��� �$���� ��# ������ ����������! ��� �#��! �%�*��&��� �+ ������������ �#������� (� ������� ���� ��� ���������!����'� ��������'�� ��%�,����$� �'�� �������� �#���� �(� � #����-*-.��# �%/01023456789:;53<85;7=>:?@A� � ��� ���� �'��� ��$ ��������)������ ��$��� %�B��� � �� ���� ��$��� �������� ������ �� ����������� �CDE�� ���#��� ���� ������� �� ��������FDG����#�� ������� ������ �� ��������HIG%�*)��������������������� ����� ��$��� ��'�������'�� ����� ��� GJKLFDGMN�)�� ����%�*��� ������O��)��� � ��� � ������� ������#�P��)��� � ��� �����))�Q � ���� ����������������&��$� �R%P%4768S53/0TU3456789:;5@3V:?=;:SS>?W37VV5@@3=:397;XY7;53;5@:Z;V5[\]\_a_bc]_cdeacfgchibgjdkelmnaibgopaagf_[q]\fagfpaaaaaaaaarras\f_cfa_agf_[q]\faadtdcd_uaifdtaaaagfavatfwhxopaaaaaaaarrayuu]e_cfawdcqaxazf{aaaak]\zaaaaaagf|bftef\hopaaaaaaarra}[_wtacw]acq\f_~gacq_cai]cqaaaaaagf|bftef\hopaaaaaaarraaa~]aibgac\_tg_ecd]tgaaaa�]dtaaaft~aac_gzagf|bftef\paaaa\f[f_ch�b\_t~]�x�oaarra�_t~]aw_dc�a���ae{eufgaaaaaa�ibgleipaaaagft~m\_tghopaaaaaaaaarra��febcfacqfac\_tg_ecd]taaft~c_gzaac_gzagft~m\_tgpaaaagf lfchxopaaaaaaaaaarra�fcacqfazf{ac]acqfaibgaaaa�ibgleipaaaaaaaaaaaaarra�\d�fagdt_uga]tc]aibgaaaaibgleil_~~\a�vacl_~~\paaaalllaaaagfl[bchxopaaaaaaaaaarra�bcadcai_ezawqfta~]tfaaft~c_gzft~[\]\_

Page 119: SystemVerilog for Verification

����������������� ��� ���������������� ������ ������������� !"#�$�%&'!�()*'& *��+�,$-./0/120/134513.67891:5;19.5;<=1423>.15;31?501463.19/@2A.50/9B1C6093D1:5;1>271A;3@50/1E/:91F2>E13.271:5;1355E15;3B1G;==/7<:1:5;1@2:1.2H/13451E/:91F;3157<:157/1>20IG/>57=<:D1F/1H/0:1>20/?;<16?1:5;013/93F/7>.17//=913518/3127=1A;31@;<36A</1E/:9B1J/0K.2A91:5;1.2H/157/1E/:1</?3D127=1213.0/2=10/L;/9391345D1>2;96781631351F<5>EB1M54129/>57=13.0/2=10/L;/9391219678</19/@2A.50/1N14.2319.5;<=1.2AA/7O1P71G:93/@Q/06<58D3./19/>57=10/L;/93D1RSTUVWD197/2E912./2=15?13./1/20<6/01RSTUXWD1F:A29967813./1CPCY50=/0678BP?1:5;120/1@6Z6781=6??/0/73K96[/=10/L;/939D1:5;1>2712<42:914063/1:5;015471><299B1-.2342:1:5;1>271F/1H/0:1></2015714.518/391A065063:B��\�(�&*]"�$_541=51:5;1A299167?50@236571F/34//7134513.0/2=9O1J/0.2A91:5;018/7/0235017//=9135>0/23/1@27:1302792>36579127=1A29913./@135121=06H/0B15;[email protected]/13/@A3/=1351a;931.2H/3./18/7/0235013.0/2=1>2<<121329E16713./1=06H/0B1P?1:5;1=513.23D13./18/7/0235017//=9135E75413./1.6/020>.6>2<1A23.13513./1=06H/01329ED1@2E6781:5;01>5=/1</9910/;92F</B1b==6K36572<<:D13.69193:</1?50>/913./18/7/0235013510;712313./192@/19A//=12913./1=06H/0D14.6>.>271>2;9/19:7>.0576[236571A05F</@916?157/18/7/0235017//=91351>57305<1@;<36A</1=06H/09B-.67E15?1:5;018/7/02350127=1=06H/01291302792>350913.23120/12;3575@5;95Fa/>3913.231>5@@;76>23/13.05;8.121>.277/<B1c2>.15Fa/>318/3912130279K2>36571?05@1271;A930/2@15Fa/>31d501>0/23/9163D12916713./1>29/15?128/7/02350eD1=5/9195@/1A05>/99678D127=13./71A299/9163135121=547930/2@5Fa/>3B1-./1>.277/<1@;9312<<5416391=06H/0127=10/>/6H/013515A/023/29:7>.0575;9<:B15;1@2:1F/13/@A3/=1351a;931;9/1219.20/=12002:150L;/;/D1F;31631>271F/1=6??6>;<31351>0/23/1>5=/13.2310/2=9D14063/9D127=1F<5>E91F/34//73.0/2=9B-./195<;3657169121G:93/@Q/06<581@26<[email protected]=420/1A567315?1H6/4D13./1/296/9342:13513.67E12F5;3121@26<F5Z16913.231631691a;93121CPCYD1463.12195;0>/127=1967EB1-./95;0>/1A;391=2321673513./1@26<F5ZD127=13./1967E18/391H2<;/91?05@13./1@26<F5ZB1f26<KF5Z/91>271.2H/121@2Z6@;@196[/1501>271F/1;7<6@63/=B1g./713./195;0>/13.0/2=1306/9135A;3121H2<;/1673512196[/=1@26<F5Z13.231691?;<<D1631F<5>E91;736<13./1H2<;/16910/@5H/=B1h6E/K469/D16?121967E13.0/2=1306/913510/@5H/121H2<;/1?05@121@26<F5Z13.231691/@A3:D1631F<5>E9;736<121H2<;/1691A;31673513./1@26<F5ZB1C68;0/1iBj19.549121@26<F5Z1>577/>36781218/7/0235027=1=06H/0B ��������� �� ������������� ������������ ���� ������!�����!"#$%&'()*#&+#%,#)(-./0#%,1#023+#2%+#0)#(.#&,+0%,0&%0.1#(4#/%''&,5#02.#678#93,/0&),:;2&+#0%<.+#%,#)=0&),%'#>?@7#%A53$.,0#0)#'&$&0#02.#,3$(.A#)9#.,0A&.+#&,#02.#$%&'()*:#B902.#+&C.#&+#D#)A#,)0#+=./&9&.1E#02.#$%&'()*#&+#3,()3,1.1#%,1#/%,#2)'1#%,#3,'&$&0.1,3$(.A#)9#.,0A&.+:F)3#=30#1%0%#&,0)#%#$%&'()*#G&02#02.#HIJ#0%+<E#%,1#A.$)K.#&0#G&02#02.#L7J#0%+<:#"HIJ#/%,#(')/<#&9#02.#$%&'()*#&+#93''#%,1#%#L7J#(')/<+#&9#&0#&+#.$=04:#;2.#H77M#0%+<5.0+#%#/)=4#)9#02.#1%0%#&,#02.#$%&'()*#(30#1).+#,)0#A.$)K.#&0:;2.#1%0%#/%,#(.#%#+&,5'.#K%'3.E#+3/2#%+#%,#&,0.5.AE#)A#')5&/#)9#%,4#+&C.:F)3#/%,#=30#%#2%,1'.#&,0)#%#$%&'()*E#,)0#%,#)(-./0:#N4#1.9%3'0E#%#$%&'O()*#1).+#,)0#2%K.#%#04=.E#%,1#+)#4)3#/%,#=30#%,4#$&*#)9#1%0%#&,0)#&0:P),Q0#1)#&0R#S0&/<#0)#),.#1%0%#04=.#=.A#$%&'()*:"#/'%++&/#(35E#+2)G,#&,#S%$='.#T:U�E#&+#%#'))=#02%0#A%,1)$&C.+)(-./0+#%,1#=30+#02.$#&,#%#$%&'()*E#(30#02.#)(-./0#&+#/),+0A3/0.1),'4#),/.E#)30+&1.#02.#'))=:#S&,/.#02.A.#&+#),'4#),.#)(-./0E#&0#&+#A%,O1)$&C.1#)K.A#%,1#)K.A:#V&53A.#TOW#+2)G+#%''#02.#2%,1'.+#=)&,0&,5#0)%#+&,5'.#)(-./0:#"#$%&'()*#),'4#2)'1+#2%,1'.+E#,)0#)(-./0+E#%,1#+)#4)3#.,1#3=#G&02#%$%&'()*#/),0%&,&,5#$3'0&='.#2%,1'.+#02%0#%''#=)&,0#0)#02.#+&,5'.#)(-./0:#;2.#/)1.#02%05.0+#02.#2%,1'.+#9A)$#02.#$%&'()*#-3+0#+..+#02.#'%+0#+.0#)9#A%,1)$#K%'3.+:#X��Y����Z[\�]������������������!����_����������abcdefghgibajiklbmnohaehpeqborljseqlstueevibhcbwaojheaueeaexehgyntueeeeeeeeeeeeeeeezze{igbage|}caejhgeaibhcbwaojheeig~gbaenhtelgfoheeeebccgiana�ibhmjqo�gnttueezze�bhmjqo�ge�bioblrgceeee�moc~rb�n�����e�ghmohfebmmix���pea�bmmitueeeeqls�~}anatueeeeeeeeeeeeezze�ghmeaibhcbwaojheajemio�gieeghmghmabcd ��������� ������������������������� ����������������

Page 120: SystemVerilog for Verification

����������������� ��� ���������������� ������ �������������� �!"�#$%&�'�()�!�#(�*#��)"+,#�-�(%�%+��%$.�/(01234567895:;3415<:39:3=>?@623ABC�;33943853?>D2347E23F57E3655@31>43>66381E223482@435GH5:48E7H89:I381235JK2H8;3E>:L5?9M9:I398;3>:L3@7889:I39839:38123?>96J5NB301943J7I394345H5??5:381>83983943>6453?2:895:2L39:3=2H895:3OBP�BCBQ"!*#���RST�U%%,���+��"(%��/��"(�-�!"+V�%$.�/(-WXYZ[\]]_XW_a\ bcdW[e[fXdghi[fhijk[[l_XYXmWd [Wk[[_]n]XW[cj[h]\d[[[[W[o[]pcjk[[[[[[[[[[[[[[qq[r_]XW][X[]p[W_XYXmWd^[[[[XYY]_WcWs_X bfdt]cjjk[[qq[uX bfdt][vX_dXhg]Y[[[[wbdYngXxcyz{|}[~]bd\[Xbb_o��ye[WsXbb_jk[[[[fhisn�WcWjk[[[[[[[[[[[[[qq[~]b[W_XYXmWd [W[b_dv]_[[]b]bWXYZ0123E24768;3415<:39:3�9I7E23A�A;394381>832�2EF31>:L623@59:843853>37:9�7235JK2H8B301948F@235G3I2:2E>85E3943D:5<:3>438123�672@E9:83�>882E:3>:L3943L24HE9J2L39:3=2H895:3�B�B����������� �!"�#$%&�'�()�!�#(�*#��)"+,#�-�(%�!�#(�*#��%$.�/(-=>?@623ABCC3415<438123LE9�2E381>83<>9843G5E38E>:4>H895:43GE5?38123I2:2E>85EB���������������������������������������������������������������������� ��������� �� ��������������������������������� �� ������� ����� ��!�"#$%&'()*+,)-.$*/012'.0234''5)$6%$7#*16'#4''81),+,)'0,9*6''''.02:9,#-#34''''''''''''';;'<,#'#)$6%$7#16'8)1.'.$*/012''''=(*%>/$?-@ABCD'B,7,*+,('$(()EFG@H'#:$(()34'''';;'A)*+,'#)$6%$7#*16'*6#1'AI5'',6(,6(#$%&JKLMNOLPNQRSLTUQSLMNOVLWNPXLSNLYZNW[LT\XQLUWWX]]Q_LS\XL UZYNabLO]XLS\XcdefghcijLUQPLcdefkhhlmnLKOQWSNQ]oLJKLS\XMLUVXL]OWWX]]KOZbLS\XMLVXSOVQLULQNQpXVNqUZOXrLNS\XVT]XbLS\XMLVXSOVQLsoLt\X]XLUVXLNVXLVXZUYZXLS\UQLS\XLuvwLKOQWSNQbLU]LS\XQO YXVLNKLXQSVX]LWUQLW\UQ_XLYXSTXXQLT\XQLMNOLXU]OVXLSLUQPLT\XQLMNOLQXaSLUWWX]]S\XLUZYNao��x�y�z ��!�"���� �{���!���|}U~ZXL�o���o��L]\NTLUL�XQXVUSNVLUQPL�VqXVLXaW\UQ_Q_LSVUQ]UWSNQ]LO]Q_LULUZ�YNabLUQPLS\XLSN~�ZXqXZL~VN_VUoL�NSXLS\USLS\XLSTNLWZU]]X]LQXXPLSNLYXLPXKQXPLQ]PXLS\X~VN_VULYZNW[L]NLS\USLS\XMLTZZL]XXLS\XLPXKQSNQLNKLS\XLYO]LQSXVKUWXo� �����������"�| �������!������������ �� ��!�"���|��<,6,)$#1)��� ��7/$%%'<,6,)$#1)4''5)$6%$7#*16'#)4''.$*/012'.024''8�67#*16'6,�-.$*/012'.0234''''#G*%:.02'E'.024'',6(8�67#*16''#$%&')�6-*6#'71�6#34''''),>,$#'-71�6#3'0,9*6''''''#)'E'6,�-34''''''$%%,)#-#):)$6(1.*�,34''''''.02:>�#-#)34'''';;'�,6('1�#'#)$6%$7#*16''''',6('',6(#$%&,6(7/$%%}U~ZXL�o��L]\NT]LS\XLUSW\Q_LPVqXVLWZU]]o

Page 121: SystemVerilog for Verification

����������������� ��� ���������������� ������ ������������� �!"#$�%&'%&�()*�#+,�-,'%&�����'�)(".�+$��/01230�#��,,456778/01230988:06;764<1=;8<0988>615?=@8>?@988AB;4<1=;8;3CD>615?=@8>?@E98888<F17G>?@8H8>?@9883;IAB;4<1=;88<67J80B;D1;<84=B;<E9888803K36<8D4=B;<E8?3L1;888888>?@GL3<D<0E9888888MM8N3<4F8;3@<8<06;764<1=;888888ODK=73IL38?B7G4?G64JE9888888?B7G4?GJ1;I8PH8<0GJ1;I9888888GGG88883;I883;I<67J3;I45677����������Q�!"#$�%&'%&�()*�#+,�-,'%&�����'�)(".�+$���R(&R���)�(#SK0=L06>86B<=>6<148>615?=@T3@6>K53D?B7T1AG:U8?B7V8GGGE9W1;45BI38X<06;764<1=;G72XW1;45BI38XL3;306<=0G72XW1;45BI38XI01230G72X88>615?=@8>?@98888888888888MM8Y615?=@84=;;34<1;L8L3;8Z8I0288[3;306<=08L3;988/012308I029881;<84=B;<9881;1<1658?3L1;88884=B;<8H8\B06;I=>T06;L3D]E98888>?@8H8;3CDE988888888888MM8_=;7<0B4<8<F38>615?=@8888L3;8H8;3CD>?@E988888888MM8_=;7<0B4<8<F38L3;306<=08888I028H8;3CD>?@E988888888MM8_=;7<0B4<8<F38I012308888A=0J888888L3;G0B;D4=B;<E9888888MM8K6C;8<F38L3;306<=0888888I02G0B;D4=B;<E9888888MM8K6C;8<F38I012308888a=1;8888888888888888888MM8b61<8A=08?=<F8<=8A1;17F883;I83;IK0=L06> ��������� �� � ��������������������� !"#$%&'( )$*&+,-". $/" .*)*&$/ ', $0 %0&*)*'"! 1213 4 $ 5/,!%6"/ 6$0 5%' $0� 0%)7+"/ ,# ,+8"6'. *0', $ )$*&+,- +"#,/" '9" 6,0.%)"/ :"'. '9" ,+8"6'. ,%'; <,=">"/( �,%)$� =$0' '9" '=, '9/"$!. ', ,5"/$'" *0 &,6?.'"5 ., '9$' '9" 5/,!%6"/ +&,6?. %0'*& '9"6,0.%)"/ *. !,0" =*'9 '9" ,+8"6';@,% 6$0 .5"6*#� $ )$-*)%) .*A" #,/ '9" )$*&+,- =9"0 �,% 6,0.'/%6' *'; B9" !"#$%&')$*&+,- .*A" *. C( =9*69 6/"$'". $0 %0+,%0!"! )$*&+,-; D0� .*A" :/"$'"/ '9$0 C 6/"7$'". $ +,%0!"! )$*&+,-; 2# �,% $''")5' ', 5%' ),/" ,+8"6'. '9$0 '9*. &*)*'( EFG +&,6?.%0'*& �,% HIG $0 ,+8"6' #/,) '9" )$*&+,-( 6/"$'*0: $ >$6$06�;J�KL���� M����������K������NOPQRSTUVRWXYSZXYS[\]\UQWU_O]QUOPTW]_YaRabWWQUPV]cWQcbWWPYPOPUVW RPYWWWWQcWdWYRefXgbWWZZWhUPV]cWSPiRWdWXWWWWj]\kWWWWWWZZWl\]a_TR\WOm\RUaWWWWWWj]\WfPYOWPdXbWPnobWPppgW RPYWWWWWWWWqaPS[VUrfsl\]a_TR\tWRj]\RW[_OfuvagswWPgbWWWWWWWWQcx[_OfPgbWWWWWWWWqaPS[VUrfsl\]a_TR\tWUjOR\W[_OfuvagswWPgbWWWWWWRYaWWWWWWZZWy]YS_QR\WOm\RUaWWWWWW\R[RUOfogW RPYWWWWWWWWPYOWzbWWWWWWWW{XYSWQcxROfzgbWWWWWWWWqaPS[VUrfsy]YS_QR\tWUjOR\WWROfuvagswWzgbWWWWWWRYaWWWWz]PYWWRYaRYa[\]\UQ|$)5&" };~} 6/"$'". '9" .)$&&".' 5,..*+&" )$*&+,-( =9*69 6$0 9,&! $ .*0:&" )"..$:";B9" �/,!%6"/ '9/"$! '/*". ', 5%' '9/"" )"..$:". �*0'":"/.� *0 '9" )$*&+,-( $0! '9"�,0.%)"/ '9/"$! .&,=&� :"'. )"..$:". ">"/� �0.; D. |$)5&" };~� .9,=.( '9" #*/.'EFG .%66""!.( $0! '9"0 '9" �/,!%6"/ '/*". EFG���( =9*69 +&,6?.; B9" �,0.%)"/=$?". %5( :"'. $ )"..$:" � #/,) '9" )$*&+,-( $0! ., 0,= '9" �/,!%6"/ 6$0 #*0*.9 5%'7'*0: '9" )"..$:" ;

Page 122: SystemVerilog for Verification

����������������� ��� ���������������� ������ ������������ !�"#$�#$�%&'��('#)*�*���+�(',-./0123.45637/.35819:;<-./0123.45=793.55819:;<-./0123.45637/.35819:><?/@A1B3.45=793.55C39:;<-./0123.45=793.55819:><-./0123.45637/.35819:D<?/@A1B3.45=793.55C39:><-./0123.45=793.55819:D<?/@A1B3.45=793.55C39:D<EFGHIJKLMGMHNOPQIJRHOSTUHOUHOHIKVVGWHIGTXGGLHTFGHTXJHYWJSGUUGUZH[JKHSOLHUGGHFJXTFGH\WJMKSGWH]GLGWOTGUHTFGHLGRTHOQKGHIGVJWGHTFGH_JLUKNGWHWGOMUHTFGHSKWWGLTHOQKGZ��� �a)bc)de&')+f�*�ge&��*b�h'��#)+d�$+)i�j+$e���k�+�(',lLHNOLmHSOUGUnHTXJHTFWGOMUHTFOTHOWGHSJLLGSTGMHImHOHNOPQIJRHUFJKQMWKLHPLHQJSoUTGYnHUJHTFOTHTFGHYWJMKSGWHMJGUHLJTH]GTHOFGOMHJVHTFGHSJLpUKNGWZHEFGHIGLGVPTHJVHTFPUHOYYWJOSFHPUHTFOTHmJKWHGLTPWGHSFOPLHJVUTPNKQKUH]GLGWOTPJLHLJXHWKLUHPLHQJSoHUTGYZHEFGHFP]FGUTHQGGQH]GLGWOTJWJLQmHSJNYQGTGUHXFGLHTFGHQOUTHQJXHQGGQHTWOLUOSTPJLHSJNYQGTGUHTWOLUpNPUUPJLZHqJXHmJKWHTGUTIGLSFHSOLHTGQQHYWGSPUGQmHXFGLHOQQHUTPNKQKUHFOUIGGLHUGLTZHlLHOLJTFGWHGRONYQGnHPVHmJKWH]GLGWOTJWH]GTUHOFGOMHJVHTFGHMWPGWnHOLMHmJKHOWG]OTFGWPL]HVKLSTPJLOQHSJGWO]GHJLHTFGH]GLGWOTJWnHmJKHNP]FTHWGSJWMHTFOTHUJNGHTWOLUOSpTPJLUHXGWGHTGUTGMnHGGLHPVHTFGHTGUTHUTJYYGMHYWGNOTKWGQmZHrJHGGLHTFJK]FHOHNOPQIJROQQJXUHmJKHTJHMGSJKYQGHTFGHTXJHUPMGUnHmJKHNOmHUTPQQHXOLTHTJHoGGYHTFGNHUmLSFWJLPsGMZlVHmJKHXOLTHTXJHTFWGOMUHTJHWKLHPLHQJSoUTGYnHmJKHLGGMHOHFOLMUFOoGHPLHOMMPTPJLHTJHTFGNOPQIJRZHlLHrONYQGHtZuvnHTFGH\WJMKSGWHOLMH_JLUKNGWHOWGHLJXHSQOUUGUHTFOTHGRSFOL]GPLTG]GWUHKUPL]HOHNOPQIJRnHXPTFHLJHGRYQPSPTHUmLSFWJLPsOTPJLHIGTXGGLHTFGHTXJHJIwGSTUZxUHOHWGUKQTnHOUHUFJXLHPLHrONYQGHtZ�ynHTFGHYWJMKSGWHWKLUHTJHSJNYQGTPJLHIGVJWGHTFGSJLUKNGWHGGLHUTOWTUZ ��������� �� ���������������������������� !"#��"��$��#���!% "!��&'()'*+,*-.(+*./0,-123104'(1/5678,,+*/9:(;,+:;8,,09*22,<'(7-06'8,,,,.*2=,'-1>?8,,,,,,@(',>/1.,/AB8,/CD8,/EE?,:6)/1,,,,,,,,F7/2&9*3>G<'(7-06'H,:6@('6,&-.>IJ7?GK,/?8,,,,,,,,+:;L&-.>/?8,,,,,,617,,,,617.*2=,,61709*22,,09*22,M(12-+6'8,,,,.*2=,'-1>?8,,,,,,/1.,/8,,,,,,'6&6*.,>N?,:6)/1,,,,,,,,+:;L)6.>/?8,,,,,,OO,P6.,/1.6)6',@'(+,+:;,,,,,,,,F7/2&9*3>GM(12-+6'H,*@.6',,)6.>IJ7?GK,/?8,,,,,,617,,,,617.*2=,,61709*22,,<'(7-06',&8,,M(12-+6',08/1/./*9,:6)/1,,,,OO,M(12.'-0.,+*/9:(;K,&'(7-06'K,0(12-+6',,,,+:;,A,16Q>?8,,,,,OO,R1:(-1767,,,,&,A,16Q>?8,,,,0,A,16Q>?8,,,,OO,S-1,.46,&'(7-06',*17,0(12-+6',/1,&*'*9969,,,,@('=,,,,,,&L'-1>?8,,,,,,0L'-1>?8,,,,T(/1,617617&'()'*+UVWXYZ[�\][_V[ab[cad_ebafgVhfba[Vai[b[h_Z[jebikdZe[Xkh[VYY[h_eZZ[fahZlZe[fahbh_Z[WVfYmbn[mZobeZ[h_Z[pbakWZe[dVa[lZh[h_Z[ofeh[baZ\[q_f[f[mZdVkZ[V[h_eZVi[dbarhfakZ[ekaafal[kahfY[h_ZeZ[f[V[mYbdsfal[hVhZWZaht[Vai[h_Z[jebikdZe[_V[abaZ\[q_ZpbakWZe[h_eZVi[mYbds[ba[h_Z[ofeh[dVYY[hb[uvwxyz{\

Page 123: SystemVerilog for Verification

����������������� ��� ���������������� ������ ������������ !�"#$%&'�#('$)*&��#�+,-.$&-�*/)'.#$),0�-,$)�$&-�&-1234567289:7;3279<5=>?@1234567289:7;3279<5=>A@1234567289:7;3279<5=>B@C3DE5F7289G;=7299H7=>?@C3DE5F7289G;=7299H7=>A@C3DE5F7289G;=7299H7=>B@IJKLMNOPQRSNMJPLMPMTPUNMUVWXKYKVWZMPWXMLVMVWMLVQNMLKQ[SPYVTLZMYJNMUVWL[QNTMUV[SXPUYK\PYNMNPTSKNT]MIJNMTNL[SYMKLMLYKSSMYJNMLPQNMPLMYJNM\PS[NLMPTNMXNYNTQKWNXM_MYJNMRTVX[UNTZMWVYM_MJVaMb[KUcS_MYJNMUVWL[QNTMLNNLMYJNQ]��d� ��/)'.#$),0�%�e.#��%*�f*,)g���h$&)%�%�i�,�j$k��)%���"��lmWMPML_WUJTVWKnNXMYNLYNWUJZMYJNMoTVX[UNTMPWXMpVWL[QNTMVRNTPYNMKWMSVUcMLYNR]MIJKLaP_ZM_V[MUPWMYNSSMaJNWMYJNMKWR[YMLYKQ[SKMKLMUVQRSNYNM_MaPKYKWqMrVTMPW_MVrMYJNMYJTNPXL]mrMYJNMYJTNPXLMVRNTPYNM[WL_WUJTVWKnNXZM_V[MWNNXMYVMPXXMNOYTPMUVXNMYVMXNYNUYMaJNWMYJNSPLYMYTPWLPUYKVWMKLMPRRSKNXMYVMYJNMstI]IVML_WUJTVWKnNMYaVMYJTNPXLZMYJNMoTVX[UNTMUTNPYNLMPWXMR[YLMPMYTPWLPUYKVWMKWYVMPMQPKSVOZMPWXMYJNWMSVUcLM[WYKSMYJNMpVWL[QNTMrKWKLJNLMaKYJMKY]MIJKLMKLMXVWNM_MJP\KWqMYJNpVWL[QNTMTNQV\NMYJNMYTPWLPUYKVWMrTVQMYJNMQPKSVOMVWS_MaJNWMKYMKLMrKWPSS_MXVWNMaKYJKYZMWVYMaJNWMYJNMYTPWLPUYKVWMKLMrKTLYMXNYNUYNX]uPQRSNMv]�wMLJVaMYJNMrKTLYMPYYNQRYMYVML_WUJTVWKnNMYaVMYJTNPXLZMYJKLMYKQNMaKYJMPV[WXNXMQPKSVO]MIJNMpVWL[QNTM[LNLMYJNM[KSYKWMQPKSVOMQNYJVXMxyyz{|MYVMSVVcMPYYJNMXPYPMKWMYJNMQPKSVOMaKYJV[YMTNQV\KWq]M}JNWMYJNMpVWL[QNTMKLMXVWNMRTVUNLLKWqMYJNXPYPZMKYMTNQV\NLMYJNMXPYPMaKYJM~y�{|]MIJKLMrTNNLM[RMYJNMoTVX[UNTMYVMqNWNTPYNMPMWNa\PS[N]MmrMYJNMpVWL[QNTMSVVRMLYPTYNXMaKYJMPM~y�{|MKWLYNPXMVrMYJNMxyyz{|ZMYJNMYTPWLPUYKVWMaV[SXMNMKQQNXKPYNS_MTNQV\NXMrTVQMYJNMQPKSVOZMPWXMLVMYJNMoTVX[UNTMUV[SXaPcNM[RMNrVTNMYJNMpVWL[QNTMrKWKLJNXMaKYJMYJNMYTPWLPUYKVW] ��������� �� ����������������������������� ��!���"#���$"%!�&�������� "�&�'()*+),-.,/0*-,012.345267(889:;;.<383.=)*>/28).?)*-.@,-(A8.BCDE..-,1AF*G.-FG:..2A,33.H*53/-8):....0,39.)/5IJ:......150.1:......)8(8,0.IDJ.F8+15........-FGC(889I1J:......;;.=889.1508+8).?)*-.-FG........K>13(A,4ILH*53/-8)M.,?08)..+80INO>JLP.1J:........-FGC+80I1J:.......;;.Q8-*R8.?)*-.-FG......85>....85>0,39..85>2A,33..15101,A.F8+15....;;.H*530)/20.-,1AF*GP.()*>/28)P.2*53/-8)....-FG.S.58TIUJ:...;;.V*/5>8>.-,1AF*G.W.A1-10.UX....(.S.58TIJ:....2.S.58TIJ:....;;.Q/5.068.()*>/28).,5>.2*53/-8).15.(,),AA8A....?*)9......(C)/5IJ:......2C)/5IJ:....Y*15.85>85>()*+),-� ��������Z�[�%��%�\����������������������$"%!�&�������� "�&�'=)*>/28)M.F8?*)8.(/0IUJ=)*>/28)M.F8?*)8.(/0I]JH*53/-8)M.,?08)..+80IUJH*53/-8)M.,?08)..+80I]J=)*>/28)M.F8?*)8.(/0IDJH*53/-8)M.,?08)..+80IDJ_abcdaeffaghcgaghfaij_kbfjacdkal_demfjacjfandao_bpegfqrasgaghfaij_kbfjaneaegnoo_dfagjcdecbgn_dachfcka_taghfal_demfjuavhneaneasfbcefacas_dkfkamcnos_waxnghenyfz{a_do|aso_bpeaxhfda|_agj|ag_ak_aca}~�a_taghfaefb_dkagjcdecbgn_duvhneasfhc�n_janeaknttfjfdgatj_maghfa���abhcddfoua�ta|_aefgacabhcddfo�eatooaof�foag_a{raghfa�fj|atnjegabcoog_aqg��aqocbfeaghfagjcdecbgn_dandaghfabhcddforasgak_fead_gajfgjdadgnoaghfagjcdecbgn_daneajfm_�fku

Page 124: SystemVerilog for Verification

����������������� ��� ���������������� ������ ������������� !"�#$%&�' !%(&)�*)#�+�(�,(#-."/�(�&�01%�234567896:8;<6<=>6<:46<=?>8@A6<465A>686=8;@A=8B>6A46<=8<6<=>6C?4@5D>?6@4>A6;4<6E><8=>8@64F6<=>6G4;A57>?H6I=>6G4;A57>?68J?>8@96KJ4DBAL6:8M<M;E6F4?6<=>6C?4@5D>?65AM;E8678MJK4NH6I=>6C?4@5D>?6;>>@A6<46KJ4DBL6:8M<M;E6F4?6<=>6G4;A57>?6<46FM;MA=6<=>6<?8;AO8D<M4;H6I=MA6MA6@4;>6K968@@M;E686KJ4DBM;E6A<8<>7>;<6<46<=>6C?4@5D>?6A5D=68A68;6>P>;<L86A>78Q=4?>L64?686A>D4;@678MJK4NHR87QJ>6SHTU65A>A68;6>P>;<6<46KJ4DB6<=>6C?4@5D>?68F<>?6M<6Q5<A6@8<86M;6<=>678MJK4NH6I=>G4;A57>?6<?MEE>?A6<=>6>P>;<68F<>?6M<6D4;A57>A6<=>6@8<8H6VF694565A>6WXYZ[\X]_\XabZcYddaca[ee6M;686J44QL6K>6A5?>6<48@P8;D>6<=>6<M7>6K>F4?>6:8M<M;E68E8M;L68A6Q?>PM45AJ96A=4:;6M;6R>DO<M4;6SHTHUH6I=MA6WXYZ6KJ4DBA64;J964;D>6M;686EMP>;6<M7>6AJ4<L68;@6A49456;>>@674P>6M;<468;4<=>?H6R87QJ>6SHTU65A>A6<=>6>@E>OA>;AM<MP>KJ4DBM;E6A<8<>7>;<6f\X]_\Xa6M;A<>8@6<46>;A5?>6<=8<6<=>6C?4@5D>?6A<4QA68F<>?6A>;@OM;E6<=>6<?8;A8D<M4;H6I=>6>@E>OA>;AM<MP>6A<8<>7>;<6:4?BA675J<MQJ>6<M7>A6M;686<M7>6AJ4<K5<67896=8P>64?@>?M;E6Q?4KJ>7A6MF6<=>6<?MEE>?68;@6KJ4DB6=8QQ>;6M;6<=>6A87>6<M7>6AJ4<H�(gh-%���ij�k!"&l�%!m�"�)lg%!�)��� !"�#$%&�n#2 �(��%1%�2opqrpstusvwqtswxyutz{|}~w�uu}~}�wu�s����s�}�uuy�s��u�pq�vy}p�uuuuws��upv��uuuuuu�qpu�x�wux���ux���ux���uz}rx�uuuuuuuu��x�o�s����pq�vy}p�uz}�qp}uovw�������ux��uuuuuuuutz{�ovw�x��uuuuuuuu��s����s�}�uuuuuuuu��x�o�s����pq�vy}p�us�w}puovw�������ux��uuuuuu}��uuuu}��ws��uu}��y�s��uu��u�q�wx�v}�ux�u�sto�}u���� ��������� �� �������������������������������� ���!"���#!$ � ���%��$&����$!����''()*++',-.+/0123''''4*+5'2/.3''''''6.4'63''''''2171*4'89:';1<6.''''''''0;=><1486:3''''''''?@6+7)*A8B,-.+/012C'*D412''<148EF@:BG'6:3''''''''HIJ*.@+J*513''''''1.@''''1.@4*+5''1.@()*++''6.646*)';1<6.''''7'K'.1L8:3''''('K'.1L8:3''''MM'N/.'4J1'72-@/(12'*.@'(-.+/012'6.'7*2*))1)''''D-25''''''7>2/.8:3''''''(>2/.8:3''''O-6.'1.@1.@72-<2*0PQRSTUVSWXQYZ[VXSYQV\S]QTSY_][VSZ]TaSTUVSbQ]\ZcVXSTXddVX\STUVSV_V]TeS\S\UQR]]SfcgaVShiji� ��������k�l�$��$�m����������������������#!$ ��%��$n2-@/(12C';1D-21'7/48o:,-.+/012C'*D412''<148o:n2-@/(12C'*D412''7/48o:n2-@/(12C';1D-21'7/48p:,-.+/012C'*D412''<148p:n2-@/(12C'*D412''7/48p:n2-@/(12C';1D-21'7/489:,-.+/012C'*D412''<1489:n2-@/(12C'*D412''7/489:qQZS[]S\VVSTUTSTUVSWXQYZ[VXS]YSbQ]\ZcVXSXVS\Z[[V\\rZaasSXZ]]]dS]SaQ[t\TVgSusTUVSr[TSTUTSTUVSWXQYZ[VXS]V_VXSgXQYZ[V\SS]VRS_aZVSZ]TaSrTVXSTUVSQaYSQ]VS\SXVYSusTUVSbQ]\ZcVXi��v�v����� ���!"���w �� ���x�!�y�w#��z !�{�|��}]QTUVXSRsSTQS\s][UXQ]~VSTUVSTRQSTUXVY\S\STQSZ\VSS\V[Q]YSc auQ�STUTS\V]Y\S[QcgaVTQ]ScV\\dVSrXQcSTUVSbQ]\ZcVXSu[tSTQSTUVSWXQYZ[VXeS\S\UQR]S]SfcgaVhij�i

Page 125: SystemVerilog for Verification

����������������� ��� ���������������� ������ ������������� �!"#$%&�"'&#()%��"�)*(&+"#(,-�$�.,/+�����,�0#12345367869:476:;<87=>?7=>@A8876;B=4>87=>C83:DA88<B6EE8F34G9<H3A8888:6EI839DJKA888888;D:8IA888888L438J;D:8;MNA8;OPA8;QQK8=H5;D88888888RG;E2B6SJTF34G9<H3U8=HL43H829:JVWGKTC8;KA888888887=>X29:J;KA888888883:DX5H:JIKA88888888RG;E2B6SJTF34G9<H3U86L:H3885H:JVWGKTC8IKA888888HDG8888HDG:6EI88HDG<B6EE88<B6EE8Y4DE97H3A8888:6EI839DJKA888888;D:8;A8888883H2H6:8JZK8=H5;D88888888RG;E2B6SJTY4DE97H3U8=HL43H85H:TKA888888887=>X5H:J;KA88888888RG;E2B6SJTY4DE97H3U86L:H3885H:JVWGKTC8;KA888888883:DX29:J[;KA888888HDG8888HDG:6EI88HDG<B6EE88;D;:;6B8=H5;D888828M8DH\JKA8888<8M8DH\JKA8888]]89D8:_H8234G9<H386DG8<4DE97H38;D82636BBHB8888L43I8888882X39DJKA888888<X39DJKA88884;D8HDGHDG2345367abcdecfgehdicjjklcdmhdfbcdnopdikmqrstdmjdugjfdkdhclkfmvcdvcejmshdswdfbcdsemlmhkqdmhfcxlceydzsgd{sgq|dgjcdkh}dvkqgc~drgfdfbmjdshcd{khdrcd{bc{�c|dklkmhjfdfbcdsemlmhkqdwse|crgllmhld�ge�sjcjy ������������� ���������������������� ����������� !��"#$�#$�%&'���&'(#)�&*)'+,#��&�-.$/���.�0'1234567839:;8<438:=6>?@AB4CD6E839:;8<438:F8>B4CD6E839:G<>83::F8>?@AB4CD6E839:;8<438:F8>234567839:G<>83::F8>?H@A234567839:;8<438:=6>?IAB4CD6E839:G<>83::F8>?IAB4CD6E839:;8<438:F8>234567839:G<>83::F8>?HIA234567839:;8<438:=6>?JAB4CD6E839:G<>83::F8>?JA234567839:G<>83::F8>?HJAKLMNOPQNRSSNTULVNWPVXYSNZ[\ZN]P]N]SN_ULMOSUNPQNaLQRMVSUNPUSNRMOOSRRTMYYbNUMQcQdQeNdQNYLOfR]SX[� g ��"$/�&��h+)/&'+.i�$.'+�j�)/+.k#�,KLMNOPQNPYRLNOLVXYS]SN]SNPQRPfSNlbNlYLOfdQeNLQNPNmPUdPlYSNLUNPNRSVPXLUS[NnQSmSQ]NdRN]SNRdVXYSR]NOLQR]UMO]oNTLYYLpSNlbNlYLOfdQeNLQNPNmPUdPlYS[NnNRSVPXLUSNdROLVXPUPlYSN]LNMRdQeNPNRSOLQNVPdYlLqoNlM]NQLNdQTLUVP]dLQNdRNSqOPQeS[NWbR]SVrSUcdYLesRNlLMQSNVPdYlLqNtMR]NLSRNQL]NpLUfNPRNpSYYNPRN]SRSNL]SUN]SOQduMSRoNPRN]SUSdRNQLNpPbN]LNlYLOfN]SNXULMOSUNpSQNd]NXM]RN]SNTdUR]N]UPQRPO]dLQNdQ[NWPVXYSNZ[\�RLpRN]P]N]SN_ULMOSUNdRNPYpPbRNLQSN]UPQRPO]dLQNPSPNLTN]SNaLQRMVSU[� ��v#.�(.+w���j�,$0�+)/�-.$/�j/&��(,��+(�xyz{PbNlPOfNdQNWSO]dLQ|[|}NbLMNYSPUQSNPlLM]NYPbSUSN]SR]lSQOSR[N~deMUSNZc�NRLpR]SNUSYP]dLQRdXNlS]pSSQN]SNdTTSUSQ]NXPU]R[N�LpN]P]NbLMNfQLpNLpN]LNMRSN]USPRPQN�_aoNbLMNOPQNOLQR]UMO]NPNlPRdON]SR]lSQONpd]N]UPQRPO]LUR[

Page 126: SystemVerilog for Verification

����������������� ��� ���������������� ������ ������������ �!"#���$�%�&%'�()*�+�%*��(,��-(.�(%�/�/0�1"&�)�2�"(&")%-�3456789:;�<9=>9?@894A8B?9?@4?9>=?>9C8?D88B9?@89E8B8F4?GF94BH9?@89IF=J8F;K".LM���/N �1"&�)�2�"(&")%-�OPQRRSTUVWXYSSZQ[P\]SUVW_QUXSQUX_abcYSSdbQWRQOX[]WSXbYSSefWOX[]WSWVghZQ[P\]SUVW_QUXSQUX_abciYSSSSXj[RkUVW_QUXSlSUVW_QUXYSSSSXj[RkQUX_abcSlSQUX_abcYSSVWaefWOX[]WSSXQRmSbfWhiYSSSSe]bVcVbS\VU[WSSSSSSUVW_QUXkUVXhXbiYSSSSnnSoVXSXbQWRQOX[]WSeb]ZSfpRXbVQZS\P]OmSSSSSSkkkSSSSSSSSSSSSSSSSSnnSq]SR]ZVSpb]OVRR[WUSSSSSSQUX_abckpfXhXbiYSSSSnnSrVWaS[XSX]Sa]gWRXbVQZS\P]OmSSSSVWaSSVWaXQRmSSXQRmSgbQpsfphiYSSSnnStZpXuSe]bSW]gSSVWaXQRmVWaOPQRR vwxyzz{|}~��zv|~�{| ���~}�|���|{���|� ��{��{|�{�{|�}�| �����������y�{�}��{��|~��~���������������}~���� vwxyzz{|}~��zv|~�{| ���~}�|���|{���|� ��{��{|�{�{|�}�| �����������y�{�}��{��|~��~���������������}~���� ������������� ���������������������� �������������� !"#$�����%#&&'()*+,-./01234/,-*+5366*355,76*8,1*4,*23-9,:/;)*4()*+,-./01234/,-*,.*8,12*6864):*.,2)<)28*6/:1534/,-=*>3:?5)*@=AB*(36*C164*,-)*<32/3D5)*3-9*3*D36/+*+,-6423/-4=E#FG%H���IJ������ !"#$����K%#&&LMNOOPQRSTUVWPPXUYPZ[\]_PaSbTRbSbYNSOWPPLRSOYNUSYPcNORSNXMcPPPPdaSbTRbSbYNSOPUSOUecPdZ\]\ ^_fWPPPPPfcSeLMNOO����g�h�i�"��FH�$�K%#&&'()*j-</2,-:)-4*+5366k*6(,7-*36*3*936()9*5/-)*/-*l/012)*@mnk*(,596*4()*o)-)234,2kp0)-4k*q2/<)2k*r,-/4,2k*s()+t)2k*>+,2)D,329k*3-9*s,-./0*,DC)+46k*3-9*4()*:3/5D,u)6D)47))-*4():=*>3:?5)*@=�v*6(,76*3*D36/+*j-</2,-:)-4*+5366=E#FG%H���wx�h�i�"��FH�$�K%#&&LMNOOPySzURS{cSYWPP|cScNYRPPVcSWPP}VcSYPPPPPPNVYWPP~UzcPPPPPezWPP�RSUYRPPPP{RSWPPQ�cL�cPPPPL��WPP�LRcXRNePOLXWPPQRSTUVPPPPPLTVWPP{NUMXR�PVcS�NVY�PNVY�ez�P{RS�L��WPPc�YcSPTaSLYURSPSc���WPPc�YcSPTaSLYURSPzRUePVcSbLTV��WPPc�YcSPTaSLYURSPzRUePXaUMe��WPPc�YcSPYNO�PaS��WPPc�YcSPYNO�P�N�ba���WcSeLMNOOTaSLYURSPySzURS{cSY]]Sc���WPPLTVP�PSc���WcSeTaSLYURSTaSLYURSPzRUePySzURS{cSY]]VcSbLTVWPPNOOcY�LTV�NSeR{U�c�WcSeTaSLYURS

Page 127: SystemVerilog for Verification

����������������� ��� ���������������� ������ ��������������� �!���"��#$��%%&��' ()*��++�,����-'�.$�#-�'&�/$0��1$�2-1��3��$4()*��-1�2 "��3��$4()*��#��2�56�3��$4()*��++�,����-'�.$��"-�0-���"0��1$��3��$4(1$�2-1�)*��-1��3��$4(1$�2-1�7�-1�2 "�)*�� "��3��$4(-1�2 "�)*��#���3��$4(#��2�56)*���56�3��$4(#��2�56)*��0�&�3��$4()*$� ���������-06�!���"��#$��%%"��()*����"6����1$�8"��(��18"��9��"9�9�"-�0)*����-1�8"��()*���� "�8"��()*����#��8"��()*�����568"��()*����0�&8"��(��18"��9��"9�9�"-�0)*��:���$� �-06�-06�!���"��#$��%%4"-;9�;()*����"6����1$�84"-;9�;()*����-1�84"-;9�;()*���� "�84"-;9�;()*����#��84"-;9�;()*�����5684"-;9�;()*����0�&84"-;9�;()*��:���$� �-06<=>?@ABCDCE=FGECHFBACIA@>JKECFLC=FGC@FCMNJKIC@=AEACOK>EEAEPQRQRSTUVWXTYZ[\Z]_>H?KACP�aCE=FGEC@=ACH>JLC@AE@bCG=JO=CJECJLC>C?BFcB>HCMKFOdP ���������� ��� �������������������������� �� !�"#$"%& #"&'($&)*&+$$,-.'� -#)-&$)-.+$$'-'&'"/$0)!'-$$$$)-.$1$-)234+$$$$)-.5!)-6(7!34+$$$$)-.50%'/834+$$$$)-.5�%-34+$$$$)-.52�"�6%�34+$$)-8)-8�� !�"#��9�:�;��<���;=>?@ABCDEFGAEDAH>BCICBAJDAHJGKAEGBCLCGBCGMANI>OPDA@?GGEGFAEGALJ@JIICIQAJGBD>AK>?@AMCDMNCGORAH?DMAJID>AFCGC@JMCAH?IMELICADMEH?I?DADM@CJHDAJGBAORCOPAMRC@CDL>GDCDA?DEGFALJ@JIICIAMR@CJBDSATRCDCAJ@CA>@FJGEUCBAEGM>AJAIJKC@CBAMCDMNCGORQ>@ORCDM@JMCBANKAMRCAM>LVICWCIACGWE@>GHCGMSAXKDMCHYC@EI>FAEGM@>B?OCDAL>ZC@[?IO>GDM@?OMDAD?ORAJDA\]_SSS]abcb]bdAJGBA\]_SSS]abcebfA[>@ABKGJHEOJIIKO@CJMEGFAGCZAMR@CJBDQAEGAJBBEME>GAM>AMRCADMJGBJ@BA\]_SSS]abSATRCDCAMR@CJBDO>HH?GEOJMCAJGBADKGOR@>GEUCA?DEGFACWCGMDQADCHJLR>@CDQAHJEIN>gCDQAJGBAMRCOIJDDEOAhACWCGMAO>GM@>IAJGBAieajADMJMCHCGMDSAkJDMIKQAMRCAlamenodAO>HHJGBAED?DCBAM>AMC@HEGJMCAMR@CJBDSTRCDCAMR@CJBDAJGBAMRCA@CIJMCBAO>GM@>IAO>GDM@?OMDAO>HLICHCGMAMRCABKGJHEOGJM?@CA>[AppqSArDA>NsCOMDAJ@CAO@CJMCBAJGBABCDM@>KCBQAMRCKAOJGA@?GAEGEGBCLCGBCGMAMR@CJBDQAJII>ZEGFAK>?AM>AN?EIBAJAL>ZC@[?IAJGBA[ICgENICAMCDMNCGORCGWE@>GHCGMS

Page 128: SystemVerilog for Verification

����������� �������� ������� ��������� ��������� !�"���#��������#�$� �%�# �&&�'�����(�&����)&�#�*�)������� &�����'��$&������*)+�#�*�)��)!���&�,��*�( ��!� �"&-�.���'*�&��������#��*&���������,��"��*)/�*)��� ��/�0' ���# �&&1�.�*&�������#��*&�&*$� �����(�* !��)!���&"�����)!��&��)!�2� �����#�!��*&��*/��������*)��)��# �&&30�(���#�)�(��& ������!�,� ����)!�!�(�/1�4!!*�*�)� "0�&�#���� ��/�# �&&�*&���$�*)��)�)#��(��!�)0��&��)"�)��������)�&����$�5����)������)&�#�*�)(���,*�����&�����!*������&�$��'* �1�6�&���&�"������ !�)�,���#��������#�$� �%�7.8!�&*/)��&*)/�+�&���)��9��* �/�$�!� �0�"���&��� !�(���5�# �&&�&�!��)�*)���&$� ��0���&�( ��( �#5&1.���)�%��#��*#��*&�#�$��&*�*�)1�4&�"��� ���)�!�*)�����1�:0�"���#�)�*)&��)�*�����)�# �&&�*)&*!���)�����0�+�&���&�"���*)&��)�*����$�!� �&�*)&*!���)�����0�(�* !*)/�������*��;��#�*#� ���&�(�)#�1�<�����*����)!�!�(�/�"����# �&&�&�'��$���������!��)����(����$���0� ��"&� ��5*)/�'���)����� �����*�*�)&����)�!�#*!*)/������,��*�( �&��)!�$����!&�/�*)�������,��*��&�# �&&�&1�4��*%� �#�� !�(������*�*�)�!�*)���*�&�#� ����)!�#���!*)���1�4��#5���$*/���(��!*,*!�!�*)������!����)!���" ��!1�<���$*/���(���5��)�*)&���#�*�)�*)����#�!���)!������)!&1�=���=�#�*�)��1>�'���/�*!� *)�&��)�����*�*�)*)/1=�$��*$�&�*��*&�!*''*#� �����!*,*!������'�)#�*�)� *�"�*)���&������������&1�.�5�������%�$;� ���'���(�&����)&�#�*�)��*���������*)+�#�*�)1�?��)�"�����*���������*/*)� �# �&&�'���������)&�#�*�)0�"���$�"�)�����*)5��'�� �������&&*( ��������#�&�&1�@!�� "0�"������ ! *5�����$�5����# �&&�'�����/��!����)&�#�*�)0��)!� ������!!�!*''���)��������*)+�#���&1�.�����)&�#�*�)�$�"���,��!����'*� !&��)!��)������;#��#5*)/��7��'*� !�/�)�����!�'��$����!���1�A)��'��$��'�������*)+�#�*�)�*&�#������*�)��'������7��'*� !1�@'�"����&��#�$��&*�*�)0 ������������ ��������� �������� ���������� ���������� !�" #$%$& �'($"" "�)�%�$�*��!�&%$�"$'&+��,�$�!�$�� %%�%�&%$�"$'&+��-�. "&/ �'0'�! �&0$&��" !�*��!��/1 '&"�2��(!�0$3 �&��/ �% 2%+&& ��&��#%�' ""�&0 �� 2� %%�%�/1 '&"-�40$&������ !�+"�$�'($""�&0$&�% " 5/( "�&0 ��%+*+�$(�'($""�/�&�$!!"�$�) 2�� 23$%+$/( "�$�!�5 &0�!"-�.0+"�% "�(&�+"�$''�5#(+"0 !�&0%��*0�+�0 %+&$�' -6�0 %+&$�' �$((�2"�$�� 2�'($""�&��/ �! %+3 !�)%�5�$�� 7+"&+�*��� �+���%! %�&��"0$% �+&"3$%+$/( "�$�!�%��&+� "-�.0 ��%+*+�$(�'($""�+"�8��2��$"�&0 �/$" ��%�"�# %�'($""-�.0 �� 2�� ,�"+�' �+&� 7& �!"�&0 �'$#$/+(+&���)�&0 �/$" �'($"",�+"�'$(( !�&0 � 7& �! !�'($""-6�0 %+&$�' �#%�3+! "�% �"$/+(+&��/��$!!+�*�) $&�% ",�"�'0�$"� %%�%�+�1 '&+��,�&��$� 7+"&+�*�'($"",�&0 �/$"+'�&%$�"$'&+��,�2+&0��&�5�!+)�+�*�&0 �/$" �'($""-.0 �% $(�#�2 %��)�99:�+"�&0$&�+&�*+3 "�����&0 �$/+(+&��&��&$8 �$�� 7+"&+�*�'($"",�"�'0�$"$�&%$�"$'&+��,�$�!�" ( '&+3 (��'0$�* �#$%&"��)�+&"�/ 0$3+�%�/��% #($'+�*�%��&+� ",�/�&2+&0��&�0$3+�*�&��'0$�* �&0 �"�%%���!+�*�+�)%$"&%�'&�% -�4+&0�"�5 �#($��+�*,����'$��'% $& �$�& "&/ �'0�"�(+!� ���*0�&��" �!�/$"+'�&%$�"$'&+��",�/�&�$/( �&��$''�55�;!$& �$��� 7& �"+��"�� ! !�/��&0 �& "&-<=>?@ABCDEFGBHDA?BD?@AIJCHBKAGJL+*�% �M;N�"0�2"�$�"+5#( �& "&/ �'0-�O�* � %$&�%�'% $& "�$�&%$�"$'&+��,�%$�!�5+P "�+&,$�!�" �!"�+&�&��&0 �!%+3 %-�.0 �% "&��)�&0 �& "&/ �'0�+"�( )&���&-QHRFCJ?<S>?THUVWHXHJE?WKYJCJE?BJZB[JAGI<=>=>?\KZJ?]CKAZKGBHDA.0 �/$" �&%$�"$'&+���'($""�0$"�3$%+$/( "�)�%�&0 �"��%' �$�!�! "&+�$&+���$!!% "" ", +*0&�!$&$�2�%!",�$�!�$�_ �)�%� %%�%�'0 '8+�*,�#(�"�%��&+� "�)�%�!+"#($�+�*�&0 �'��;& �&"�$�!�'$('�($&+�*�&0 �_ -�.0 �ab c d�)��'&+���+"�&$** !�$"�efdghab�"��&0$&+&�'$��/ �% ! )+� !�+)�� ! !,�$"�"0�2��+��&0 �� 7&�" '&+��-�i+%&�$(�%��&+� "�$% 7#($+� !�+��5�% �! &$+(�($& %�+��&0+"�'0$#& %-jkljmnopmlpqr stuvwxtyzt{|p}pm~r�m jkljmnopmlpqr stuvwxtyzt{|p}pm~r�m

Page 129: SystemVerilog for Verification

������������������������ ���������������������� �!"#$��%�����!&� '���� �!"#$�(''���)'*#"'+,-./0' �!1') "1')�"�+20(''33'4��)$5'6��#�*&7 ''*#"'+,-./0'!�!('''''''''''''''''''''33'8�&!9&�"7)'6��#�*&7''6#�"9�&':9�!"#$�'6$#)'!�&!;!�!(''''!�!'<' �!'=') "'=')�"�>?$�(''7�):9�!"#$�''6#�"9�&':9�!"#$�'6$#)')# @&�AB#�@9"' "�#�C'@�7:#?<DDE(''''F)# @&�ABDG ��.' �!<GH1') "<GH1'!�!<GHD1'''''''''''''@�7:#?1' �!1') "1'!�!E(''7�):9�!"#$�7�)!&� IJKLMNOPQ ORSTUROVTWSOWSNOXYMJYVZNROY[\OMTLWJ[NRO]TMOWSNOZYRR_abcd���ef���������� �!"#$��%�����ga�bd������f�hij�kgakb�jl��mnopqorstup�v����wLxxTRNOyTLOSYXNOYOWNRWVN[SOWSYWORN[\ROKTT\OWMY[RYWJT[ROWSMTLKSOWSNOz{|OY[\O[TUUY[WOWTOJ[}NWONMMTMR_O|Y~NOY[ON�JRWJ[KOWMY[RYWJT[OZYRROY[\ON�WN[\OJWOWTOMNYWNOYO[NUZYRR_O�]OyTLO]TZZTUOWSNOKLJ\NZJ[NRO]MT�O�SYx_O��OyTLOUTLZ\OUY[WOWTO�Y~NOYRO]NUOT\NSY[KNROYROxTRRJVZNOWTOyTLMON�JRWJ[KOWNRWVN[S_OwTOSTUOY[OyTLOMNLRNOWSNON�JRWJ[KmnopqorstupOZYRR�O|SJROJRO\T[NOVyO\NZYMJ[KOWSNO[NUOZYRR�O�o�mn�OYROY[ON�WN[RJT[T]OWSNOLMMN[WOZYRR_OmnopqorstupOJROYZZN\OWSNOVYRNOZYRR�OUSNMNYRO�o�mnOJRO~[TU[YROWSNON�WN[\N\OZYRRO�IJKLMNOPQ��_O����������� ��� ������������� ������� ���������������� ��������������������� ��� ������������� ������� ���������������� ���������� ������������ ��������� �������� ���������� ����������� !"# $%&�'(�( )*+,-+./01, 2��33.4+--56+7)*589/8,7-5)*+,-+./01,:55*+,75;0/5;+7<.*.:55=0*/>+45?>,./01,5=1075.+4.<.*.:5555->@8*A.+4.<.*.BC:555555555DD5E1F@>/85G1175EHE55550?5B;+7<.*.C5.*.5I5J.*.:55DD5E1**>@/5/K85EHE5;0/-558,7?>,./01,55=0*/>+45?>,./01,5=107570-@4+LB0,@>/5-/*0,G5@*8?09IMMC:5555NO*0/8BMP-6+7)*Q5;+7<.*.IP;R5MR5@*8?09R5;+7<.*.C:5555->@8*A70-@4+LBC:558,7?>,./01,8,7.4+--5Q56+7)*STUVWUXYUWZ[W\Y] _VWa�bWUXVWcYdZYe_VWfgfWZhWihVjWkZUXTiUWYWXZVdYdlXZlY_WZjV[UZmZVdaWnXVopqrgWl_YhhWlY[WhVVWY__WUXVWcYdZYe_VhWmdT]WUXVWTdZsZ[Y_WrgptupfvwxtW_ihWZUhWTk[cYdZYe_VhWhilXWYhWypqzfgfaWnXVWfp{fzfgfWmi[lUZT[WZ[WUXVWV|UV[jVjWl_YhhWlY__hfp{fzfgfWZ[WUXVWeYhVWl_YhhWihZ[sWUXVWu}~�gWdVmZ|aW�TiWlY[WlY__WT[VW_VcV_WibWeiUsTZ[sWYldThhW]i_UZ_VW_VcV_hWhilXWYhWu}~�g�u}~�g�t��WZhW[TUWY__TkVjWZ[W\�hUV]��VdZ_TsaWSTUWUTW]V[UZT[WUXYUWUXZhWhU�_VbWhZ[lVWZUWdVYlXVhWYldThhW]i_UZ_VW_VcV_hbWcZT_YUVhUXVWdi_VhWTmWV[lYhi_YUZT[We�WdVYlXZ[sWYldThhW]i_UZ_VWeTi[jYdZVha������ !�� $%&�'(�( )*+,-+./01, 2��33 (�������_kY�hWjVl_YdVWdTiUZ[VhWZ[hZjVWYWl_YhhWYhWcZdUiY_WhTWUXYUWUXV�WlY[WeVdVjVmZ[VjWZ[WY[WV|UV[jVjWl_YhhaWnXZhWY _ZVhWUTWY__WUYh�hWY[jWmi[lUZT[hbV|lVUWUXVWt��Wmi[lUZT[bWkXZlXWZhWlY__VjWkXV[WUXVWTe�VlUWZhWlT[�hUdilUVjbWY[jWhTWUXVdVWZhW[TWkY�WUTWV|UV[jWZUaW\�hUV]�VdZ_TsWY_kY�hlY__hWUXVWt��Wmi[lUZT[WeYhVjWT[WUXVWXY[j_V�hWU�Va������������ ������������������� � ��� ����¡¢£������ ����¡¤£ ���¥��¦������¡§£ �������������¥��¦�������������� ������������������� � ��� ����¡¢£������ ����¡¤£ ���¥��¦������¡§£ �������������¥��¦��

Page 130: SystemVerilog for Verification

������������������������ �������������������������� !"#$#%&'%(%)*&+,%-./''($0%/1%2#$3'4%5'%#67.(&8#9%&8%:;(74%<=%2;#%>>?%2#$3%1/$%(%@($&A(B.#%&8%(%+.(''%&'%C7$/7#$20=D%(89%(%2(',%/$%1*8+2&/8%&'%+(..#9%(%C3#2;/94D%E;#8%0/*#62#89%(%+.(''=%2;#%/$&-&8(.%+.(''%F'*+;%('%GHIJKILMNOJP%&'%+(..#9%2;#%7($#82%+.(''/$%'*7#$%+.(''4%Q;#%#62#89#9%+.(''%FRISGHP%&'%,8/T8%('%2;#%9#$&@#9%+.(''%/$%'*B+.(''4%5%B('#%+.(''%&'%/8#%2;(2%&'%8/2%9#$&@#9%1$/3%(80%/2;#$%+.(''4%Q;#%C7$/2/207#D1/$%(%$/*2&8#%&'%U*'2%2;#%1&$'2%.&8#%2;(2%';/T'%2;#%($-*3#82%.&'2%(89%$#2*$8%207#=%&1%(804Q;#%7$/2/207#%&'%*'#9%T;#8%0/*%3/@#%2;#%B/90%/1%2;#%$/*2&8#%/*2'&9#%2;#%+.(''=%B*2&'%8##9#9%2/%9#'+$&B#%;/T%2;#%$/*2&8#%+/33*8&+(2#9%T&2;%/2;#$'=%('%';/T8%&8%V#+A2&/8%<4WW4����X�Y��Z[�\][��Z����_[����Y�aZZ�ZE;#8%0/*%'2($2%#62#89&8-%+.(''#'=%2;#$#%&'%/8#%$*.#%(B/*2%+/8'2$*+2/$'%FJbc%1*8+2&/8P2/%,##7%&8%3&894%d1%0/*$%B('#%+.(''%+/8'2$*+2/$%;('%(80%($-*3#82'=%2;#%+/8'2$*+2/$%&82;#%#62#89#9%+.(''%3*'2%;(@#%(%+/8'2$*+2/$%(89%3*'2%+(..%2;#%B('#e'%+/8'2$*+2/$%/8%&2'1&$'2%.&8#4fa�g�������Y��Z[�\][���h�[i�a� \���[����a���_[����]�aZZjklmmnolmpqrnnstunvlwrnnxytjusztntp{|st}yunstunvlw~rn��n�lmnlw�y�ptunnnnu�sm�vlwn�nvlwrnnpt�xytjusztpt�jklmmjklmmn��upt�p�np�upt�mnolmpqrnnxytjusztntp{|st}yunstunvlw~rn��n�pp�mnlw�y�ptunnnnmy}pw�tp{|vlw~rnn��n�ymun�pnxswmunkstpnzxntp{nnnn��n�u�pwnjztmuwyjuzwnljusztmnnpt�xytjusztpt�jklmm�������������Y�aZZQ;#%1/../T&8-%9$&@#$%+.(''%$#+#&@#'%2$(8'(+2&/8'%1$/3%2;#%-#8#$(2/$%(89%9$&@#'%2;#3&82/%2;#%��Q4 ������������ ��������� �������� ���������� ���������� !"#$!%&'( &!)��**+,-../0123415//6-2,789/:4;<=135//>?;+@28;/;4AB2;C?@/6-2,789/:4;<=13D5////@E2.F:4;<=13/G/:4;<=135//4;=>?;+@28;//@-.H/6-2;5////I1-;.-+@28;/@15/////////JJ/K-;=,4/@8/-/I1-;.-+@28;/87L4+@/81////////////////////////////JJ/-;/+,-../=41234=/>186/I1-;.-+@28;////>814341/74:2;//////:4;<=13F:4@B@1D5//////JJ/M4@/@1-;.-+@28;/>186/:4;41-@81//////@1F+-,+N+1+BD5////////JJ/O18+4../@E4/@1-;.-@28;//////P2>+F+7F.1+/G/@1F.1+5/JJ/Q4;=/@1-;.-+@28;//////FFF////4;=//4;[email protected];=+,-..RSTUVWXYUUVUZT[\XYZ]UVZS]V_RVTZSVabcdecfghidVjkl]WZUmVnnoVp\X]UVUYqVZSYZVTrVqj\SYs]VYVSYtuX]VjrVZS]VkYU]VZqv]VwabcdecfghidxyVTZVWYtVYXUjVvjTtZVZjVYtVjkl]WZVjrVYt]zZ]tu]uVZqv]Vw{c|abxmVRSTUVTUVk]WY\U]VZS]VSYtuX]VgbVWYtVjtXqVp]r]p]tW]VZS]VsYpTYkX]Uebfy|egyfbfyVYtuV|cgcyVYtuVZS]Vpj\ZTt]Vfc}f~fbfmV�jVqj\VWYtVU]tuV{c|abVjkl]WZUTtZjVZS]VupTs]pVTZSj\ZVWSYt�Tt�VTZm�]]V�SYvUmV��VYtuV��VrjpV]zY[vX]UVjrVr\XXqVr\tWZTjtYXVupTs]pUVTZSVYusYtW]uVr]YZ\p]UU\WSVYUVsTpZ\YXVTtZ]prYW]UVYtuVWYXXkYW�Um�S]tVZS]VupTs]pVWYXXUVgb�fc}f~fbfyVSTWSVjt]VTXXVk]VWYXX]uyVZS]Vjt]VTtVabcdecfghidVjpV{c|ab�V�TtW]Vfc}f~fbfVYUVu]WXYp]uVYUVYVsTpZ\YXV[]ZSjuVTtV�Y[vX]UV�m�YtuV�m�yV�qUZ][�]pTXj�VWSjjU]UVZS]Vvpjv]pV[]ZSjuVkYU]uVjtVZS]VZqv]VjrVjkl]WZVUZjp]uTtgbmV�rVZS]Vjkl]WZVTUVjrVZqv]VabcdecfghidyV�qUZ][�]pTXj�VWYXXUVZS]VZYU�VVabcdecfghid��fc}f~fbfmV�rVTZVTUVjrVZqv]V{c|abyV�qUZ][�]pTXj�VWYXXUV{c|ab��fc}f~fbfm"#�#�!�'��� !� � &���&!���**RS]V�]t]pYZjpVrjpVZSTUVZ]UZk]tWSVWp]YZ]UVYVpYtuj[VZpYtUYWZTjtVYtuVv\ZUVTZVTtVZS]V[YTX�kjzVZjVZS]VupTs]pmVRS]VrjXXjTt�V]zY[vX]VUSjUVSjVqj\V[T�SZVWp]YZ]VZS]VWXYUUVrpj[SYZVqj\VSYs]VX]Ypt]uVUjVrYpmV�jZ]VZSYZVZSTUVYsjTuUVYVs]pqVWj[[jtVZ]UZk]tWSVk\�VkqWjtUZp\WZTt�VYVt]VZpYtUYWZTjtVjkl]WZV]s]pqVvYUUVZSpj\�SVZS]VXjjvVTtUZ]YuVjrVl\UZVjtW]j\ZUTu]mVRSTUVk\�VTUVuTUW\UU]uVTtV[jp]Vu]ZYTXVTtV�]WZTjtV�m�VjtV[YTXkjz]Um

Page 131: SystemVerilog for Verification

��������������� � ��������������������������� !"#$#%&'(%!)*&++!',&'!-+#+!.%&$+&)'/($!(01#)'+ !2/%+'!&''#34'555!'((!*/3/'#6)*&++!"#$#%&'(%7!!3&/*0(8!9#$:6%;7!!.%&$+&)'/($!'%7!!<-$)'/($!$#=>/$4-'!3&/*0(8!9#$:6%;?7!!!!',/+59#$:6%;!@!9#$:6%;7!!!! !',/+AB!)*&++A*#;#*!;&%!!#$6<-$)'/($!!'&+C!%-$>?7!!!!<(%#;#%!0#9/$!!!!!!'%!@!$#=>?7!!!!!!!!!!!!!! !D($+'%-)'!'%&$+&)'/($!!!!!!&++#%'>'%5%&$6(3/E#>??7!! !F&$6(3/E#!/'!!!!!!9#$:6%;54-'>'%?7!!!!!!!!! !G#$6!'(!6%/;#%!!!!#$6!!#$6'&+C#$6)*&++HIJKJLMNLOLPKQRSJTLUMVILVIMNLWJXJKOVQKYLHIJLZ[\LVON]LQXNVK_VNLOLVKOXNOVMQXLOXMTTJMOVJSaLKOXQTMbJNLMVYLHIMNLTJOXNLVIOVLVIJLVKOXNOVMQXL_NJNLUIOVJcJKLQXNVKOMXVNOKJLV_KXJLQXLRaLJdO_SVYLHIJLQXSaLUOaLaQ_LOXLIOXWJLVIMNLUQ_SLRJLVQLJMVLVIJeZf\gfhijk\LSONNlLUIMILWQJNLOWOMXNVLVIJLcJKMdMOVMQXLW_MJSMXJNLPKJNJXVJLMXLVIMNRQQ]YLmQKNJLaJVlLVIJLWJXJKOVQKLQXSaL_NJNLeZf\gfhijk\LQRnJVNLoLVIJKJLMNLXQLUOaLVQ_NJLOXLJpVJXJLQRnJVLN_ILONqrfseZYLHIJLdMpLMNLVQLNJPOKOVJLVIJLQXNVK_VMQXLQdLiZdKQTLMVNLKOXQTMbOVMQXLONLNIQUXLRJSQULMXLtJVMQXLuY�YvNLaQ_LR_MSLOVOwQKMJXVJLSONNJNLN_ILONLXJVUQK]LOXLR_NLVKOXNOVMQXNlLaQ_LUMSSLNJJVIOVLVIJaLIOcJLQTTQXLPKQPJKVMJNLxjsyLOXLTJVIQNLxsjgz{f|yYL}QXVKQSwQKMJXVJSONNJNLN_ILONLVIJL~�\�ZfikZLOXL�Zj��ZLSONNJNLOSNQLIOcJLOLQTTQXLNVK_V_KJY�Q_LOXLJXdQKJLVIMNLRaLIOcMXWLRQVILQdLVIJTLVIJLJpVJXNMQXNLQdLOLRONJLeZf\gfhikZSONNlLUMVILcMKV_OSLTJVIQNLdQKLZ[\LOXL�Zfz�[zYLHIJL���LIONLOXLJpVJXNMcJLNJVLQdRONJLSONNJNLdQKLVKOXNOVQKNlLOVOlLOXLT_ILTQKJY���������������������vL_NJd_SL���LVJIXM�_JLMNLVIJL�RS_JPKMXVLPOVVJKXY�L�dLaQ_LIOcJLOTOIMXJLVQLTO]JLNMWXNlLaQ_LQX�VLXJJLVQL]XQULVIJLNIOPJLQdLJcJKaPQNNMRSJLNMWXLMXLOcOXJYL�Q_Ln_NVLXJJLOLNVOTPMXWLTOIMXJLOXLVIJXIOXWJLVIJLMJLVQL_VLMddJKJXVLNIOPJNYL�M]JUMNJlLUIJXLaQ_LUOXVLVQR_MSLOLVKOXNOVQKLWJXJKOVQKlLaQ_LQX�VLIOcJLVQL]XQULIQULVQLR_MSJcJKaLVaPJLQdLVKOXNOVMQX�LaQ_Ln_NVLXJJLVQLRJLORSJLVQLNVOTPLXJULQXJNVIOVLOKJLNMTMSOKLVQLOLWMcJXLVKOXNOVMQXY ������������ ��������� �������� ���������� ����������� !"#!$"���%&$�'�(!�� !�)��!'**� '���+,!&�'�(!��!"-.�$�/!��!'�!0�*1+�!234/!$"�5��%&$�!�!-+&�1%'��!"-.�$�!6�)�!$&��'�(! '�7/!�� !�)��!*" '#,!'��!$"���%�'���/!"%!�8��%�1+�$�!'�!9'�)!��!�:��� � !"-.�$�3!;"9!9)��!,"&!%�� "*'<�!�)'�!-+&�1%'��/!'�!9'++)�8�!�)�!%�� "*!8�+&��!�)��!,"&!9���3!=�>�!�!$"1,!"#!�)'�!"-.�$�!�� !��� !�)�!$"1,�"!�)�! "9���%��*!�%����$�"%3?@ABCDEFGHEIJBDKC@LMEKNMMDCLEADLDCNMOCP)�!-��&�,!"#!�)'�!��$)�'Q&�!'�!�)��!'#!,"&!$)��(�!�)�!-+&�1%'��!"-.�$�/!,"&%!(���%��"%$%�����!�! '##�%���5�,1�!"-.�$�3!R�'�(!�)�!�'(�!���+"(,/!,"&!$)��(�!�)�!$&��'�(! '�#%"*!�!�Q&�%�!�"!�!�%'��(+�!�"!*�>�!S'�+ !�'(��3?@ABCDEFGTEIJBDKC@LMEADLDCNMOCEU@MVELDUEKNMMDCLP)�!-+&�1%'��!'�!�)�!W)"">X!�)��!�++"9�!,"&!�"!$)��(�!�)�!-�)�8'"%!"#!�)�!(���%��"%$+���!9'�)"&�!)�8'�(!�"!$)��(�!'��!$" �3!S"&!��� !�"!*�>�!�!$"1,!*��)" !�)��!$��*�>�!�!$"1,!"#!�)�!-+&�1%'��!�"!�%���*'�/!�"!�)��!�)�!"%'('��+!-+&�1%'��!"-.�$�!'�!>�1��%"&� !#"%!�)�!��:�!1���!�)%"&()!�)�!+""1!6Y'(&%�!254730�*1+�!23�!�)"9�!�)�!(���%��"%!$+���!&�'�(!�)�!-+&�1%'��!1����%�3!P)�!'*1"%����!�)'�(�"!�"�'$�!'�!�)��!�)�!-+&�1%'��!"-.�$�!'�!$"���%&$�� !'�!"��!1+�$�!6�)�!Z[\!#&�$�'"�7!�� &�� !'�!��"�)�%!6�)�!]Z!���>73!_%�8'"&�!$" '�(!(&' �+'���!��' !�"!��1�%���!�)�! �$+�5%��'"�!�� !$"���%&$�'"�!�'*'+�%+,/!,"&!��� !�"!��1�%���!�)�!$"���%&$�'"�!�� %�� "*'<��'"�!"#!�)�!-+&�1%'��!"-.�$�3 abcbdefgdhijklmnophijklmnopqrmstupkvpwqrmstupkvpw xslyxslyzkokm{pk|zkokm{pk|vpmk{tvpmk{t abcbdefgdhijklmnophijklmnopqrmstupkvpwqrmstupkvpw xslyxslyzkokm{pk|zkokm{pk|vpmk{tvpmk{t abcbdefgdhijklmnophijklmnopqrmstupkvpwqrmstupkvpw xslyxslyzkokm{pk|zkokm{pk|vpmk{tvpmk{t abcbdefgdhijklmnophijklmnopqrmstupkvpwqrmstupkvpw xslyxslyzkokm{pk|zkokm{pk|vpmk{tvpmk{t

Page 132: SystemVerilog for Verification

��������������� � ���������������������������� �!�"�#� ���!����������$%&''()*+*,&-.,/((0&1%2.3(4*+56,7/((8,&+'&$-1.+(2%9*:,1+-/((;9+$-1.+(+*<=1+:9-(0&1%2.3(4*+56,7>/((((-?1'@4*+56,7(A(4*+56,7/((((2%9*:,1+-(A(+*<=>/((*+6;9+$-1.+((-&'B(,9+=>/((((8,&+'&$-1.+(-,/((((;.,*7*,(2*41+((((((&''*,-=2%9*:,1+-@,&+6.01C*>/(((((((-,(A(2%9*:,1+-@$.:D=>/(((EE(F('**(2*%.<((((((4*+56,7@:9-=-,>/(((((((((EE(G*+6(-.(6,17*,((((*+6((*+6-&'B*+6$%&''HIJKLMNOPJQIRSOTUOSTUVWUUJSOTXOYJVQTRXOZ[\[O]ROXR_OJPJPaJOQIbQOcRWOPWUQObSSTQOQROQIJOdefghfKijLgObXSOkfldeOVmbUUJU[OYbPnmJOZ[o�OUIR_UObXObSpbXVJSOqJXJbQRWUTXqOQJPnmbQJU[O��r�s�tu��vgwjeLgxygi�z����{IbnQJO|OSTUVWUUJSOQIJOQIJJOnIbUJUOR}OJ~JVWQTRX�O�WTmSO�WXObXSO� bn�Wn[OYbPnmJZ[�OUIR_UOQIJOJXpTRXPJXQOVmbUUOQIbQOTXUQbXQTbQJUObmmOQIJOQJUQaJXVIOVRPnRXJXQUObXSWXUOQIJUJOQIJJOnIbUJU[ ������������ ��������� �������� ���������� ���������� !"#$!%&'()*&+,&-!.��//0012,3-4,&561,&'()*&+,&-157833578331%&'()*&+,&-911:,&,)8-*)1;,&911<)(',)1=)'911+8(74*>1;,&?=)'911@A&5-(*&1'*(=14A(7=BC9111001DA(7=1-6,1,&'()*&+,&-14E1111;,&?=)'1F1&,GBC911111110015*&3-)A5-(&;1-6,1+8(74*>H1111;,&1F1&,GB;,&?=)'C91111001;,&,)8-*)H1111=)'1F1&,GB;,&?=)'C911110018&=1=)(',)11,&=@A&5-(*&11-83I1)A&BC91111@*)I111111;,&J)A&BC9111111=)'J)A&BC91111K*(&L&*&,11,&=-83I11-83I1G)8MLAMBC91111001%+M-E1@*)1&*G1N15877135*),4*8)=1@*)1),M*)-11,&=-83I,&=57833"#O#O!P!�Q��� !R /ST U.VWXYZ[Y\[Z]\Z_[a]YbZ]Z[XYZ[_cdeYfYeZcg_hgaijZWXYZka\]Z[Y\[Zlm\[ZeY[\Z[XYZYf]g_iY[gmZn][XZaeeZ[XYZbYoame[\j����� !"#"!�Q��� !S /S!�pqrp��!s/QUr! UtQpqU� US!u v�s�S/M)*;)8+18A-*+8-(51-,3-911%&'()*&+,&-1,&'911(&(-(8714,;(&1111,&'1F1&,GBC9111111111001w*&3-)A5-1-6,1,&'()*&+,&-1111,&'J4A(7=BC9111111111001DA(7=1-,3-4,&561*4K,5-31111,&'J)A&BC911111111111001xA&1-6,1-,3-1111,&'JG)8MLAM9111111111001w7,8&1AM18@-,)G8)=311,&=,&=M)*;)8+

Page 133: SystemVerilog for Verification

��������������� � ��������������������������� !"#!$%&'"�()*��+,-./0123-4/-155,56-7,8-/119-3,-2:4/;1-3:1-<=81>5./3-,<0123-?5,@-4� !"#!$%&'"-,<0123-3,-4-A!B� C-D,8-9,-3:.E-<13F11/-3:1-<8.=9-4/958/->:4E1E-./-3:1-1/G.5,/@1/3C-+:1-3,>H=1G1=-31E3<1/2:-58/E-142:>:4E1-,?-3:1-1/G.5,/@1/3-4/9-2:4/;1E-3:1-<=81>5./3C-I,31-:,F-4==-3:151?151/21E-3,-A!B� -451-./-3:.E-,/1-?.=16-4/9-E,-7,8-9,/J3-:4G1-3,2:4/;1-3:1-K"L& '"MN"%-,5-ON"N !%' -2=4EE1EC-D,8-F4/3-3,51E35.23-3:1-E2,>1-,?-F:151-A!B� -.E-8E196-4/9-E,-4-E34/94=,/1-PNQ&"CCCN"B-<=,2R-.E8E19-./-3:[email protected]=1-,?-3:1-&"&%&!S-<=,2RC-+:[email protected]==7-9.E3./23.G1-<=,2R-,?2,91C-D,8-24/-34R1-4-E:,53283-4/9-2,/E35823-3:1-1T31/919-2=4EE-./-3:1-912=4543.,/CU*VW)����X�Y�Z�[�����*������������\*��*[��]�����]�������[�_abcdecfgadcghiegjkgleemnohandjngejnoleehnhghcpeqjbhneeeejnoerenjstuleeeejnovqfhpwtuleeeeeeeeeeeeeeeexxeyankgfigebjnjcgazejgiveeeeqjbhneeeeee{cw|eqcwerenjstuleeeeeeeexxe}j_pcijeqpfj_hngeshg~eeeeeejnovbjnvqpfj_hngereqcwleexxeg~je�qcw�eanjeeeejnweeeejnovfntuleeeeeeeeeeeeeeeeeexxe}fneg~jegjkgeshg~e{cw|eeeejnovsc_�f_tuleeeeeeeeeeeeeexxeypjcnef_ec�gjscwkeejnwjnw_abcd������(�*�������*��]V�(]���\*����������*�����������()*���/-�:4>C- 6-7,8-=145/19-:,F-3,-;1/15431-2,/E354./19-54/9,@-9434C�,E3-,?-7,85-31E3E-451-;,./;-3,-/119-3,-?853:15-2,/E354./-3:1-94346F:.2:-.E-<1E3-9,/1-F.3:-./:15.34/21C-�/-�4@>=1-�C��6-3:1-,5.;./4=+54/E423.,/-2=4EE-.E-1T31/919-3,-./2=891-4-/1F-2,/E354./3-3:43-R11>E3:1-91E3./43.,/-49951EE-./-3:1-54/;1-,?-����-,?-3:1-E,8521-49951EEC ������������ ��������� �������� ���������� ���������� !"#$%!&'()*!()+ ,(-�). !-/!�00!�!./)'-,�()-12344567389:57;<7=>45?83=431<@A=B551A=4<83@=<51C=7389:5D5555>4<5@=4@>75DE481FGHHI481JGHHKLB555L7=>12344M8AN83O53P<AO3<@15<74<B55Q=R@8A=O7=<57=RB55@=@<@32597N@=55557=R5S5=7TUVB55557=RW9P@2>UVB555555555555555XX5YA=4<8P1<5N7=783<A8Z57<1W555597N@=55555567389:5=95S5=7TUVB5555555XX5Y873<7535=7T592P7M8@=<5555557=RWN7=W92P7M8@=<5S5=9B55XX5[7M23175<\7592P7M8@=<55557=>55557=RW8P=UVB55555555555555555XX5[P=5<\75<74<5T@<\567389:55557=RWT83MCPMUVB5555555555555XX5Y273=5PM53]<78T38>4557=>7=>M8AN83O_abcdbefbg_hbiafejabdbk_jlmdejbejbdjbanajiaibkodllbpecbcabldqabjdqabdlb_jabejcabrdlabkodllsbcabanajiaibk_jlmdejbmatodkalbcabrdlab_jaubvcelbdoo_plbg_hb_kcdjwabcabracdxe_mb_fbanelejwbk_jlmdejlu"#y!z/{).�'-()*!�)0!|(,-}��!~ -+/0'�lbg_hbldmb_bhlabejcamedjkab_banajibcabfhjke_jdoegb_fbkodllalsbg_hbjaaibdbfap���bakcje�halb_bk_jm_obcab_r�aklbdjibcaembfhjke_jdoegub�jbtdmekhodmsbdbcdjioakdjbmafamb_bdjb_r�akbf_mbdbkamdejbkodllsb_mbdjgbanajiaibkodllub�_bpcdbcdttajlbpcajdbrdlabcdjioabt_ejlb_bdjbanajiaib_r�ak�b�cdbcdttajlbpcajbg_hbkdoobdbqac_icdbanellbejbr_cbcabrdlabdjibanajiaibkodllal�bvcelblake_jbantodejlbpcdbcdttajlhlejwblaxamdobandqtoalu"#y#$!z/{).�'-()*!{(-+!������_pjkdlejwb_mbk_jxamle_jbelbcabdkb_fbkdlejwbdbt_ejamb_bdbrdlabkodllb_b_jab_bdiamexaibkodllub�_jleiambcabrdlabkodllbdjibanajiaibkodllbejb�dqtoab�u��bdjib�ewhma���u

Page 134: SystemVerilog for Verification

��������������� ����������� ��������������� �!���"#��$%�"#�#�&��!!'()**+,-).*)'/01.2++-).3+40/+56789:+*-'2++;0-/<)(+=<.'/01.+;103+30*>()?@0.></+*/-0.A+>-B=0CDEEF2++++G30*>()?@EH*,-).*)'/01.8+*-'DH93EI+>-B=0CI+*-'F2++B.3=<.'/01.B.3'()**'()**+J)3,-+BC/B.3*+,-).*)'/01.2++40/+4)3K'-'2++;0-/<)(+=<.'/01.+;103+30*>()?@0.></+*/-0.A+>-B=0CDEEF2++++G30*>()?@EH*J)3,-8+4)3K'-'DH4EI+>-B=0CI+4)3K'-'F2++++*<>B-L30*>()?@>-B=0CF2++B.3=<.'/01.B.3'()**,-).*)'/01.+/-2J)3,-+4)3I+4)3M2NOPQR���ST��O���OUO�#��$%�"#�#�%R�"!�&%OV"WXYZ[\]Z\ _]Z\]Zabca]dadZe\]dfaZcXZ\Zg\aZe\]dfahZ\]dZ]XZia[_\fZ[XdaZ_Z]aadadhZ\eXj]Z_]Zk\lifaZmn��n����������o�pV�qO"P��$%�"#�#�r�"#���%V�s�!��r�"#��,-).*)'/01.+/-2J)3,-+4)324)3+D+.Bt@F2+++++++uu+v1.*/-<'/+J)3,-+BC/B.3B3+14wB'//-+D+4)32++++++++++uu+J)*B+x).3(B+>10./*+/1+BC/B.3B3+14wG30*>()?@/-L*-'F2++uu+y0*>()?+4)*B+;)-0)4(B/-L30*>()?2++++++++uu+v)((*+J)3,-8830*>()?zea]Z\Z[f\Z_Zabca]dadhZ\ffZceaZg\aZ[f\Z{\|_\gfaZ\]dZlaceXdZ\|aZ_][fYdadhZ\]dXZceaZ_]caa|Z}~�Zab_cZ_]ZceaZabca]dadZXg�a[cnZ�eaZ\ _]la]cZX]ZceaZa[X]dZf_]aZ_ia|l_ccadhZ\Z\]�Z|a�a|a][aZY_]ZceaZg\aZe\]dfaZ�~Z_Z{\f_dhZY[eZ\Z�~�}~�Z\]d�~���}����nze\cZ_�Z�XYZc|�ZX_]Z_]ZceaZXiiX_caZd_|a[c_X]hZ[Xi�_]Z\Zg\aZXg�a[cZ_]cXZ\]abca]dadZe\]dfahZ\ZeXj]Z_]Zk\lifaZmn���Z�e_Z�\_fZga[\YaZceaZg\aZXg�a[cZ_Zl_�_]Zi|Xia|c_aZce\cZX]f�Zab_cZ_]ZceaZabca]dadZ[f\hZY[eZ\Z�����~�nZ�ea�������������� ������������ ������ ¡¢������ ¡¢�������������� ������������ ������ ¡¢������ ¡¢ ������������ ��������� �������� ���������� ����������� �!"#$%&'$�("#�!&)$��&*&��*�"'&'+�',&$-&�+�&+*.)#�&��(��&*.)&/"##&.$�&'$�("#��+�&��'$.)&#".�0123456789:;7<=4>?@A727B2C67D2@E567F=72@76GF6@E6E7D2@E56HIJKJLMNOPQJJJJJJJJJJJJJRRJSTLUHIVWHJXYUMJTXZMWHXY[JKJHIQJJJJJJJJJJJJJJJRRJ\]]]_JabbJcdJSefab\g[hUijYkOXY[lXY[mWIWPQJJRRJXY[mWIWJhUJLTHJhLJXYUMJTXZMWHn�&"�&.$�&*#/*��&"##�%*#&�$&*��"%.&*&o*��&+*.)#�&�$&*.&�p��.)�)&+*.)#�0&n�&"�&*##$/�)/+�.&�+�&o*��&+*.)#�&*'�q*##�&($".��&�$&*.&�p��.)�)&$or�'�0&s+�&tuvwx&!$q�".�&'+�',��+�&��(�&$-&$or�'�&!�-�!�.'�)&o�&�+�&+*.)#��y&.$�&rq��&�+�&+*.)#�0&n-&�+�&�$q!'�&$or�'�&"��+�&�*��&��(�&*�&�+�&)���".*�"$.y&$!&*&'#*��&�p��.)�)&-!$�&�+�&)���".*�"$.z�&'#*��y&�$q'*.&'$(�&�+�&*))!���&$-&�+�&�p��.)�)&$or�'�&-!$�&�+�&o*��&+*.)#�y&x{y&".�$&�+��p��.)�)&+*.)#�y&|v}~0123456789:�7�C?@A7gWYUH7F=7�=4>7D2@E56CXY[JKJLMNOPQJJJJJJJJJRRJSTLUHIVWHJ�Y[dIJM�HML[M[JTXZMWHHIJKJXY[QJJJJJJJJJJJJRRJ�YUMJ�YL[jMJiThLHUJHTJM�HML[M[JTXZRRJS�MW�JH�MJTXZMWHJHkiMJ�JWTiklJ�h�VjYHhTLJMIITIJh�J�hU�YHW�RRJa�JUVWWMUU�Vj�JXY[�JiThLHUJHTJH�MJTXZMWHJIM�MIMLWM[JXkJHIgWYUHOXY[��JHIPQRRJS�MW�J�TIJHkiMJ�hU�YHW��JLTJUh�VjYHhTLJMIITIh�O�gWYUHOXY[��JHIPPJJg[hUijYkO�WYLLTHJYUUh�LJHIJHTJXY[��PQg[hUijYkOXY[�lXY[mWIWPQJRRJXY[mWIWJM�hUHUJhLJTIh�hLYjJTXZ�+�.&�$q&q��&tuvwx&*�&*&�*�,y&������ �!"#$%&'+�',�&�+�&��(�&$-&�+�&�$q!'�&$or�'�&*�!q.��"��&*.)&%"���&*.&�!!$!&"-&"�&"�&.$�&'$�(*�"o#�&/"�+&�+�&)���".*�"$.0&�+�.&�$q&q��tuvwx&*�&*&-q.'�"$.y&������ �!"#$%&��"##&'+�',�&�+�&��(�y&oq�&.$&#$.%�!&(!".��&*.&�!!$!"-&�+�!�&"�&*&�"��*�'+0&s+�&tuvwx&-q.'�"$.&!��q!.�&��!$&/+�.&�+�&��(��&*!�&".'$�(*��"o#�y&*.)&.$.���!$&-$!&'$�(*�"o#�&��(��089;9�7�?�F�257�6FD=EC��&.$/&�$q&�+$q#)&o�&'$�-$!�*o#�&q�".%&+*.)#��&/"�+&�p��.)�)&'#*����0&�+*�&+*(�(�.�&"-&�$q&�!�&�$&'*##&*&!$q�".�&q�".%&$.�&$-&�+���&+*.)#���

Page 135: SystemVerilog for Verification

��������������� ����������� ������������� �!"#$%#&'()$��*+�,#-!"�.��//�/&0#%%1!"#$%#&'()$211"#$-13('14567891%"&:1-%':1-#'#4;9211<<1=#"(#30>%113('14567891&"&211?("'@#01A@$&'()$1?)(-1&#0&B&"&CD2111<<1EFG1#001A(>0-%11111&"&1H1%"&1I1-%'1I1-#'#JK)"211>$-A@$&'()$>$-&0#%%171!"#$%#&'()$&0#%%1,#-!"1>K'>$-%1!"#$%#&'()$211"#$-13('13#-B&"&211?("'@#01A@$&'()$1?)(-1&#0&B&"&CD21111%@L>"J&#0&B&"&CD211111111111<<1M)NL@'>1O))-1MGM1111(A1C3#-B&"&D1&"&1H1P&"&21111<<1M)""@L'1'Q>1MGM13('%11>$-A@$&'()$>$-&0#%%171,#-!"RSTSUVWUXUYZ[\]U[U\[_SUaXUbWSWUaXc_ZSWU[U_VSTScUdeSWf����������g�h���i*j�.��//���klm+/!"#$%#&'()$1'"2,#-!"13#-2($('(#013>O($11'"1H1$>nCD211'"J&#0&B&"&CD2111<<1M#00%1!"#$%#&'()$77&#0&B&"&113#-1H1$>nCD2113#-J&#0&B&"&CD211<<1M#00%1,#-!"77&#0&B&"&11'"1H13#-211111111<<1,#%>1Q#$-0>1L)($'%1')1>K'1)3o11'"J&#0&B&"&CD2111<<1M#00%1,#-!"77&#0&B&"&>$-p[U_S\V_SUqaV\aUrVTbXZUsSa[_U[U\XZZtUudWSsvSTVZ[wUbWSWUaSU[YxS\yWUdeStUc[UaSaXc_ZSyWUdeSfUzcUaSUZXWUWXSsScU[UuXseZSU{f|}tU~�Ue[VcWU[UXcUS�Sc_S_U[YxS\�������UXc_UW[U���������������UVWU\XZZS_fUzUd[bUZSU[bUaSU���~���Us[_VVSTU[cU��������tUudWSsvSTVZ[wUq[bZ_UbWSUaSdeSU[UaSUaXc_ZSU~�U��������~����tUc[UaSU[YxS\fUpaXUZXWUWXSsScUq[bZ_U\XZZ�������~�������������U�UeT[YXYZdUc[UqaXUd[bUqXcS_fpaSU���USTsU[TUsbZVeZSUT[bVcSWUWaXTVcwUXU\[ss[cUcXsSUVWU�e[Zds[TeaVWsf�UzW[ZrSWUXUeT[YZSsUWVsVZXTU[UqaXU\[sebSTUXT\aVS\WUX\S_UqaScUTdVcwU[UsX]SUXeT[\SWW[TUaXU\[bZ_UX__TSWWUXUZXTwSUX__TSWWUWeX\SUYbUaX_U[cZdUXUWsXZZUXs[bcU[eadWV\XZUsSs[TdfUpaSdU\TSXS_UaSU\[c\SeU[UrVTbXZUsSs[TdtUqaSTSUaSU\[_SUXc__XXU[TUXUeT[wTXsU\[bZ_UTSWV_SUVcUsSs[TdU[TU[cUXU_VW]fU�U\[seVZSUVsStUaSUeT[wTXs ������������ ��������� �������� ���������� ����������� !�"# #$%&% ��' ()&�' &%'��%� * �$)� #)' )++ �)!%� ,)&% "- ./ �$% $)&�#)&% (+0'"(%&)���1 '/'�%2 )� &0�3��2%4 5 6�&�0)+ )��&%'' ,"0+� .% 2)((%� �" '"2% 758 ,$�('9"& �$% '#)( -�+% "� �$% ��'!4 :&"1&)22%&' �" +"�1%& �%%�%� �" #"&&/ )."0� �$�' 6�&�0)+2%2"&/ 2)((��1 #$%� �$%/ #&"�% ,"�% * �$%/ ;0'� !�%# �$)� �$% (&",%''"& #"0+�-��� �$% ,"�% )�� �)�) )� &0�3��2%4 <%% )+'" =%����1 >�??@A4BCDCDEFGHIJKLMNOEP$%&% �' "�% �"#�'��% �" 0'��1 6�&�0)+ 2%�$"�' * "�,% /"0 �%-��% "�%9 )++ %Q�%��%�,+)''%' �$)� �%-��% �$% ')2% 6�&�0)+ &"0���% 20'� 0'% �$% ')2% R'�1�)�0&%9S �4%49 �$%')2% �02.%& )�� �/(% "- )&102%��'4 T"0 ,)��"� )�� "& &%2"6% )� )&102%�� �� )�%Q�%��%� 6�&�0)+ &"0���%4 P$�' ;0'� 2%)�' /"0 �%%� �" (+)� )$%)�4P$%&% �' ) 1""� &%)'"� �$)� </'�%2U%&�+"1 )�� "�$%& VV: +)�10)1%' &%W0�&% �$)� )6�&�0)+ 2%�$"� 20'� $)6% �$% ')2% '�1�)�0&% )' �$% "�% �� �$% ()&%�� >"& 1&)��()&%��A4X- /"0 #%&% ).+% �" )�� )� )�����"�)+ )&102%��9 "& �0&� ) �)'! ���" ) -0�,��"�9 ("+/32"&($�'2 #"0+� �" +"�1%& #"&!4 T"0& ,"�% �%%�' �" .% ).+% �" ,)++ ) 6�&�0)+ 2%�$"�#��$ �$% )''0&)�,% �$)� ) 2%�$"� �� ) �%&�6%� ,+)'' #�++ $)6% �$% ')2% ���%&-),%4BCYEZ[\][OGKG[IE_INMGKJIaNEJIbEcdKNMIJKGeNO5' /"0 .0�+� 0( /"0& �%'�.%�,$9 /"0 $)6% �" �%,��% $"# �" 1&"0( &%+)�%� 6)&�).+%')�� &"0���%' �"1%�$%& ���" ,+)''%'4 X� f$)(4 @9 /"0 +%)&�%� $"# �" .0�+� .)'�, ,+)''%')�� ��,+0�% "�% ,+)'' ��'��% )�"�$%&4 :&%6�"0'+/ �� �$�' ,$)(�%&9 /"0 ')# �$% .)'�,' "-��$%&��)�,%4 P$�' '%,��"� '$"#' /"0 $"# �" �%,��% .%�#%%� �$% �#" '�/+%'9 )�� )+'"'$"#' )� )+�%&�)��6%4BCYCgEhNaGbGIHEiNKjNNIEZ[\][OGKG[IEJIbE_INMGKJIaNk"# '$"0+� /"0 ��% �"1%�$%& �#" &%+)�%� ,+)''%'l f"2("'���"� 0'%' ) R$)'3)S &%+)3��"�'$�(4 5 (),!%� $)' ) $%)�%& )�� ) ."�/4 X�$%&��)�,% 0'%' )� R�'3)S &%+)��"�'$�(4 5mnopq �' ) pqnrsntuvwr9 ;0'� #��$ 2"&% ��-"&2)��"�4 P).+% x3y �' ) W0�,! 10��%9#��$ 2"&% �%�)�+'4

Page 136: SystemVerilog for Verification

��������������� �������������� ������� ����������������� ��!"��#!""�$"!�������!��%&'�(!)���&�$&#*+)��+)�&�!�"!�,���$"!��-.&���/!#0"�1�%&'�#!%��! ��!�2!�!�$"!���!)2���!2���$"!���!)2�)&(�(!)���&#!3��!�0!$3���$"!����4%���#5��+"&,�2&���)&���'00&���#'"�+0"��+)���+�!)$�1(�����&)��$"!���2��+ ���6�&#��� ��!"�$"!�����!��&)$���7)���!2�%&'��! ���&�'��$&#0&�+�+&)���"���)!�+ �"%1�%&'�$&'"2��/��)2�&)��&6�����$"!������&�*�����)�(�$"!��1�!)2�#!)'!""%�!22�����+)6&�#!�+&)�6�&#�����&��������7)�4!#0"��8���1�����9:;<=;>?@A<�!)2�B;C9:�$"!�����!���*&���*'����!)�!$D�+&)����!��!���$��!��2�+)�!�,�)��!�&��!)2�2�+ �)�+)�&�����EFG��G�'��+)���+�D!)$��#!3�����)���H�G���"&(��D"� �"�+)6&�#!�+&)��'$��!��=:>1C=?1�!)2�C;?;�#'���!"(!%��*�0����)��6&������E�+ ����&���)2�!���!)�!$�+&)�I�7)�4!#0"��8���1�����)�(�B;C9:�$"!����!��!�)�(�6+�"2�J;CK>:>�!)2�����/��)2�2>;L>K>:>�6')$�+&)��G���MN<N:;?A:�$"!���O'�����!)�#+���!��!)�!$�+&)�!)2�2&���)&��$!���!*&'������!22+�+&)!"�+)6&�#!�+&)��76�%&''���$&#0&�+�+&)��&�$��!����������&��*'����!)�!$�+&)1�����MN<N:;?A:$"!���(&'"2��! ���&�*����(�+���)��&��!)2"������)�(��%0��76��(&�&*O�$������#��&�*����"!��2�*%�*&���P+�D!Q�!)2�P�!�D!1Q�%&'�#!%�)��2��&�*��!3���#�2&()�+)�&��#!""���$&#0&)�)���RSTSUVWXYZ[\]V_abVcY]dY aYeG���$"!��+$!"�ffg�!00�&!$���&�*'+"2+),�!�$"!����+��!�$�%�0!��+�+&)��6')$�+&)!"+�%�+)�&�#!""�*"&$3����!��!����!�%��&�')2����!)2��h&(� ��1�����*�)$����!���)&����!)2!�2��&6�D(!���2� �"&0#�)��0�&O�$��1�!��(!��2+�$'���2�+)�4�$�+&)����i�&)�0'*"+$� ���"&$!"!���+*'�����j&)$�0����'$��!��+)6&�#!�+&)��+2+),�k'�+),�"&$!"� !�+!*"��l�$&)6"+$��(+��mnZ[\VRop j&#0!�+),�+)���+�!)$���&�$&#0&�+�+&)q'���+&) 7)���+�!)$� j&#0&�+�+&)E&�%&'�)��2��&�,�&'0�#'"�+0"���'*$"!������&,�����-�k4%���#5��+"&,�2&���)&���'00&���#'"D�+0"��+)���+�!)$�l� r& s��E&��������+,���D"� �"�$"!�����0����)��&*O�$���!��!��+#+"!��"� �"�&6�!*���!$�+&)- s�� r&7������"&(��D"� �"�+)6&�#!�+&)�!"(!%��0����)��&����t'+��2- s�� r&E&�������!22+�+&)!"�2!�!�)��2��&���#!+)�!��!$��2��&�����&�+,+)!"�$"!���(�+"��+��+��*�+),�0�&$����2�*%�0��D�/+��+),�$&2�- s�� r& ������������ ��������� �������� ���������� ����������� !"#"$%&$�% '("$(#$" %%�&")#*�)�)"+�&�����$,"# �"'- $.-��#����$,/"0�)��#.�,1��+��� !"#"$.# &#'$�- "� $-"&)#��%."2�%'%&")#,"'#�&%")-.%"2.-��%)&"$(# "�$"&-�+%&/3(% ",-�"#.%"'.%#$� !"#"'�#&&"$-".%2.%&% $"#"$.# &#'$�- 1",-�")#,"4# $"$-"2#.$�$�- "�$$-"5%%2"$(%"'-�%")-.%")# #!%#��%/"6-."%*#)2�%1",-�")#,"(#+%"# "7$(%. %$"89:;.#)%"# �",-�."$%&$�% '("�&%&"$4-";�#+-.&1" -.)#�"<==>"# �"?�.$�#�"@9A"<BCDE>/F&� !"'-)2-&�$�- 1",-�"'-���"'.%#$%"#"�#&�'"'%��"GHIJKLMNKOP"4�$("#��"$(%"'-))- ;�%��&"&�'("#&"QK"# �"RK"# �"#"��&'.�)� # $"+#.�#��%1"STUQV"$-"� ��'#$%"$(%"$,2%/W(%.%"�&"#"&%'- �"'�#&&"$-"(-��"$(%"?@9A"� ;-.)#$�- 1"4(�'("�&"� '���%�"� GHIJKLMNKOP/XYZ[\]_abcde\feghYgijk]lg]jmlYZ]nejkopZ[pqejepgrrstuvswxyuzzx{|x|y}~��s�v��~y�w~zx�ssv��x|x�sx{�zs����s�����s��{|�x�ssw~{|s��{|�xs��{|�ssw~{|s��vs������s|~�s�~�ssw~{|s��vs������s}x{�ss���ssw~{|s�}~{s�}~{���x{|y}~��y}~��s�}~{�ssw~{|s��vs������s�}~{�x{|y}~��W(%.%"#.%"&%+%.#�"2.-��%)&"4�$("'-)2-&�$�- /"6�.&$1"�$"#��&"# "%*$.#"�#,%."-;"(�%.#.�'(,1"# �"&-",-�"(#+%"$-"'- &$# $�,"#��"# "%*$.#" #)%"$-"%+%.,".%;%.% '%/"W(%"?@9A� ;-.)#$�- "�&"'#��%�"PHI�I�� KU�I�� KU/"¡;",-�"&$#.$"#��� !")-.%"�#,%.&1"$(%"(�%.�#.'(�'#�" #)%&"�%'-)%"#"��.�% /9")-.%"&��$�%"�&&�%"-''�.&"4(% ",-�"4# $"$-"� &$# $�#$%"# �".# �-)�¢%"$(%"(�%.#.'(,-;"'�#&&%&/"3(#$"�-%&"$(%"GHIJKLMNKOP"'- &$.�'$-."'.%#$%£"0� '%"STUQ"�&".# �-)1,-�"�- ¤$"5 -4"4(%$(%."$-"'- &$.�'$"#"B KU"-�¥%'$"4(% "UP¦"�&"'#��%�/"3(% ",-�.# �-)�¢%"$(%"'�#&&1"$(%"'- &$.#� $&"&%$"+#.�#��%&"� "�-$("$(%"GHIJKLMNKOP"# �"B KU-�¥%'$&"�#&%�"- "$(%".# �-)"STUQ";�%��/"§-�"(#+%"#"'�.'��#."�%2% �% ',"� "$(#$".# ��-)�¢#$�- "- �,"4-.5&"- "-�¥%'$&"$(#$"(#+%"�%% "� &$# $�#$%�1"��$",-�"'# ¤$� &$# $�#$%"$(%&%"-�¥%'$&"� $��"STUQ"(#&"�%% "'(-&% /W(%"- �,"&-��$�- "$-"$(%"'- &$.�'$�- "# �".# �-)�¢#$�- "2.-��%)&"�&"$-"#�4#,&"� &$# �$�#$%"#��"-�¥%'$&"� "GHIJKLMNKOP UP¦/"©-4%+%.1"�;",-�"#.%"#�4#,&"�&� !"#��#�$%. #$�+%&1"4(,"��+��%"$(%"7$(%. %$"'%��"� $-"$4-"��;;%.% $"'�#&&%&£

Page 137: SystemVerilog for Verification

��������������� �������������� ������� �������������� !"�#$%&�'(& �$%)(* +,-./012,3.432,45678.4569.46:41-.5.4055;.5<4=2/02>7.540,41-.4.?1.,@[email protected],4>./.:./.,3.@4A01-6;141-.4.?1/24-0./2/3-B42540,4CDEFEGHIJK<4L6;4@6,M14,..@424@053/090N,2,1O4>;14B6;492B4:0,@4014.250./4164-28.46,.482/02>7.41641.514/21-./41-2,4@60,P41BQ.N3-.3R0,P<S)!T� ���U��VW$�X$(Y�)(�Z%& �( %�[�)! �#$%&�$(& �$%)(* \\] _]abc_ddbefbfcghii]jklhcmahdbn]]opbfbq]berd]sttu]tjjjv]wxefybn]]ahef]wxefyb]wxefn]]ahef]zx]{|}~��]fhu]ihn]]ahef]zx]{��~��]gben]]���befcghiicghii]�ghe]b�befi]jklhcmahdbn]]ahef]zx]{��~��]�ghenbefcghii�,41-.4@6A,[email protected]:437255.541-214;5.40,-./012,3.427A2B54/.�;0/.5496/.4.::6/[email protected],O4>;07@O42,@4@.>;P41-2,4245.146:437255.54A01-6;140,-./012,3.<4L6;/[email protected];514;5.��J�D4A-.,.8./4B6;4-28.42,42550P,9.,14:/69424>25.4-2,@7.41642,4.?1.,@.@<4�;07@N0,P4245.146:480/1;2749.1-6@5432,4>.43-277.,P0,PO42541-.B42774-28.4164-28.41-.4529.Q/6161BQ.<4+:4B6;4,..@42,4.?1/242/P;9.,1O4B6;4,..@4164P64>23R42,@[email protected].,10/.45.1O2,@4Q6550>7B41-.4/6;10,.4327754166<�-./.42/.427564Q/6>7.954A01-4/2,@690�2106,<4�6A4@64B6;492R.42436,51/20,141-214/2,[email protected]>.1A..,41-.41A64R0,@546:4:/29.42,@45.1541-.4Q/6Q./482/02>7.5�4L6;32,M14Q;142436,51/20,140,4�DE�J���J�C41-214/.:./.,3.541-.4HIJK4:0.7@<�-.4:0,274055;.4054A01-49;710Q7.40,-./012,3.<4+,4�0P;/.4�N�O4B6;432,45..4-6A41-.4=���:/29.4054@./08.@4:/69424,6/9274���4:/29.<4�-.4Q/6>7.940541-2141-.5.4@0::./.,14512,N@2/@54/.36,8./P.@<4�B51.9=./[email protected],6145;QQ6/149;710Q7.40,-./012,3.O42,@4564B6;36;7@4,6143/.21.41-.4=�����,2Q��6,1/674:/29.41-/6;P-40,-./012,3.< ������������ ��������� �������� ���������� ���������� !"#$!%�&'�(& !�)* ��'+), !(�-.& /"0101!2!3 +&#4-�&5!2&' �)+'�6 789:;<=;>?@?;A9BCDE>9@;9BDFGC9H?CFDF:H?C>I9JK@9?AHCF?@DA:C9FCLK?FC>9CM@FD9:;EC9DAE9=BDANA?AG9@;9ECDB9O?@H9DBB9@HC9E?88CFCA@9:BD>>C>I9DAE9J;@H9HDPC9E?88?:KB@9:;A>@FK:@?;A9DAEFDAE;<?QD@?;AI9OHD@9:DA9R;K9E;S9T;K9:DA9?A>@CDE9<DUC9D9>?AGBCI98BD@9:BD>>9@HD@9HD>9DBB@HC9PDF?DJBC>9DAE9F;K@?AC>V9WH?>9D==F;D:H9BCDE>9@;9D9PCFR9BDFGC9:BD>>I9JK@9?@9HDAEBC>9DBB@HC9PDF?DA@>9:BCDABRV9T;K9HDPC9@;9K>C9@HC9E?>:F?<?ADA@9PDF?DJBC9;8@CA9@;9@CBB9OH?:HPDF?DJBC>9DFC9PDB?EI9D>9>H;OA9?A9XD<=BC9�VYZV97@9:;A@D?A>9>CPCFDB9:;AE?@?;ADB9:;AN>@FD?A@>I9OH?:H9D==BR9?A9E?88CFCA@9:D>C>I9EC=CAE?AG9;A9@HC9PDBKC9;89[\]V_+/(& !"0a!b��&5�)�!+!c&+'!d'* �) '!c�+/ efghhijklmngemopgnjqiikrsjtjoijuvniwxxyixzzz{i|}utmjqiipguti|}utmji|}utqiipguti~}ki������itgyihgqiipguti~}ki������ifjuyi�fguqii���iie�uhkpg}ukijklmngemopgnjmxxiwiiii}oi�|}uti��ixx�iwiiiiiitgkg�h}�j��i}uh}tjiw���������{qiiiiiifjui��itgkg�h}�j��qii{{iie�uhkpg}ukijklmngemopgnjm}jjjiwiiii}oi�|}uti��ixzzz�iwiiiiiitgkg�h}�j��i}uh}tjiw���������{qiiiiiifjui�i����qii{{jutefghh �������������������������������������������� ¡�¢������ ����������£���£¤���������������¥��¦��������������� ¡�¢�¥��¦��£���£¤�������������������������������������������������� ¡�¢������ ����������£���£¤���������������¥��¦��������������� ¡�¢�¥��¦��£���£¤������

Page 138: SystemVerilog for Verification

������������� � ����������������������� �! "����� ��#������$��� ���� ������"%��&���&�'"#���!���("����%�#�%�&��"%&��"%�&���#����$��%��&��%� ���"%���"&�%#��&��"%)�#&�%���!���("����&�&���&��&��(��*+,-./012345.64.789:;<=%�>�?'���@*A$�&�����%���&����"��&���%��?"B��$��%��&��%�#�'"���&���!� �'�"%&�&��?�C���%���&��%��#&"�%*�D�C����#���������C��&�&���EFGHI�� %#&"�%�"%�>�?'���@*�J*K6L1M:.+,NO.P6Q:.<R64Q6;<304.;M6QQ.S3<T.6.U3R<V6M.WXYZ.[V4;<304W\] _a]b]WcdXbe__a]bf_gdc_hijklm_aWn_fcn_f]c]home__pp_q]ad]g\r__gdc_hijklm_WaWe__sdact]\_utbWcdXb_a]b]WcdXb_WXYZvwe____WXYZ_x_bryvwe____WXYZzaW_x_aWe__pp_{XYZ_f]c]_udr\f____WXYZzfc_x_fce____WXYZzf]c]_x_f]c]e____WXYZzWaW_x_WaWe__rbfutbWcdXbrbfW\]^|��%��� ��}&�%��&���~�����E��F��#�����&��?�C��&���#��������~�$�&���EFGH�� %#�&"�%��&"�������&����& �%���~�����E��F���!)�#&*�D�"��"��!�#� ���&����}&�%����("�& ��� %#&"�%�? �&�?�&#��&���!����~�����E��F���EFGH$�"%#� �"%��������� ?�%&���%���& �%�&�'�$��������%�"%�>�?'���@*��K6L1M:.+,N�.��<:4�:�.<R64Q6;<304.;M6QQ.S3<T.U3R<V6M.WXYZ.L:<T0�W\] _�]fa_r�crbf _a]b]WcdXbe__a]bf_gdc_g]f�WaWe__sdact]\_utbWcdXb_a]b]WcdXb_WXYZvwe____�]fa_g]fe____g]f_x_bryvwe____g]fzaW_x_aWe__pp_{XYZ_f]c]_udr\f____g]fzfc_x_fce____g]fzf]c]_x_f]c]e____g]fzWaW_x_WaWe____g]fzg]f�WaW_x_g]f�WaWe____arctab_g]fe__rbfutbWcdXbrbfW\] _k_�]fa ������������ ��������� �������� ���������� ����������� !"�#$%&'()*)�+",!-./01234567689563026:2532;<19=25>12#$%&2?@0A563026025B3C2A<19560D292:149<9512?@0A5630C#$%&'()*)E2F3B219A>2AG9::26:2<1:430:6;G12?3<2A34H60D265:2G3A9G2I959E2J>6:279=1:25>1#$%&2?@0A5630273<12<3;@:5290I2<1@:9;G1E2K1<126:25>12?@0A56302?3<25>12;9:12AG9::ELM+NO"���PP�QMR"�,SMTRMU,V-T�UOMRR�WV,!�XYZ[\] _ �aTU,V-TXbccdefgcX_hYgiddfg]djh_dklmnopdcfXqd]c_qd] _krpiddssdtfhjbucddjh_dklmnopdXfXiddvhf_wbdxwgX_hYgdvYh]dXYZ[\] _yhgZw_defgcX_hYgd_fzidddd_f{cfXdd|dcfXiddddssd}YZ[d_~ud] _dxhub]cdddd_f{]c_dd|d]c_idddd_f{] _d|d] _idddd_f{XfXdd|dXfXiddug]xwgX_hYgddvhf_wbdxwgX_hYgdefgcX_hYgdXYZ[yziddddXYZ[d|dgu�yziddddXYZ[\] _yXYZ[ziddug]xwgX_hYgug]Xbcc�025>121�510I1I2AG9::C25>12#$%&'()*)2715>3I26:292G655G1273<12A374G6A951IE2�60A12651�510I:25>123<6D609G2#$%&'()*)C26527@:52>9�1292:60DG129<D@7105C292��)��)#*�$�>90IG1E2J>12715>3I2A902@:125>6:2>90IG12B>102A9GG60D2��)��)#*�$���#$%&'()*)C;@52B>102#$%&'()*)2011I:2532A34H2�)('#�#C2652011I:292�)(��2>90IG1C290I2:32652>9:532?6<:52A9:525>12;9:12>90IG125325>121�510I1I25H41C29:2:>3B02602�974G12�E��E

Page 139: SystemVerilog for Verification

������������� � ������������������� !�!��"� #�$�%& �$��##�'%�(�)*+,-./0/�12 $�%& )3/4456/.7859:09;.4578/;4/)0<*;=558/;.5><05>/.-)8)=55?<80@/35A@;)0<*;5?*<.5)*+,-./0/B<;+@0578/;4/)0<*;508C=55556/.785>/.=55554@+98D)*+,-./0/B08C=55555EE5F*+,5>/495./0/5555G)/40B>/.H508C=5555555555EE5F/405>/495I/;.3950*59:0J.5555>/.D>/.-)8)5K5>/.-)8)=555EE5F*+,59:09;.9.5./0/559;.A@;)0<*;55?<80@/35A@;)0<*;578/;4/)0<*;5)*+,BC=55556/.785>/.=5555>/.5K5;9LBC=5555555555555EE5F*;408@)056/.785555)*+,-./0/B>/.C=5555555555EE5F*+,5./0/5A<93.45555890@8;5>/.=559;.A@;)0<*;9;.)3/445M56/.78��N������$%1O% P���Q�#�% ��%& �1&"�R&�OSTUVUWXYZX[\V] _VabcZX[UVdefdgYVhb[YZachZYVdV[UfVbijUhZkVl[VXmnaboUmU[ZVpbaV] _XYVZbVYnUhXpgVZTUVebhdZXb[VfTUaUVZTUVhbngVYTbceqViUVncZkVSTXYVZUhT[XrcUVXYVcYUpceVfTU[gbcVfd[ZVZbVaUcYUVd[VUWXYZX[\VbijUhZsVd[qV[bZVdeebhdZUVdV[UfVb[Uk����������t�u�#���"� #�$�%& �$��##�'%�(�)*+,�12 $�%& )3/44578/;4/)0<*;=55?<80@/35A@;)0<*;578/;4/)0<*;5)*+,B78/;4/)0<*;50*K;@33C=5555<A5B0*5KK5;@33C555555)*+,5K5;9LBC=EE5F*;408@)05;9L5*>v9)055559349555555)*+,5K50*=555EE5*85@4959:<4<0<;w5555)*+,-./0/B)*+,C=559;.A@;)0<*;55EE5x4945)*+,-./0/BC5y90I*.5A8*y5z/y+395{D||9;.)3/44STUVb[egVqXppUaU[hUVXYVZTUVdqqXZXb[deVda\cmU[ZVZbVYnUhXpgVZTUVqUYZX[dZXb[sVd[qVZTUVhbqUZbVZUYZVZTdZVdVqUYZX[dZXb[VbijUhZVfdYVndYYUqVZbVZTXYVabcZX[UkV}pV[bZTX[\VfdYVndYYUqV~ZTUqUpdceZ�sVhb[YZachZVdV[UfVbijUhZsVbaVUeYUVcYUVZTUVUWXYZX[\Vb[Uk�X[hUVgbcVTdoUVdqqUqVdV[UfVda\cmU[ZVZbVdVoXaZcdeVmUZTbqVX[VZTUVidYUVhedYYsVgbcVfXeeTdoUVZbVdqqVXZVZbVZTUVYdmUVmUZTbqVX[VZTUVUWZU[qUqVhedYYUYsVYchTVdYV�����k ������������ ��������� �������� ���������� ����������� !"#$ %&'�()�) '*�(+�,'-.( ,��++ /-'0 (�/ 1234 56(,'-.(17899:;8<=>?::@A>BC87:DCE1BA2E:=>8E981BA2E:1234F=>8E981BA2E:B2GEC77H?::::;8<=>:I8<?::::AD:FB2:GG:EC77H::::::I8<:G:EJKFH?:::::::::::::LL:M>J8BJ:8:EJK:2INJ1B::::J79J::::::899J>BFO189BFI8<P:B2HH?::LL:QJC9J:JRA9BAES:2EJ::::1234T<8B8FI8<H?::::::::::::LL:M234:<8B8:DAJ7<9::::>JBC>E:I8<?::JE<DCE1BA2EJE<17899:U:;8<=>!"V WX+'*�,' Y��++�+ �() Z6*� [-*'6�� \�'0.)+] _ab_ac_defg_hgg_ijehhgh_bkld_mgldanh_la_ogpqapm_iamma_aogpelkah_hcid_ehiaokr_en_nkhojekrs_tg_raej_aq_fgpkqkielka_kh_la_ipgelg_iang_ldel_ie_ug_hdepgneipahh_mcjlkojg_opavgilhs_wq_ac_ie_rgl_acp_iamoe _la_erpgg_a_iamma_hgl_aqmgldanhx_kl_kh_gehkgp_la_pgchg_iangstty_jercergh_hcid_eh_zhlgm{gpkjar_defg_lba_iahlpcilh_la_ejjab_ac_la_uckjn_ehdepgeujg_uehg_ijehhs_|dg_qkphl_epg_e_euhlpeil_ijehhx_bdkid_kh_e_ijehh_ldel_ie_ugg}lgngnx_ucl_al_khlelkelgn_nkpgiljs_wl_kh_ngqkgn_bkld_ldg_~������_�gbapns_zgi�an_epg_ocpg_fkplcej_mgldanhx_bdkid_epg_e_opalalog_bkldacl_e_uans_�_ijehh_g}lgngnqpam_e_euhlpeil_ijehh_ie_aj_ug_khlelkelgn_kq_ejj_fkplcej_mgldanh_defg_uankghs_|dgocpg_�gbapn_hogikqkgh_ldel_e_mgldan_ngijepelka_kh_e_opalalogx_en_al_vchl_e_gmolfkplcej_mgldans_�ehljx_ac_ie_aj_ngijepg_ocpg_fkplcej_mgldanh_k_e_euhlpeil_ijehhs�ac_ie_ngijepg_a�ocpg_mgldanh_k_e_euhlpeil_ijehhs_�alg_ldel_ldg_���_ejjabh_acla_ngqkg_e_fkplcej_mgldan_bkldacl_e_uan_�_ac_ie_iejj_kl_ucl_kl_vchl_kmmgnkelgjpglcphszemojg_�s��_hdabh_e_euhlpeil_ijehhx_������x_bdkid_kh_e_uehg_ijehh_qap_lpeheilkahs_wlhleplh_bkld_hamg_chgqcj_opaogplkgh_hcid_eh_��_en_�����s_|dg_iahlpcilap_me�gh_hcpggfgp_khleig_deh_e_ck�cg_w�s_�g}l_epg_ocpg_fkplcej_mgldanh_la_iamoepgx_iaox_ennkhoje_ldg_auvgils

Page 140: SystemVerilog for Verification

������������������� ���������������� ������������ !�"#$%&�'%�'��$$�()%*��+&��,)&%+�����%*-.$/0123456754886948:;1<6682420760=267>3=2<6666??6@3AB:16>C60=824=7:671:42:D660=260D<66666666666666??6E=0F3:6214=84720>=60D66C3=720>=6=:GHI<66660D6J67>3=2KK<666666??6L0/:6:47M6>BN:726463=0F3:6OP66:=DC3=720>=66Q31:6/0123456C3=720>=6B0267>AQ41:H0=Q326948:;162>I<66Q31:6/0123456C3=720>=6948:;167>QRH0=Q326948:;162>J=355I<66Q31:6/0123456C3=720>=6/>0D6D08Q54RH0=Q3268210=S6Q1:C0TJUUI<:=D754886V6948:;1WXYZ[\]Z_[\a_Zb\] _cZXdZefg_ZhijklmnZoYeZfXYZ[\]]XeZ[X]ceaY[eZXop_[ecZXdZebqcefg_rZWXYZ]__ZeXZ_se_]Zeb_Z[\ccZ\]ZgaXtq_Zqug_u_]e\eqX]cZdXaZ\Zeb_ZgYa_ZtqaveY\Zu_ebXcrw\ug_Z�r�xZcbXycZeb_Z_dq]qeqX]ZXdZeb_Zlmizji{|}~zZ[\ccnZybq[bZb\cZo__]_se_]_ZdaXuZhijklmrZwq][_Zlmizji{|}~zZb\cZoXq_cZdXaZ\Zeb_ZgYa_ZtqaeY\Zu_ebvXcnZfXYZ[\]ZYc_ZqeZq]ZfXYaZe_ceo_][br��������� ���&��$�'%)-��'��$$���%��.$��#$%&�'%�'��$$754886;14=84720>=6:T2:=D86948:;1<6614=D6B026���V��6817�6D82�6717�6D424���<66:T2:1=6/0123456C3=720>=6B0267>AQ41:H0=Q326948:;162>I<66:T2:1=6/0123456C3=720>=6948:;167>QRH0=Q326948:;162>J=355I<66:T2:1=6/0123456C3=720>=6/>0D67>QR�D42466666666666666666666666666666666H0=Q326;14=84720>=67>QRI<66:T2:1=6/0123456C3=720>=6/>0D6D08Q54R6H0=Q3268210=S6Q1:C0TJUUI<66:T2:1=6C3=720>=6=:GHI<:=D75488 ������������ ��������� �������� ���������� ���������� !"#$"!%&'( )!*&+!,+�-)�./(&-!� /0&')1234567389658:;<3=<45673>>47?@<;AB63@258C<=A:;857DE88:;<3=<4567385;E88<==A;5BF4<=5B5;G857DDE88HH8IJA4K8618L57L86=847;;A4585M@A88;A52;38BB5J6=N=;48OO85;N=;4D8PP8888888888B5J6=NQ=58OO85;NQ=5D8PP8888888888B5J6=N4;48OO85;N4;4D8PP8888888888B5J6=NQ<5<8OO85;NQ<5<DDEA3Q123456738>847?@<;A123456738C<=A:;8:;<3=<45673>>47@MB63@258C<=A:;857O32RRDE88:;<3=<4567384@E88618B578OO832RRD84@8O83ASBDE88AR=A888888888888F4<=5B4@G857DE8847@MTQ<5<B4@DE88;A52;384@E88A3Q12345673123456738U76Q8:;<3=<45673>>47@MTQ<5<B:;<3=<45673847@MDE8847@MN=;488O8=;4E8888HH8I7@M85JA8Q<5<816ARQ=8847@MNQ=588O8Q=5E8847@MNQ<5<8O8Q<5<E8847@MN4;488O84;4EA3Q12345673123456738U76Q8:;<3=<45673>>Q6=@R<MB=5;63V8@;A16WOXXDE88FQ6=@R<MBXY=:;<3=<456738YZQ8=;4OYJG8Q=5OYWG84;4OYWXG888888888888@;A16WG86QG8=;4G8Q=5G84;4DEA3Q123456738>8Q6=@R<ME123456738:;<3=<45673>>3ASBDE88=2@A;N3ASBDEA3Q123456738>83AS[\]_abac]]d]befbgh_dbij_hcbkdlmf]bcdbnmhb\hjcfbd]\deald]bl blidbbamkokmebcmmpbefbqddcrbslj]bccmt]benbdeujedd_bmb_dfbnmh_bamfdbefbvhjapcnhefd_]efbldb]_hah_dr"#w!x���y�.z){edbmqbldbkjebuhjfdcjed]bmqblj]b\mmpbj]bmba_ddbb]jeucdbid_jqjajmebdeij_mekdel bnmhbaebh]dbqm_bccbd]]btjlbembaleud]rbsldbpdnb_dvhj_dkdebj]bl blj]bd]o

Page 141: SystemVerilog for Verification

��������� ���� ������������������������������������������� ���� �����!� ������ ���������������"#�� �������� ���$� $�����%�&�������������#����������������"�$$���� %' (�!� ��������' )�������������� ����' )�$�#����������� ����' *#� �����+������������� ����������������' ,������������� ������������� �������' -������"�� �����$� ����� ������.�������������#�� �������� ����������#������$�����������$�#������������� ���������"$���"������� ������������������!�������������� �$$�� �����������������������"���������������/$���$�����%�0�������#��"�������� ���1��������������� �$$� �2��������� �������"�������"/"�����$#��������#�����%�3��������$������������ �����������"�� �����$��#������������������� �$$� ����������������� �����456785� $���%9:;<=>?@A@?BCDDECFG?HDIJ(��K� �����/�������456785LL5MN������$�����"�������������� �$$������O5PNQR6O�����%S�"���������� ����������� ������5MN� �$$������������������ �$$� ����"���#%�3"��������/�� ����������� ��������� �$$���������� �$$� ���������"���#%�S#���"��$��������������� �$$� �����������5MN�!���� �$$��O5PNQR6O%&��� ��$�������456785LL5MN���������$��������������������������������������������T������� $�������������UV456785LL5MN%�0�������� ������������������#����� �������������$� �����$$�������� ���$�������W�� �����������������������"�#���������!� ��� �����������%�X����"�#���������� ��� ������������� $�����#������$������������������������� �����������$$������T������� $�����%�3��������$$#��#��� �����!� ��� �$$� ��������������"#�� ����� ��������� ������ ����������� ���$��!� �%20���� �$$� ���� ���1������������$��������Y���$� �,Z(� �$$� ������*Y3� �$$� ��%[\] _abcdaeeafghijadcda_kdlbgmmmnoadpq\rrk\qs[a\g]tb[u[avhnoj][pq\rrk\qs_mmmdgwdgw[\] [\]_oadpq\rrk\qh_mmmdgw[\][\]_oj][pq\rrk\qhmmmdgw[\][\] _abcdaeeafghijadcda_kdlbgmmmnoadpq\rrk\qs[a\g]tb[u[avhnoj][pq\rrk\qs_mmmdgwdgw[\] [\]_oadpq\rrk\qh_mmmdgw[\][\]_oj][pq\rrk\qhmmmdgw[\] ������������ ��������� �������� ���������� ����������� !"#$%&'�#� #(()#*+,-./001/.2-3/42-54-.67/378-59-3:7-3;<=07>70-3743-/98-./0078-?6;@-3:7-865>76A-3:7-0;B74307>70-;?-3:7-79>56;9@793C-D;B7>76A-3:7-865>76-8;74-9;3-:/>7-3;-:/>7-/9E-29;B078F7;?-3:7-3743-G-53-HI43-:/4-3;-I47-/-F79765.-.0/44-3:/3-3:7-3743-./9-7J3798C-K:7-865>76-I474-/LI7I7-3;-:;08-3:7-./001/.2-;1H7.34A-B:5.:-/00;B4-E;I-3;-/88-@I035<07-;1H7.34C-K:71/47-./001/.2-.0/44-54-/9-/1436/.3-.0/44-3:/3-@I43-17-7J379878-17?;67-1759F-I478C-M#NO("���PQ�R#S"�*#(()#*+�*(#SSTUVWXYZ[\ZY]][VUT_V\a]b[[cc[VUT_V[\YZZaY\d][[TUVWXYZ[WY]d[eV_WfgV_h[iVYj]Y\WUkj[WVl[V_h[aUW[mVkenb[[[[cc[op[m_hYXZWl[\YZZaY\d[mk_][jkWqUjr[[_jmWY]d[[TUVWXYZ[WY]d[ek]WWfgV_h[iVYj]Y\WUkj[WVnb[[[[cc[op[m_hYXZWl[\YZZaY\d[mk_][jkWqUjr[[_jmWY]d_jm\ZY]]M#NO("���st�u!%v"!�*(#SS�w%$x�*#(()#*+S\ZY]][VUT_Vb[[VUT_V\a][\a]yz{b[[WY]d[VXjgnb[[[[aUW[mVkeb[[[[iVYj]Y\WUkj[WVb[[[[hkV_T_V[a_rUj[[[[[[mVke[|[}b[[[[[[YrW~mVT�r_WgWVnb[[[[[[hkV_Y\q[g\a]yU{n[\a]yU{�eV_WfgWVl[mVkenb[[[[[[Uh[g�mVken[\kjWUjX_b[[[[[[WVYj]�UWgWVnb[[[[[[hkV_Y\q[g\a]yU{n[\a]yU{�ek]WWfgWVnb[[[[_jm[[_jmWY]d_jm\ZY]]�;37-3:/3-B:507-����������-54-/9-/1436/.3-.0/44A-������-/98-�������-/67-9;3-<I67>563I/0-@73:;84C-K:54-54-17./I47-/-3E<5./0-./001/.2-I474-;90E-;97-;?-3:7@C-�?-/-.0/44:/4-7>79-;97-<I67->563I/0-@73:;8-B53:-/9-5@<07@793/35;9A-���-6I074-B;9�3-/00;BE;I-3;-5943/935/37-53C

Page 142: SystemVerilog for Verification

��������� ����� �������������������������������� !������"#$%&&%'#()*#+%,#-#$-../-$0#1)#2%#1'3*$2#)%&*#41)2(,/-'$*#)($5#-)#$-()1'6#-'#*,,%,#%,4*.-78#95*#+%..%:1'6#2*)2/*'$5#,-'4%&.7#4,%;)#;-$0*2)#()1'6#-#$-../-$0#%/3*$28#<-..=/-$0)#$-'#-.)%#/*#()*4#2%#)*'4#4-2-#2%#25*#)$%,*/%-,4#%,#2%#6-25*,#+('$21%'-.#$%>*,-6*>-.(*)8#?%2*#25-2#7%(#$-'#()*#@ABCDEFGHIJ#%,#@ABCDKLMNOIJ#4*;*'41'6#%'#25*%,4*,#1'#:51$5#7%(#:-'2#25*)*#2%#/*#$-..*48#P%,#*Q-&;.*R#7%(#;,%/-/.7#:-'2#25*)$%,*/%-,4#$-..*4#-+2*,#-'7#2-)0)#25-2#&-7#4*.-7R#$%,,(;2R#%,#4,%;#-#2,-')-$21%'8#S'.76-25*,#$%>*,-6*#-+2*,#-#2,-')-$21%'#5-)#/**'#)($$*))+(..7#2,-')&122*48T�UV����WX�Y���� ����������������Z�!��!!�!����������[\] _abcdae[fegahi_djkdlg _abcdae[fm_cbakn]\_k]o_iadekjpadq_ra]l][kbhl_kas_adq_fbk_gahitm____uu_v]lghw\x_gahi_y_hnk_hq_dcdax_yzz_ka]l][kbhl____gahi_{_p|na]lghwea]l}dpzs~~t_{{_ztm__dlgk]odlg[\]^iah}a]w_]nkhw]kb[_kdkm__�lcbahlwdlk_dlcm__blbkb]\_fd}bl____dlc_{_ld�ptm____dlc�}dle[q}ptm____dlc�fnb\gptm____fd}bl_____________uu_�ad]kd_daaha_bl�d[kbhl_[]\\f][o______abcdae[fegahi_g[g_{_ld�ptm______dlc�gac�[f�in�ef][opg[gtm_uu_�nk_blkh_gabcda�_�____dlg____dlc�anlptm____dlc��a]ieniptm__dlgdlgiah}a]w���W���� �������!�� ���������T��!����!��95*#4*)16'#%+#7%(,#)$%,*/%-,4#4*;*'4)#%'#25*#4*)16'#('4*,#2*)28#"#��9#25-2#;,%=$*))*)#-2%&1$#2,-')-$21%')#)($5#-)#;-$0*2)#&-7#5->*#-#)$%,*/%-,4#25-2#$%'2-1')#-2,-')+%,&#+('$21%'#2%#2(,'#25*#1';(2#2,-')-$21%')#1'2%#*Q;*$2*4#>-.(*)R#-#&*&%,7#2% ������������ ��������� �������� ���������� ������������ ! �"#�$ !%�#&��#�'�()#* �*�$�+& ,�-�)*�' !!�*�� !+.&�& �!�#�* / * &' �(�� ����)* �+'���� � 0) '� ���$�)$�%�#&���� �'�()#*+!�&�1 �2 &� 0) '� ��#&��#'�$#��"#�3$ !�(#4��#)) &�#���� � &���/�!+($�#�+�&,5#()� ��,6��!��2!�#�!+()� �!'�* 1�#*����#��!��* !��*#&!#'�+�&!�+&�#�7$ $ ��/ 0) '� ��"#�$ !,�8� �/+*!��( �����!#" !�#&� 0) '� ���*#&!#'�+�&%�#&���� �! '�&���*+ !���/+&��#&� 0) '� ���*#&!#'�+�&���#��(#�'� !�#&�#'�$#���& ���#��2#!�* ' +" ��14��� � !�1 &'�,�9�� ���#��2� &�4�$�! #*'����*�$.��#�7$ $ %�4�$�'#&�. ��:�(#�'� !�;�*#&!3#'�+�&�&���/�$&�<%�=�(#�'��;+� #��'#! <%��*�($��+)� �(#�'� !�;4�$�& ��������#�(�* !�)�+!�+'#� ��(#�'�<,>?@ABCDEFGHD>I@ABCDJKLMCNL?MODPLMD?QL@IKDQM?RJ?KQILRJSTUVVWXSYZ[\YUZ]WW_ZUVUSabYWVS\cdeWWffWXaYZ[W[gh[Sa[]WaZiVWbWjk[k[WWlkSabYWmYb]WVUm[n[gh[SaobhkaW_ZUVUSabYWaZpWWWWVS\qhkVrn\USsoaZpWW[]lkSabYWWlkSabYWmYb]WSYthUZ[nUSakUTobhkaW_ZUVUSabYWaZpWWWWbaWjcdeWWWWjWuWVS\qlb]nb][gogpWvbarWogqVZSWuuWaZqVZSpWWWWSUV[WojqVbw[oppWWWWWWxyWd]bVhTUzo{|YWtUaSrWlYk]{pWWWWWW}yWVS\q][T[a[ojcxepWWWWWW][lUkTayWWWWWWWWd]bVhTUzo{~ZZYZ�WtkTabhT[WtUaSr[VWlYk]�{pWWWW[]SUV[WWW[]lkSabYWyWSYthUZ[nUSakUT[]STUVVWyWXSYZ[\YUZ]EF�F�D�LRRCKQIR�DQLDQ�CD>KLMCNL?MOD�IQ�D?D�?BBN?K�8� �/����2+&.�� !�1 &'��'* #� !�+�!��2&� 0� &!+�&��/��� ��*+" *�!�'#��1#'��'�#!!�#&�#��!�#�* / * &' ������ ��*+" *�!�'#��1#'��7$ $ ,�9�� ���#���� �!'�* 1�#*��'#��1#'�& �!�#��#&�� ������ �!'�* 1�#*��#&��!��+��'#&�'#����� �( ��������!#" ��� � 0) '� ��*#&!#'�+�&,�8�+!� 0#()� ��� !�&���!��2��� �(�&+��*�!+� %�2�+'��2+���& ��+�!��2&'#��1#'�����! &���� �#'�$#���*#&!#'�+�&������ �!'�* 1�#*��/�*�'�()#*+!�&,

Page 143: SystemVerilog for Verification

��������� ���� ������������������������������ ���� ���� !"#$%%&'()*+(,"-%,%".(+-.$(/&+01+2/%&'()*+(,"-%3&&4".(+-.$(/&%"-3&*)(15$#&1$%6&7(+,108(+9&:($2%$"1).2&1(;&(+9&-)1&/(.7<3&&&&==&>51&1($2%$"1).2&)2&1?+&%".(+-.$(/&&&&%"-@%$*+,+07+"1+/81(<3&&+2/1$%6&&952"1).2&2+A8)2751&4".(+-.$(/&%"-<3&&&&1?)%@%"-&B&%"-3&&+2/952"1).2+2/"#$%%7(.C($D&$51.D$1)"&1+%13&&E2*)(.2D+21&+2*3&&)2)1)$#&-+C)2&&&&+2*&B&2+A8<3&&&&+2*@C+2,"9C8<3&&&&+2*@-5)#/8<3&&&&-+C)2&&&&&&&&&&&&&&&&&&==&F(+$1+&%".(+-.$(/&"$##-$"6&&&&&&'()*+(,"-%,%".(+-.$(/&/"%&B&2+A8+2*@%"-<3&&&&&&+2*@/(*@"-%@75%?,-$"68/"%<3&==&>51&)21.&/()*+(G%&H&&&&+2/&&&&+2*@(528<3&&&&+2*@A($7,578<3&&+2/+2/7(.C($DIJKLMNOPNQORLJJSLRTNOUVWONRVWQSVLWXNOLYXOUPYRZ[VYLJORV\QWL]QO_QOaVY[ZVWOZWLYNLRbZVWORLYOPNQOLORLJJSLRTOZVORVacLWQOWQRQ[\QXOZWLYNLRZ[VYNOK[ZOQdcQRZQXOVYQNO_QaVY[ZVWORLJJSLRTO[NOLJNVOZQOcQWUQRZOcJLRQOZVO]LZQWOUPYRZ[VYLJORV\QWL]QOVYOZWLYNLRbZ[VYNOZLZOLWQOLRZPLJJMONQYZOSMOZQOef_gVPOaLMOL\QOZVP]ZOVUOcPZZ[Y]OZQONRVWQSVLWXOVWOUPYRZ[VYLJORV\QWL]QO]WVPcO[YOLZWLYNLRZVWhOLYXORVYYQRZO[ZOZVOZQOZQNZSQYROPN[Y]OLOaL[JSVdO_[NO[NOLOcVVWONVJPZ[VYOUVWNQ\QWLJOWQLNVYNO_QNQOZQNZSQYRORVacVYQYZNOLWQOLJaVNZOLJKLMNOcLNN[\QOLYXOLNMYbRWVYVPNhOLYXONVOZQMOVYJMOKLTQOPcOKQYOZQOZQNZSQYROLNOXLZLOUVWOZQahOcJPNOZQMYQ\QWOcLNNO[YUVWaLZ[VYOZVOLOXVKYNZWQLaOZWLYNLRZVWO_PNOLOZWLYNLRZVWOZLZOLNOZVOaVYb[ZVWOaPJZ[cJQOaL[JSVdQNORVYRPWWQYZJMO[NOLYOV\QWJMORVacJQdONVJPZ[VYOIXX[Z[VYLJJMhOMVPaLMONLacJQOXLZLOUWVaONQ\QWLJOcV[YZNO[YOMVPWOZQNZSQYRhOSPZOLOZWLYNLRZVWO[NOXQN[]YQX ������������ ��������� �������� ���������� ����������� !"#$%� �&�'%(�)" *%�+,�-&*�.%*/�+ �!"�0�&�� '��%1���+��"+�'�2%��#%�'$� % �*�#�*/%��+�*�,��"+�'�""%'*�*/%.�*��*/%�*% *1%"'/�3!*/�'�$$1�'4 (567689:;<=>9?9@?AAB?CD9EF9GHBI>9?9JK?=;?CEFK)����*��" �'*���3!*/�'�$$1�'4 �! �"�*�3��4!"#�� �%L-%'*%+,�0�&�'�"�& %��"��++!*!�"�$'�$$1�'4�*��+%1&#�!*(�M�&�'�"� *��*�10��++!"#���'�$$1�'4�*��+! -$�0�*/%�*��" �'*!�"(�)�*/%�%���%�.&$*!-$%�!" *�"'% ����*/%�*��" �'*��,�+! -$�0�*/%�/!%���'/!'�$�-�*/,�& !"#NOPQRSTUVWXYZ[(�\/%"�-&*�+%1&#�'�+%�1%���%��"+���*%��*/%��*/%��'�$$1�'4 �*��$�'�*%*/%��"%�*/�*�! �'�& !"#�*/%�-��1$%.(�]2%"�����+%1&#,�0�&�/�2%�*���2�!+�.�4!"#'/�"#% �*��*/%�*% *1%"'/�%"2!��".%"*(5659?K?_HEHK<Ha9@A?;;H;b �0�&�1%'�.%�.��%�'�.���*�1$%�3!*/�'$� % ,�0�&�.�0�"�*!'%�*/�*���+�*�� *�&'*&�%*/�*�-%����. ��� %*�����'*!�" ,� &'/�� ��� *�'4����#%"%��*��,��"$0�3��4 ��"��� !"#$%�+�*�*0-%(�\/! � %'*!�" � /�3 �/�3�0�&�'�"�+%�!"%��� !"#$%�'$� �*/�*�3��4 �3!*/�.&$*!-$%+�*��*0-% (5656c9d9e<_fAH9eE?CDb�'�..�"�+�*�� *�&'*&�%�! ��� *�'4,�3/!'/�/� �RgQh��"+�RiR�.%*/�+ �*�� *��%��"+�%*�!%2%�+�*�(�j�.-$%�k(lm� /�3 ��� !.-$%� *�'4�*/�*�3��4 �3!*/�!"*%#%� (e?_fAH956no9eE?CD9I;<=>9EpH9<=E9EqfHrstuuvwxyzytr{|vvs}rtsv~xyvuytr{�����|vvvvvvvvvvvv��v�}s�uv�tytv�ts��uvvs}rtsv~xyvy}�|vv��xry~}xv�}~�v��u��~x��yv~xyv~�|v��v��u�v�ts��v}xvy}�vvvvuytr{���y}��v�v~|vv�x���xry~}xv�v��u�vv��xry~}xv~xyv�}���|vvvvvvvvvvvv��v���}��v�ts��v��}�vy}�vvvv��y��xvuytr{�y}����|vv�x���xry~}x�x�rstuuv�vwxyzytr{\/%�-��1$%.�3!*/�*/! � *�'4�! �*/�*�!*��"$0�3��4 �3!*/�!"*%#%� (�)��0�&�3�"*�*��.�4%�� *�'4������%�$�"&.1%� ,�0�&�3�&$+�/�2%�*��'�-0�*/%�'$� ,��"+�'/�"#%�*/%�+�*��*0-%���.�P���*����TS(�\/! ��&!'4$0�$%�+ �*����-��$!�%��*!�"����'$� % ,�3/!'/�'�"�1%'�.%��.�!"*%"�"'%�-��1$%.�!��0�&�%2%��3�"*�*���++�"%3��-%��*!�" � &'/�� �*��2%� !"#���-�!"*!"#�*/%� *�'4�'�"*%"* (

Page 144: SystemVerilog for Verification

������������������� ����������������������� !��!""�!�"!�!���#��#!�!���������!� �!���!�"��$����#� �%��!���#�&$�������"� �!���$!�"��������$!�� �!��'�($�����������!����)�*��������#�&��%����$!�)�!#!�!������+�"���"���)�&$�������� !���#� �%��!�,!������ $�!��*���&�"�$�&$������������!���!��"'��������������-��#!�!������+�"� �!�����!��������!��������#�!�������.//'�!�#���0'12����!�#!�!������+�"� �!���%���!���! 3'�4��� ��$�&��$����#��5����"�%���"����$��%����������&��$�!�"�%!������#���%�678'9:;<=>?@ABC?D:E:;>F>EGH>I?J=:KK?LME?:?KF:JNOPQRRSTUQOVSWXUYZ[S\]_UaSSPbOQPS\SRUQOVcdeefaSSSSSSSSSSSSggShbPiRSiQUQSjQPk[RSSPbOQPS_USUbZaSSlk_OUb_SjbiSZkRmX_ZkUS\S aSggSnkRmS_[oSjQPk[Sb_SUbZSSSSRUQOVcppUbZfS]SaSS[_ilk_OUb_SqSZkRmSSlk_OUb_S\SZbZXaSSSSSSSSSggSr[sbj[SjQPk[SltbsSUbZSSSSt[Ukt_SRUQOVcUbZuufaSS[_ilk_OUb_[_iOPQRRSqSTUQOV�!�#���0'1v� ��!����!���! 3�%�����!�����*���)�!�"�&������!�"���!"��,!����'9:;<=>?@ABw?xKGyz?F{>?<:E:;>F>EGH>I?KF:JN?J=:KK_ UQPS|[}_SSTUQOVSWXt[QPStTUQOVaSSSSSggS~t[QU[SQSt[QPSRUQOVSStTUQOVS]S_[oXaSSlbtX_US]eaS��aSppSSSSStTUQOV�ZkRmX���eaSSSSSggSnkRmSjQPk[RSb_UbSRUQOVSSlbtX_US]eaS��aSppSSSSS�iRZPQYX��lS��SSSSSSSSSSSSSStTUQOV�ZbZX aSggSnbZSjQPk[RSbllSRUQOV[_i����� ������!�����!���!����!����!�#����%�!� �!����$!�� !��*��#!�!������+�"'��� �����$!,��"�%���"��$�� �!���%������)��$���!������� �����&��3��%���!���"!�!���#�'��!�#��0'1���!3����$��!���� ������!����%�����!�#���0'v�!�"�!""��!�#!�!����������$!������ !������!���!����!�"����*�� �'�($�������!�����$���"�*��#!����%�!�#! 3!����%�,���%� !���� �!����'�������"������#� �%��!��$��"�%!������#�)�!�"����������������5��%�����!�#��0' v)�!���$���!*���! �� �!����$���"�!����*��#!����%��$��,���%� !�����#! 3!��' ������������ ��������� �������� ���������� ����������� !"#$ %�&���'�&()�* +�,�&�'-& .��// 0/(,+ 1�0��&(,' ��''�&,2345567898:4;<:6=>;?@86ABC458A:DE66F4G3H<I6J89KL:ME66A6H3N8@:G9;E666666666666666666666OO6C3N8@:G9;6<HP82;66QN92;G<9698R>G9@N;6F4G3H<I6J89KL:MDE6666;SG5TJ89KL:M6B6J89KL:ME6666H3N8@:G9;6B698R>DE6666666666666OO6U:84;86L8Q4N3;6689LQN92;G<966;45V6:N9>DE6666A6;:E6666Q<:8M8:6H8JG96666664558:;>H3N8@:G9;T:49L<FGW8DE6OO6X49L<FGW86<HP82;666666;:6B6H3N8@:G9;T2<@?>DE6666666OO6Y4V86462<@?666666J89KL:MT@N;>;:DE6666666666666OO6Z89L6;<6L:GM8:666689L6689L;45V89L23455[\]_abcdefghfijklgmno\\pqrstosunc\vw�xoyvw�voyabc_ccqoarqr ab]\uo_cz{r|mo }|]nyo\]suncac\a}cmbw~a\aoqa\abc_ccqoarqoyuq]a\abcp]q\ap]�caqo\oma]r\z|\]_abcso]n}r�\{mbqr]�oa]r \br� ]tosuncxw��w������ !"#! �(���� '�/'1�,.� 0/(,+ ��&���'�&()�* +�,�&�'-& .��//@:<J:4F64N;<F4;G26;85;E66G9G;G436H8JG966667898:4;<:6=>A:49542;G<9D6J89E6666F4G3H<I6J89KL:ME6666J89KL:M6B698R>�DE6666J896B698R>J89KL:MDE6666Q<:V666666J89T:N9>DE666666:8@84;6>�D6H8JG966666666A:49542;G<96;:E66666666J89KL:MT@88V>;:DE66OO678;698I;6;:49542;G<966666666;:TLG5@34?>DE66666666J89KL:MTJ8;>;:DE666OO6X8F<M86;:49542;G<966666689L66666P<G9�49?666689L89L@:<J:4F6OO6;85;

Page 145: SystemVerilog for Verification

���������� ����� �������������������������������� !"#$%&"'()#*$+'&',"("&)-".$%/'00"01$234$0!34/.$0('&($5)(!$'$#3#+'&',"("&)-".$%/'001."64*$)($(!3&34*!/21$'#.$(!"#$'..$+'&',"("&07$8!)0$0"+'&'()3#$&".4%"0$234&$."64*"993&(7:'%&30$'&"$'#$'/("&#'();"$(3$+'&',"("&)-".$%/'00"07$<3&$"=',+/"1$234$%34/.$."9)#"$','%&3$93&$(!"$*"#"&'(3&$'#.$+'00$)($(!"$(&'#0'%()3#$.'('$(2+"7$:'%&30$'&"$!'&."&$(3."64*$(!'#$+'&',"("&)-".$%/'00"07$>9$234$#"".$(3$."9)#"$0";"&'/$&"/'(".$%/'00"0$(!'($'//$0!'&"$(!"$0',"$(&'#0'%()3#$(2+"1234$%34/.$40"$+'&',"("&)-".$%/'00"0$3&$'$0)#*/"$/'&*"$,'%&37$>#$(!"$"#.1$!35$234."9)#"$234&$%/'00"0$)0$#3($'0$),+3&('#($'0$5!'($*3"0$)#(3$(!",7?$%3,,3#$0"($39$;)&(4'/$,"(!3.0$)#$234&$(&'#0'%()3#$%/'00$!"/+$234$5!"#$%&"'()#*+'&',"("&)-".$%/'00"07$8!"$@ABACDEFC$%/'00$40"0$(!"$GFHI$,"(!3.1$J#35)#*$(!'($)('/5'20$!'0$(!"$0',"$0)*#'(4&"7$K)J"5)0"1$(!"$LMNHODI$,"(!3.$'//350$234$(3$"'0)/2."64*$(&'#0'%()3#0$'0$(!"2$9/35$(!&34*!$234&$("0(6"#%!$%3,+3#"#(07��P����Q������8!"$039(5'&"$%3#%"+($39$)#!"&)('#%"1$5!"&"$#"5$94#%()3#'/)(2$)0$'..".$(3$'#$"=)0()#*%/'001$+'&'//"/0$(!"$!'&.5'&"$+&'%()%"$39$"=("#.)#*$(!"$."0)*#R0$9"'(4&"0$93&$"'%!$*"#S"&'()3#1$5!)/"$0()//$,')#(')#)#*$6'%J5'&.0$%3,+'()6)/)(27$<3&$"=',+/"1$234$%'#$4+*&'."$234&$TU$62$'..)#*$'$/'&*"&$%'+'%)(2$.)0J7$?0$/3#*$'0$)(40"0$(!"$0',"$)#("&9'%"$'0$(!"$3/.$3#"1$234$.3$#3($!';"$(3$&"+/'%"$'#2$3(!"&$+'&($39$(!"020(",1$2"($(!"$3;"&'//$94#%()3#'/)(2$)0$),+&3;".7K)J"5)0"1$234$%'#$%&"'("$'$#"5$("0($62$V4+*&'.)#*W$(!"$"=)0()#*$.&);"&$%/'00$(3$)#X"%("&&3&07$>9$234$40"$'#$"=)0()#*$%'//6'%J$)#$(!"$.&);"&1$234$.3$#3($!';"$(3$%!'#*"$'#2$39(!"$("0(6"#%!$)#9&'0(&4%(4&"7Y34$#"".$(3$+/'#$'!"'.$)9$234$5'#($40"$(!"0"$ZZT$("%!#)[4"07$\2$40)#*$;)&(4'/$&34S()#"0$'#.$+&3;).)#*$0499)%)"#($%'//6'%J$+3)#(01$234&$("0($%'#$,3.)92$(!"$6"!';)3&$39(!"$("0(6"#%!$5)(!34($%!'#*)#*$)(0$%3."7$8!"$&"04/($)0$'$&3640($("0(6"#%!$(!'($.3"0$#3(#"".$(3$'#()%)+'("$";"&2$(2+"$39$.)0(4&6'#%"$]"&&3&S)#X"%()3#1$."/'201$02#%!&3#)-'()3#(!'($234$,'2$5'#($'0$/3#*$'0$234$/"';"$'$!33J$5!"&"$(!"$("0($%'#$)#X"%($)(0$35#6"!';)3&78!"$("0(6"#%!$)0$,3&"$%3,+/"=$(!'#$5!'($234$!';"$+&";)340/2$%3#0(&4%(".1$64($(!"&")0$'$+'26'%J$)#$(!'($(!"$("0(0$6"%3,"$0,'//"&$'#.$"'0)"&$(3$5&)("7$8!"$("0(6"#%!$.3"0(!"$!'&.$53&J$39$0"#.)#*$0(),4/40$'#.$%!"%J)#*$&"0+3#0"01$'#.$03$(!"$("0($3#/2$!'0$(3,'J"$0,'//$(5"'J0$(3$%'40"$0+"%)'/)-".$6"!';)3&7$?#$"=(&'$9"5$/)#"0$39$("0(6"#%!%3."$,)*!($&"+/'%"$%3."$(!'($534/.$!';"$(3$6"$&"+"'(".$)#$";"&2$0)#*/"$("0(7 ������������ ��������� �������� ���������� ���������� !"##$"�%&'()*+%�"),-./0%" /+."-./1+&�)0)� "2 "���/3)(4" /+"�/".%+�%"&����%�56/."%7�,-�%!"�"-�.�,%�%.)8%1"&����"9/."�"���&:"�'��"/-%.��%�"/("�( "/�'%."&����!".��'%.�'�("�"�)(4�%"� -%!"��0%�" /+"9./,"'�0)(4"�/"&.%��%"1+-�)&��%"&/1%5

Page 146: SystemVerilog for Verification

����������� ���������������������������� !��! ���� !�"�#$����� �"%��&&����'��(�%�� �'���&%����!��� � )��"%���(����� ���������*���� !���������+�,-./�-�������� �����"�'�����% )��� '���������)!� &�(�����������'��)�"���������������$� ���& �������&���)����������������/�0 (*�'��$��&�% )�����������������1���������� !�(�"1���� )������������� &��""��������������$� (�� �% )�1� (��&�% )���'����������% )����������� �2�3�������% )�����)��������*� !� ��������������!)")�$�% )�������)����� ������)������ '�����/4)���� ��"�� '�����������!���)��� &�(������������&���)������'��������#���������%���������/�5�����(��������������������&����� ���������������'���&����� ���"���(�����������"��"���� &�(����� ����������� (/�4 ���#�!�"�$��&�% )���������� �������� ����)�$�% )������������� ��#��������""������ ����"����������� ������(��������������������)�$����")������"�'�����������������$���"�%�$�������� ��! ���/�-���'���&����� ���"��������!���� ��� (% )�(������ �� /�4 ��! �����& �!��� �� �������������'���&����� ���"��$�����6����� �+7889./:�����&������1�" ��� ����"%;������� '���������)"�������������� ��(��������� ���� ��1����� ������ �� �'����� ��<88=�� '������+4��)����*<./�> )��&������� �������� ��)��#�������������(����! ��������?�������� ������� ��)�"����(�� ���������/�,�� ���� ������*������������������� �"%��&���� ")��"%���������%/ ����������� ����������������������������� !"��#���$!%"����%$�&'()*+,-.*/01*-2(31456-3/*+708-*957-(8-9*8-484:*8,-*6-75;5('850.*<3'..5.=*+'4*35>?58-9@*A;*8,-*9-45=.*4<-(5;5('850.*3548-9*BCC*;-'817-4:*'33*/01*,'9*80*90*+'4*+758-*BCC8-484@*D06-7'=-*+'4*5><35(58*5.*8,-*8-484*E*8,-*F7-=548-7*>06-G*8-48*>06-9*'33*(0>H5.'?850.4*0;*7-=548-74*H'()*'.9*;078,@*I-'4175.=*<70=7-44*+'4*-'4/J*5;*/01*,'9*(0><3-8-9KC*8-484:*/01*+-7-*,'3;+'/*90.-@*L,54*(,'<8-7*14-4*F-2<35(58G*'.9*F5><35(58G*809-4(75H-*,0+*(06-7'=-*54*4<-(5;5-9@*M2<35(58*(06-7'=-*54*9-4(75H-9*957-(83/*5.*8,-*8-48-.6570.>-.8*145.=*N/48->O-7530=*;-'817-4@*A><35(58*(06-7'=-*54*5><35-9*H/*'*8-48*E+,-.*8,-*F7-=548-7*>06-G*957-(8-9*8-48*<'44-4:*/01*,'6-*,0<-;133/*(06-7-9*'33*7-=548-787'.4'(850.4@P58,*DQL:*/01*'7-*;7--9*;70>*,'.9*(7';85.=*-6-7/*35.-*0;*5.<18*485>1314:*H18*.0+*/01.--9*80*+758-*(09-*8,'8*87'()4*8,-*-;;-(856-.-44*0;*8,-*8-48*+58,*7-4<-(8*80*8,-*6-75;5('?850.*<3'.@*R01*'7-*48533*>07-*<7091(856-:*'4*/01*'7-*+07)5.=*'8*'*,5=,-7*3-6-3*0;'H487'(850.@*R01*,'6-*>06-9*;70>*8+-')5.=*5.956591'3*H584*80*9-4(75H5.=*8,-*5.8-7-48?5.=*9-45=.*48'8-4@*Q-'(,5.=*;07*BCCS*;1.(850.'3*(06-7'=-*;07(-4*/01*80*8,5.)*>07-'H018*+,'8*/01*+'.8*80*0H4-76-*'.9*,0+*/01*('.*957-(8*8,-*9-45=.*5.80*8,04-*48'8-4@T#UV���%�� !"��#���W#U#**R01*('.*71.*8,-*4'>-*7'.90>*8-48H-.(,*06-7*'.9*06-7:45><3/*H/*(,'.=5.=*8,-*7'.90>*4--9:*80*=-.-7'8-*.-+*485>1314@*M'(,*5.956591'3*45>?13'850.*=-.-7'8-4*'*9'8'H'4-*0;*;1.(850.'3*(06-7'=-*5.;07>'850.:*8,-*87'53*0;*;008<75.84;70>*8,-*7'.90>*+'3)@*R01*('.*8,-.*>-7=-*'33*8,54*5.;07>'850.*80=-8,-7*80*>-'417-/017*06-7'33*<70=7-44*145.=*;1.(850.'3*(06-7'=-*XY5=17-*�?�Z@[\]_ab]cda]d\ef_c_ gh]i_b\]aj[\kcalcmnopqrsotuvwxxyryozqtyyvtmnopqrsotuvwxxyryozqtyyvt{vyozwxp|}~yt{vyozwxp|}~yt�vv�}otzrnwozt�vv�}otzrnwozt �������i\dce\db�bia_b\]�bci_cd_c_iac[\]_ab]cda]d\ef_c_ gh]i_b\]aj[\kcalcmnopqrsotuvwxxyryozqtyyvtmnopqrsotuvwxxyryozqtyyvt{vyozwxp|}~yt{vyozwxp|}~yt�vv�}otzrnwozt�vv�}otzrnwozt �������i\dce\db�bia_b\]�bci_cd_c_iac

Page 147: SystemVerilog for Verification

����������� �������������������������������� �!�"�#��$�������$� %$����&����'�$%(�����"���)�)*�+(����� �!�",�#����!��)��"��)���$%���#"�&%�#-�����'���.�)�����$����"����/%)�%�#���)�)�&%�����&"��$�'�)��$)-��"��!���.�)��"������#�"���)�)*�+(����� �!�"�#��#"�&�����)�)��"��$����)��&-���� ����$$��$$%�%����� ��)�"�%��)����#���"����'�"��0%���"�)�%�#1�)�%'��%*�2�������"�� ����3������-�)�'��3�"�)��(�����$�)%#���"������4�%�#��/�" %)�$-���$�)���������$��� "�����'�"����)�)*�5�)���-�&�������"�(�� �%����� �!�"�#��!����)����"�6778-� �� 9����4�#�"���*�+(�4�#)��"��)�%���4�%�#�(���$-�����'�������4��'��)�"%�#��"��� �!�"�#��(�")�'���"��)��(����"�$�)%#�*�:��;��4��%������4%#��(���"�)�����"�� ��6778� �!�"�#�-&�% ��.�)��)��&)�������������9�$�(�"�4�#)�%�����������)����3�� �)*�2�%��������"���"�%�#���!�"%(�����"�$�)%#�-���9��'����"��$�'�&��9)���"��#������)�%'���)�)3� �<���%)� �� "�����'���������% %3���$� �'4%���%��)*6=� ��)%'����%���!��$�"���)�%�)��&��(�"'���(�"�)��"%�#� �!�"�#��$������$��)�&�����)�%�)�&�������)%)�����)*��������$����3�"(�"'�����(����&%�#�� �%��)�&%������)������)*> ?�������)��&%���'���%3���)��$)*�@�"���#%!���)����(� ��)�"�%��)�A��$� �!�"�#�#"��3)B-� �'3%���������)�4�� ����$�$�)%#��%������)%�#����/� ����4��*�C�&�������$����"�����%)� ��)�"�%���)����!�"���$��!�"�&%���$%((�"����"��$�'�)��$)*���� ����)������D�%/�)�)��'� �� 9��)���)��$-�4���4�� �"�(��-��)����"�4�� �)�)��'�'���)��"��'���%3���.�4)�)%'��������)��*�E��)��.�4)�'���"������$%(,(�"����)�"!�")��"�'���)��"�������)%�#���)�"!�"�&%���'���%3���3"� �))�")*> F�� 9�(�"�3�))G(�%�*�@�� �%����� �!�"�#��%�(�"'��%���%)������!��%$�(�"���)� , �))(���)%'����%��*�2������)%'����%���(�%�)�4� ��)�����"��%)���$�)%#��4�#-���� �!�"�#��%�(�"'��%���'�)��4��$%) �"$�$*�E��� �!�"�#��$����'��)�"�)���&'����%��')�%������!�"%(% ��%���3�����"�� �'3����-���$���%)�3����%)�4�)�$�������$�)%#��)3� %(% ��%��*�+(�����$�)%#��$��)�����'�� ������)3� %(% ��%��-���� �!�"�#��!����)��"���)���))*�H�'��!�"%(% ��%������')�3�"%�$% �����'��)�"�6E���9)����I��)�!���$�"�H ����-�HJ�HCDK-��77�LMNOPQRSMTOUOTVWOXQ YMZOUOTVWOXQ[\VQ]XMZVPMLVWV_VNMX aMNLM_bP ]XMZVPMcQV\dNONLMNOPQ eMNWNf[VNNgLMNOPQRSMTOUOTVWOXQ YMZOUOTVWOXQ[\VQ]XMZVPMLVWV_VNMX aMNLM_bP ]XMZVPMcQV\dNONLMNOPQ eMNWNf[VNNg ����������� ������������������ ����������������� !"�#!��"�$�%�"���&�%���&������"!��!��%��&!���""!���%���!�����&!'!%�#�() *���+,!��� !"�#!���"�%%�$����-�!�"��%(�.����!!'����$!�%�"!�&�/�%���!%%���!��&����%�"�����%!���%0�� !"���$!(�1��+����"!�����+!��#!����#�2334��� !"�#!���"�&!��"!�%��&����"!���"#!�!'�5+��&!����%�"����%0�5����&!��$������%�%�����#"�/��#0"���$�"!�%!!'%(�1���&!��� !"�#!��! !��&�%�-���!��!'0�/��&����"!�!���-"�#"!%%0����%���$!����$�'��+��&!����%�"����%(�6��+����+����&��7��&���"!��&��#��&!���%��!/��!%����%!%���"���!�-�"������"�%!������$�+���7!��������#���"����%�"���!'8"��'�$�%�$��������%&���'�+������%�'!"�/"����#���'�"!��!'��!%�(�9 !���&!�0�������!�����%!�"��'�$�%��$���%���"��&!���&!"�%!�����%�����&!�'!%�#�0������%!�&�%�:5��7#"���'����%!;����'%���5�#(<=>?@ABCDEFC?GHICJK� !"�#!��%���#!�!"����!"$���"�$!�%�"��#�-"�#"!%%������$-�!�!�'!%�#�� !"���������(.��"�%�$�������%�%��/�+�-������&!���� �%�����&!�'!%�#�0��%�+����"+������ !"���������&!�!#�����$5�������%(�L&!��� !"�#!�����%�#��&!"�����"$������'�"��#���%�$����������'�&!��-�%�-"��!%%�������-"�'��!����� !"�#!�"!-�"�(�.��������%!��&�%�"!-�"��������7���"�� !"�#!�&��!%���'��&!��$�'��+�!M�%���#��!%�%��"��"!��!��!/���!%����������&!�&��!%(�L&�%��!"��� !�-"��!%%��������!%�������+����"!�%���%��!'�/��&��&!��� !"�#!��! !�(<=>=>?@ANC?@ABCDEFCL&!�!�%�!%��/�+����$!�%�"!� !"����������-"�#"!%%��%�/��&���'!��� !"�#!(�O!"!�+����"!$!�%�"��#�&�/�$��+����!%������'!�&� !�5!!��!M!���!'�P���!��� !"�#!Q0�/&��&�-��&%�&"��#&��&!���'!���'�!M-"!%%���%�&� !�5!!��!M!���!'�P-��&��� !"�#!Q0�/&��&�%��#�!85��� �"��5�!%�&� !�&�'��&!� ���!%�3��"�2�P��##�!��� !"�#!Q0���'�/&��&�%���!%���'��"��%�8����%������%���!�$��&��!�&� !�5!!�� �%��!'�PRST��� !"�#!Q(�.���'��U��&� !����/"��!��+�!M�"��OVW���'!(�L&!��������%�"�$!��%�+��"�'!%�#������$�������+�5+�����+,��#��&!%��"�!���'!���'��''��#�&�''!����'!����#��&!"�%����%���%(�.����&!��"�������+��"��!%�%0��'��&!���'!��� !"�#!�������"!��!%���'���5�%!(T��+�%�$�����"%������'!�����'!��� !"�#!�����(�*�-�%�-"��!%%��#��������� !"�%��&!'���5�%!��������"!�'�5�!���"$(�L&!�!�'�"!%�����%���$!�%�"!����&�/�$��&�+��"��!%�%!M!"��%!��&!�'!%�#����'!(�X��!��&���+����"!�-"�$�"��+�����!"�!'�/��&�����+,��#��&!'!%�#����'!0������&!��!%�5!��&(�Y��!%�!'�'!%�#����'!�����'�����!�����&�"'/�"!�5�#0�"�$�+�5!�Z�%��"!'��'������'!(K�'!��� !"�#!�$!�%�"!%�&�/��&�"��#&�+�+��"��!%�%�!M!"��%!'��&!�:�$-�!$!�������;����&!�'!%�#��%-!����������0���'������&!� !"����������-���(�[�%��5!���%!�+��"��!%�%�&� !"!��&!'�2334���'!��� !"�#!0�+��"�Z�5��%�����'��!(�\&������+���$�'!���$�%��7!��&��+��"��!%��'�'�U������&]�\�"%!�+!�0�/&������+��"��$-�!$!���������%�$�%%��#����!���"!]L&!������/��#�$�'��!��%���"���V8���-����-(�K���+���%!!��&!�$�%��7!]

Page 148: SystemVerilog for Verification

������������ � �������������������������� ���������!���� "" �#������$%&'()*+',,-&(./(.+)&012+34+35)4++++++++++++16/(.++)&012+2)74+'4+8*9*.5):;++<)=<>9+?-/&9*'0*+2)7+&8+6*0*'0*+8*9*.5):+@*016++++3+AB+';++++35)+AB+C';++*6'*6'%&'()*DEFGHFIFJGKLMNOGPQIGQOONRFSJKTGKFUJGLVJWGXGOLRFGOLYFHQMFGJLLKGPLVKRGHFZLHJGJEQJGFYFHTKNSFGEQRG[FFSGF\FHONIFR]GTFJGJEFGLRFKGPQIGSLJGNZKFFSJFRGOLHHFOJKTW����_�a��� �����b�c�d�#�DEFGMLQKGLUGYFHNUNOQJNLSGNIGJLGFSIVHFGJEQJGQGRFINMSG[FEQYFIGOLHHFOJKTGNSGNJIGHFQKGFSYNHLSeFSJ]G[FGJEQJGQSGfghGZKQTFH]GSFJPLHiGHLVJFH]GLHGOFKKGZELSFWGDEFGRFINMSGIZFONUNOQJNLSRFJQNKIGELPGJEFGRFYNOFGIELVKRGLZFHQJF]GPEFHFQIGJEFGYFHNUNOQJNLSGZKQSGKNIJIGELPGJEQJUVSOJNLSQKNJTGNIGJLG[FGIJNVKQJFR]GYFHNUNFR]GQSRGFQIVHFRWGjEFSGTLVGMQJEFHGFQIVHFeFSJIGLSGPEQJGUVSOJNLSIGPFHFGOLYFHFR]GTLVGQHFGZFHULHNSMGkRFINMSlGOLYFHQMFWGmLHF\QZKF]GJEFGYFHNUNOQJNLSGZKQSGULHGQGneUKNZGUKLZGPLVKRGFSJNLSGSLJGLSKTGNJIGRQJQGIJLHeQMFG[VJGQKILGELPGNJGHFIFJIGJLGQGiSLPSGIJQJFWGoSJNKGTLVHGJFIJGOEFOiIG[LJEGJEFIFGRFINMSUFQJVHFI]GTLVGPNKKGSLJGEQYFGpqqrGUVSOJNLSQKGOLYFHQMFWmVSOJNLSQKGOLYFHQMFGNIGJNFRGJLGJEFGRFINMSGNSJFSJGQSRGNIGIL FJNFIGOQKKFRGkIZFONUNOQJNLSOLYFHQMF]lGPENKFGOLRFGOLYFHQMFGFQIVHFIGJEFGRFINMSGNZKFFSJQJNLSWGsLSINRFHGPEQJEQZZFSIGNUGQG[KLOiGLUGOLRFGNIGNIINSMGUHL GJEFGRFINMSWGsLRFGOLYFHQMFGOQSSLJGOQJOEJENIGNIJQiF]G[VJGUVSOJNLSQKGOLYFHQMFGOQSW����t�ua#�v���XSGNSRNHFOJGPQTGJLGFQIVHFGOLYFHQMFGNIGJLGKLLiGQJGJEFGHQJFGQJGPENOEGUHFIEG[VMIGQHFULVSRWGwLVGIELVKRGiFFZGJHQOiGLUGELPGQSTG[VMIGTLVGULVSRGFQOEGPFFi]GLYFHGJEFGKNUFLUGQGZHLxFOJWGXJGJEFGIJQHJ]GTLVGQTGUNSRGQSTG[VMIGJEHLVMEGNSIZFOJNLSGQIGTLVGOHFQJFGJEFJFIJ[FSOEWGXIGTLVGHFQRGJEFGRFINMSGIZFO]GTLVGQTGUNSRGNSOLSINIJFSONFI]GPENOEGELZFeUVKKTGQHFGUN\FRG[FULHFGJEFGyDzGNIGPHNJJFSWG{SOFGJEFGJFIJ[FSOEGNIGVZGQSRGHVSSNSM]GQJLHHFSJGLUG[VMIGNIGULVSRGQIGTLVGOEFOiGFQOEGLRVKFGNSGJEFGITIJFWGDEFG[VMGHQJFGRHLZI]ELZFUVKKTGJLG|FHL]GQIGJEFGRFINMSGSFQHIGJQZFeLVJWG}LPFYFH]GTLVGQHFGSLJGTFJGRLSFWG~YFHTJNFGJEFGHQJFGIQMI]GNJGNIGJNFGJLGUNSRGRNUUFHFSJGPQTIGJLGOHFQJFGOLHSFHGOQIFIW ����������� ���������������������������������� !��"���#�� �$�%&�'!()*+,-.+/01*+203+40/5+6*/+7**8+,09*:+;3+<035+=021;/9+9-2)+09+6/;>*21+6)09*9?+/*2*31:*[email protected]+2)03.*9?+,A;289+,*@3.+@31*./01*:?+6*/9;33*A+2)03.*9?+03:+*4*3+40201@;3+92)*:B-A*9C+D3*E6*21*:+2)03.*9+@3+1)*+/01*+2;-A:[email protected]+0+6;1*31@0A+6/;,A*<C+F9+9);73+@[email protected]/*+HB�?+@1+@9+3;1+-32;<<;3+1;+8**6+=@3:@3.+,-.9+*4*3+0=1*/+106*B;-1?+03:+*4*30=1*/+1)*+:*[email protected]+9)@69+1;+2-91;<*/9C�IJIK�LMM��!�%#�N%O�� ��F99*/1@;39+0/*+6@*2*9+;=+:*2A0/01@4*+2;:*+1)01+2)*28+1)*+/*A01@;39)@69+,*17**3+:*[email protected]@.30A9?+*@1)*/+;32*+;/+;4*/+0+6*/@;:+;=+1@<*C+()*9*+203+,*+9@<-A01*:+0A;3.+7@1)+1)*:*[email protected]+03:+1*91,*32)?+;/+6/;4*3+,5+=;/<0A+1;;A9C+P;<*1@<*9+5;-+203+7/@1*+1)*+*Q-@40BA*31+2)*28+-9@3.+P591*<R*/@A;.+6/;2*:-/0A+2;:*?+,-1+<035+099*/1@;39+0/*+<;/*+*09@A5*E6/*99*:+-9@3.+P591*<R*/@A;.+F99*/1@;39+SPRFTCF99*/1@;39+203+)04*+A;20A+40/@0,A*9+03:+6*/=;/<+9@<6A*+:010+2)*[email protected]+U=+5;-+3**:+1;2)*28+0+<;/*+2;<6A*E+6/;1;2;A?+9-2)+09+:*1*/<@3@3.+7)*1)*/+0+6028*1+9-22*99=-AA57*31+1)/;-.)+0+/;-1*/?+6/;2*:-/0A+2;:*+@9+;=1*3+,*11*/+9-@1*:+=;/+1)*+>;,C+()*/*+@9+0A0/.*+;4*/A06+,*17**3+9*Q-*32*9+1)01+0/*+2;:*:+6/;2*:-/0AA5+;/+-9@3.+PRFC+P**+R@>0B50/0.)0403+03:+V0<030:)03+SW��XT?+Y;)*3+*1+0AC+SW��XT?+03:+Y)069C+�+03:+Z+@3+1)*R[[+,;;8?+\*/.*/;3+*1+0AC+SW��XT+=;/+<;/*+@3=;/<01@;3+;3+PRFC()*+<;91+=0<@A@0/+099*/1@;39+A;;8+=;/+*//;/9+9-2)+09+17;[email protected]+1)01+9);-A:+,*+<-1-B0AA5+*E2A-9@4*+;/+0+/*Q-*91+1)01+709+3*4*/+=;AA;7*:+,5+0+./031C+()*9*+*//;/+2)*2899);-A:+91;6+1)*+9@<-A01@;3+09+9;;3+09+1)*5+:*1*21+0+6/;,A*<C+F99*/1@;39+203+0A9;+2)*280/,@1/01@;3+0A.;/@1)<9?+GUG]9?+03:+;1)*/+)0/:70/*C+()*9*+0/*+2;:*:+7@1)+1)*+__abcadcabe+9101*<*31CP;<*+099*/1@;39+<@.)1+A;;8+=;/+@31*/*91@[email protected]+40A-*9+;/+:*[email protected]+9101*9?+9-2)+09+09-22*99=-A+,-9+1/039021@;3C+()*9*+0/*+2;:*:+7@1)+1)*+fdgahcadcabe+9101*<*31Ci;-+203+<*09-/*+);7+;=1*3+1)*9*+099*/1@;39+0/*+1/@..*/*:+:-/@3.+0+1*91+,5+-9@3.+099*/B1@;3+2;4*/0.*C+F+2;4*/+6/;6*/15+;,9*/4*9+9*Q-*32*9+;[email protected]?+7)*/*09+0+2;4*/+./;-6S:*92/@,*:+,*A;7T+90<6A*9+:010+40A-*9+03:+1/039021@;39+:-/@3.+1)*+9@<-A01@;3C+()*9*17;+2;391/-219+;4*/A06+@3+1)01+0+2;4*/+./;-6+203+1/@..*/+7)*3+0+9*Q-*32*+2;<6A*1*9CF::@1@;30AA5?+0+9*Q-*32*+203+2;AA*21+@3=;/<01@;3+1)01+203+,*+-9*:+,5+0+2;4*/+./;-6Cjklmnoppq rstp ruvpwxkyz{ypl|uysx{ }po~��r~�x�p�pmsl{|p�spo }po~�p|s��p{ls{pp|jklmnoppq rstp ruvpwxkyz{ypl|uysx{ }po~��r~�x�p�pmsl{|p�spo }po~�p|s��p{ls{pp|

Page 149: SystemVerilog for Verification

������������� ����� ������� ���������������� �!�"#$�%#�&�$��#%�#'()*+,)-.+/-0,12)-23)-*1,42-516)-+*-2)42-7+8)9-.+/-6))8-2+-:62171;:2)-03:2-:,)-23)-<).8)41=6-*):2/,)49-7+,6),-7:4)49-:68-;+441>5)-*:15/,)-?+8)4@-A314-14-3+0-.+/-0,12)-.+/,B),1*17:21+6-;5:6@-C+6D2-2316<-16-2),?4-+*-8:2:-B:5/)4-+65.E-1642):89-2316<-:>+/2-03:216*+,?:21+6-14-)67+8)8-16-23)-8)41=6@-A3)-;5:6-43+/58-4;)55-+/2-23)-41=61*17:62-8)41=642:2)4@����F�G��H#$�I�J�$K�����L�M���N���O-75:4417-)P:?;5)-14-:-QRQS@-T+0-7:6-.+/->)-4/,)-.+/-3:B)-23+,+/=35.-2)42)8-:-�-UQRQS-?)?+,.V-W+/-7+/58-?):4/,)-23)-B:5/)4-16-23)-,):8-:68-0,12)-16817)49->/2-23),):,)-+B),-:-?1551+6-;+441>5)-7+?>16:21+64@-XB)6-1*-.+/-0),)-:>5)-2+-41?/5:2)-23:2-?:6.7.75)49-.+/-0+/58-6+2-0:62-2+-,):8-23)-7+B),:=)-,);+,2@O2-:-?+,)-:>42,:72-5)B)59-:-QRQS-7:6-3+58-*,+?-�-2+-YZ�-;+441>5)-B:5/)4@-[+-03:2-1*.+/-\/42-7+?;:,)-23)-,):8-:68-0,12)-16817)4-2+-?):4/,)-3+0-*/55-+,-)?;2.-23)-QRQS14V-W+/-0+/58-42155-3:B)-�-U-7+B),:=)-B:5/)4@-R*-.+/,-2)42>)673-;/43)8-���-)62,1)4162+-23)-QRQS9-23)6-;/43)8-16-���-?+,)9-8+-.+/-,):55.-6))8-2+-<6+0-1*-23)-QRQS-)B),3:8-�]�-B:5/)4V-Y+2-:4-5+6=-:4-.+/-7:6-4/77)44*/55.-,):8-+/2-:55-B:5/)4@A3)-7+,6),-7:4)4-*+,-:-QRQS-:,)-Q/55-:68-X?;2.@-R*-.+/-7:6-?:<)-23)-QRQS-=+-*,+?X?;2.-23)-42:2)-:*2),-,)4)2_-23,+/=3-Q/55-:68->:7<-8+06-2+-X?;2.9-.+/-3:B)-7+B),)8:55-23)-5)B)54-16->)20))6@-S23),-162),)4216=-42:2)4-16B+5B)-23)-16817)4-:4-23).-;:44>)20))6-:55-�D4-:68-:55-�D4@-O-7+B),:=)-,);+,2-*+,-23)4)-7:4)4-14-):4.-2+-/68),42:68@W+/-?:.-3:B)-6+217)8-23:2-23)-162),)4216=-42:2)4-:,)-168);)68)62-+*-23)-QRQS-41)@S67)-:=:169-5++<-:2-23)-16*+,?:21+69-6+2-23)-8:2:-B:5/)4@C)41=6-41=6:54-0123-:-5:,=)-,:6=)-?+,)-23:6-:-*)0-8+)6-;+441>5)-B:5/)4_-43+/58->)>,+<)6-8+06-162+-4?:55),-,:6=)49-;5/4-7+,6),-7:4)4@-Q+,-)P:?;5)9-.+/,-CaA-?:.3:B)-:-�bc>12-:88,)44->/49->/2-.+/-7),2:165.-8+6D2-6))8-2+-7+55)72-d->1551+6-4:?;5)4@e3)7<-*+,-6:2/,:5-81B141+64-4/73-:4-?)?+,.-:68-RS-4;:7)@-Q+,-:-7+/62),9-;17<-:-*)0162),)4216=-B:5/)49-:68-:50:.4-2,.-2+-,+55+B),-7+/62),-B:5/)4-*,+?-:55-�D4->:7<-2+-�@������f� g�h#�'�$#�iH���j���k$#�G���%����l'#m:23),16=-*/6721+6:5-7+B),:=)-8:2:-7:6->)-)P;)641B)9-:68-4+-+65.-?):4/,)-03:2-.+/0155-:6:5.)-:68-/4)-2+-1?;,+B)-.+/,-2)424@-W+/,-41?/5:21+64-?:.-,/6-45+0),-:4-23)41?/5:2+,-?+612+,4-41=6:54-*+,-*/6721+6:5-7+B),:=)9->/2-2314-:;;,+:73-3:4-5+0),-+B),c3):8-23:6-=:23),16=-0:B)*+,?-2,:7)4-:68-?):4/,16=-7+8)-7+B),:=)@-S67)-:41?/5:21+6-7+?;5)2)49-23)-8:2:>:4)-14-4:B)8-2+-814<@-n123-?/521;5)-2)427:4)4-:68-?/5c21;5)-4))849-.+/-7:6-*155-814<-8,1B)4-0123-*/6721+6:5-7+B),:=)-8:2:-:68-,);+,24@-(/2-1*.+/-6)B),-5++<-:2-23)-*16:5-7+B),:=)-,);+,249-8+6D2-;),*+,?-23)-16121:5-?):4/,)?)624@ ����������� �������������������������������������� ��!"�#"$!�"��#"����%�!�&��!�#"'()��!)"$*�)$�!�$!)�!)"$*�"��!�)++��,)$+-�."/�#"/�%�/�����)!#����(�"�)%�%�0 �!����)'/��!)"$���$%"�*�#"$%)!)"$��#"'()��!)"$*�"���/((����)"$�"1�!���+�!���)$+�"1�#"����+��%�!�-��������!�"1�!�����)������%��)��0���0�#�/���!���("�!(�"#���)$+���("�!�)��1)���%��)!����#!)"$���)!���2�#"����+�*'�3)$+�)!����%���!"�1)$%�!���1����$�0��%�"$��-4565789:;<=>?@A8BCDEF:G:@:<<H)3�� "/��3)%��)$�!���0�#3���!�"$���1�')� ���#�!)"$*� "/��'�$�+���#"$�!�$!� ���3� "/*�IJ������!����� �!KL�M"��#�$� "/�!����)1� "/������1/�� �!��!�%���%��)+$K�."/$��%�!"��""3��!�����#"����+��'���/��'�$!���$%�#"$�)%���!���0/+���!��!"�����)1� "/��������#��%� "/��%��!)$�!)"$-J!�!����!��!�"1���(�"N�#!*�0"!��#"%���$%�1/$#!)"$���#"����+�������"�-�J�� "/�%����"(!��!�*��/$�!��'�"�����$%�"�����)!��%)11���$!���$%"'����%��/$!)�� "/�$"��"$+������)$#����)$+����/���"1�1/$#!)"$���#"����+�-�O���!���%%)!)"$���#"$�!��)$!���$%�!��!��!"�P(�"���$��������-�Q����!��!R���%�#"'0)$�!)"$��!��!�+)����)+��#"����+�*��"�!��!� "/#�$�/���!��'�)$���+����)"$�!��!)$+�ST)+/���U,VW-X?A=>:84YZ8BC[:>;A:8\CDE;>?<C@]��!�)1�!���1/$#!)"$���#"����+��)���)+��0/!�!���#"%��#"����+��)���"�K�."/��!��!�����$"!��P��#)�)$+�!���1/���%��)+$*�(����(��1�"'��$�)$�%�/�!�����)1)#�!)"$�(��$-�_!�'� �0�!)'��!"�+"�0�#3�!"�!������%������(�#)1)#�!)"$���$%�/(%�!�� "/�����)1)#�!)"$�(��$-����$ "/�$��%�!"��%%�'"���1/$#!)"$���#"����+��(")$!��!"��"#�!��/$!��!�%�1/$#!)"$��)! -J�'"���%)11)#/�!��)!/�!)"$�)���)+��#"%��#"����+��0/!��"��1/$#!)"$���#"����+�-���$!�"/+�� "/��!��!0�$#��)��+)�)$+�!���%��)+$���+""%��"�3"/!*� "/�����/$�0���!"�(/!�)!�)$����!���)$!����!)$+��!�!��-�T)��!*�����)1�!���%��)+$�)'(��'�$!������!����(�#)1)�%�1/$#!)"$,��)! -�_1�!���1/$#!)"$��)! �)��!����*�0/!� "/��!��!��#�$a!����#��)!*� "/�')+�!�$��%��1"�'������)1)#�!)"$�!""��!��!�#�$��P!��#!�!���%��)+$a���!�!����$%�#���!���((�"(�)�!��!)'/�/�-bcdefghdijklhmnoipn lhqnklhmnoipnrfiofkhstohunefvnnqkwhonkblkthgdfxykgdejcqgdpehodnokeixnxz{|} ~�� ~�� z{|}�xkqnxgpdkehwtjnfn�k�no�itxkfo�kshowijkfhhjx�hhqkehmnoipn�e�ne�k�cpkoifnbcdefghdijklhmnoipn lhqnklhmnoipnrfiofkhstohunefvnnqkwhonkblkthgdfxykgdejcqgdpehodnokeixnxz{|} ~�� ~�� z{|}�xkqnxgpdkehwtjnfn�k�no�itxkfo�kshowijkfhhjx�hhqkehmnoipn�e�ne�k�cpkoifn

Page 150: SystemVerilog for Verification

������������ ������� ����� ���� ��������������� �!�������"�#���$#�%&$"!��$���"�'�(���)�*�+�'�(,�#�$-!�.��$�/�&(�'�"�0!��$�/�!)�1��!����!���!(�$#��%�!��� &��(�!�2�3(�����$�%�"�$!� &����!����.�..�$��&.21�(���/�!,��(��!��/� ��$��%�&$#�#��� �(�!��/,��(�#�#�/�&(�!��! �$"����..�$�!���!&4 ���"(������.�(!�"&��(�"�4 �$�!��$��%��!�!���!��!�$���$����#��$!�"�.�!�#2�5$�!����!��(��$#,�����+� &��(�!��4�/�4��$�!��!�/�&(��6��!�$���!(�!��������'��(&$��&!��%��!��4,�$#�/�&����&�#����7��$!��#�%%�(�$!��..(��"���)��(/�#�%%�(�$!��..(��"�����&"�����$�+"�4 �$�!��$���%�#����$� ��"7���$#��((�(���$�(�!�(�)89:;<=>?@A;BCDEF=GDH@;IGJAKHLA;MNH>?@A���4���&(��%&$"!��$���"�'�(���,�/�&� ���$�+�!��!���'�(�%�"�!��$�.��$��$#�+(�!���$�6�"&!� ���'�(���$��%��!�%�(���4&��!��$)�O$�/�&(�P/�!�4Q�(�����!��! �$"�,���4.���!��'��&����%�'�(�� �����$#��6.(�����$�)���������4.�����"�!��$���(��7$�+$����"�'�(.��$!�)�R&�!�.���"�'�(�.��$!��!��!��(����4.��#��!�!�����4��!�4��S�&"�����+��$���!(�$�0�"!��$�"�4.��!��T��(��.��"�#�!���!��(��$���"�'�(��(�&.)P�4.���U)V�������!(�$��"!��$�!��!�"�4����$�����!�%��'�(�)�����!��! �$"����$�(�!���!��WXYZ�'�(�� ���(�$#�4�/,��$#�!���'�(�%�"�!��$�.��$�(�[&�(���!��!��'�(/�'��&�� ��!(��#)<H>?@A;89\;BCDEF=GDH@;EGJAKHLA;G];H;=>?@A;G_AEFabcdbefgehicfeijkgilminohmjpkqrsgjpktuggkvemmgrbewmekijcwuggggbewxgojigyz{|}~gxeieuggggbewxgojigyg�|}~gacbiugggggggg��g�jd�igacbigwhfolbmgglwxkvemmggkc�lbdbchag�c��cbiuggggkc�lbacjwigibqacbiugggggggggg��g�lemhblgkc�lbedlgglwxdbchaggjwjijevgoldjwggggrbewmekijcwgibugggg�c��cbigk�uggggk�g�gwl�ntugggggggggggggggggg��g�wmiewijeilgdbchaggggibg�gwl�ntuggggblaleignz�tgoldjwgggggggggggg��g�hwgegpl�gk�kvlmggggggemmlbinibqbewxcfj�ltugggggg��g�bleilgegibewmekijcwggggggjpkqkoqacbig��gibqacbiugggg��gggewxgibewmfjiggggggjpkqkoqxeieg��gibqxeieugggg��gggcwicgjwilbpeklgggggggk�qmefavlntuggggggggggggggg��g�ei�lbgkc�lbedlgggggg�jpkqkouggggggggggggggggggg��g�ejigegk�kvlgggglwxgglwxlwxabcdbef ����������� ����������������������������� !��"�#���!�$%&��"!�$#� "'&$��$%�%!'(�#�'"�&)"�"&��$�'$"�!*� ���+,��"�#"-.�$ ,�#�����#�",��(��)��&*�",��/012�*'��%�)#'$3�",��4056012� &(�!�3!&)���7'3,"�&##'.���(��)�#8����!�$%&��"!�$#� "'&$#�9�%'%�:&)!�"�#".�$ ,�3�$�!�"��",������;�<�!�'#���!"�&*��� &(�!�3��!��&!"�*!&��=>��?@ABCDEFGHEIJKDL@MDELDBJLNEOJLE@EPQABCDEJRSDTNUVWXYZV[\]UVWXY_ XYXZVY]UVWXY_XaYVbZcUVWdVY]^ ^UVWXYZV[\]c]YeZVY]fbgg_Yh^ ^UVWXY_Xcijekl^ ^aV_mcnll^ ^obgpXYVqrsZXt]Xu_b]Vvp[\wci^ ^obgpXYVqxwXYyXq[\Xuz[\wcl^ ^obgpXYVq{b]Vg_][t_mmhaX\XY_]Xuz[\wcj^ ^obgpXYVqxwXYyXq[\Xu|Y_\w[][V\wcl^ ^{b]Vg_][t_mmhaX\XY_]Xuz[\w^ ^z[\ ^ ^ ^ ^ ^ }~[]w ^ _]mX_w]^ ^��������������������������������^ ^_b]V�n� ^ ^ ^ j ^ ^ ^ ^n^ ^_b]V��� ^ ^ ^ j ^ ^ ^ ^n^ ^_b]V��� ^ ^ ^ n ^ ^ ^ ^n^ ^_b]V��� ^ ^ ^ k ^ ^ ^ ^n^ ^_b]V�k� ^ ^ ^ � ^ ^ ^ ^n^ ^_b]V��� ^ ^ ^ � ^ ^ ^ ^n^ ^_b]V�j� ^ ^ ^ � ^ ^ ^ ^n^ ^���������������������������������#�:&)� �$�#��8�",��"�#".�$ ,�3�$�!�"�%�",��(��)�#��8��8��8��8��8��8��$%��8�.)"�$�(�!3�$�!�"�%���/012�&*����+,���2�����2� &�)�$�#�� '*'�#�,&����$:�,'"#��!��$��%�%.�*&!����.'$�'#� &$#'%�!�%� &(�!�%�������� "'&$�������*&!�",���2�����2�&�"'&$�+&�'��!&(��:&)!�*)$ "'&$��� &(�!�3�8�",����#'�#"�#"!�"�3:�'#�"&��)#"!)$��&!��#'�)��"'&$� : ��#8�&!�"&�"!:�$���!�$%&��#��%#���&&���"�",� &(�!�3��!��&!"�*&!�'"��#��'",�"�&�&!��&!��,'"#��>,�$ �#��!��",�"�:&)�)#"�$��%�"&������",��#'�)��"'&$�!)$��&$3�!�&!�"&�"!:�$���#��%�(��)�#��*��� &(�!��&'$"�,�%���!&�&!�&$��,'"8�:&)��!&.�.�:�,�(��"&�"!:���$��#"!�"�3:8��#�",��"�#".�$ ,�'#�$&"� !��"'$3�",���!&��!�#"'�)�)#���&!�",'#�������8�",��(�!:�$��"�!�$%&��"!�$#� "'&$�������,�#���/012�(��)��&*��8�3'('$3����� &(�!�3��

Page 151: SystemVerilog for Verification

����������������� ���� ������������������ �!�� ��� "�#� ���$%������&'�(")�*++,�(��� �!�-./012.3456-./017806102.15-./0178091.:2;6-./<.156666-./012.345;651=2.15>:??71@6666-./01780;6ABB66669.7C;6ABB6666D:?E016.F6GH20I50J67:5.KE34L;6M6666D:?E016.F6NL016O0F340J6P34L;6B6666D:?E016.F6Q:5.?753I7CC@690401750J6P34L;6M6666D:?E016.F6NL016O0F340J6R174L353.4L;6B6666Q:5.?753I7CC@690401750J6P34L6666P3466666666666S6T35L6666756C07L56666UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU66667:5.VBW6666666A666666666A66667:5.VAW6666666X666666666A66667:5.VYW6666666X666666666A66667:5.VZW6666666A666666666A66667:5.V[W6666666\666666666A66667:5.V\W6666666[666666666A66667:5.V]W6666666Y666666666A66667:5.VXW6666666]666666666A6666UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU����_�"�� ��#������� �a �b�cdefghidjifkldmndnmompqidrfdqdepqnndsdtfkduhvmwhdmrdfwehdqwudrxhwdmwnrqwrmqrhdmrdfwhdfiofihdrmohnydzrdefwrqmwndefghidlfmwrn{dflrmfwn{dvfioqpdqijkohwrn{dqwudqwdflrmfwqpdrimj|jhiydcdefghidjifkldhwefolqnnhndfwhdfidofihduqrqdlfmwrn{dqppdfvd}xmexdqihdnqolphudqrrxhdnqohdrmohy~fkdnxfkpudeihqrhdghitdephqidefghidjifkldwqohndrxqrdh�lpmemrptdmwumeqrhd}xqrdtfkdqihohqnkimwjdqwu{dmvdlfnnm�ph{dihvhihwehdrfdrxhdghimvmeqrmfwdlpqwyd�xhdwqoh�������������������������������������doqtdnhhodghi�fnh{d�krd}xhwdtfkqihdritmwjdrfdihqudqdefghiqjhdihlfirdrxqrdxqnduf�hwndfvdefghidjifkln{dtfkd}mppdqllihem|qrhdrxhdh�riqduhrqmpyd~fkdeqwdqpnfdknhdrxhdefoohwrdflrmfwdvfidquumrmfwqpduhneimlrmghmwvfioqrmfw{dqndnxf}wdmwd�hermfwd�y�y�ycdefghidjifkldeqwd�hduhvmwhudmwdqdepqnndfidqrdrxhdlifjiqodfidofukphdphghpydzrdeqwdnqo|lphdqwtdgmnm�phdgqimq�phdnkexdqndlifjiqo�ofukphdgqimq�phn{dnmjwqpndvifodqwdmwrhivqeh{fidqwtdnmjwqpdmwdrxhduhnmjwd�knmwjdqdxmhiqiexmeqpdihvhihweh�ydcdefghidjifkldmwnmuhdqepqnndeqwdnqolphdgqimq�phndmwdrxqrdepqnn{dqnd}hppdqnduqrqdgqpkhndvifodho�huuhudepqnnhny ����������� ������������������ �������������� ��!�"�#�$#�%&����'��'�'�!('))*�)%! �')�'��#'�)'!����*�')����$�)��!'��!'%)��'�������'(��"�# �'��+ ���$'� �#��$�!�"�#'$��'�',�-.'$����/�%�'#���#/��$�����#'!0� �+�.'�/�1��#)�+�#��!��)%.��1/�&'�#��)����'�&%1,�2�%(��/�%��#/������((�+��"�#/�1���(��')�����(�+���#�.�� ��(�'���$���!0*��"�#�� ��1'#*�'���������'! �&�#)��3�4�*���)��'�/�%�!�%(��5%)�� '"���'! �&'�#���! �!0������ ���/&��'����%.1�#���1��#)�!��)%.��*�')�) �+�����"'����#�6! ����'���7�#$�#���89���:,�-��6/)��.;�#�(�$*�/�%�) �%(���������!�"�#�$#�%&)�'��� ��'&&#�&#�'���(�"�(����'1)�#'!<����,�= �)�(�"�(�!'��1��'��� ��1�%��'#/�1��+����/�%#���)�1��! �'���� ����)�$�*����� ��#'�)'!��#)�� '��#�'��'���+#�����'�'*����� ����"�#��.����!����$%#'�����!('))*��#�+ �#<�"�#��)�������,�= ��)'.&(��$����'�/��#'�)'!�����.%)��+'���%���(�����)�'!�%'((/�#�!��"��1/�� ���>=,�-��/�%���5�!��'���##�#����� ��.���(�����'��#'�)'!����*�!'%)��$�������1�'1�#��������#'�).�))���*�/�%���������! '�$�� �+�/�%��#�'�������#��%�!����'(�!�"�#'$�,?�%���������%)��'������#����!�"�#�&������ '�� ')�1����!#�'����5%)����#��##�#� '��(��$,@�!('))�!'��!���'���.%(��&(��!�"�#�$#�%&),�= �)�'&&#�'! �'((�+)�/�%���� '"��)�&'#'��$#�%&)�� '��!'��1����'1(���'�����)'1(���')�������,�@�������'((/*��'! �$#�%&�.'/ '"��'�)�&'#'����#�$$�#*�'((�+��$�/�%����$'� �#��'�'��#�.�.'�/�)�%#!�),@�!�"�#�$#�%&�.%)��1����)�'���'������#�������!�((�!���'�',�-��/�%���#<$��*�����##�#�.�))'$��'1�%���%((� '��(�)��)�&#������'��#%�<��.�*�1%�� ��!�"�#'$��#�&�#��+�((�����!���'���'�/�.����������� ��!�"�#$#�%&,�= �)�#%(��'&&(��)���#�!�"�#�$#�%&)������������ �#���)�����#�%�)�������!('))�),ABCBDEFGHIJIJKELEMNOGPEQPNRSEIJELEMTLUU@�!�"�#�$#�%&�!'��1�������������'�&#�$#'.*�.��%(�*��#�!(')),�-��'((�!')�)*�/�%�.%)��V&(�!��(/���)�'���'���������)�'#��)'.&(��$,�-��� ��!�"�#�$#�%&��)������������'�!('))*�/�%�������.'0��'�)�&'#'����'.��+ ���/�%���)�'�!����W�/�%�5%)��%)��� ���#�$��'(�!�"�#$#�%&��'.�,�6'.&(��X,Y��)�"�#/�)�.�('#����� ����#)���V'.&(������ �)�! '&��#��V!�&��� '������.1��)�'!�"�#�$#�%&����'��#'�)'!��#�!('))*�'���� %)����)����������'�)�&'#'�����)�'�!���'.�,

Page 152: SystemVerilog for Verification

�������������������� ������������������� !�����!"�#�$�� �% &�������%%'()**+,-).*)'/0-1++,-).*)'/20.+/-1++3)2(405+34562.1++'078-9-0:;+<07=0-/1++++'078-;02./+/->;0-/1++8.?9-0:;++@:.'/20.+.8AB3)2(405+34562.C1++++<07=0-/+D+.8ABC1++++++++++EE+F.*/)./2)/8+'078-9-0:;++++/G2*>34562.+D+34562.1++8.?@:.'/20.++/)*H+3)2.1++++@0-878-+4892.++++++/-+D+34562.>98/1++++++++EE+I8/+.85/+/-).*)'/20.++++++2@'>'4>;0-/+JD+/->;0-/1+EE+K8.?+2./0+LM,++++++2@'>'4>?)/)+JD+/->?)/)1++++++<07=0-/>*)3;(8BC1+++++++EE+I)/G8-+'078-)98++++8.?++8.?/)*H8.?'()**����N# $$�# �$���O!"�#�P#!��QRSTUVWTXYZW[T\Y[U]TWT_aUbWYcTaWdS[YeSTY[STURST]YX\cSfTfYUYTdYc_S]TYfTURSTUbXSVRSTURSgTY[ST]YX\cSfhTiRSTSVTdYc_S]TY[ST[SYfgTj]_aRTY]TVRSTYTU[Y]YaUbWTRY]aWX\cSUSfklTgW_[TUS]UmSaRTU[beeS[]TURSTaWdS[Te[W_\hTQRb]TaYTmSTfWSTfb[SaUcgTVbURURSnopqrsT_aUbWlTY]T]RWVTbTtYX\cSTuhvlTW[TmgT_]beTYTmcWawbeTSx\[S]]bWTbURSyz{s|}|z~qTfSbbUbWhTQRSTmcWawbeTSx\[S]]bWTaYT_]STYT�o��TW[T�TUWTmcWawTW]beYc]TW[TSdSU]hT�]SnopqrsTbTgW_TVYUTUWTSx\cbabUcgTU[beeS[TaWdS[YeST[WXT\[WaSf_[YcTaWfSlTbTURS[Sb]TWTSxb]UbeT]beYcTW[TSdSUTURYUTUScc]TVRSTUWT]YX\cSlTW[TbTURS[STY[STX_cUb\cSb]UYaS]TWTYTaWdS[Te[W_\TURYUTU[beeS[T]S\Y[YUScgh�]STURSTmcWawbeT]UYUSXSUTbTURSTyz{s|}|z~qTfSacY[YUbWTbTgW_TVYUTUWTUY\TbUWSxb]UbeTSdSU]TW[T]beYc]TUWTU[beeS[TaWdS[YeSh����������� �$��% �$���O�������� STWTURSTmSUUS[TVYg]TUWTbUSe[YUST_aUbWYcTaWdS[YeSTbUWTgW_[TUS]UmSaRTb]TUWT_]SaYccmYaw]lTY]TW[bebYccgT]RWVTbTtSaUbWT�h�hTQRb]TUSaRb�_STYccWV]TgW_TUWTm_bcfTYcSxbmcSTUS]UmSaRTVbURW_UT[S]U[baUbeTVRSTaWdS[YeSTb]TaWccSaUSfhT�W_TaYTfSabfSTW[ ����������� ���������������������������������� ������!�"#������$#��% ����#�&�% ����#$'�(�#���(#)�$�&*�+�&��!���'���&�#���,��#�- ��./����� ���������)����!���#�"#$$0#".1���'�"#��#$%#�(�#&&��������#�'��0��'(����)#����1�#(�#�"#$$0#".���$��-!���(/�% ���� ����(����2�(���(�#�"#$$0#".�03�"�*�4�'�"#��"��#���)#���(��#�#���"#$$0#".(�!����#" �"�����2��'�1�%�� �$���$������5 �#&*�+(��,�$#���&����6�"������*7*81�"#$$0#".(�#���('����������'(��2�#�)#�$0�,���"����"��� ����(�0��" ����� ��"����#2���03�"�(*�4�'�)�2 �����&�)'$���$��)#�$0�,�(���"�$$�"����#�(#"����(�!��)�&�!!�����������(������'����(�0��" *�+�)#�$0�,���9'���(�#��#�(#"���������"�������#�(#"����(1�#�&�)'$���$��)#�$0�,�(�"#'(����'����3'22$��)'$��5�$��� ��#&(*�:�(��#&��!�#��#"�������#�(#"���1�'(��#��#((����"#$$0#".*6#)�$���*���( �%(�#�&������"$#((�� #�� #(��%��"#$$0#".������(1�0�!����#�&�#!����� ���#�(#"������(���#�()����&*�6#)�$���*;<�( �%(�� ��0#(��"#$$0#".�"$#((1�#�&�6#)�$��*�=� #(�#���(��%�� �#���,���&�&�"#$$0#".�"$#((�� #��(��&(�&#�#����#�("���0�#�&*�>#.���'���%���,���(���1�?@ABC@DEFGDEHBC@IJC1 �!�� ��0#(��"#$$0#".�"$#((1?@ABC@DEFGK����"#$$�� ��GILMNC��#(.�!�����'��"�����2��'�����MHGODOP*�Q'( �#���(�#�"���!�� ��"����#2��"#$$0#".�"$#((������� ��&�����R(�"#$$0#".�9'�'�1�#�&���'��"��5��#2��"�&�����22��(�� ��"�����2��'��#��� ����2 ����)�*�S ��!�$$�%��2��%���,#)�$�(&�!����#�&�'(��� ��"#$$0#".�?@ABC@DEFGDEHBC@IJC*TUVWXYZ[\]ZY_Za_bcdZeacfbgcUXZfghYiUdYZfUXXjUfklmnompqrpstnqptuvrtwxtyrrz{|umn{qw{trw{|yrru{utup}r~wou{rrrr�mu|wm�v~x�vn|wmpowr�vvyrrrrw{|r�r{w���yrrrrw{|�ow{�v�o��yrrrrw{|�~su}���yrrrr��r�mwptwrp{�rmwouxtwmrt�wrvn|wmpowrvp}}~pv�rrrr�vvr�r{w���yrrrrrrrrrrrrrrrrrrrrw{|��m|�v~x�lsx��~pv���vv�yr��r�stru{tnr�mu|wm�xr�rrrrw{|�ms{��yrrrrw{|��mpl�sl��yrrw{�w{�lmnompq

Page 153: SystemVerilog for Verification

�������������������� ������������������������ !��"#�$% #���� &�!�'�()*++,-./01.2(3+2(401.*51,167189+,-./01.2(3+:,,(401.5.4;<,=40>4.7:,,,,???,,1895.4;<,,0/.7;*),7*+@,<4+7276AB.*8+*(7/48,7.C:,,,,=40>4.7?+*D<)1AC:,,,,,,,,,EE,F*D<)1,(401.*51,0*);1+,,1897*+@189()*++��G�H�� &�!�I! "��J%$K��#�L&�#$�M!%''�!NOPQRSTUVP�WXYPZ[VP\]V_P_]aTPbcdecfgPhiPiRSTUVjPk[VOPZ[VPZViZlVO\[PZ_h V_iPZ[VgfmnopfqmrsPVVOZW���������t�� &�!�'! "��u%$K���$!%''�!10187,7.*8+2.1*9v:(401.5.4;<,=40>4.7,wA7.*8+2.1*9vC:,,,,(401.<4/87,/x(?(3?<4.7:,,,EE,y1*+;.1,(401.*511895.4;<z[VPRjROZRVP]{PaihOPROPVVOZP]V_P\RUUhOPZ[VPom|}~qPSVZ[]jPjh_V\ZU�PhiPZ[RZP�]aSR�PlVPRlUVPZ]PaiVPROPV�hiZhOPVVOZPia\[PRiP]OVPZ_h V_VjPl�PROPRiiV_Zh]OYPRiPi[]kOhOPQRSTUVP�W��W��G���M!%''�!%#'� #������$����!%� '�����!$% #N{P�]aPRU_VRj�P[RVPROPQ��PZ[RZPU]]�iP{]_PaiV{aUPVVOZiPUh�VPRP\]STUVZVPZ_ROiR\Zh]OY�]aP\ROPRjjPROPVVOZPZ_h V_PZ]PkR�VPaTPZ[VP\]V_P_]aTW������������ �"���u%$K����$����!%� '�����!$% #D49;)1,D1DA+/D<)123;+,+3C:,,3/7,�����,9*7*�,*99.:,,10187,�./71210187:,,(401.,<.4<1.7v,,,,AwA<4+1951,+3?()4(@C,+3?�./71218*���C,,,,��,�./71210187:189D49;)1 ����������� ���������������������������� �!"#$$�"#%$���&'(�"�$"')��*#+,��%��-./012034536714378957:;7<;84/=:>?6;5;?@A5591B:02016/5C087:>925D<E0117F71/F4GFH087:>:B:I7@A555591B:0/18I75E0117F71/F4GFJ373A555591B:0/18I75E0117F71/F4GF3JJ0A55:IJ2016/55C087:>925H92A558I8783=5?:28I5555H925K5I:H<@A5555LL5M//=N5;7846=6;5O:0:5555;?FH087:>:I35PK5GA5555FFF5555QGRRRR5ES8I8;OA55:IJ:IJ/012034��T�U�+�������#%$VWXYZ[Y\W]_aYZbcW_deZWbYaef_ghYifbYjWkY[l\ZcjYY]_ZmnYW_Yol_[[ZWbYZbY\W]_YlWZbepYqj[edr_ZnWaY\_ e[YYbkdm_YWcYsmZb[tYeWY_\W_gYfWXYdbjYeZd[^\fY]nkYf[Ym bY[ buYvf[YmZb[Y_YefYm[Z\YkbZe[YWcYd [k_dbeYcW_Yckb\weZWbnY\W]_auYxcYjWkY[dlnYYWbwmZeY]_ZmnpYYdoZdkdYWcYeXWYmZb[Y_Y\_ eguyWkY\bYZdaZbYefeYqj[edr_ZnWaYg_Wl[YYeWzbYZbYWbYW_YefYWef_YmZbY]_jYeZdefY\W]_Ya_WklYZ[Ye_Zaa_guY{eYefYbgYWcY\fY[ZdkneZWbpYYgem[YZ[Y\_ egYXZefnnYmZb[YefeYf]YYeWzbYZbYefduYyWkYefbY_kbYbYbnj[Z[YeWWnYefeY_g[YnnYgewm[[YbgYab_e[YY_lW_eYXZefYefY\W]_aYcW_Y\fYl_eYWcYefYg[ZabYbgYcW_YefeWenY\W]_au��T���|%}#(#})���~#%���%}�!'+����'(�"�$��vWY\n\kneYefY\W]_aYcW_YYlWZbepYjWkYcZ_[eYf]YeWYge_dZbYefYeWenYbkdm_YWclW[[ZmnY]nk[pYn[WYzbWXbY[YefYgWdZbuYvf_YdjYmYWbY]nkYl_YmZbYW_YdkneZwlnY]nk[uY�W]_aYZ[YefYbkdm_YWcY[dlngY]nk[YgZ]ZggYmjYefYbkdm_YWcYmZb[ZbYefYgWdZbu{Y\W]_YlWZbeYefeYZ[YY�wmZeY]_ZmnYf[YefYgWdZbY���YbgYZ[YbW_dnnjYgZ]ZggYZbeWZafeYmZb[uYxcpYgk_ZbaY[ZdkneZWbpY]nk[YmnWbaZbaYeWY[]bYmZb[Y_Y[dlngpYef_lW_eYXZnnY[fWXY���YW_Y��u��Y\W]_aYcW_YefZ[YlWZbeuY{nnYef[YlWZbe[Y_Y\WdmZbgeWY[fWXYefY\W]_aYcW_YefYbeZ_Ya_WklpYbgYefbYnnYefYa_Wkl[Y_Y\WdmZbgYeWaZ]YY\W]_aYl_\beaYcW_YnnYefY[ZdkneZWbYgem[[u

Page 154: SystemVerilog for Verification

����������� ��� ���������������������������������������������������������� !� �"�������"���������#��!�������������������$��� �������%��������������������������������������%� ��������������������&�%�$��� ���'������(���� ��%����"����� ��������������������%����'�� ��(������)*+*,-./012345-6347-892:;123<1==>?��$�����%����������(�������@��(���A��B�@$����C��������������� ���$� �������'������� �"���(�������D�����!��������������������������(�����E(���������������������������������(����'���"�������F�������E(����������������&�'����%���B�����������GH�(����'���"������F��������I'���"����'���JKLMB�����������N�(����'���"������� ��������������������������$(��������%�����@� �����A�O�N�� �������������������������������$(�������������'�����������"����������� ���������E(�� ���$��������'����������%�����@� �����A�O�P�)*+*Q-R3;32345-2S0-T9;U0/-:V-892:;123<-6347-./0120W ��� �"�������(��(�����XYMKZ[\]ZX_��(� ������������E��������'������'�������������� ���$� �����B�%�����������������O�'�����D����������������"������������� �"��(�����"����'�������E(������������������������������(����B�@$����C���������"�������������������XYMKZ[\]ZX_�'�����F����E��(��B����OI'���"����'�������OPBP�O�(����'��"�����B���������� ���������O�'���� �"�����BaG�"������D��������$B�$�����$������������((��� ����(�� �� ��B����������"��$������ ��������������������������������� �"�������������$��� !��������I����������'�����#�%�������������������N�����OB����'������$��B��E(�� ���$������������'����������%�����@� �����A�O�P� ��������%���� ������!������� ��(���b���������E��(�������������� �"���(������(��������������XYMKZ[\]ZX_�����%��'����� ������(����"����'������������JKLMB�%�� ����������'����%���B�����������������������(����'���"������� ���������'���������������%�������������������B�ac�B�������������������������((���"�����B�cd�e1;f=0-)*gg-h7345-ijklmnopmqir-702-2:-,sltuvwvljxyzlt{lvk|yysltuvxlopkykv}xlvkyyyy~ylxkolp�}ijklmnopmqiry�y�|y�yy��y�oto�uyopkly�ynop�up�wvljx ��� �"��������(���������C�@����%�������%��'����� ���������������� ���"����aa� �"������'� ���������������JKLM�"������%������((�������%��'�����@�� ��'����'�����"�����(����"�����B�$���� �"����������aa��e1;f=0-)*g,-�0f:/2-�32S-ijklmnopmqir-702-2:-,�opyyyyyyyyyyyyy�y�ok�yyyyiky�ui�k����������������������������������ijkl�����yyyyyyy��yyyyyyyy�ijkl�����yyyyyyy��yyyyyyyy� ����������� ������������������������������� �!�"#$%&'()&*"+�� ��,�-�./-,�0-1�.2��3-4�1��-/,.�-,�5��6-��3�,��� -� ��/.�� ��,�-�./-,�0-1�.2���,./1��71-���89:;<=>?@AB>CDEFG>HIJKLMNOLPHQ>RST>9<<>USV=T>;SEFWDXKYZ[\[KI]_KYK[Ja^K]JNKObcHIJKLMNOLPHQ deaffghhZXJb]K[J ijHJH^XKYZ[]KNOJJ[c]K[Ja^XKYZ[]KNOJJ[cjHJHaZOj\[KI]?@k@l>89:;<EFG>mn;T=DDESFD6-��3�,� �������o�1� /-, p�q�.���r�5 �32�3s�.2��3-4�1�7��1��-1.�.-�q�� �1��5-���1�7�../,7�.2��4���� �5-���o��3.��6-����5�2�4��.-��!t� .�.2��r/!.2�-0�.2��3-���.�!�o�1� /-,p�� � 2-r,�/,���3./-,����u��v-1��o�����p� ����/,7����wq/.�2��!�1���,7.2xyz{|���� ���}wq/.���5�-�!���,7.2�xyz�u|�31��.� �-,�5��}�-1��~�q/, p�r2/32���5�,-.�q��,-�72�/0�5-�1�.1�, �3./-, �3�,��3.����5�q��yz���q5.� ��-,7�89:;<=>?@Al>CDEFG>9F>=n;T=DDESF>EF>9>USV=T>;SEFWX�Hbb�[HObHXJNKOa^[HOjMNJ�e����j[L�ZOa ^ ^ ff[HO\Z����^[HOjMNJ�����]H��KHjL�ZOa ff[HO\Z�����^[HOjMNJ������NOja ^ ^ ^ ^ff[HO\Z�����^cccZOjX�Hbb�[HObHXJNKOJ[aXKYZ[\[KI]_KY�ZOa^�ZO���XKYZ[]KNOJ�J[c�j[L�ZO �J[c]H��KHjL�ZO�a^�ZO�e�XKYZ[]KNOJ�J[c�j[L�ZO �J[c]H��KHjL�ZO ���M��aZOj\[KI]����������}�2� ���3-4�1�71-���.2�.� ����� �.2��.-.���.1�, �3./-,���,7.2���2��3-4�1�-/,.�2� �����q���.-���s��/.��� /�1�.-�1��!�.2��3-4�1�7��1��-1.���� -p�.2���o�1� /-,�2� �,��!!/./-,���!���5�3-, .�,.� -�.2�.�.2��.1�, �3./-,���,7.2�/ �3-���.�!�r/.2�uwq/.�1�3/ /-,p�0-1�����o/����-0������.-w7�,�1�.�!�q/, �����/3s�1�,�r/.2��yy�.1�, �3./-, � 2-r�!�.2�.�.2����)���2�!��yy��3-4�1�7�p�q�..2/ �/ ��31- �-,�5��~�q/, ���2��3-4�1��-/,.���)���2�!�~���3-4�1�7���31- ����q/, ���/.2�1�-0�.2� ��3-4�1��-/,. ��1��3-11�3.p�� �.2����o/������,7.2�2� ���!-��/,�-0�yz��xy�yz{��u|���2����.-w7�,�1�.�!�q/, �t� .�!-,�.�r-1sp�� �.2����o/������,7.2�/ �,-.���-r�1�-0���

Page 155: SystemVerilog for Verification

����������� ��� �������������������������������� !"#$%&#'(&))*+,-.-/&#-0+1'.2+&/-+$3&*+4$/+&.$.*%$"2+0&#&+5&)"-26+2"(7+&2+($".#-/5&)"-26+&00/-22-26+$/+5&)"-2+#7&#+&/-+&+8$9-/+$4+:;+<$/+$#7-/+5&)"-26+*$"+27$")0+-=8)'(>'#)*+.&%-+#7-+1'.2+#$+'%8/$5-+&(("/&(*+&.0+-&2-+($5-/&,-+/-8$/#+&.&)*2'2;?*2#-%@-/')$,+&"#$%&#'(&))*+(/-&#-2+1'.+.&%-2+4$/+-."%-/&#-0+#*8-26+1"#+4$/+$#7-/5&/'&1)-2+*$"+.--0+#$+,'5-+.&%-2+#$+#7-+'.#-/-2#'.,+2#&#-2;+A7-+-&2'-2#+9&*+#$+28-('4*1'.2+'2+9'#7+#7-+BC+2*.#&=6+&2+27$9.+'.+?&%8)-+D;�E;F�GHI�� �J��������� �K�����L��M�����NM�L��I�� MOPQRSTUTQVWXYQRZS[\XX]S[XPQRSTWQ_[XaTbcdTe]S[XfXTbWgh]Qgde]S[XfXijklmXXXXnk_[oX]S[pqXrXnplstqu\XuS[dUTQVW!4#-/+2&%8)'.,+:6vvv+/&.0$%+#/&.2&(#'$.26+#7-+,/$"8+7&2+DE;w�x+($5-/&,-;+!+y"'(3)$$3+&#+#7-+/-8$/#+27$92+#7-+8/$1)-%+z+#7-+)-.,#7+$4+:�+{�|+7-=}+9&2+.-5-/+2--.;+A7-)$.,-2#+7-&0-/+'2+|6+&.0+#7-+)$.,-2#+8&*)$&0+'2+�E6+4$/+&+#$#&)+$4+::6+.$#+:�~+�4+*$"(7&.,-+#$+#7-+����+0-()&/&#'$.+#$+"2-+v�::6+#7-+($5-/&,-+�"%82+#$+�vvx;+A7-+"2-/>0-4'.-0+1'.2+4$".0+&+1",+'.+#7-+#-2#;F�GHI�� �J���L���� ����HL�M��L��M�����NM�L��I�� MO�_[XXXXXXX�Xc_oXXXXgX]Sgorrrrrrrrrrrrrrrrrrrrrrrrrrrr]S[ellXXXX�tXXXXXXXX�]S[el�XXXXt�XXXXXXXX�]S[elsXXXXi�XXXXXXXX�]S[eltXXXX�lXXXXXXXX�]S[el�XXXX�sXXXXXXXX�]S[eliXXXX��XXXXXXXX�]S[el�XXXX�s�XXXXXXX�]S[el�XXXX�ssXXXXXXX�]S[el�XXXX�ttXXXXXXX�]S[el�XXXX�t�XXXXXXX�]S[elgXXXX��iXXXXXXX�]S[elkXXXX�s�XXXXXXX�]S[elPXXXX�siXXXXXXX�]S[eldXXXX���XXXXXXX�]S[elSXXXX��iXXXXXXX�]S[el�XXXX�t�XXXXXXX�]S[e�lXXXX�l�XXXXXXX�]S[e��XXXX�lsXXXXXXX�]S[e�sXXXX�lXXXXXXXX�]S[e�tXXXX�iXXXXXXXX�]S[e��XXXXt�XXXXXXXX�]S[e�iXXXXtlXXXXXXXX�]S[e��XXXX��XXXXXXXX� ����������� �������������������������������������������������������������������� ! !"#$%&'(")*+",-.+/"0-&')"1&'23456789:;�<9=45678=949�>?@A9B4C@4?78D9EFGHD9AI4A9I4=9�J96K==@?789B47L8=;9MI89N@C=A9?@O@=9P4778Q9RSTU94OQ9PKLOA=9AI89OL5?8C9KN9A@58=9AI4A9EFGH9@=9V9WI8O9=45678Q;9MI89O8XANKLC9B47L8=D9�Y�94OQ9ZD94C894779[CKL68Q9@OAK949=@O[789?@OD9\U;9MI89L668C98@[IA9B47L8=D]Y�ZD94C8986A9@O9=864C4A89?@O=D9_FaD_FbD_FcD_FdD_FeD_FHD_FSD94OQ_Ff;9gKA89IKW9h9@O9AI89_F9?@O98X6C8==@KO9@=9L=8Q94=949=IKCAI4OQ9OKA4A@KO9NKC9AI874C[8=A9B47L89NKC9AI89=45678Q9B4C@4?78;9i4=A7jD9kFle9IK7Q=94779B47L8=9AI4A9W8C89OKA96C8>B@KL=7j9PIK=8Om9�D9JD94OQ9<;n$%op+"� qr"no+s&tu&'("v&'"'$%+2wxy�z{zx|}�~xy�������wxy�z}x�����z������������������zx��������������������������xz������������������x����������������������������xz�y��|���������������������������������������������}�z����������������������������w�������|������������������xz���������z������������������������������������x�����wx�x����{zx|}����~xy�z����gKA89AI4A9AI894QQ@A@KO479@ONKC54A@KO94?KLA9AI89eU�ST�UFG�9@=9[CKL68Q9L=@O[9PLC7j?C4P8=m9��;9MI@=9@=9?8P4L=89AI89?@O9=68P@N@P4A@KO9@=9Q8P74C4A@B89PKQ8D9OKA96CKP8QLC47PKQ89AI4A9WKL7Q9?89[CKL68Q9W@AI9dS�FG;;;SGH;9i4=A7jD9AI89N@O479PLC7j9?C4P89@=9g�MNK77KW8Q9?j949=85@PK7KOD9 L=A94=94O9SGH9O8B8C9@=;gKW9jKL9P4O984=@7j9=889WI@PI9?@O=9I4B89OK9I@A=9Y9_Fa9@O9AI@=9P4=8;n$%op+"� q¡"¢+o-/)"2*-£&'("v&'"'$%+2¤���������¥����������������������������������������������������������������������¦�������������������������������������������������§������������w�����������������������������������������������¦��������������������§����������x���������©������������w�������������������zx�����������������

Page 156: SystemVerilog for Verification

����������� �� �������������������������������������������� �����!�"���������������!��� ����������������������������� �������#�$����%&���"� ����"�� �������%�����""����������������������� ������!�"������������������""��������'�������������#�(�����%'������"�����"�����������������������������������"��"�������������"���!��� �#�)��� ����**+���!��� ����"����"�� �������� �������������!�����'�����������#�&�"������������������""�����������'����������������� �����#�,������"���������"����������%'"���!�"������������������������"�� �������������'�-�����.#�/�� �����"��������������'������� ��������"-������������0123456�����'�����������������!�"�������������%�����!����� �����#/��$�%'"��7#�8��������� ������9:����������""����� ��;<=���������� ������������'����������''���!�"��#�,���������!���������"����������>���-���������"���������%'�"�����"��"�������"�%������������� �#�)�����������������""����� ���������"����������������� ������'���������"�-���"�%��#�/��$�%'"��7#�7������<����������� ����������?1@���'�������������� ���!���%����������������%�A���B��.C�D***E****�����>.��F8�FD��GFD��-�����������<�������HIJ���'������������"�� ������ ����'�����!��!�"�����.C�8KKKEKKKK�����.��F8�FD��GF8#LMNOPQRSTUSRLOQVWXYWZ[R\MZ[Q]RW_Rabcdebfghijklkhmnekocljpghijkfeeghijknhbcdebeqeeeerbcsecjleetequvwxyz{fee||e}jlodbijeio~mjseeeerbcse�jkheteq�{feeeeeee||e�jkheeeerbcsenhseetequywvz{feee||e�hsbdbijeio~mjsee{jc�lkhmnST�T�R��Z�W_W�ZMPR���Q\M[Q)���������������:22����-������������������������������!���'����#�,���%������%%����������������� ���������������������!��� ������� ������������������������ �������� �����#�$�%'"��7#.*� ���������"��!�"�������HI�6�-�����1J16����*��-������1J16�������!���� �#LMNOPQRST��R��Z�W_W�ZMPRV��Q\M[QR�R�W]M�PQR��\WZ[R\Q]Q_ghijklkhmne�hijk�hkdfee||e�hc�delod�jkeghijkolje��jcekjsjdttyeeghijknhbcdenhkdeb��e��rmspb��kjsjd�fjc�lkhmn�"�������"�������������������J63�6�����J6IH��������������������"�����!����"���������������!��� ���'�# ����������� ���������������������������� �!"#$%�&'()��$*�&'+,'�-.$/0#1$"232'2+4567823559(:;(,'5<=5>537?@AB5555555CC5D3&'+3'2+'75<(:7,58,(E)55CC5F7&7'5&7GE73<75&'()&5<(447<'2(35(H5<(:7,+875I+'+55JK3&5<=L&'()@AB556E&M2HL,7&7'5>5KB55JKNN3&56E&M2HL,7&7'5>5NB5CC5O3I5(H5,7&7'55<=L&'+,'@AB55LLL73I��P�Q�RS��0#$%�T#$"�-1S�U$.��S�0�*�VW��"XYZ[\]_\Za\b[acd\ef[gcea\_h\ZijYk[lZ\a\e[[mi][nYZ[\lo[pj\q������������r.$/0#1$���/1s�S�%��-1S��$��$.��S�0�*�0W��'t)7I7H573Eu5vDwDxy5zO9{zOy5Dz|O}5H&u&'+'7M7BH&u&'+'7M75)&'+'7y53&'+'7B555CC5I7<4+,75't)7I5:+,2+647&<(:7,8,(E)5<8MH&uB55<(:7,)(23'5)&'+'7B73I8,(E)~\Z\[ie[dZa[Yn[ao\[lYp\Zk\[Z\dYZa[nZY_[h�gf[eoY�i]k[ao\[mi]e[nYZ[ao\[\]_\Za\bacd\eq������������R1s�S�%��S��1S0��#0���$.��S�0�*�0W��"�235555555555555J5�2'&5555+'547+&'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+E'(MzO9{zO55555KK55555555K+E'(MDz|O5555555KK55555555K+E'(MDwDx5555555KN55555555K>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>�n[cY[�]a[aY[kZYd[_ jaidj\[pj\e[i]aY[[ei]kj\[mi]f[cY[op\[aY[b\ni]\[cYZ[Y�]mi]eq[�]c[mi]e[Yaeib\[ao\[\]_\Za\b[pj\e[Z\[ik]YZ\b[]j\ee[cY[b\ni]\[[mi][�iaoao\[b\n ja[ed\lini\Zq[�o\][cY[kao\Z[lYp\Zk\[Y][\]_\Za\b[acd\ef������������[bY\e[]Ya[ddjcq

Page 157: SystemVerilog for Verification

����������� �� ��������������������������� !"#$!%&'"()*!%+#+'!+,#$%(+(�$%!)�,!#!"�-',!&�($+.!/$!+0(%!1#*2!*� !"#$!+'33!$�+!�$3*10#+!($+','%+($4!-#3 '%!1','!%''$!5 +!#3%�!+0'!%'6 '$"'%.!7�,!'8#9&3'2!*� !"#$!"0'":();<=>!'-',!1'$+!),�9!?!+�!�2!@2!�,!�.A�BCD����EF�AC�G�HI����������������H�����G�����C����JKLMNONKPQRSKLMNTKNUVRRJKLMNQKWXURQKNURYRRRRZWX[RU\R]R_R]R\abR_R]RcabR_R]RdaVRReMXfONKPQ�� !"#$!6 (":3*!%&'"()*!9 3+(&3'!+,#$%(+(�$%! %($4!,#$4'%.!g0'!'8&,'%%(�$!hijklmnojpq!",'#+'%!+0'!)� ,!+,#$%(+(�$%!himnoq2himnpq2hkmnoq2!#$r!hkmnpq.�� !"#$!%&'"()*!+,#$%(+(�$%!�)!#$*!3'$4+0.!s�+'!+0#+!*� !0#-'!+�!%#9&3'!�$"'!)�,!'#"0%+#+'!($!+0'!+,#$%(+(�$.!t�!hulmnlilmnlkq!(%!r())','$+!),�9!hulmnlilmnlilmnlkq�,hulmnlilmnlilmnlilmnlkq.!/)!*� !$''r!+�!,'&'#+!-#3 '%2!#%!($!+0'!3#%+!%'6 '$"'2*� !"#$! %'!+0'!%0�,+0#$r!)�,9vhulmnliwxoylmnlkq.!g�!,'&'#+!+0'!-#3 '!�!)�,!�2!z2�,!{!+(9'%2! %'!iwxo|}y.����~����D�G����A����������������������� ! %'!+0'!������=�!:'*1�,r!+�!",'#+'!9 3+(&3'!%+#+'%!#$r!+,#$%(+(�$%.!�$*!�2�2!�,�!($!+0'!'8&,'%%(�$!(%!+,'#+'r!#%!#!1(3r"#,r!)�,!?!�,!�.!g0'!)�33�1($4!",'#+'%!#!"�-',&�($+!1(+0!#!5($!)�,!'-'$!-#3 '%!#$r!�$'!)�,!�rr.A�BCD����E����D�G���������H�����G�����C����ZWUR�c�_�RQKNUVJKLMNONKPQRSKLMNTKNUVRRJKLMNQKWXURQKNURYRRRR�W�fJ�NfRZWX[RMLMXR]RYd�Z��_eVRRRR�W�fJ�NfRZWX[RKffRR]RYd�Z��\eVRReMXfONKPQ����~~������������D����(+0!%�9'!"�-',!&�($+%2!*� !$'-',!4'+!#33!&�%%(53'!-#3 '%.!7�,!($%+#$"'2!#!��5(+!-#,(#53'9#*!5'! %'r!+�!%+�,'!� %+!%(8!-#3 '%2!?�{.!/)!*� ! %'!# +�9#+("!5($!",'#+(�$2!*� !$'-',4'+!5'*�$r! {�!"�-',#4'.!g0','!#,'!+1�!1#*%!+�!%�3-'!+0(%!&,�53'9.!�� !"#$!'8&3("(+3*r')($'!+0'!5($%!+0#+!*� !1#$+!+�!"�-',!#%!%0�1%!($!t'"+(�$!�.�.{.!�3+',$#+(-'3*2!*� !"#$3'+!t*%+'9 ',(3�4!# +�9#+("#33*!",'#+'!5($%2!#$r!+0'$! %'!�¡¢<=£¤¥�¢¦!+�!+'33!10("0-#3 '%!+�!'8"3 r'!),�9!) $"+(�$#3!"�-',#4'!"#3" 3#+(�$. ����������� ���������������������������� �!"#�$��"%&'�(%')�*+,-./01*,21*34567894:-;0<-.32080=>444444??4@,:A4B2/24CD:B/248E=F-C/.+.-B<4G-C/.H-.3>44F-C/.<-*,34:-;0<-.32080=4I4444*+,-./01*,24J*4K4I5LMN9O>4??4P+,-./4B<</.4641*,244O/,Q+.-B<RSTUVWXYXZ[\UW[ZYTUV]U_ab_cdeafaghU[UiSWTTjkXiUl[WX[k\TUXmUnopqURSTUrst_cuavrteTwx\yzTmUiSTU\[miUi{VUkXZmhU{SXxSUWTzyxTmUiSTUW[ZYTUiVUno|qU}VUiVi[\UxVlTW[YTU]VWUiSXmYWVy~UXmUiSTUZy�kTWUV]UkXZmU{XiSUm[�~\TmhUzXlXzTzUk�UiSTUiVi[\UZy�kTWUV]UkXZmhU{SXxSXmU|UXZUiSXmUx[mTq������������!"#�$��"%&'�(%')�DB3-01*,0�D���&��*+,-./01*,21*34567894:-;0<-.32080=>444444??4@,:A4B2/24CD:B/248E=F-C/.+.-B<4G-C/.H-.3>44F-C/.<-*,34:-;0<-.32080=4I4444-<3*-,2�DB3-01*,0�D�4K4�>4??487�M467�M4�7=M4L7N4444*+,-./01*,24J*4K4I5LMN9O>4??4P+,-./4B<</.464CD:B/244O/,Q+.-B<�]U�VyUzT]XZTUkXZmUTXiSTWUTw~\XxXi\�UVWUk�UymXZYUiSTU��d_avrta���UV~iXVZhU[ZzUiSTZXYZVWTUiST�hUiSTUXYZVWTzUkXZmUzVUZViUxVZiWXkyiTUiVUiSTUx[\xy\[iXVZUV]UxVlTW[YTqU�Z}[�~\TU�q�phU]VyWUkXZmU[WTUXZXiX[\\�UxWT[iTzUymXZYUiSTU��d_avrta���UV~iXVZoUno�hU�o�h�o|hU[ZzU�opqU�V{TlTWhUiSTZUiSTUy~~TW�VmiUkXZUXmUT\X�XZ[iTzUk�Urst_cuavrtehU[ZzUmVXZUiSTUTZzUVZ\�UiSWTTUkXZmU[WTUxWT[iTzqURSXmUxVlTWU~VXZiUx[ZUS[lTUxVlTW[YTUV]Un�h���hU���hUVWU�nn��� �������������%&�}V�TUm[�~\TzUl[\yTmUZViUVZ\�UmSVy\zUkTUXYZVWTzUkyiU[\mVUmSVy\zUx[ymTU[ZUTWWVWUX]iST�U[WTUmTTZqURSXmUXmUkTmiUzVZTUXZUiSTUiTmikTZxS�mU�VZXiVWUxVzThUkyiUx[ZU[\mVUkTUzVZTk�U\[kT\XZYU[UkXZU{XiSUr us�avrteqU�mTUr us�avrteUiVUx[ixSUmi[iTmUiS[iU{TWT�XmmTzUk�UiSTUiTmi�mUTWWVWUxSTx�XZYqURSXmU[\mVUzVyk\TjxSTx�mUiSTU[xxyW[x�UV]U�VyWUkXZxWT[iXVZoUX]U[ZUX\\TY[\Ul[\yTUXmU]VyZzUk�UiSTUxVlTWUYWVy~hUXiUXmU[U~WVk\T�UTXiSTWU{XiSUiSTiTmikTZxSUVWU{XiSU�VyWUkXZUzT]XZXiXVZmq������������!"#�$��"%&'�(%')�*::/+D:01*,21*34567894:-;0<-.32080=>444444??4@,:A4B2/24CD:B/248E=F-C/.+.-B<4G-C/.H-.3>44F-C/.<-*,34:-;0<-.32080=4I4444*::/+D:01*,24J*4K4I5LMN9O>4??4�*C/4/..-.4*�42//,44O/,Q+.-B<

Page 158: SystemVerilog for Verification

�������������� �� � ������������������������� !"#$%!"&'#%()*#+!,-.*'#,%(,#-/#(#.!)*0#10!"2#-$#"$*'#!+#(#$,(,*#3(.%-+*4#5!"#.(+#"$*6-+$#,!#&-$,#,%*#$2*.-/-.#$,(,*$4#(+'#,0(+$-,-!+$#/!0#,%*#(0.$7#8!9*)*04#,%-$#'!*$#+!,3*(+#5!"#$%!"&'#"$*#:5$,*3;*0-&!1<$#/"+.,-!+(&#.!)*0(1*#,!#3*($"0*#$,(,*#3(.%-+*.!)*0(1*7# !"#9!"&'#%()*#,!#*=,0(.,#,%*#$,(,*$#(+'#(0.$#3(+"(&&57#>)*+#-/#5!"#'-'#,%-$.!00*.,&5#,%*#/-0$,#,-3*4#5!"#3-1%,#3-$$#/","0*#.%(+1*$#,!#,%*#'*$-1+#.!'*7#?+$,*('4#"$*(#.!'*#.!)*0(1*#,!!&#,%(,#*=,0(.,$#,%*#$,(,*#0*1-$,*04#$,(,*$4#(+'#(0.$#(",!3(,-.(&&54$()-+1#5!"#/0!3#2!$$-6&*#3-$,(@*$78!9*)*04#(+#(",!3(,-.#,!!&#*=,0(.,$#,%*#-+/!03(,-!+#*=(.,&5#($#.!'*'4#3-$,(@*$#(+'(&&7# !"#3(5#9(+,#,!#3!+-,!0#$3(&&4#.0-,-.(&#$,(,*#3(.%-+*$#3(+"(&&5#"$-+1#/"+.,-!+(&.!)*0(1*7� A����BB���������C#.!)*0#2!-+,#0*.!0'$#,%*#!6$*0)*'#)(&"*$#!/#(#$-+1&*#)(0-(6&*#!0#*=20*$$-!+7# !"#3(59(+,#,!#@+!9#+!,#!+&5#9%(,#6"$#,0(+$(.,-!+$#!.."00*'#6",#(&$!#9%(,#*00!0$#%(22*+*''"0-+1#,%!$*#,0(+$(.,-!+$4#(+'#,%*-0#$!"0.*#(+'#'*$,-+(,-!+7#D!0#,%-$#5!"#+**'#.0!$$.!)*0(1*#,%(,#3*($"0*$#9%(,#)(&"*$#9*0*#$**+#/!0#,9!#!0#3!0*#.!)*0#2!-+,$#(,#,%*$(3*#,-3*7#E!,*#,%(,#9%*+#5!"#3*($"0*#.0!$$#.!)*0(1*#!/#(#)(0-(6&*#9-,%#F#)(&"*$4(+'#!/#(+!,%*0#9-,%#G#)(&"*$4#:5$,*3;*0-&!1#+**'$#FHG#.0!$$#6-+$#,!#$,!0*#(&&#,%*.!36-+(,-!+$7� A ��I�B������BB����������JK�LMN�O0*)-!"$#*=(32&*$#%()*#3*($"0*'#.!)*0(1*#!/#,%*#,0(+$(.,-!+#@-+'4#(+'#2!0,#+"36*046",#9%(,#(6!",#,%*#,9!#.!36-+*'P#Q-'#5!"#,05#*)*05#@-+'#!/#,0(+$(.,-!+#-+,!#*)*052!0,P#R%*#STUVV#.!+$,0".,#-+#:5$,*3;*0-&!1#0*.!0'$#,%*#.!36-+*'#)(&"*$#!/#,9!#!03!0*#.!)*0#2!-+,$#-+#(#10!"27#R%*#STUVV#$,(,*3*+,#,(@*$#!+&5#.!)*0#2!-+,$#!0#(#$-3W2&*#)(0-(6&*#+(3*7#?/#5!"#9(+,#,!#"$*#*=20*$$-!+$4#%-*0(0.%-.(&#+(3*$#!0#)(0-(6&*$#-+(+#!6X*.,#$".%#($#YZ[\] _ZTaZb]4#5!"#3"$,#/-0$,#$2*.-/5#,%*#*=20*$$-!+#-+#(#SUTcUa[d#9-,%#(#&(6*&#(+'#,%*+#"$*#,%*#&(6*&#-+#,%*#STUVV#$,(,*3*+,7:(32&*#�7e�#.0*(,*$#.!)*0#2!-+,$#/!0#dT_fa[\#(+'#dT_cUTd7#R%*+#,%*#,9!#2!-+,$#(0*.0!$$*'#,!#$%!9#(&&#.!36-+(,-!+$7#:5$,*3;*0-&!1#.0*(,*$#(#,!,(&#!/#eg#hgijk#6-+$7>)*+#(#$-32&*#.0!$$#.(+#0*$"&,#-+#(#)*05#&(01*#+"36*0#!/#6-+$7 ����������� ������������������������������ �!"#�#$%!!�#%&�$�'�()*++,-.*/+*(012/3,,.*/4,510,6789:,;1/43,,.*/4,510,6<89:,=2.03>/4()*++-.*/+*(012/,0.3(2?>[email protected]=,B2?C2.03,,;1/48,(2?>.=21/0,0.D;1/43,,EE,B.>*0>,(2?>.,=21/0,;1/4,,=2.08,(2?>.=21/0,0.D=2.03,,EE,B.>*0>,(2?>.,=21/0,=2.0,,(.2++,;1/4F,=2.03,,,,,,,,,,EE,B.2++,;1/4,*/4,=2.0>/[email protected]=GHIJKLMNHOPQORPKSTHSIPJOPLH���HOIJKQJSOUMKQHJKLHVIMLWSPLHOTPHSMXPIJYPHIPVMIOHUKZJNV[PH\]��]HMOPHOTJOHPXPKHOTMWYTHJ[[HVMQQUR[PH_abHJKLHcdefHXJ[WPQHgPIPHYPKPIhJOPLiHJRMWOHjklHMmHOTPHSIMQQHSMNRUKJOUMKQHgPIPHKMOHQPPK]���������no�p%&�$�'��!q���$r�$��%$s�t%$�u�!"#�#$%!!�#%&�$�'�BAvA)*01?>,.>=2.0,w2.,-.*/+*(012/88B2?C2.0xAvv*.y8,,,,B2?>.*@>8,z{D|7,,,,}2*)8,~99B2?>.=21/0,,,,,,,,,,B2?>.*@>,,,,,}2*),,,,,,,,,�>1@�0��������������������������������������������������������;1/4,,,,,,,,,,,,,,,,,,~99D99,,,,,,~99,,,,,,,,,~=2.0,,,,,,,,,,,,,,,,,,~99D99,,,,,,~99,,,,,,,,,~��������������������������������������������������������B.2++,,,,,,,,,,,,,,,,,B2?>.*@>,,,,}2*),,,,,,,,�>1@�0��������������������������������������������������������-.*/+*(012/88B2?C2.0,,|�D{9,,,,,,,~99,,,,,,,,,~B.2++,B2?>.*@>,.>=2.0B2?>.*@>}.2A=8,-.*/+*(012/88B2?C2.0,,,,B.2++8,-.*/+*(012/88B2?C2.0xAvv*.y,,,,B2?>.*@>8,|�D{9,,,,}2*)8,~99,,,,B2?>.=21/0+,B.2++>48,;1/4,=2.0,,,,,�Av5>.,2w,��=>(0>4,B.2++,�1/+8,~<|,,,,�Av5>.,2w,�+>.,�>w1/>4,B.2++,�1/+8,9,,,,�Av5>.,2w,�A02v*01(*))y,}>/>.*0>4,B.2++,�1/+8,~~<

Page 159: SystemVerilog for Verification

�������������� ����� ������������������������������������������������ ��������������!�"�������������������##################################################��������$%&��������$%&��������'������������'��������$%&��������$'&��������(������������'��������$%&��������$)&��������*������������'��������$%&��������$+&��������'������������',,,-./.01234567891:;<==1:<>5;3951?78=@ABCDEBFGHIBJDKLBKLGMGNOLBPKDQQBPDRLKGSLBNTHBHGJLQUBCDEBPGHBOGNLOBIVLBTHMTRTMEGOPDRLKBWDTHIBNTHQUBGHMBXCQILJYLKTODSBFTOOBEQLBIVLQLBHGJLQBFVLHBPKLGITHSBIVLBPKDQQNTHQZ[3\]651-._1[]57ab7891;<==1<>5;3951478183\5=��c��d��� ���ce���f���g�� ���h���c�� �������, �������ij���� ���$&�#�i$%hk&lg���l������h���c�� �������,�������ij����m����#�i%lg�������nn�'�j���o�������##%����j���������#�i$'h*&lg���nn�'�j���o���c������'h*����j����"�$&�#�i$phk&lg���nn�p��� ������j�������j���������#���o����g���nn�'�j���o��������"��������l������������q� ���g���d��� @ABCDEBMLATHLBNTHQBIVGIBPDHIGTHBJEOITWOLBRGOELQUBIVLBPDRLKGSLBQIGITQITPQBPVGHSLZB@HBIVLKLWDKIBNLODFUBIVLBHEJNLKBDABNTHQBVGQBMKDWWLMBAKDJB�rBIDBrrZBsVTQBTQBNLPGEQLBtuvwVGQB��BNTHQxByz{|U}|U~u��U~u��U~u��U~u��U~u��U~u�wU~u�zU~u��UBGHM�u��ZBsVLBWLKPLHIGSLBDABPDRLKGSLB�EJWLMBAKDJBr�Z��BIDB��Z���BNLPGEQLBGHCBQTHSOLRGOELBTHBIVLB}|BNTHUBQEPVBGQBUBGOODFQBIVGIBNTHBIDBNLBJGK�LMBGQBPDRLKLMUBLRLHBTABIVLDIVLKBRGOELQUB�BDKBUBGKLBHDIBQLLHZ ����������� ������������������������������ !"##�$"%�!�&��!��"!'�()'*���+���,�+)-#./00123444456782198:4;<=;>4444?/0@8246A456782B6CDEF4526FF8G:4H444456782B6CDEF4526FF8G:4ICDG4B62E44444?/0@8246A4JKB8LE8G4526FF4MCDF:4NN4444?/0@8246A4O/E601ECL1PP34Q8D821E8G4526FF4MCDF:4N<4444O/E601ECL1PP34Q8D821E8G4526FF4MCDF4444B62E4444444444ICDG44444444444R4SCEF44444441E4P81FE4TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT4444B62EU<44444444SCUN44444444444V444444444444>4444B62EU<44444444SCU144444444444>444444444444>4444B62EU<44444444SCU@44444444444W444444444444>4444B62EU<44444444SCUL44444444444W444444444444>4444B62EU<44444444SCUG44444444444W444444444444>4444B62EU<44444444SCU844444444444>444444444444>4444B62EU<44444444P64444444444444X444444444444>4444B62EU<444444440CFL44444444444Y444444444444>4444B62EU<44444444Z82644444444444>444444444444>4444B62EU>44444444SCUN44444444444V444444444444>===��[���\]$�,)-&� !"##� "%�!�&��_)-#abcdefgdbhidbjfkldcbamblnjopbfodbqrstuvwxqsyzb{nhibgcaoobga|dc}~dpb�afbo�dgnm�hidbga|dcb�anjhb�nhibxqsyt�b}jebhidbodhbamb|}�fdob�nhibqs�vuyv��boabhi}hb}bonj~�dqrstuvwxqsybgajohcfghbg}jbo�dd�bafhbk}j�bnjen|nef}�blnjoz������������\]$�,)-&�+)-#��!"��$!"##�$"%�!�&�L6782926/B4567B62E�44B62E:4L6782B6CDE4E2=B62E4444�@CDF4B62E��4T4��<:����444�44ICDG:4L6782B6CDE4E2=ICDG4�4444@CDF4Z8264T4�<��4444444��4>4@CD4A624ICDGTT<4444@CDF4P6444T4��>:V���444��4>4@CD4A62471P/8F4>:V4444@CDF4SC��4T4��N:����444��4N4F8B121E84@CDF4444@CDF40CFL4T4G8A1/PE�444��4>4@CD4A6241PP4ES8428FE44�44L26FF4ICDG�4B62E4�4444C9D628U@CDF4SC4T4@CDF6A�B62E�4CDE82F8LE4�X��4444C9D628U@CDF40G4T4@CDF6A�B62E�4CDE82F8LE4�<�4��444444444444444444444@CDF6A�ICDG�4CDE82F8LE4��;:>>���4444C9D628U@CDF4P64T4@CDF6A�ICDG=P6��44�8DG926/B

Page 160: SystemVerilog for Verification

�������������� �� ������������������������ � !�" ��#�$��%� � �&��'����(�)$"�)$*�+)!� �,��-��./0�$ -��.����)�12#���+)!� 3��������)� 4 $�� � !�" ��56�#�$�/��� �� ,$"���������������4,� �� ! ��+ 3��7$,��$7�#�$��%� � �&��'����8�)$"�-��.����93�583�,�553��,��)��,�)!�,���#�$�/�� ������������ )$��� ��� �#�$��" ��$ "��$��� ��$"�+�"�)!� ,+ ��:,�$��/��� �����������;<���� ��#�$�$)4 ���,� � !�" ��-��.=<����)�����53�3�,��/��� �#�$�4����# �$)4 ��" ��$ "�)�� ,4:�! 2��4 3��� ��)��>����)$"�<�/��� �#�$��?��@3?��A3?��B3///�?��C3�)$"�)$*�)��,4)�� )!!*�7 $ �)� "�#�$��",�$,���)+ �$)4 ����)�� )$�# �� "�)�� ,4:�! 2��4 ��$�,�� ����)� 4 $����� ��)�������������D��� � �$)4 ��)� � � 2)� "�)����$2��4 �,��"���$7��� �� :,���7 $ �)��,$/E,� ���)�������C��� ��:)� $�� � ��FG3�%��! ���'����H'��: ��� ��)��)$7 �)$"��� � 2�,� ��� �� ��!*�#�) ��IJ/KLMLNOPQRSTUVWXOYZ[\]OZVW_Oa]ZbO_c\OdZ_eSOYZ[\]eX\Of\_]VR�� ��,�)!� ,+ �)7 ��,��)�7�,�:����#)� "�,$�)!!���4:! � ,+ ��:,�$���)$"� �,��� ,+ �)7 /g��*,��)� �,$!*��)4:!�$7�)�+)��)#! �,�� �:� ���,$��$�)�H�h��&���'��,�# ��� "��$�)H�������)� 4 $�3�*,����,�!"�� ������% �7����,�8��,���)�����", ��$,�� ,$���#�� ��,��� �,�)!� ,+ �)7 /iebjS\OKLkNOij\RVlmVWXOR]Z ORZ[\]eX\On\VXc_opqrstspuvwxpqypsz{ww|}~��wopqrsvp}~zwzs�|}~�www��}~�w�rspw�w���{wwww�}~�w�pwww�w�������{wwww�}~�w�}��w�w�������{wwww�}~�w�}�ow�w�r��u�z{wwwwpvz}p~��r}t�zw�w�{wwwww��wxpu~zw}~wzpz��ww�wwvpsz�wopqrsvp}~zwzs�vpszwwww��}~�wvpsz��w�w�������{wwwwpvz}p~��r}t�zw�w�{wwwww��w�p~�zwopu~zwzp��s��wzpz��ww�wwosp��w|}~��wvpszwwwww�pvz}p~��r}t�zw�w��{�ww��w�}qrwosp��wr�zs�w�r}t�zr~�tspuvKLML�Of\]XVWXO�e_eOa]ZbOfTS_VjS\O�ZbeVW�$ �:�,#! 4�%���� �,��� ,+ �)7 ������)��*,��4)*�$ "��,��)4:! �+)!� ����,4�"��� �2 $����4�$7�",4)�$�/��,��4�7���%)$���,� $,%����*,���:�, ��,�� + ��� �+ "�)$�$� ���:���$��� �4�""! �,��)� ) � ���!!/��� ��$� ���:���)�"%)� ����� :)�)� ���,4�)$"4)*��� �"��� � $�� !,  ����)$��� � ) � ��)�"%)� 3�4) �$7����"���� �!���,� $,%�%� $��, ����������� ��������������������������������������� !"�#$������������%$&'�(� �)%$�����*%+��, ���(� ��%�����,��&����,�%,�'�%,�%�!����� ,�&�,��$��%&�%�- ���.����,����(�,���"/���,�0 ���$��,�������%���%���*�$��&�*%�$�,�!%�%���.��*������%��������$���� !���%�&1)%��"�2%+����!��,��.�����,��$%0,��$�����*!��%�(��%��%-0�,�%$&����$�,%*!0�����*��$�%$�)������%������ !���%��*�%, ��,��������,,������%��"34546789:;;78:<=9>?=7@AB=9C>BD<=;E,�(� �����,,������%���&�.�$����$�-���*�,�*�����0%-��%��'�(� �*%(�,!�$&���$,�&��1%-0����*��,!���.(�$��)�����-�$,�,�� 0&�-�� ,�&�%$&�)�����,�� 0&�-����$���&"�F� *%(��%����)���%$&�*�-��,'�G�%$&�H�)�����������$����,��$��,�%��,'�IGJJK'HJJKL'IGJJM'HJJKL'�%$&�IHJJML"N%*!0��O"�P�,��),���)�(� ��%$�$%*��-�$,��$�����������!��$�,�%$&����$��%��������,,�����%��� ,�$�����,��-�$,"Q>RSA=734TU789:;;7V:<=9>?=7WDBX7YDC7C>R=;Z[\]] _\a]\Zbcdae^ \afgcb\hgeiafZ[\]]Zdji kdlm nd]]ocap\qi]e^\rZdjimdcab bs\^ ^ tgca]\u vtuwe^ ^ ^ gca]\x vtxwe^ ^ ^ dmbcdasyickzbvuew ^ {{|da}bZdlabbzc]Zdjimdcab^grZdjimdcab bsg^ ^ tgca]gu vtuwe^ ^ ^ gca]gx vtxwe^ ^ ^ dmbcdasyickzbvuew ^ {{|da}bZdlabbzc]Zdjimdcab^\gr Zd]]\hg^ ^ tgca]\ugu vgca]d~�\s\u���gca]d~�gsgu�e^ ^ ^ gca]\xgu vgca]d~�\s\x���gca]d~�gsgu�e^ ^ ^ gca]gx ^ vgca]d~�gsgx�ewiafkdlmN%*!0��O"����%����,�����,%*�����,,������%��'�- ��$�)� ,�,�H���������,!���.(�������,,������%����%0 �,"

Page 161: SystemVerilog for Verification

������������������ ���������������������� ���!��"#$%�&'()*+,-.))/01.().,2'*(3//1.(4/&'2/.5/&36(4,-.)),*76181*9:/;1*))<'()*+=(261)6,23//.>/,*761:*'(2/21?./////@/*:2'*(?A6'8B2CD3/E///FF/G*(H2/,*9(2/2B')/,*761:*'(2//&>/,*761:*'(2/21?&/////@/*:2'*(?A6'8B2CD3/E///FF/G*(H2/,*9(2/2B')/,*761:*'(2//.&>/,1*))/.5/&///////@/&'()/.D&D/C/&'()*+I.J/'(261)6,2/@DE/KK/////////////////////&'()*+I&J/'(261)6,2/@DE3/////////&'()/.L&D/C/&'()*+I.J/'(261)6,2/@LE/KK//////////////////////&'()*+I&J/'(261)6,2/@DE3/////////&'()/&L///C/&'()*+I&J/'(261)6,2/@LE3/E6(481*9:MNOPQRSOTUPNVWXVYZX[SRX\S]PXSX[YUPQXYTROXO_SOXS\ NPXSX[YR[SOPRSOTYRXYaXUSNZPbc_PRXVYZXYRNVX_SUPXOYXdPaTRPXeTRXZTRfXO_PXNPX[Y\ NPgX[YUPQXYTROXVROSgb����������h�i#�#�j#k!��������� ���!��"#$%���k��$�k�$#�k,*76181*9:/;1*))l.(9.-3//.&>/,*761:*'(2/@21?.5/21?&E////@/&'()/.D&D/C/@mn&DDE3//////&'()/.L&D/C/@mn&LDE3//////A'-4,.14/&'()/&L/C/@mn&oLE3////E6(481*9:pPXO_PXOVNPXTRXqS\ NPXrb �XTaXVYZXSNQPSdVX_SUPXeTRXdPaTRPdXaYQXO_PXTRdTUTdZSNX[YUPQYTROXSRdXsSROXOYXZPXO_P\XOYXeZTNdXO_PX[QY X[YUPQSfPXeTRbXpPXqS\ NPXrb tXTaXVYZRPPdXOYXeZTNdX[QY X[YUPQSfPXeTRXeZOX_SUPXRYXQPdPaTRPdX[YUPQXYTROXeTRbXpPqS\ NPXrb uXTaXVYZXsSROXO_PXOPQPOXaYQ\SOb��v�w�k��#���� ���w��x��MXVYZXOSQOXsQTOTRfX[YUPQXfQYZ WXVYZXsTNNXaTRdXO_SOXY\PXSQPXUPQVX[NYPXOYXYRPSRYO_PQbXqVOP\yPQTNYfXSNNYsXVYZXOYX[QPSOPXSXfPRPQT[X[YUPQXfQYZXYXO_SOXVYZX[SR`P[TaVXSXaPsXZRTzZPXdPOSTNXs_PRXVYZXTROSROTSOPXTObXqVOP\yPQTNYfXdYPXRYOXSNNYsVYZXOYXSXO_PX[YUPQXfQYZXOQTffPQXSQfZ\PROXTROYXSRXTROSR[PbXMXSXsYQ]SQYZRdWXVYZ[SRXZOXSX[YUPQSfPXfQYZXTROYXSX[NSXSRdXSXO_PXOQTffPQXTROYXO_PX[YROQZ[OYQb ����������� ������������������������������� !"�#"�$%�&"'$(!)*��+,�-�.$!/01234567�859:;<9505=;>4?5@?;A25B:0B5A94950C50?@A14CB5B;5923DB5B:45?0C@45DCB;5B<;:03>4975EA9B520995B:451DF2;DCB5>03A45B;5B:45=;>4?5@?;A29G5HIJ5KAC=BD;C75L�(%.!���M��LN(%.!��"'$(!)*OPQRSTUVWRXYZQ[RRRRR\\R] _abURVUcdYeaZfZYXRgYeaZhYZQRiPjQRkPlm[RRdYeaZXYPjQRXYZQRRRRnOPjbR_YRoRnSVUkPlpqWr[RRRROPjbRsPRoRnSkPlUtWr[RRrajlfZYXgYeaZhYZQRdX[PjPQP_RRRdXRoRjauivm[RRRRRRRRRRR\\R_YoVUwxRsPovUc����y�������� !"�#"�$%�&"'$(!)*��+,�z!{!"!)|!};A5=0C5924=DK~505>0?D0�345B;5�45901234F5<DB:52099��~�?4K4?4C=475�4?45~;A5<0CB5B:4=;>4?5@?;A25B;59012345B:45>03A45FA?DC@5B:454CBD?459D1A30BD;C�5C;B5�A9B5B;5A945B:45>03A4<:4C5B:45=;C9B?A=B;?5D95=0334F7L�(%.!���M�������+,�"!{!"!)|!OPQRSTUVWRXYZQ�xRXYZQ�O[dYeaZfZYXRgYeaZhYZQRiZa�ROPQRSTUVWRXYZQxRPjXQRPjQRkPlm[RRdYeaZXYPjQRXYZQRnRRRROPjbR_YRoRnSVUkPlpqWr[RRRROPjbRsPRoRnSkPlUtWr[RRrajlfZYXgYeaZhYZQRdXxRdXO[PjPQP_RRROafPjRRRRdXRoRjauiXYZQ�xRwm[RR\\RXYZQ�xR_YoVU�xRsPowUcRRRRdXORoRjauiXYZQ�OxRTm[RR\\RXYZQ�OxR_YoVUqxRsPoTUcRRajl

Page 162: SystemVerilog for Verification

������������� ����������������������������� ����!�"������������#���!���$� �#���������%&��������'�(��)�"$*��+'�+�����%������!���� ��,-./0�&����������� ��1,2��!�"����3�**� �#��� ��&���������456'�7 ���8�"$*��3��*&�������"9$�*��:�������%����������$���������������;<�����=��������456���!�"���'�>?>@ABCDEFGD@HIJKBLMN��������$����%��&&������*������"���������� ����#���!���$�����!��$�����'�7 ��������3���*�#��������$�����O�����������$������� ����$$*%�������$���������#���!���$�����������&��%$���$������� ����$$*%�����**��������������� ����#���!���$����&��������*�!�������������&����"�":��������*�����'�P$����������:��$*���&����� ����#���!���$����� ���� �%�$$*%�����**���#���$���������� ��!���$������ �%�����:��$�������&�������!*����#���$��������������������*'�N��� �#���*���&%������� ��Q/0RST,-S1QU���&�V5,WX0��$�����'�Y���������#���*�"���'>?>?Z@[DE\]LMJFLD@ABCDEFGD(��%��������:��� ������������������#���!��!���$�"�*��$*����"����:%�&����*��)%���"_��9�*�!�!���$����!�� ����**�� ����#���!��&�������"��**�� �����������'�Y�3�#�������%��� �#���#���*�!�������������� ��������!�#��%�&��������������"�������������������%���3�**����&���������$��������$����'�����8�"$*�������!���������"�%�:���������!�*��!�������������3 �*������ ���"������ ��������'�7 ����#���!���$����)�"$*��+'<a�����:�������������&������ ���$������!��������'�(�����$�������������#���!��������� �������������&� �������b�����""���������!�3�� �� �� ������ ���*�$�� ����� ����#���!���$���������'cFdIeD@>?fg@cIDKhiKLG@IDE\KLMJFLD@BCDEFGDjklmnonkpqrsklmntmuovwxrrjklmnqkyuvrvnz{muovwxrrkqvykuzqmn|yu}v~ujmr�r�xrr��r�}mrwymn~njwyj~{rq~vwryurjk��muvrrkqvykuzjk��muvr�r�q}qnyuv�������xmu�onkpq7 ��$��9����������$�����������*%�:��!�#������� ����#���!���$���������� ����#���$�������������$����'>?>?�@ABCDE@�EB�I@ABddDLJN��������&&�����""�����������#���!����$��������"����� �"��������������*%��'�����"9"�������*&�:�������"$*������ ������������":������"�� ��#������������$*��������!�����&�7 �����aa9�aa������ �������"�*����8�"$*��� �3��!�� ���� ��&�������������P7������%��:���� ��������"���������&�3�**�:����������&����� ����8��#������'�����%������&����� ���"����������� ��������8�"$*�� ����������� ����������������������������������������� ��!��"#�$$���%���#����$�&�'��"'(��!��"�'�(��!��)�������(�*���+�,(�� �)�&����#�&���-�� ���)���"���'$��"'���'�"���*��'#�.� ����)��/012����"�'�����)�3'�"'4�!�$��5+67+89:;<=>?@AB>8;=CDEFDGH>CI::=GJK>EIL>9>CIM=L>HLIN;OPQRSTSPUVWXPQRSYPSZ[WWZ\VR]PVZP_OPaaR_ZWbWcdROZP_We fghWYPSZW_UaiRSjc[WWOPQRSVP_ZWVPSZ[R_kTSPUVl�3�&��.�"(��� �)�&��! $�"�$��"'���'#��.��� �#�'�-"&����#)������������#�!!�'�.���$�'-������ ��$��� ����)�����m"'���'#�����"�'+89:;<=>?@An>8;=CDEFDGH>CI::=GJK>EIL>9>CIM=L>HLIN;>DGKJ9GC=OPQRSTSPUVWXPQRSYPSZo_ZWpPqrqWjZS_TWOPaaR_Zs[WWPVZP_OPaaR_ZWbWOPaaR_Z[WWPVZP_VRS]_jZt_ORWbWg[WWOPQRSVP_ZWVPSZWWWWWui_jWSt_TRWbWuvpPwrxy[WWWWWyR_kTSPUV``XPQRSYPSZWOV]pPWbW_Rzo{qeqWc|PzWVPSZW_UaiRSjcs[XPQRSYPSZWOV]rWbW_Rzohq}qWc~TrWVPSZW_UaiRSjcs[?@?@�>�IM=L9H=>��L=K�I<��� �!���'���)�&��� (("#"�'��&"�"�"$"���"'����)��*��"-'����-��)������ ���#�&���-��"'(��m!��"�'+�4 �������� �����&��"(�"'-��)���������������!�#)"'��#�'�)�'*$��� ��������+�� �*�'���)�&���##�������"���# ���'�������.�� ���� ��'�3��)����'-���(�#�#$����)������'��*�*�(��������'�(��+�4��"(��� ��������*$��#� ����������* �"'-��)�����'-�.��� �)�&�������$��#�&���*��$$��)��������+�4���� �#� $*������1/�����/��2��/���������!���������#"(���)����(������)"����'����"'.��� �����#�'("*�'���)����� �)�&���%��#"��*��)���#�!m�"'��"�'��"- ���5m�+�,(��� �*�("'���1/�����/��2��/�����)��#�&���-�� ��$�&�$.�"�����$"�������$$�#�&����"'��+�,(��� �*�("'��"��"'�"*������"'�.�"���'$�����$"�������)����"'-$����"'�+l�3�&��.����4�!�$��5+���)�3�*.��&�'��(�����������!���.��)����'*�!������&��"��$���"$$�*"*�'���)"���$$�����"�$��&�$ ��+�4���'$�� ����/��2��/�"(��)����"��'��*"��#��3�����!��� ���#�&���-�+?@?@A>�LDGJDGH>J�=>�:;JF>�DGK���*�(� $�.��)��#�&���-����������)�3���'$���)���"'��3"�)���!�$��+��� ������"�����&��m"(���$$��)���"��$"���*�"'��)��&��"("#��"�'��$�'.��'*������ ������#� �$$��!����"'�������*�"'

Page 163: SystemVerilog for Verification

������������ �������� ����������������������� !��"�#�������� �����$%&''()*+(,%-).(+-''-)/������!!��������!��������0�1� �1�����!����������2����!!�����3��� �4��!!2����������������������"�5����������!�16��7�!��3�������������5�� !���"8�3��������!�16�1������2����1����!!��6����1��0"9:;<=>?@ABC?D><EFG?:==?HIJK?IJL=MNIJO?>;<GP?EJ>KQRSTUVURWXYZRS[RU\]YY _abYQRSTUXR_\Y\Uc _a]YYXRU\bYQRSTUXR_\Y\UcXRU\YYQURddY _aeYXRU\]YYRX\_RcQURddfWgfXU_\fg_dd_VYhYifjjj]TaVURWX@A@Ak?lEm>F:O>?nE:=o���6��!�p�1���4�7�1�61�� ��1� ������������!�7�!�������4������61�� ��1� ��������4����0q�1�0�p�!!2�4�7�1�0"�o���0�p��!�����rsst�4�7�1�6�"�up�2������������!�7�!���!���rsst32����1��1�v������6�!���������4�� !����4�7�1�6�3����4����� 1����!2�����0���1��!�"�o���� ������pp�4�����!2�����4�7�1�6��1� �1�"9:;<=>?@ABB?9<>LIwPIJO?Gx>?LEm>F:O>?OE:=QRSTUVURWXYZRSTU[RU\]YYQRSTUXR_\YXRU\]YYRX\_RcVRyzYhY{j]YY||Y}T\\zTY~RUYXyU\_yzYQRSTUyVTTaVURWX@A��?�J:=P�IJO?lEm>F:O>?�:G:u��6���1�!3��������2������0���1�����0����0�p���1�4����1�����"��p��1��!!3������������1���1�����1����������������4����1�4������4����1�����"�up�2����1������4�1�p�!3�����4��q��1������4�������!2�1���1�4���������14��� �4�"up�2��1�4�7�1� �����������!2���1���1�������� !�3�2��1�4����1�������1�� 1����!2�������1q6����6��������1��������!!"��������0�����00�4����1������������ �!!��������!7�1����������1���"�u��5�� !���"r�3������1����4�����!��6�����0�������7���0���1�������"�o���������q������������!�1��������0���1������������������2���1�!!�����0�4����0�!���������������!7�!��" ����������� ������������������������������ !"#"$���%��&&�'(!�)!�$&�%)"($���$#)*+,-../01-2.-+34526//1-27/843/9:;<=/>71?,@26//1-27/843/9A;<=/B-C,5-7?,@26//1-27/843/9D;<=/,@26//+52.31-423/,@2E3>/F,@2/GG/>71?,@2/H/B-C,5-7?,@26/I@27+,-..JKLMNOPQRLSMTUVKMVKUWMXRYWWMUWMVKYVMZ[\MUWM]PVMLL]R_MTLUKVLaMbcUdOLMefghij"#k!���l��m$�n�$��!(o�o"�")p�'(!�)!�$&�%)"($���$#)*qrM_PdMTY]VMVPMSYsLMVKLMVPVYRMRL]VKMQLMLL]R_MaUWVOUQdVLatMdWLMYMuvZw[iiix[yvz[MXP]fWVOYU]VMbcUdOLMef{hi����������|�.5,}@���8@~51@�%($&)!�"$)�'(!�)!�$&�%)"($���$#)*+52.31-423/,@2E3>/F,@2/GG/>71?,@2/H/B-C,5-7?,@26///////////////////.5,}@/,@2/8@~51@/>71?,@2�/B-C,5-7?,@26/Ij"#k!���l|��n�$��!(o�o"�")p�'(!�)!�$&�%)"($���$#)*��")*�.5,}@���8@~51@�������������������������� � �� �� �� ������������������������� ��������������������������������� � �� �� �� �������������������������

Page 164: SystemVerilog for Verification

���������������� ��������������� ��������� ���������������������� !�����"#$%&'''(&)#*&� +�����,-".�/��+��� ��'�0�1�!��2��� +�3��+����1��42��+�$&5� +���+��6� �7�/��+��� ��3�68�����+9���:������1�����7��+';<==>?@ABCDEFG>HIJ@DAG@>KLALEBLEMB>NCDEFG>KEOCPALEIFQ�9�/���R9��8�������!����:�:9�/� �����/�!���7���������:�8�39� �7�+ �9��� ��'��� +����1+�8�9����/��/4�1�������8�9���!�����/��3�8�9��/�!���7��7���+2���3�S�++ 6�8���/������������3�����+�'T������7��6�����!��2�8�9�/���7�������������/�!���7���:�����/�!���7��9S+�1 ��UV&.WX#%&*YV&2�1� /�����9��+���������9�6���6��1����Z���3��ZZ'��� +�+8+������+4���4+��/��++�����/�!���7��9S+'�Q�9�/��������1�3�1��8�9�����+9������+�1 �������V&.WX#%&*YV&[\���3V&.W-5".WX#%&*YV&[\������3+'�����: �+��:9�/� ���1��4+�1 ���6����/�!���7��9S����+���3� �+���/�+����7 !��/�!���7���/��++����� �+���/�+��:���/�!���7��9S2�:����]��S��2_#%&**#abccV&.WX#%&*YV&[\����XVd5".eV&.WX#%&*YV&[\'�����+�/��3:9�/� ������9��+�/�!���7��:�����+S�/ : /�/�!���7��9S� �+���/�2�:����]��S��XVd5".eV&.W-5".WX#%&*YV&fg'��Q�9����3����+S�/ :8�#b.-#5eb&*W-5".Y5X&hi :�8�9�1�������7������S�� �+���/��/�!���7�'������+��S��/� /���9+��:������+��:9�/� ��+� +������� ����/�!���7���!��������7���+�'�j:����/�!���7����!���3��+������3!��/���:������7 !����9�6����:�����+�/� ��+����/8/��+2������+��+��9�3�+��S'�0�S�:9��82���������+��3������+��1 ��� �/���+������/�!���7�'k� ��� ��1�9�3�6��� /�������!������+�������/���S��:����+����+�S� +� /���3��/� ��+6�+�3����:9�/� �����/�!���7����+9��+2� �� +�!��8����3����1� ����� +�+�����:���+�'�l�/����+�m����3���+��3�S� ����8�9�/�!�����1�:9�/� ���� �82�69�� ����8���4�����8��9�+������/����7���'�j:�����+��: �3+������ ����+��������/��3��ZZn�/�!���7�2�1����+��9�3� ��3�op9��:��������/8/��+o�0�1����8�����o�q��9�3� ��/���7������+� �9�9+�6� �7�7�������3o�0�1�/���8�9�/�����������/���7�� ������ �S9��1 ���������!����:�:9�/� ����/�!���7�o������������ �6����� �7����/���7�� +��������3���+��32�1� /��8�9�+��9�3���8�3����/��S���+ �9��� ��'�r����1 +�2���1�/���8�9���S��39/����3�+ 7��697� :����+� �9�9+�3�S��3+�����9�� S������3���+��3+o�Q�9�/���R9��8�����:9�/� �����/�!���7��+��� +� /+� :�8�9�1�������/������8�9���1��/�!���7��3���6�+�'�s�� : /�� �������+���!��69 ������ ���1��qtu�3���6�+�+����������:�3:9�/� �����/�!���7��3����:����+ �9��� ��'��� +�+��9S�����1+������7�������/��������!������3���2�69����R9 ��+��������:�1��4��9�+ 3���:�/���� �7���+�+'q����:������!�� : /�� �������+�/����]���/������+������:���3�+ 7����3������/������ �S9�+� �9�9+�������/������S�++ 6���+����+'�v��w����8����39S� /������ +� ��8�9����+�6��/�x ����������� ����������������������������� !��"#$%&'()&*+,-.#&/0(1&+0,-,%2&3,0$.-$3&-$*-*4&#5%36.05/-,%2&$7$0'&8,-&(/&*-,1)9)*4&-(:;<4&'()&1,2#-&+(00'&-#5-&-#$&-$*-*&50$&%(&9(%2$0&)%3$0&'()0&.(115%3=&>'&1$5*)06,%2&.(7$052$4&$*?$.,599'&/)%.-,(%59&.(7$052$4&'()&0$25,%&.(%-0(9&8'&@%(+,%2&+#5-/$5-)0$*&#57$&8$$%&-$*-$3=A*,%2&/)%.-,(%59&.(7$052$&0$B),0$*&5&3$-5,9$3&7$0,/,.5-,(%&?95%&5%3&1).#&-,1$&.0$5-6,%2&-#$&.(7$0&20()?*4&5%59'C,%2&-#$&0$*)9-*4&5%3&1(3,/',%2&-$*-*&-(&.0$5-$&-#$&?0(?$0*-,1)9)*=&<#,*&15'&*$$1&9,@$&5&9(-&(/&+(0@4&8)-&,*&9$**&$//(0-&-#5%&+()93&8$&0$B),0$3&-(+0,-$&-#$&$B),759$%-&3,0$.-$3&-$*-*=&D33,-,(%599'4&-#$&-,1$&*?$%-&,%&25-#$0,%2&.(7$052$#$9?*&'()&8$--$0&-05.@&'()0&?0(20$**&,%&7$0,/',%2&'()0&3$*,2%=

Page 165: SystemVerilog for Verification

����������� ����������� ���������������������������� ����!����!��������"#$��������"�%��!�� #���#����&�!�"�'��"�����"#!���#����&�!�"������"���������"#$���"(�"#)#����������� #��"������!����!�������"�#��*��#��$+�,,-��.���"�%��!���"�"����"��#����&�!�"�%��"���#!�����!����!�#�$������)������$������"��/� �0��(�&���)������"#$�"(�������"�%��!������"����!����!�����)#!��������������"#$���1����2�)���(�#������� ��3�" #�!�(���"#�$�����#0���!��""�)���!����!�����)����#����&�!�"(����&�����!��#�����!��������&�����45'��6��� �����7�� ������� �#�������#8�����#0���&����!��!�������9�#�"��������� ������� �#�����$����#!���#0��(�#�"����#����#��:��#)�"(������0��#��!����!���������!���&�����:����"#!���#����&�!�"��6���!��������#"�#��;�"��)*��#��$%���"#�$���0#������#����&�!�(� �#!��#"�)��������������������#�������������"#!���#����&�!���6���)����������� �#�������"�%��!�����������!��"����"�0������#&&������!��&#$����#��"��&�������"#$���������������2�)���(���!�#��)�����0��)���#����!��&#$����#��"��������(�����#�"�)#$�����#0����5;<�%�"(� �����"�#��������������"�)���#�"�)�����#0�����=��"��#��%�"��>�!���$�#�(�����!����"����0#������#����&�!��"�����������!�����!#���������+�#)� �#!����#0��"��������#���������"�%��!��.�;�"��)*��#��$�#����&�!��#"�)���������?�"��"#$���"�9�����!��������2�!���%���!���#�"#����'�#"�)#$���#�!���������#��"������������� �#����������#����&�!�(�@A@B@CD����CDECFG�%��!3"����������!����#�"#�������#����&�!�(������""���#��"����!��"�������!��!3����"����"��&�����"#$���"��/� �0��(��������������"�%��!��!����#�����#����&�!���H��$��)%��!3"���0��%����!��������2���""���&���%�#��#�$�����"�%��!�(�#�!���#�$�"!�����#�$���#���2�!��#���#������I��!�#0����$#��(��"���"!�#%���#������;�"��)*��#��$�JIK��.�%��������)��&�����0#������#����&�!�� �����%����L��&�#����&�!��M ����������� ���������������������������������� !"�#�$����$#�%��!��&�%���'��(�)�"��(�(��&� ������*���&+#�)�'�#$��,-../0112-34565/783697.15:5.7;<734=>?@AB@CDEFGHIJCKLGMFNIOMPCQEGRCGRMCSTUCVWHGMFX��� �#��%� ���*#����&���Y$&�*�"�$���&��%��$#�����""�)��'Z�%�#�$������#�'��%�����&���&���$�� #�$����&�!"$%���(�$���&��%��*#$�[���[���&$%����("��&����&�����������%�*�"��� �\]$&�*�"�$���&��%�#��&��������"�� �%���$# ������%���'&$([������(��� $%�)�&"(����'Z�%�#�)$�������#���$%�)�&"(���� �(*"�#���(�$���&��%�#\@AB@B@CTRMCTMPGMLORCQEGRC_HPGCRaPEOIJCKLGMFNIOMPb��!\���#��)�(���)����'*$"(����$���&��%�����%����%�����cdc��eX��&�*��&��������#�f'��%�\�g� !"�#�hi\h���(�hi\j�#��)�����eX��$���&��%�#���&�����&�%�$Y����(��&��# $�($&�%�$��#\kIlmJMC@AB@CVnCELGMFNIOMCQEGRCOJWOoELpCJWOoqqrstruvwxyz{|xr}uw~r�����yw�r{v�r|��|�uv�r���|�uvwxyz{|xrst�uzr�uv��wr���u|r|����rr���u|r�����r�{w{�rr���u|r��|�rxv�r|�{��ry|���rr|��|�uv�r|�r�����x��xr|����rrrr��w��wr�{w{�r��|�r|�{��rrqqr�uyx|wu�v�r{yxryx�{wu�xrrrruv��wrrxv�rrrrrrrrrrrrrrrqqrw�rw~xrwx�w�xv|~rrxv�|��|�uv�r�r|�rr�����ywr��r�|��|�uv�r|���rr�����ywr���r���w��wrxv�ry|���rrrrrrrrrrrrrrruv��wrr�{w{�r��|�r|�{���xv�uvwxyz{|xr�rst�uzkIlmJMC@AB�CTnCELGMFNIOMCQEGRCOJWOoELpCJWOoqqr�truvwxyz{|xr}uw~r�����yw�r{v�r|��|�uv�r���|�uvwxyz{|xr�t�uzr�uv��wr���u|r|����rr���u|r�����r�{w{�rr���u|r��|�rxv�r|�{��rw|���rr|��|�uv�r|�r�����x��xr|����rrrrrruv��wrr�{w{�r��|�rxv�rrrrrr��w��wr|�{��rrxv�|��|�uv�r�r|�

Page 166: SystemVerilog for Verification

�������������� ������������������ ���������������� !"�!#$%&�!'()����������*+�� �,��,���-�-.�/�!.�0%.��!"#.���������������$%�,���!"-1()0%�$%�0�2-!0�3��45$267898:;<=8>?@A89:A@<:B8:C98D:;<:@:E>FG>@H:BIFAJ:97FK<:;<:L@HEI8:MNO�O:67;9:E>FA8PDC>@I:AFD8:;9:7@>D:AFD8D:K;=7:;<=8>?@A8:<@H89:9CA7:@9:QRS:@<D:TRSOUVWXYZ[\]_[ZabcZdef[gahdi[XfjaheVY[hdbZklVeZa���&�-��-,���-�$!��0/� m45$2n���m4o.�m4p.�m4q.�m4r.������������������������45$2n����4o.��4p.��4q.��4r.����������������������$%�,��"�&$!�!"#.��,��,��"�&$!��/�()��'$��st3ou�'v�0/swx�y5z{|}u)��$%$�$-"�'0&$%����~~�m0/0����0��01$!0�����/�����p)����m4on!'n�-�-����o)�����nnn�����0!0$105!0""o)����nnn��0%����-/#��0!0$105!0""o)����� �4on!'()�����4on!'n!"-1����p)���������~~�x//0����0-�v�����0!0$10�����-$�� �4on!'n/�!����p()���~~��-$��2���z�-����2��0""����2��� $%��$�o)�$�wx�y5z{|})�$��(�'0&$%�������-$�� �4on!'n0%����o()��~~��-$��2���0%-'"0��������� �4on!'()������'v�0/s$u����4on!'n�-�-)������� �4on!'()�������4on!'n!"-1����o)�������~~�*0-//0���2"���!�%���"����0%���0%��-/#0%����&�-��;GC>8:MNPM:97FK9:=78:=89=B8<A7:AFHHC<;A@=;<G:K;=7:=78:D89;G<:=7>FCG7:;<=8>?@A89O ����������� �������������������������������� �!���"#$�!�%!&�#'(�)�!(��#!��*"'�%+,-.+/01+2.3.2+40562.+467/+8099.8/+:9+:;;:<+0=+>9/.;=:8.7+/0+?0;@+?>/-+/-.+/.7/A.98->9+B:412.+CDE�E+,-.+40562.+>9+B:412.+CDEF+>97/:9/>:/.7+:9+:;;:<+0=+>9/.;=:8.7G+:951:77.7+/->7+:;;:<+/0+/-.+/.7/A.98-E+B>98.+/-.+HI,+?:7+?;>//.9+?>/-+=06;+JK+:95+=06;,K+>9/.;=:8.7G+<06+9..5+/0+1:77+/-.+>95>3>56:2+>9/.;=:8.+:;;:<+.2.4.9/7+>9/0+/-.+HI,>97/:98.EL"MNO����PQ�R N�O�S�O�M $�O��)�!(�"��"T� *��#!��*"'�%UVWXYZ[\V][[YV_a[aYbc[de\[[fghi[fgjkl[maYbn[[oghi[ogjkl[maYbn[[\Ze\[[[[[[[\p[mfgc[ogc[de\n[[q\UhdVX\Zd[qp[mfgjrlc[fgjplc[fgjslc[fgjtlc[[[[[[[[[[[[[[[[[[ogjrlc[ogjplc[ogjslc[ogjtlc[[[[[[[[[[[[[[[[[[aYbc[de\n[[ u \qY[vZ_u[[[[aYb[w[r[[[[iVdZxZd[ysr[aYb[w[zaYb[[[[ZuWZuWUVWXYZ[{[\V]��P�P|�R�%!&�#'(�)�!(�}��!�"O�~#!��*"'�%�+�005+���+/.8-9>�6.+>7+/0+8;.:/.+:+82:77+/-:/+67.7+:+-:952.+/0+;.=.;.98.+:9+0A�.8/G;:/-.;+/-:9+:+-:;5�805.5+0A�.8/+9:4.E+�9+/->7+8:7.G+<06+8:9+4:@.+:+7>9�2.+H;>3.;+82:77:95+:+7>9�2.+�09>/0;+82:77G+-:3.+/-.4+01.;:/.+09+:+-:952.+/0+/-.+5:/:G+:95+/-.9+1:77+>9/-.+-:952.+:/+;69�/>4.E ������������������������ �� ������������������� ������������������������ �� �������������������

Page 167: SystemVerilog for Verification

�������������� ������������������ ������������� �!"�#$�%&�'� �"��()*+�,-%""���,,�.�-���/�01��&.�/�21�%&-��3�#�,��,����-,4�,�%&�'� �"��()*�4�!5-�%-�#���-�,��&�����6��3�7%�-5�"�%&-��3�#�,4�801��&.�821*����,��#�&&�9�!����,,�.�%&-��-���#�&,-�5#-��,�3���-���.�%7��,��&.� �&%-��,*:;<=>?@ABCD@E?FGH?IJK@LFMIN@OMPGL;>@MIG?PQ;J?FRSTUSVWXVYZTWVZ[\XZ]Z_ab[cdefXaghXaihXajhXakhXXXXXXXXXXXXXXXXXXXXXXXeab[cdefXeaghXeaihXeajhXeakhXXXXXXXXXXXXXXXXXXXXXXXTYZRYZXlTU[\XSZmnXXoS[p]SXqSprstnXXuTv[ZTSXWTvrstnXXw\TS]xTVSqX\xrstnXXp[SZYVlXab[cdefXparstXyXz{aghXaihXajhXak|nXXp[SZYVlXeab[cdefXpearstXyXz{eaghXeaihXeajhXeak|nXX[v[Z[VlXx]U[vXXXXcTS]V\}X_\xr[tmXx]U[vXXXXXX\xr[tXyXv]~_[mnXXXXXXqSpr[tXyXv]~_\xr[td]aRbWxahX[hXpar[tmnXXXXXXWTvr[tXyXv]~_\xr[tdS\pbWxahX[hXpear[tmnXXXX]vqXXXXdddXX]vq]vqRSTUSVW��5�#�&��",��,$%��-���7%�-5�"�%&-��3�#������6�7��%�!"�,4��&.� �$���&�����6�%&�-������-"%,-*����,��%&-��3�#�,�#�&�!����,,�.�%&-��-���#�&,-�5#-��,��,�,��9&�%&�-���-�,-�%&�'� ��"��()*�*:;<=>?@ABC�@E?FGH?IJK@LFMIN@OMPGL;>@MIG?PQ;J?FRSTUSVWXVYZTWVZ[\XZ]Z_ab[cdefXarsthXeab[cdefXearsthXXXXXXXXXXXXXXXXXXXXXXXTYZRYZXlTU[\XSZmndddXX[v[Z[VlXx]U[vXXXXcTS]V\}X_\xr[tmXx]U[vXXXXXX\xr[tXyXv]~_[mnXXXXXXqSpr[tXyXv]~_\xr[td]aRbWxahX[hXar[tmnXXXXXXWTvr[tXyXv]~_\xr[tdS\pbWxahX[hXear[tmnXXXX]vqXXXXdddXX]vq]vqRSTUSVW����.�%7���#"�,,�%&�'� �"��()*��"��$,�,% %"���-��-���#�.��%&�'� �"��()*�4���#��-�%-5,�,�-���7%�-5�"�%&-��3�#��&� ��01�%&,-��.��3�-�����6,%#�"�%&-��3�#��01�* ����������� ������������������������������� !"#�!�$��%%�&%"'(�#"!)&���"')�!*�$�%+,-../0123415//267/.714-892:5//;27/:<64/=/>5//8-2,;<?/4?@98;?5//3217A-,/B?92CDEF/B?5//CA6+72<6/64GH26@A7/8-2,;<?/4?@98;?I///////////////26@A7/267/////.714-892:I///////////////26@A7/3217A-,/B?92CDEF/B?J5////7K2.D4?@98;?/=/4?@98;?5////7K2.D.714-892:/=/.714-892:5////7K2.DB?/=/B?5//46:CA6+72<6//7-.L/1A6H26@A7/267/6+4,,.I/26@A7/43467/:123419:<64J5////MEN9O4,,/-+5////C<1L/PP/Q@-G6/7K2./-./-/.4@-1-74/7K14-://////;4R26////////PP/S6272-,2T4/<A7@A7/.2R6-,.////////B?D+;D+,-3/U=/>5////////B?D+;D.<+/U=/>5////////VB?D+;5//////////PP/01234/+4,,./A672,/7K4/,-.7/<64/2./.467////////14@4-7/H6+4,,.J/;4R26//////////-+/=/64G//////////-..417H-+D1-6:<82T4J5//////////2C/H-+D4<79+4,,J/;14-L5///PP/W6:/71-6.82..2<6////////////:12349+4,,H-+J5///////46:////////X:2.@,-YHZV[>7\/012341\\1A6/012341][>:/2./:<64ZI/////////////////X7284I/.714-892:J5////////_/:123419:<645//////46:////a<2696<64//46:7-.L/\/1A6//7-.L/:12349+4,,H26@A7/MEN9O4,,/-+J5////;27/]b\>/;Y74.]5////c-+D:4,-Y5////-+D;Y749@-+LH;Y74.J5////X:2.@,-YHZV[>7\/012341\\:12349+4,,H[>:J/3+2=[KZI//////////////X7284I/.714-892:I/-+D3+2J5

Page 168: SystemVerilog for Verification

�������������� ������������������ ������������������������� ��� !"�#$#%!����&'()#*+����'()#*)#%�,�-.�/+���������������0��!����!�1$����(2�����1�������&'()#*+����"3�%!�4'()#*)! �5.�67���������������2���! �*%!�%�"����'()#*)��#�-.�/+����������������8������2�#!%%����'()#*)1����-.�*$�!�96:+��������;��,!�2�����*$�!����&'()#*+����'()#*)��#�-.�6+����������������8������2�#!%%�1� !����'()#*)1����-.�*$�!�9/:+��������;��,!�2�����*$�!����2���4� ���.<+��-=0>?@8ABC+��DD7�*!E� ������&'()#*+��������'()#*)1����-.�*$�!�9�:+����! 1����&'()#*+����'()#*)��#�-.�/F*G+�������������>������!�8HI����! 1����'()#*)#%�,�-.�6+����'()#*)1����-.�JF*G+������������I%!���1����%� !�����K1��L%�$4M&N6�O�;��,!�OO1��,!@#!%%4N617�2� ��3MP��������������K��Q!P����!�Q@�17+�������8! 1�#!%%�����#��!*���1����!(L@Q*()LR�4�#7+��! 1���S�O�1��,!@#!%%@�! 1#%����O�;��,!�TUVTVWXYZ[[\]_[Xa\Xb\cd\[]aXZXe[Xf[\ghe]\X_[XiZgXj_cklmnopqqronlqsnotuntnotlvtowqxxuwtotqotluoyzkosmtlomxtu{|vwunomxotluo}q{to~mnt�oklmnnt�~uomnowq�|q{tvp~uotqo�u{m~q�o�nu{noslqolv�uov~sv�nowqxxuwtu�o�q��~uno�nmx�onm��xv~nomxo}q{tn�o�v�}~uo����omnotluotq}o~u�u~o�q��~u�ov~nqorxqsxovnovotuntolv{xunn�oslmwlwqxxuwtnotluoyzkovx�otunto�nmx�ovxomxtu{|vwuomxotluo}q{to~mnt�o ����������� ����������������������������� �!�"#�$�%&�""�'"(&)��&�(&#�%*�+��(&�#$���,%#��("#-./01234.56337089:;<3708=>6333??3@A84BA4:B4234C23:A42D;B<233428434E=708>63333??3FB8834.3428434CD.0GC35.D431:8433/0433/E=708>63333??3FB8834.3HIJ34CD.0GC35.D431:8433KKK2A/-./012LMNOPQRS�TURVWXYVRZWQRO[X\[MNR]PX_RYZWRMaRaZQ[bMQRaRZWQROX[ZRPVZT����������c�!�"#�d(#$��&�(&#�%*�+��(&�#$���,%#��("#5D.GDB-3B04.-B4:<34284=7089:;<3708>633:A:4:B13e/:851Bf=708K/B4B>633??3I823BA3:A42D;B<238:GAB12A/5D.GDB-gWMZRWMOOQaVRbRhXiRMjjRMRaQYRaZQ[bMQRZXRhXi[RjQV\akRlWQRZQVZRWM[aQVVRaRLMNOPQS�TS�RjQPM[QVRZWQRaQYR]iVRMajROiZRZRaRZWQROX[ZRPVZVT�������������!,���,m'���d(#$���"�+,&m�(&#�%*�+��(&�#$��#�"#n"��,%#��("#-./01234.56337089:;<3708=>6333333??3@A84BA4:B4234C23:A42D;B<233A2o9:;<3A2o7=>633333??3BA/3B3A2o3.A233428434E=708p3A2o7>63??3J2843o:4C34o.3:A42D;B<2833/0433/E=708p3A2o7>63??3HIJ3o:4C34o.3:A42D;B<2833KKK2A/-./012qXYRhXiRWMrQRZXRWMa\QRZWQRZQVZRaRLMNOPQRS�TURZXRaPijQRMaXZWQ[RaZQ[bMQRaRZWQOX[ZRPVZsR\ra\RZWQRZQVZRaRLMNOPQRS�TSST�������������!�"#�d(#$�#d,�(&#�%*�+�"�(&�#$���,%#��("#5D.GDB-3B04.-B4:<34284=7089:;<3708p3A2o9:;<3A2o7>633:A:4:B13e/:851Bf=708K/B4B>633??3I823BA3:A42D;B<238:GAB12A/5D.GDB-tjja\RMRaQYRaZQ[bMQRZXRhXi[RjQV\aRNQMaVRhXiRaQQjRZXRQjZRMPPRQuVZa\RZQVZVRVXRZWMZZWQhRMaROPi\RaZXRZWQRZQVZRWM[aQVVTRvXYRMaRhXiRMrXjRZWVRQuZ[MRYX[_kRtrXjROX[ZXaaQZXaVw�����x�y,&&�+#(&)�#$��!�"#�#,��&�z&#�%*�+��d(#$��&�{|}~Xi[RZQVZRaQQjVRZXRXaaQZRZXRZWQROWhVMPRaZQ[bMQRaRZWQRWM[aQVVsRMajRVXRiVQRMR[XVVNXjiPQR[QbQ[QaQR�����RMajRMRr[ZiMPRaZQ[bMQRaRZWQRO[X\[MNR]PX_RMVRVWXYaRaLMNOPQRS�TS�TR~XiRNiVZRiVQRMRr[ZiMPRaZQ[bMQRVXRZWMZRhXiRMaRMVV\aRZRZWQROWhVMPaZQ[bMQRaRZWQRZXORPQrQPRNXjiPQT

Page 169: SystemVerilog for Verification

�������������� ������������������ ����������� !�"�#�$%�&'%(�)'*%+���',%�*-�.���,/�012345647897:;587;<=9;>?;@AB99C<4;:7D9E:?F<G=9E:?9H9;53IE:?B9JJ9K45??985L:D>94>G>4>M=>99<M<;<7D9NL<?3D7O@E:?IL7;7AB9999JJ9P?>97M9<M;>4G7=>9?<6M7D>ML3456478QRSTUVWXVYZT[W\\S[]T]WT]RST]S]TRYV\S TRW_\T\TaYZUbST�cd��d�������� !�e�#�$%�(�*,�$$�&'%(f+%�',%�*-�.�$�',�%(���f*%��'$%85L:D>9;53B99E:?F<G=9E:?@AB999JJ9gM?;7M;<7;>9;h>9<M;>4G7=>99;>?;9;i@AB9999999JJ9j5Mk;9:?>9354;9D<?;9G549;>?;99L:;99Li@E:?AB9999JJ9l;<DD9:?>9354;9D<?;9G549jPm99III>ML85L:D>QRTYUUVWY[RTTVS[WZZS\nSnTopTZS]RWnWbWXSTq[RTYT]RSTrssT]WTZYtSTpWqVT]S][WnSTZWVSTVSqYobSdTuvTpWqTYnnTYT\S_T\]SVvY[ST]WTpWqVTnSX\wTYTRW_\T\TaYZUbS�cd��wT]RST]S]TRYV\ST[RY\XSwToq]TSx ]\XT]S]TnW\y]TRYzST]WT[RY\XSdT�������� !�{�#�$%�(�*,�$$�&'%(���$�.f,/�',%�*-�.�85L:D>9;53B99E:?F<G=9E:?@AB999999JJ9gM?;7M;<7;>9;h>9<M;>4G7=>99M>|F<G=9M>|E@AB99999JJ97ML979M>|95M>99;>?;9;i@AB9999999999JJ9gM?;7M;<7;5M94>87<M?9;h>9?78>99L:;99Li@E:?}9M>|EAB99III>ML85L:D>QRSTRYV\S T\TaYZUbST�cd��T_WVtT_]RT]RST]S]T\TaYZUbST�cd�~T]RY]TnWST\W]Tt\W_YoWq]T]RST\S_T\]SVvY[SwTYT_SbbTYT]RST]S]T\TaYZUbST�cd��T]RY]TnWSd�������� !���#�$%�&'%(�%&f�)'*%+���',%�*-�.�$��,/�012$345647897:;587;<=9;>?;@AB99C<4;:7D9E:?F<G=9E:?9H9;53IE:?B99C<4;:7D9M>|F<G=9M>|E9H9;53IM>|E99<M<;<7D9E>6<M9999NL<?3D7O@E:?IL7;7AB99JJ9P?>9>�<?;<M69<M;>4G7=>9999NL<?3D7O@M>|EI7LL4AB9JJ97ML9M>|95M>99>ML>ML3456478 ����������� ������������������� ��������������� �!��"#��"�$%�����"���"&�!�����'�((�'� �(�)��*��(��!�!�"(���"$(�!!�!�!� ����+���$��'��,� '"������"(�* ����$"� � �("�,�$�!-�)%����"(!�+�%���(.���"#�������� /+��0 !� (����!�!-��#�(� /������! �(�'�"(��!1�2����0"�,��!� (��� !�)��&�%!������! �,���!�+����/ (��$/"'�!� (�����,�$��� !�!-�)%��+�%�!��%�����' ��� /���!��$�%!�� !� �,�$3�"(���(�%������'�"(���+�%$�'�� (��!�+��1456789:;;<=>?;@8>:8ABC>?DC<8E<F?@;89:;G?@BHI>?:;FJ�'����(�'�"���(������#�$ /+ (��"���! �(� !���"�� ���"+��"#��!�#�$"��'�(/ �%$"� �(!1K�%�'�%����"&��"�!�,"$"�����!�)�('��/�$��"'��'�(/ �%$"� �(-)%���� !�'�%�����"�����"'��) ("��$ "���0,��! �(�"!�+�%��0,��$���#�$+�"���$("� #�1�L(!��"�-�+�%�'"(�%!��# $�%"� (��$/"'�!�����+("� '"��+�'�((�'����������,� �("�� (��$/"'�!14567648M8A<FN8E<F?@;�"�,���OP1OQ� !�)% ����/�"�! �,���$�,� '"����'��,�(�(�-�"(�R3) ��'�%(��$1�2� !�$�!��3)��!�"�ST2���"���"!�"���# '��!%'��"!�"�(��*�$&�'� ,��$�,$�'�!!�$���"�� !� (!�"(� "���$�,�"����+� (�"���!��'�(/ �%$"� �(1�2���&�+� ��"� !���"��������,3��#���(��� !��'$�"��!�"("$$"+��/� (��$/"'�!�"(��'�%(��$!1�U�*�������!�)�('��'"(�'�((�'�� �!�"$$"+��/�# $�%"� (��$/"'�!��������,�+! '"���(�!1��"�,���OP1OQ�!��*!�����'����/�$�����'�%(��$.!� (��$/"'�-�VWXY1�L���"!�"�Z[\] _� ("(abcad[�)��'&����,$ (������! �("��#"�%�!1eIfDC<84564g8h;><HGI=<8G:H8ijk?>8=:B;><Hlmnopqrsotuvlqtwlmxyntz{|lstsz}~�ttz{|lst�����t�lm�t�{yn�ttz{|lstpo�onvz�tz{r��ttsz{s}lm|ts�t�wx{�o�|otsz}~�tttt{ynxynt�lm�tz{r��ttttlmxynt�{yn�ttom�sz{s}lm|ttrz�r��t�s�tttt��np{�ow����n�t���t{yn�����tlm�����tz������tp������tttttttttttt�nl�o�t�{yn�t�lm�tz{r��tpo�onvz~�tt�{�x{pnt���twlmxyntsz}�t�lm�tpo�onvz�tz{r��ttttttttttttttt{ynxynt�{yn~�tt�{�x{pnt��twsz{s}lm|ts��t{ynxyntpo�onvz~�om�lmnopqrso

Page 170: SystemVerilog for Verification

��������������������� ������������������� ����������������� !�"�������# �� �$%�����&'(&)(*+,-./012314056789/:0,6;/.07<=8>0?@AB0=89/:C+D/EEFGAHIJKFLMNAOFPQRSOKTFUAOVFJQWXFWSXFWPOAYKMJQUFTKZKOHQXRJKFXRO[?@AB\]_FAabFFJQcAPFdefghFPQRSObFFWZZAcSFA\XQROFiFPQRSObFFWJUWjZFk[IQZKXcKFA\PJlFQTFSKcKXcKFA\TKZKO@JaFFFFNKcASFFFFFFABF[mA\TKZKO@JaFFPQRSOFniFgbFFFFFFKJZKFABF[A\JQWXaFPQRSOFniFA\XASbFFFFFFKJZKFFFFFFFFFFFFFFPQRSOFniFPQRSOopbFFFFKSXKSXHQXRJK����!��q��r��� �!���!�� �$%�����&'(&s������%�t� �"%!���!%!��� !�!��� �!% !�%!��uvwxyz� !�"{%����% |���� !�"�}�~�!�� ���� ��!��!~� ��(*+,-./01231�0�/<9�/8D�07<=8>0+80+::+�06C0�=:97+.0=89/:C+D/<IWTWHKOKTF��@?�FiF�bFFEEF�RHNKTFQBFXKZAcSFASZOWSPKZHQXRJKFOQIbFFEEF�JQPlFcKSKTWOQTFFNAOFPJlbFFASAOAWJFNKcASFFFFPJlFniF�gbFFFFBQTKYKTF��gFPJlFiF�PJlbFFKSXFFEEF�SZOWSOAWOKF�FASOKTBWPKZFF?@ABFAd��@?�hF[PJlabFFEEF�SZOWSOAWOKFOVKFOKZONKSPVFFOKZOFON[abFFEEF�KSKTWOKF�F]_FASZOWSPKZFFcKSKTWOKFFBQTF[cKSYWTFAigbFAn��@?�bFAooaFFFFNKcASFfFXRO@NJlFFFFFFXROFXF[AdAhabFFFFKSXFFKSXcKSKTWOKKSXHQXRJKFfFOQI ����������� ������������������������������� �!"�#$��%�&��'���'��#$��#�(#)��*$�'(�+$�,��#$���-*���.',#/���'�#�,0�*��,,�&"123"�'(��(('4��5�#-��-'�#�#-�#$���,,�&�-0��$&('*���'�#�,0�*�(�'��#$��#-���-5/��"678923 �:;-#��#$�#�#$'(��<������#�%�(�(-���($-,#*/#(�*-���,�5�#-�#$��,�*-����5�=#'-�(�'��>$�� �? �@-�('���'0&���������� �?"�#$����.',-����#�*��((�$�(�)������,4�5+'#$�#$��#�(#"�+$�,��(�#$��4���,�#-,"��4��#"���5�5,'.�,���&�,(�$�.��)����*-��,�((�5'�#-�#$��5,'.�, A@$��#�(#)��*$��((/��(�#$�,��'(��#����(#�-���*-/�#�,���5�#$/(��#����(#�-���B�'�#�,0�*� ��0&-/,�5�('4��*-/�5�$�.��C�,-�*-/�#�,("�&-/�+-/�5�$�.��#-�/(����5&���'*��,,�&�#-�$-�5#$��.',#/���'�#�,0�*�("��(���0'<�5=('C���,,�&�*���-#�$�.����('C��-0�C�,- DEFGHIJKLMKNJOPQRSITJSIUSVIRWXJQUYRZJ[YTSQEHJYRSIT\EWIU] _ abcade_baefgcehiejcckfedalcmnfopqrcksftuvwnmxyjczzc{fedalcf|ehoaghca a}cc~fkhc�fkhtyjccf|fefalc�hf|cccczzc�_||hgecl_galckfedalcf|ehoaghce_ce_]ccccksfc�ce_]psfjcccczzc�haehcuc�fkhicccc�fkhc�c|h�tuvwnmxyjcccco_hag�c��fkhtfy�cccccc�fkhtfyc�c|h��ksftfy�cf�jcccco_hag�c��fkhtfy�c�hf|ccccccf|ec�c�cfcccccco_�cccccccc�hf|cccccccccc�fkht�yphihe��jcccccccccc�fkht�ypl_a�n_]��jcccccccch|�cccccc�_f|n|_|hcccch]haec����c��ksft�ypg��jcch|�h|�] _ ab�0�*-/,(��'��#$'(�('������<�����"�&-/�*-/�5��/(#���((�#$��'�#�,0�*��5',�*#�&�'�#-�#$���31���(�*-�(#,/*#-,"�,�#$�,�#$�����%����(���,�#��.�,'�)�� ������������ ��"�#$����31���*��((�/(�(���('�4���.',#/���'�#�,0�*��#-�5,'.����5�(�����('4���(�0,-��#$��*-/�#�,

Page 171: SystemVerilog for Verification

��������������������� ������������������� ���������������� !"#$!�%��&&�'&()*�+(,-'���()-�,.�%�&/01223 !"#$!433#"!5610378"93:"433";53"<43396;/5"=;3;$>?";@653#"!5610378"9ABC3:"D3";@653";53"<E433335F"2A:"3G3:"433335F"2A"<3G3"<433$;<96;/5"=;33512H3!$2$5?E43333I<"2@01J?KLMN5O3MPO3Q51!53!$2$53RMN<SKD33333333333333I5"P$D3"<E43333TT3U$2$535F$3<$#"/$3333:"A!$2$5803VG3W43333:"A/XA0=1<3VG3N43333:"A/XA<";3VG3N43333L?:"A/XE3:"A!$2$5803VG3N43333L?:"A/XE3:"A!$2$5803VG3W43333I<"2@01J?KLMN5O3MPO3Y;<3!$2$53RMN<SKD33333333333333I5"P$D3"<E433$;<512H3O3!$2$533512H30=1<8=@?E43333I<"2@01J?KLMN5O3MPO3Q51!530=1<3RMN<SKD33333333333333I5"P$D3"<E43333ZZW3:"A/XA0=1<3VG3W43333:"A/XA<";3VG3"<3[3WN43333ZZW3:"A/XA0=1<3VG3N43333!$@$153?\E3L?:"A/XE43333I<"2@01J?KLMN5O3MPO3Y;<30=1<3RMN<SKD33333333333333I5"P$D3"<E433$;<512H3O30=1<8=@$;</01223O3 !"#$!�������]&()*�_abacd�e(-f�g(,-'���h)-�,.�%�&ijklmnolpqrkmqlstqlnujkosljvlswxyoz{lnorlqo|kpqlwjkln}~nw|lk|qlstqlmjppqmslujrxjps�wlpqx}nmyozl�����������c����l~ystlnl_abac{ln|l|tj~olyol�nux}q|l�����lnor�����ljvlstqlsq|s�qomtlnorlrpy�qp� ����������� ����������������������������� ��!�"#$�%&'�(")%*���+,-./.0�123�4)3#(���)%#�31�&�"+,-./.05678+9:;5<=70>?@56A=70B-8CD8:E5:9+CE:+7F5+.G+B556A=7056A7HIJK=<LMB555555NN5O78+9:;57P+.80:F.5:88:,55Q876.85/876.8HMB55>>>.P/-8CD8:E���������� �R3)4�3�(")%*���+,-./.0�123�4)3#(���)%#�31�&�"F;:GG5Q876.8B556A=705A7B557P+57/B5509PF+7CP5P.ST7P-9+56A=705A7U57P-9+57P+57/VB5555+W7G>A75X5A7B5555+W7G>7/5X57/B55.P/09PF+7CP55>>>.P/F;:GG5Y5Q876.8��� �Z�[�"")%*�\)3#(���]%#�31�&��33�_�")%*���[23#abcdefcghijkdclmneockdemkkcpdqbcdmffmrdisdghfqjmodhtqcfsmuckdjkhtvdmdufikkdnipjocdfcswcfctucdxyz{|}d~tdmoqcftmqhgcdhkdqidemkkdqbcdmffmrdhtdmdeifq}d�htucdqbcdmffmrdhtdqbcdqietcqohkqdhkdkqmqhudmtpdkiditordtccpkdqid�cdfcscfctucpdituc�dqbcdyz{dkqrocdnm�ckdnifckctkcdqbmtdjkhtvdmdeifqdqbmqdtifnmoordhkdjkcpdqidemkkdubmtvhtvdgmojck}�mneocd��}��djkckdmdvoi�modemfmncqcfdqidpcshtcdqbcdtjn�cfdisdydhtqcfsmuck}d�cfcdhkdmktheecqdisdqbcdqiedtcqohkq}���������� Z�!�"#$�%&'�(")%*��%��33�_�21�4)3#(���)%#�31�&�"-:8:E.+.85IJK=<L5X5�B55NN5I9E�.85C057PG+:PF.GEC/9;.5+C-B55NN5LPG+:P+7:+.5I57P+.80:F.G55<=705A75HIJK=<LM5TF;�VB55>>>55NN5LPG+:P+7:+.5+W.5+.G+�.PFW55+.G+5+�TA7VB.P/EC/9;.5Y5+C-

Page 172: SystemVerilog for Verification

����������������� �������� ��������������������������������� ���!����� "����������#$�����%�&'!��()*+�*�,��� ��������� �-�#"��� ���!����� "������#�������������'�������&����#������#��� ���# �"# �����. ��� �!���/�# �0����'������������ "����.� ���!-�" #&�����'# �*123456789:;<7=6>?@6ABC742>>DAE7FDG?H257DA?6GI2B6>7JD?C7274KG?LMNOMPQRPSTNQPTUVRTWXTYZ[U\R]UR _a[ZbcdeRRfMUgWMRhMUgWMceRRgUMTSPiRZ[U\Rg]U _a[ZbceRRUjUTUPiRkWOUjRRRRllRmNjjWVTRTnWRiNVPiRgUMTSPiRUjTWM\PVWXRTNRTnWRTNLRRRRU\RY_a[ZbRopRqdRr\UjUXneRRRRhMUgWMRpRjWs _a[ZbceRRRRg]URpR]UeRRRRllRtXXUOjRTnWRUjTWM\PVWRPMMPuRRRR\NMRYUjTRUpqeRUo_a[ZbeRUvvdRkWOUjRRRRRRhMUgWMUcRpRjWsYg]UUcwRUdeRRRRRRhMUgWMUcxMWXWTeRRRRWjhRRxxxRRWjhWjhLMNOMPQ89:y7zGKB6{HG257|K{67DA72A7}A?6GI2B6~����������!�����#��������#����� ���!�����.� #������/�������� "���������#�������#.��������� #������/����� ��#��/���.�����������.���������!#���*�����!!������������� "������!�.������������!����.�"�����#��!��-�#"������#&&�������#�����$�����$#��!#���*�%#�������� "�����!#���"# ������������#���������������!����.��!�#� #��������#�'� "# &��#&�&��.������������ ��.�# �$ ���*��������� �$# ������#"������� #�������� ����..���" #&�������� ��!��!#���/��!!#$����-#���#�.�"� ����������!��&'!�&������#�*���������#������ #�����������#�� #!!�.������������������������&���/�0�������$���������!�*��������# "�����#������&'# ��.����#������������#����������������������!���#���-��!#�����������������������*������ #�����������������.��-��#�������.��������.��������������*�������'' #������� ���������#���� ��������������&��' #�#�#!/��!�&�����������#&&#���#� ���#"����������������*��#$��� /��#���!!��-���������##!���������.!�� #����������������� ��#�*�#�������� �"-���' #�#�#!�$�������� ��#������������� "���*�������� ��#�����������"# ��!!���!��#&������#��/���������' #�#�#!���#!���#�����.�����#$����!���*����������.��'!�-���������"# &���#����.���#'���&�!���#���&&�.����!-��#������-#�����������!-�.���������' #�!�&*�������� ��#�������!�#�"� ��$�����##.�� �������#���#��� * ����������� �������������������������������� !"�#!���$!�%�����&!��'�&��()!��*��&&!"���������"�##!"��'!�#��'!"��#��*�� !"�#!���*�"+�����,-./0/-12345678951:;4<1=868>>5>1=6?4?9?>@'!���"!����#�(��"�&(&�!+A�(���+�(�����B��%�%'!�'!"�����'��&!���)�"���!���"�&!"���)"������,�C'!����!"*��!����D�+)�!�EF,GH�'�&��%����&B&A�IJIKILKMNOPJQ���$�KLNRPKSTUA��'���&!�$����"��&�������V!�%!!���%��V���B&��&��#��'!����!"*��!�&�#���&,�W��&!�$&�'!��$$"!&&���$�$�������)�"���!����"�&&��%���XV���V�&!&,Y8Z[>51-./\]12345678951:;4<148_17?61[868>>5>1[6?4?9?>abcdefgchijklcmenakobhlpqghglrsthhlpqghuvwxyhfzzdthhlpqghuvwxyhzfbfthh{oimgjzmchgjzthhjpzkpdbh|}~��|hhhhnakobhhfzzd�hgjz�hzfbf�hhhhhjkpdbhbfirhbfdqcb~g�hnpobkobh{oimgjzmchg�hhhhhhhhhhhhhhhhhhhhhhhhhhhhlpqghuvwxyhf�hzssthhhjpzkpdbh���|�}|�~hhhhhhnpobkobhfzzd�hgjz�hzfbf�hhhhhhjkpdbhbfirh a bfbpd�caznakobh{oimgjzmchg�hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhlpqghuvwxyhf�hzshhhhhhsthh��h�fdfllclhicazhhbfirh a bfbpd�caznakobh{oimgjzmchg�hhhhhhhhhhhhhhhhhhhhhhhhhhhhlpqghuvwxyhf�hzsthhhh�nkpiczqchglrsthhhhgjzh��hgthhhhfzzdh��hfthhhhzfbfh��hzthhcazbfirhh��h�fdfllclhdcgc�chhbfirhbfdqcb~g�npobkobh{oimgjzmchg�hlpqghuvwxyhf�hzsthhhh�nkpiczqchglrsthhhhfh�hfzzdthhhhzh�hzfbfthhhhgh�hgjzthhcazbfircazabcdefgcwhijklcme

Page 173: SystemVerilog for Verification

����������������� �������� ����������������� ��!"�#�$��"�%�&�'�' '%()*+,-.*/012*+,-+31456*+789:;+,456*4*-.<+1+<*/,16+,-.*/012*+0=/+<*->,-?+1->+/*2*,@,-?.)*+1>>/*<<+1->+>1.1+@16A*<9+B.+)1<+.)*+<14*+,-.*/012*+1->+/=A.,-*+-14*<+1<+31456*789:CD+1->+<=+E=A+21-+<F15+G*.F**-+.)*+.F=+F,.)=A.+)1@,-?+.=+2)1-?*+1-E+>*<,?-+=/.*<.G*-2)+2=>*9$�HI%������J�������� ��!"�#���KLK��'��K��"�%�I�'�' '%MNOPQRSTPUVMWXYPZMR[MNX\OUY]MTUTY_aUUY]MTUSbbQaUUY]MTUbSOSaUUY]MTUVOSQOUcUdaUUe\VZTWbZPUTWbaUUW]bX]QOUfghijf[MNX\OUUSbbQkUTWbkUbSOSkUUUUUUUUUUUUUUUUUMWX]QOUOSV_UOSQPOhTlU[]\OX\OUe\VZTWbZPUTkUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUY]MTUmnodpUSkUb aUUW]bX]QOUqrqfqgfsh[]\OX\OUSbbQkUTWbkUbSOSkUUUUUUUUUUUUUUUUUUUUMWX]QOUOSV_UMNMOMSO]QtPNb[MNX\OUe\VZTWbZPUTkUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUY]MTUmnodpUSkUb aUUuuUtPQMSYUVPNbUUOSV_UMNMOMSO]QtPNb[MNX\OUe\VZTWbZPUTkUY]MTUmnodpUSkUbaUUUUv[X]VPbPUTY_aUUUUVOSQOUwcUxaUUUUTWbUwcUTaUUUUR]QPSTyU[SmMpUePMNUUUUUUSbbQUwcUSmMpaUUUUUUbSOSUwcUbmMpaUUUUUUv[X]VPbPUTY_aUUUUUUVOSQOUwcUdaUUUUPNbUUUUTWbUwcUqz{jaUUPNbOSV_UUuuUtPQMSYUQPTPMlPUUOSV_UOSQPOhTl[]\OX\OUe\VZTWbZPUTkUY]MTUmnodpUSkUbaUUUUv[X]VPbPUVOSQOaUUUUTUcUTWbaUUUUR]QPSTyU[SmMpUePMNUUUUUUv[X]VPbPUTY_aUUUUUUSmMpUcUSbbQaUUUUUUbmMpUcUbSOSaUUUUPNbUUPNbOSV_PNbMNOPQRSTPoUVMWXYPZMR ����������� ���������������������������������� !"� #�$!�%&#�'%�( )%*+,-,./0./01234+52,.+32.4/02.463.7*89.:;232.1;2.4<051/60+=/1>./,.,13/51=>.?24/[email protected]:B2C239.1;2,2.1+,-,.+32.+.D663.5;6/52.463.+0>.1>D2.64.C23/4/5+1/[email protected]+52,.+0?.1;2/356?2.5+0061.G2.2H120?2?9.6C23=6+?2?9.63.?>0+I/5+==>./0,1+01/+12?.G+,2?.60.5604/J<3+B1/[email protected]./01234+52.5+0061.;+C2.D3/[email protected]>.56?2.463.C23/4/5+1/60.022?,.I+H/I<I4=2H/G/=/1>.+0?.5604/J<3+G/=/1>9.+0?.,6.,;6<=?.J6./0.5=+,,2,.1;+1.3<0./0.+.D36J3+I.G=65-@���L�( !'MN"� !*;2./01234+52.560,13<51./0.O>,12IP23/=6J.D36C/?2,.+.D6:234<=.125;0/Q<2.16.J36<D16J21;23.1;2.5600251/C/1>9.1/I/0J9.+0?.4<051/60+=/1>.463.1;2.56II<0/5+1/60.G21:220G=65-,@.E0.1;/,.5;+D123.>6<.,+:.;6:.>6<.5+0.532+12.+.,/0J=2.12,1G205;.1;+1.5600251,.16I+0>.?/4423201.?2,/J0.5604/J<3+1/60,.5601+/0/0J.I<=1/D=2./01234+52,@.R6<3.,/J0+=.=+>2356?2.5+0.5600251.16.+.C+3/+G=2.0<IG23.64.D;>,/5+=./01234+52,.+1.3<0B1/I2.:/1;.C/31<+=/01234+52,@.K??/1/60+==>9.+0./01234+52.5+0.;+C2.36<1/02,.1;+1.?3/C2,.1;2.,/J0+=,.+0?+,,231/60,.16.5;25-.1;2.D361656=9.G<1.D<1.1;2.12,1./0.+.D36J3+I.G=65-9.061.+0./[email protected]+0>.:+>,9.+0./01234+52.5+0.32,2IG=2.+.5=+,,.:/1;.D6/0123,9.205+D,<=+1/609.+0?+G,13+51/60@.*;/,.=21,.>6<.532+12.+0./01234+52.16.I6?2=.>6<3.,>,12I.+1.+.;/J;23.=2C2=1;+0.P23/=6JS,.13+?/1/60+=.D631,.+0?.:/32,@.T<,1.32I2IG23.16.-22D.1;2.12,1G205;./0.1;2D36J3+I.G=65-@

Page 174: SystemVerilog for Verification

������������ ���������� ������������������� �!����������"�� �����#�$%�!&$!��� �%&'���(��"���$�)��*&'��+% ��#,���"&-�.��/�'�� ��&�(���.%���)� �-$0������� �*�$!��!����� �!&$ ����$�)���$)&#� ��#'"' 1��$)-����� �.'$!��&$�"�!&(���-�0�2��� � ��'!�'��)��!!&�)�$-��&�����-'�)�"�$� �.�&#�����0�3�$)� &�%&'�!�$��$4�!��$�5�*���(�&��5���&'��#&)�.%�$-�����"&5��/"�(�"�*"&!6 0����)� �-$�� ��$�7�8� 5��!�������5� � �&5$��$�+'����"�$)�����"0�9:;;<=1�5�&�*� �)�� �+% ��#,���"&-�)� !�����&$�&$��$��>�#�"��.�&#�?�$�!6�@��-��&$A �,���.�!���&$B'�")0�+'����"�$)��&&6�����&��-�$�"�,���"&-�)� �-$��$)�' �)�+% ��#,���"&-�)� �-$.���'�� ��&�!�������� 5��!�������!�$�*��!&$.�-'��)�.�&#�C�DEC��&��<�DE�<0������� �*�$!��$�����&��-�$�"��>�#�"��!����� �7�8�!�"" �' �$-�FGHIJKLM1�&(��5���� �!�����$�.��") 5����2N�(�"'� 1� �$) ����#����&'-������)�(�!�1��$)����$�!��!6 ���������� �#��(�"'� 5������!��(�)0�����$������>�#�"�1�5���������� �*�$!���$)�7�8� 5��!�1�� ��(��"�*"��.&��)&5$"&�)���OPPQRSSTOHUVWVQXIHWJXPSVYVPXMZXHU[L\0���� �!������� �&5 �4' �������� �/*�$!��!&)�0]]]_��������a�����&(���""�!&$$�!��&$�*��5��$�����)� �-$��$)��� �*�$!�1� �&5$��$�b�-'�����/�1.&""&5 �����������$� �&5$��$�����0�C0 ��������������� �������������� �������������������� !""#"!$% !& '&( )*%!+!, '��)! )-��.)/ )&012345637282735934123:2;<=>3<;3?@772:3ABCDEF3@;3;15G>3<>3H<=IJ23KKL�M30123N5:I7231@;KMMO3P456<@3QR3<>42J9@?2;341@43@J23;2>:<>=3PSTL95JN@442:3?277;M3T>;<:234123UP0F3?277;@J23;45J2:F3?5>82J42:3453SST395JN@4F3@>:395JG@J:2:345341230R3<>42J9@?2;M3012395JG@J:L<>=3<;3:5>23@??5J:<>=3453@3755VI634@W72341@43<;3@::J2;;2:3G<4134123XYT39<27:3593412<>?5N<>=3?277M301234@W723<;36J5=J@NN2:341J5I=134123N@>@=2N2>43<>42J9@?2M����� !""#Z![\.*]!,���/!_.�!&% !'�&!, '��)01234563728273N5:I723<>3a@N6723KKMK3:29<>2;3@JJ@b;3593<>42J9@?2;395J34123QR3@>:30R65J4;M cdefgdhijkdelmhnohpdqcdeflhrsfe tsfrsfecdefgdhijkdelmhnohpdqcdeflhrsfe tsfrsfeuvoftrlwuvoftrlw udxqlfdydzz cvoftrlwcvoftrlwudmlefdq{lzd|m}f~�{uvoftrlwuvoftrlw udxqlfdydzz cvoftrlwcvoftrlwudmlefdq{lzd|m}f~�{

Page 175: SystemVerilog for Verification

����������� � ��������������������������������� !"#$ %&'!(&'!�) *�' %+,-./�!%0%%((%! �%'1�2 /%.*%�/#'!���%3./�!�) *�' %4,-./�!%0%%((%! �%'1�2 /%.*%/ " �5 %3./�!�.)1$ %�.36%%3#/#� � /%�'�%71�4,%8%�4,-./�!6%%3#/#� � /%�'�%71�+,%8%�+,-./�!6%%$.9�"%/!�:%"$;6%%((%<=!� �%>$.";%#')%4 ! �%%�'���#$%2 9�'%%%%/!�%8%?6%"$;%8%?6%%%%@A'!%/!�%8%&6%%%%@A'!%"$;%8%&6%%%%@A'!%/!�%8%?6%"$;%8%?6%%%%*./ 5 /%%%%%%%@A'!%"$;%8%B"$;6%% ')%%C�.3�#%4,D?E71�4,F&G%HI6((%71�4,%,%J 5 $%&%C�.3�#%4,%K'� /*#" %%C�.3�#%+,D?E71�+,F&G%HI6((%71�+,%,%J 5 $%&%C�.3�#%+,%K'� /*#" %%"31L�*"%��*HI6%%%%%%%%%%((%C�.3�#%�#'#9 � '�%�'� /*#" %%!M1#�%@H71�4,:%71�+,I%!M1#�H4,:%+,:%��*:%/!�:%"$;I6%%%((%NC+%%� !�%%@H71�4,:%71�+,I%�&H4,:%+,:%��*:%/!�:%"$;I6%%%%%%((%+ !� ')�.)1$ %E%�.3OPQRSQTSUQVWPRXYZ[Y\]RVR_\]XQRaabcRX\TTQTRSPQRVSQYd\WQTR\VeRT[V\TRSPYZf[PRSPQXZYSRTSbR_QQR_QWSZVRagbabhRdZYR\ReTWfTTZVRZVRXZTSTRiTbRWYZTTR]ZefQRYQdQYQVWQTbROPQ\WSf\RSQTSUQVWPRWZeQRTRVRSPQRjklmnokpqkrRW\TTbROPQRXYZ[Y\]RTSQXTRSPYZf[PRSPQXP\TQTRZdRSPQRQViYZV]QVSb ��������������� �������������� �������������������� !""#$!% &'( )*+!�,-.,��/012034536714378957:;755<=/3034:7:058>75?64@A5B5CD5/3034:7:058>75?64EA5B5CF555=G71/83HEIJ@A5@AKLM?64@ANOPD5555G71/83HEIJEA5EAKLM?64EANOPD55559/6J8Q9HE:;7548QD55558>/675R128950;7D59RSFTU8>9R6V:5W:>X801>4:>7H;XW55Y>X801>4:>75:>XT558>8783R5Z:28>5555:>X5B5>:[=@AD5EAD5?64@AD5?64EAD548QFT5555:>XH2:>J9Q2=FT5555:>XHZ68RV=FT5555:>XH06>=FT5555:>XH[03/J6/=FT55:>V:>V/0120345\\57:;7]_a_bac_de fghibegdajgfkdlgjmhakgdkdaga_n]o bpkae ajgqr a_ohdhr_sm_dakda_jlhe_thfbgudgpdhba_vwxkda_jlhe_tbgpdkdyhmzf_{{|�|}dakbehza_j~b_�hmzf_bta_kda_jlhe_kbgdf�qb_iagfghia_fgguqzahcf_ahamhzb�w}aglgjphjikdrmhbub|����� !""#�!���!��)�. � )'!�)' ,��* 8>7:0Q39:59/6J8Q9T55R128955555555I6;�1V:D5�:RD5@VJ��D5�0J@�D5@V�J�739ST55R12895KOOMLP5�VV0T55�:RR�Q2E�/:55�373�>D5�373�67T5555\\5�:Q8>:V58>5�34/R:5OOHOO5541V/1075�:08/�:03R55555555555=8>/6755I6;�1V:D5�VV0D5�:RD5�373�>D5@VJ��D5�0J@�D55555555555167/675�373�67D5@V�J�739SFT5541V/1075E:;755555555555=167/675I6;�1V:D5�VV0D5�:RD5�373�>D5@VJ��D5�0J@�D555555555558>/6755�373�67D5@V�J�739SFT:>V8>7:0Q39:5M59/6J8Q97�/:V:Q5X80763R59/6J8Q9HE:;75X��GJETyhmzf_{{|�bgpba_xagzkhkda_jlhe_tpke kbqb_ic�a_a_bac_de agegmmqdkseha_pkaa_b�qhai_bkrdc�ajhdbmkaakdrhdij_e_k�kdrn]oe_ffb|]_kda_jlhe_hbefgeukdrcfgeublgja_ajhdbmkahdij_e_k�_zhabthdimgizgjablgja_i_bkrdhdia_bac_de egdd_eakgdbaga_kda_jlhe_|

Page 176: SystemVerilog for Verification

����������� � ���������������������������� !"#$%&'#()"*+ &,((+&$&-#"#$( !"(.%/ 0"1(2(3,((4*5 '(6.%/ 0"1789:;(0&"&,((< "('4=> !?('4=>*@",((< "(A*'?(#!?('4&B?(B&4 0?($#&0C?($#A#"?(A#4#'"#0,((DEFG#44EC+#(DEF'#44,((HH(@! *!(*%(A"$@'"@$#A(%*$(DEF('#44A((-*0+*$"(E*+I#'# B#(J(((( !+@"((0&"&?(A*'?('4&B?(((((*@"+@"('4=> !?($#A#"?($#&0C?('4=>*@"?(#!?(DEF'#44?(B&4 0(K,((-*0+*$"(E*+E$&!A- "(J(((( !+@"(('4&B?((((( !*@"((A#4#'"#0?((((*@"+@"('4=> !?('4=>*@"?(DEF'#44?(0&"&?(A*'?(#!?(B&4 0?($#A#"?($#&0C(K,((-*0+*$"(G*$#I#'# B#(J(((( !+@"(('4=> !?(0&"&?(A*'?('4&B?($#&0C?($#A#"?((((*@"+@"('4=>*@"?(#!?(DEF'#44?(B&4 0(K,((-*0+*$"(G*$#E$&!A- "(J(((( !+@"(('4=> !?('4&B?(DEF'#44?(B&4 0?($#A#"?((((*@"+@"('4=>*@"?(0&"&?(A*'?(#!?($#&0C(K,((('4*'= !5('<$(LJ!#5#05#('4=>*@"K,(((((( !+@"('4=> !?('4=>*@"?(DEF'#44?(B&4 0?($#A#"?(#!?($#&0C,((((((*@"+@"(0&"&?(A*'?('4&B,(((#!0'4*'= !5(9('<$(((-*0+*$"(EM>IN(J'4*'= !5('<$K,((('4*'= !5('<"(LJ!#5#05#('4=>*@"K,(((((( !+@"(('4=>*@"?('4=> !?(DEF'#44?(A*'?(#!?(B&4 0?(((((((((((((($#A#"?(0&"&?($#&0C,((((((*@"+@"('4&B,(((#!0'4*'= !5(9('<"(((-*0+*$"(EM>EN(J'4*'= !5('<"K,#!0 !"#$%&'#"C+#0#%(B $"@&4()"*+ &(B)"*+ &,"C+#0#%(B $"@&4()"*+ &OEM>IN(B)"*+ &IN,"C+#0#%(B $"@&4()"*+ &OEM>EN(B)"*+ &EN, ��������������� �������������� ��������������������� !"# $%&�'()%*!+,-.-/0123/4-/5.67899:.89.9,3;/.1/.<-6513/.=>?>@:.19.5,-.968AA37B1/C.5,85.9DEE3259.5,-5-95F-/6,.952D65D2->.G/91B-.5,19.67899.71-9.5,-.F736H9.3A.I3D2.78I-2-B.5-95F-/6,:.9D6,.89C-/-285329:.B210-29:.43/15329:.8/B.9632-F382B>.+,-.-/0123/4-/5.8793.63/52379.5,-9-JD-/61/C.3A.5,-.A3D2.5-95F-/6,.95-E9K.C-/-285-.8.28/B34.63/A1CD28513/:.FD17B.5,-5-95F-/6,.-/0123/4-/5:.2D/.5,-.5-95.8/B.;815.A32.15.53.634E7-5-:.8/B.8.;28ELDE.E,89-53.9,D5.B3;/.5,-.9I95-4.8/B.C-/-285-.2-E3259>MNOP( ����Q�R$STU)$O $"�%(N!!�& NV UWXYZZ[\] _a]bc]de[[fghijc]cYda[jc]kle[[bY_Xman[jc]op kle[[cc]d[[[p ojc]kle[[q _ c[p kle[[ra]_da[ba]kle[[sa]t_j[Wtje[[uWacmaYp[ZWme[[sa cYjc[Wae[[ _dvYX[fdaw_Yxyzi{n[{nkle[[ _dvYX[fdaw_Yxyziyn[ynkle[[_]d[]vb{n|[]vbyne[[s}fiy[b_te[[s}fip _ c[Wwve[[cndc][tv]Wd_a][]c~�_]wvd[fdaw_Y{n[{nkl|[[[[[[[[[[[[[[[[[[[[[[_]wvd[fdaw_Yyn[ynkl|[[[[[[[[[[[[[[[[[[[[[[_]wvd[_]d[]vb{n|[]vbyn|[[[[[[[[[[[[[[[[[[[[[[_]wvd[s}fiy[b_t�e[[cndc][ _dvYX[tv]Wd_a][a_p[jc]iWtj��e[[cndc][ _dvYX[tv]Wd_a][a_p[mv_Xp��e[[cndc][ _dvYX[dYZ�[v]��e[[cndc][ _dvYX[tv]Wd_a][a_p[~Ywivw��ec]pWXYZZ[�[\] _a]bc]d�15,.5,-.����������������.9I95-4.589H:.5,-.�����������.67899.63/952D6532.1/<84E7-.@@>�.733H9.A32.5,-.��<.9;156,.����������������:.;,16,.9-59.5,-.28/B349--B.A32.5,-.914D78513/>.+,-.9I95-4.589H.�����������������.-�528659.5,-.087D-A234.5,-.9;156,>.�3D2.914D78532.48I.,80-.8.B1AA-2-/5.;8I.53.9-5.5,-.9--B>.G5.19.14E32L58/5.53.E21/5.5,-.9--B.1/.5,-.73C.A17-.93.5,85.1A.5,-.5-95.A8179:.I3D.68/.2D/.15.8C81/.;15,.5,-984-.087D->

Page 177: SystemVerilog for Verification

�������������� ������������������������ �!��""��� #�$"%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%'()*+,-./,'0*'1*23-)*41*,'3*+,0*/15.*/,3)*'6*23-)*41*,77*1893*:.,'2;,):30<='<=>?@''''''''''''''''''''''''''3*:.,'2;,):30A='A=>?@''''''''''''''''''''''''''3*:.,'3*,'*.4<=@'*.4A=@''''''''''''''''''''''''''3*:.,'2(B;CA'435DE'',F3+G<='H'*18><=G+3I19D?E''5)-10/F'9<=>3?D',F3+G<=>3?'H'<=>3?E'',F3+GA='H'*18>A=G+3I19D?E''5)-10/F'9A=>3?D',F3+GA=>3?'H'A=>3?E'',F3+G*.4<='H'*.4<=E'',F3+G*.4A='H'*.4A=E'',F3+G435'H'435E''/5J'H'*189K.4<[email protected]=DE''35'9L,1+,L:M.+0-J+9N*,OC-0*P)4C+11PNDD'O1J3*''''3*,'+11PE''''L20M.1L:M.+0-J+9N*,OC-0*P)4C+11PHQPN@'+11PDE''''LP3+:M0R9NS34.M0,3)*'-.*'83,F'-0*P)4'+11PHQTPN@'+11PDE''1*P''1M+1''''LP3+:M0R9NS34.M0,3)*'-.*'83,F'P150.M,'-0*P)4'+11PNDE1*P5.*/,3)*'7'*18%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%'<0*P)43I1',F1'/)*53J.-0,3)*'P1+/-3:,)-5.*/,3)*'2)3P'6*23-)*41*,77J1*C/5J9DE''0++1-,9/5JG-0*P)43I19DDE''/5JGP3+:M0R9DE1*P5.*/,3)*'7'J1*C/5J%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%'U.3MP',F1'1*23-)*41*,')OV1/,+'5)-',F3+',1+,%%'K),1',F0,')OV1/,+'0-1'O.3M,'5)-'121-R'/F0**1M@'%%'121*'35',F1R'0-1'*),'.+1PG''AF3+'-1P./1+'*.MM'F0*PM1'O.J+G5.*/,3)*'2)3P'6*23-)*41*,77O.3MP9DE''/:.'H'*189435@'/5JDE''J1*'H'*18>*.4<=?E''P-2'H'*18>*.4<=?E''J1*WP-2'H'*18>*.4<=?E''P-2WJ1*'H'*18>*.4<=?E''+/O'H'*189/5JDE''/)2'H'*189DE''''%%'U.3MP'J1*1-0,)-+''5)-10/F9J1*>3?D'O1J3*''''J1*WP-2>3?'H'*189DE ��������������� �������������� ����������������������� !�"���#$���%&'(� !)�&'(%���� !)������������������*+�,*�--./0�'/*12�� !)� 34����&'(� !�"���#$���%&'(� !)�&'(%���� !)�56� !)� 34����&��77�89 -&�:;� <;'.��:;��"���#��9:=6!4��+;'�2*1�$:;�� !3����:;�� !�"���#$=6� !)� 34��77�>;���*<�.*;'�?;2'&�<;�&' (�'.�@�:;� <;'.�# <1�*2--?2*A.��?�� �����B*?/C' (�'/*?.�.&*�"���#$.*?34����B*?/D;� <;'/*?.�.:*�"���#$.*?34����+;'�2*1�$&'(� !3�&'(� !,*?.E,09.1/?2*A$.&*34����+;'�2*1�$:;�� !3�:;�� !,*?.E,09.1/?2*A$.:*34����&��77�>;���*<�*;(�'2���<;�:;� <;'�# <1�*2--?2*A.��?�� �����>;(/D;� <;'/*?.�.:*�"���#$*;(34���+;'�2*1�$:;�� !3������:;�� !,*?.E,09.1/?2*A$.:*34����&��&+9�*< ;��F�?9 -&77GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG77�B<2'<�<1��<'2�.2*<;'.F�����'2<;'.)�&' (�'.)�:;� <;'.77�>12���-.�<12<�2'���;<� ��9.��&;�H<���<�.<2'<�&<2.A�I�( ';�:��<FF'9�$34�� �<��9:/���/'9�� ��4��77�=1��>JK� �<�'+2*�� � < 2- L�.�?�+;'��2�M;����-.���*09,'9�$34���9:/���/'9�� ���"��9:564��77�N;'��2*1� �09<�5O�*12���-)�.<2'<�����'2<;'�2�&�&' (�'��+;'�2*1$���� !3�?�� ����� �<�P" 4�����77�Q9<;:2< *�(2'�1;-&.� �&�6� ��.02#��&�<1'�2&.����+;'A������?�� ��������� +�$*+�, �/9.�/56�P!3���������������P!,'9�$34����������77�R2 <�+;'�����'2<;'�<;�+ � .1���������9:/���/'9�� ��GG477�C�*'�:��<�&' (�'�*;9�<�������&����� +�$*+�, �/9.�/56�P!3�&'(�P!,'9�$34����P; �/�;������&

Page 178: SystemVerilog for Verification

�������������� ��������������������������������� �!�����"��#�����$������%"��&#'(�)�*#�����#���+,#-��������.���"��#��/������0!�#�0�1�#��!��2��0������0!����$��3������"��&+'4���%(-����+�#�5��������0�����6�#��$�������*��������!����$#�#!� �����#"�7�����$��3�8��#"����5)���3����2�#��%��"5*��5����#�*�,,�9(-����)�*#��������������%:59995999(�;%<1&9'4�)�(-������=0#!���>%?;@9�8�@"�A<<B<8�C����������#"�����? �=�#"�(-�������$*4�A����!DD-������0��+�#�5��>��0#!�)����#"����5)���3-�����6�#��$�������0�������$��2������*��!2#��� �#����"��#���! �������0�!����)���0!���������%:5999(�;%<1&9'4�)�(-��0��!3�8������7777777777777777777777777777777777777777777777777777777777777���E�!�7��������������������#�*$����#���/�#0�A�/#���"���882���5��%(-��=0#!���>%?;@9�8�A�0��$�!#" �@90������! �@90�2���#�*!? �����������=�#"� ��$*4�A����! ��$*4�6���#�*!(-��!�)42���5��-��0$����#���8�2���5��FGHIJHKGLMINOPQRSOTUOVWWXYQZ[I\]I_J aHIbbcdIeL]]HeKfIKGHIfeLgHhL_gMIKLIKGHMg\iHgI_]MIJL]\KLgIj\KGIKGHIe_aah_ekIea_fflIjG\eGI\fIfGLj]I\]I_J aHIbbcmlnoXpqRQPURpoXrcIFG\fIea_ffIfH]MfIKGHIHsHeKHMIi_atHfIKLIKGHIfeLgHhL_gMcIFGHIh_fHMg\iHgIe_aah_ekIea_fflIqRQPURpoXrlI\fIfGLj]I\]I_J aHIbbcuvc ��������������� �������������� �������������������� !""#$!%���&�'(!'��))!'*++ ',)!-./0 .!�+-!)'*. &*�.-12344561789:;<=:81745=>?=@A459:;<=:8174B5561C:=7C3:A5417B55DE@1?;C@5@=FG;@HE?561C:=7C3:A5417IB5555?J;4K4175L5417B55=@ADE@1?;C@5M5@=F55NN56=@A5:=1=;<=A51=225?C541C:=7C3:A55<;:?E325?34O5HC4?8?>G;@HE?59:;<=:5A:<P5555;@HE?5QRS81=2251=22IB5555417K43<=8=>H=1?=AG1=22IB55=@A?34O5M5HC4?8?>=@A123445M561789:;<=:8174TUVWXYZZ[YX\WXZY]]W_WYabZVWccdefWghijklmnolpjhiqfWXr__VXs]WsUVWar_srtWusUsUVW]XrtV[rYtvdWTUVW[Y]VWar_srtWXYZZ[YX\WXZY]]fWklmnolpjhiqfW]W]Uru_W_WYabZVccdwcd����� !""#x!%���&�'(!'��))!'*++ ',)!�*+/,*.!�+-!)'*. &*�.-1234456178yC@;?C:81745=>?=@A45yC@;?C:8174B5561C:=7C3:A5417B55DE@1?;C@5@=FG;@HE?561C:=7C3:A5417IB5555?J;4K4175L5417B55=@ADE@1?;C@5M5@=F55NN56=@A5:=1=;<=A51=225?C541C:=7C3:A55<;:?E325?34O5HC4?8:>G;@HE?5yC@;?C:5zC@P55555555555555555555555;@HE?5RRS81=2251=22IB5555417K1J=1O831?E32G1=22P5zC@K{C:?S9IB55=@A?34O5M5HC4?8:>=@A123445M56178yC@;?C:8174TUVWV_|tr_aV_sWXr__VXs]WsUVWar_srtWsrWsUVWXr|VtY}VWXZY]]WusUWsUVW~_YZWXYZZ[YX\XZY]]fW�l�jklmnolpjhiqfW]Uru_W_WYabZVWccd�dW

Page 179: SystemVerilog for Verification

�������������� ������������������������������� ��!��!"���� #!�$�� %���&�$�'�()*++,-./01.234.50(6+,784729+,1.234.50(6+:,,-./75*;7,(./:,,<=2(43.2,27>?32@=4,-./75*;7,(./A:,,,,4B3+C(./,D,(./:,,729<=2(43.2,E,27>,,FF,G729,57(73/79,(7)),4.,(./75*;7,,/354=*),4*+H,@.+4058?32@=4,1.234.5,I.2J,,,,,,,,,,,,,,,,,,,,,,,32@=4,KKL0(7)),(7))A:,,,,-7))-<;MN@7,-7))-<;,D,4.@C+O=*4C)=4C57*9?(7))CPQLA:,,,,(./C+*I@)7?I.2CQ.54LRJ,-7))-<;CSTRA:,,7294*+H,E,@.+4058729()*++,E,-./01.234.50(6+UVWXYZ[\] X_][abcYZda][X_eZffXVWZ\WYXafXfV]g[Xa[XhZieWX��j�kjXldXfdZYdfXgadVmnoppqrXZXYZ[\] XsZecWX]YXdVWXd]dZeX[c tWYX]X_WeefXdVZdXe]gXdVY]cbVXdVWXfufdWjUVWX_][fdYZa[dXvwmnoppqwxypz{XW[fcYWfXdVWX[c tWYX]X_WeefXafXsZea\XtuXtWa[bbYWZdWYXdVZ[X|WY]rXgVWYWZfXvwmnoppqw}oyq~my�po�eaadfXdVWXdWfdXd]XZXYWZf][ZteWfa|WrX�rkkkX_WeefjX�]cX_Z[X\afZteWX]YX]sWYYa\WXdVafXaXu]cXgZ[dXe][bWYXdWfdfj�W�dXafXZX\u[Za_XtadXZYYZurXzmw�qow��rXd]XfiW_auXgVa_VX��X_VZ[[WefXa[d]XdVWfgad_VXZYWXZ_dasWjXUVafXafXcfW\Xa[XhZieWX��j�Xa[XdVWX}�mXWdV]\Xf]XdVZdX][euXZ_dasW_VZ[[WefXYc[jUVWXZYYZuXvoppqw�o}wv�ymXafXcfW\Xd]XYZ[\] euX\asa\WXdVWXd]dZeX[c tWYX]X_WeefZ_Y]ffXdVWXZ_dasWX_VZ[[WefjXUVWX_][fdYZa[dX�o}~w�m�qo{wv�ymmopqXfWdfXdVWX[c tWY]X_WeefXd]X|WY]X]YXa[Z_dasWX_VZ[[WefjXU]XVWeiXdVWXf]esWYrXdVWXZ_dasWX_VZ[[WeXZf�Xaff]esW\XtW]YWX\asa\a[bXciXdVWX_WeefXtWdgWW[X_VZ[[WefjX�dVWYgafWrXZX_VZ[[WeXg]ce\XtWa[Z_dasWX][euXaXdVWX[c tWYX]X_WeefXZffab[W\Xd]XadXgZfX|WY]rXgVa_VXafXsWYuXc[ea�Weuj ��������������� �������������� �������������������� !""#"$!%&'()*&� &+!,*&-(./)�+(*&!,��001234456789:;<55:8=58>??7?4@58A3?8:8;4<55BB5CDEFG?5795G??7?4@5H3?8:8;455F:=5IJKLMN58DEOP@58DEQP<5BB567RS5795R3?3EG=G?455?38T5F:=5IJKLMN586G224<55BB5Q7=3251G224551784=?3:8=51U86G224UV32:T55555W86G2245X5M<5Y551784=?3:8=51U86G224U?G34783F2G55555W86G2245Z5KMMM<5Y55?38T5F:=5:8UD4GUOPIN<55555BB5[8RD=5B57D=RD=51\388G25G83F2GT551784=?3:8=51U:8UD4GUV32:T5555W:8UD4GUOP]4DE5X5M<5Y555BB5=52G34=578G5O_5:45G83F2GT55?38T5F:=5IJKLMN51G224URG?U1\38IN<551784=?3:8=51U4DEU81G224U4DE55BB5R2:=51G22457VG?532251\388G245555W1G224URG?U1\38]4DE5aa586G224<Y5555BB5Q7=3258DEFG?57951G22455BB5G=5=\G51G22517D8=5=75bG?7597?538S51\388G2587=5:85D4G551784=?3:8=5bG?7UD8D4GTU1\388G245555W97?G31\5c1G224URG?U1\38I:Nd555555W5555555BB5CGGTGT597?5GVG85T:4=5795:8UD4G5555555472VG5:8UD4GUOPI:N5FG97?G51G224URG?U1\38I:N<5555555:95c:8UD4GUOPI:Nd55555555551G224URG?U1\38I:N5:84:TG5WIKL86G224NY<555555555G24G51G224URG?U1\38I:N5aa5M<5555555Y55555Y55GP=G?859D81=:7858GHc:8RD=5F:=5IJKLMN58DEOP@58DEQPd<55GP=G?85V:?=D3259D81=:785V7:T5T:4R23Sc:8RD=54=?:8;5R?G9:Paeed<G8T123445L56789:;fghijhkkilhmlnonpqirpsitulmrlsnpqijuptnqvlronupiowxhinyiygumpinpizr{xkhi||}||}����� !""#""!~ ��!,*&-(./)�+(*&!+�� =SRGTG954=?D1=5R31�GT5W55F:=5I�QP�7?=4�KLMN5�A�<55F:=5IKKLMN5��[<Y56G2269;QSRG<fghi{hogusyitulioghijuptnqvlronupijkryyirlhiygumpinpizr{xkhi||}|�

Page 180: SystemVerilog for Verification

�������������� � �������������������� �!����"��##���!$�%#&'()*+,(-.,(&+/00(123+(4'*-5+*-67809:-(';<=>-(';?=@A--*B+CD(';<=-E-(';<=A--+(F'C1F<=-E-(126(';<=:A--*B+CD(';?=-E-(';?=A--)1GGCF41HF)BI(-E-(126(';<=:A1(J&'()*+,(-0-(12&'()*+,(-K,+J-.,(&+/00J+C4GIL3+(4'*-C*H+(/-4H1&+=@A--M2H+*13NOC.,(&+/0-(';<=EO9J>-(';<=EO9J>-(.1GGCEO9J-3N>----------4H1&+=>-(';<=>-(';<=>-(.1GGC@A--&,H1I)B-3)1GGCF41HF)BI(6+:@----M2H+*13NO9J-N>-)1GGCF41HF)BI(6+:@A--M2H+*13N@>-1(I5G1J-<P0-N>-4H1&+=@A--&,H1I)B-3+(F'C1F<=6+:@-+&-3+(F'C1F<=6+:@-M2H+*13NO9J-N>-+@A--MJ+C4GILA-1(J&'()*+,(-0-J+C4GILQRSTUQVTWXYZ[RT\[[S]ZWT_abcde\ZZSfT[SggWT\hfTWShfWTciZT__Tbcde\ZZSfT[SggWjQRSWST[SggWT\dSTWShZTZRdcikRTlcZRT\hTmmnTZSWZlSh[RT\hfT\TWZdi[Zid\gTfSWYkhoT\hfTWcZRSpT\dSTfSbYhSfTiWYhkTqrstutvjTQRSTe\wcdTfYbbSdSh[STlSZXSShTZRSTZXcTbcde\ZWTYWZR\ZTZRST_xWTyz{T\hfT|nTbYSgfT\dSTeSdkSfTYhZcTZRST__xWT|njTQRSTfSbYhYZYchWTYh}\e]gST~~j~ TZRdcikRT~~j~~TbdceT}iZRSdg\hfTSZT\gjT������j�����������������"������ ��!*L41J1&-C*H')*-4I)�1J-�--5+*--------6709:--��.A--5+*--------6�09:--���A--5+*--------68�09:-�.�A--5+*---------------.��A--5+*--------6�09:--�?A--5+*--------6�09:--��.A--5+*-690��:-6�09:--�ILG,IJA�-'(+?L41A�����������������"������ ��!*L41J1&-C*H')*-4I)�1J-�--5+*--------68809:-���A--5+*--------68�09:-�.�A--5+*---------------.��A--5+*--------6�09:--�?A--5+*--------6�09:--��.A--5+*-690��:-6�09:--�ILG,IJA�-((+?L41A ��������������� �������������� �������������������� !�"#$� !�%�&&'�"(��)�(*�$�+,-��"�./-��)�)0(/�-0�10()�"�2#,3�('"&�-/4�5'�0+#�,#�6")4&��778798:;<=>?@AABAC@DEFG?>>EH=?IJKLMLNOPQRSQOKTUVLMOWOOPQRXJKLOPQRYOOQQRXJKLOQQRYOOZRIO[\] _O[a]\ObLcYdOeXbfLggXJKLY����-�'-.�#%��*�#�("-�'�%0#'-(",#�$�("#$0)�h�i�%�&&'5�'�0+#�,#�6")4&��7787�5�-�"-"(���j-�#$�$�1(0)�-���klmnop�%&"''5�$�1,#�$�,#�6")4&��q8r�:;<=>?@AABAs@tuvwx?>>@y?z{|{}{~|UgT��O����ULggOL�ILQM�O�T�LX�YOO��O��J�RUTgONRLgM�OO�TQMOZRIOOOOOOOO[�]\OO��fYOO�TQMOZRIOOOOOOOO[a]\OO���YOO�TQMOZRIOOOOOOOO[�]\O�f�YOO�TQMOZRIOOOOOOOOOOOOOOOf��YOO�TQMOZRIOOOOOOOO[_]\OO�XYOOOOOOOZRIOOOOOOOO[a]\OO��fYOO�TQMOZRIO[\]�aO[a]\OO�TJgSTMYOO��ObLIT�MTITONRLgM�OO�ITIRUOZRIO[a]\O�JQM�ScL[\]_ ^YOO�ITIRUOZRIO�JQM�ScL�QSI��LQL�TILMO�O�YOOL�IL�QONPQUIRSQOQL���YOOL�IL�QONPQUIRSQO�SRMOKS�I��TQMScR�L��YOOL�IL�QO�R�IPTgONPQUIRSQOZRIOUScKT�L�RQKPIO�T�LX�OIS�YOOL�IL�QO�R�IPTgONPQUIRSQO�SRMOMR�KgTJ�RQKPIO�I�RQ�OK�LNR�����YOOL�IL�QO�R�IPTgONPQUIRSQO�SRMOUSKJ�MTIT�RQKPIO����ULggOUSKJ�YOOL�IL�QO�R�IPTgONPQUIRSQO�T�LX�OUSKJ�RQKPIO�T�LX�OIS�QPgg�YOOL�IL�QO�R�IPTgONPQUIRSQO�SRMOKTUV�SPIKPIOeXbfLggXJKLOIS�YOOL�IL�QO�R�IPTgONPQUIRSQO�SRMOPQKTUV�RQKPIOeXbfLggXJKLON�Sc�YOOL�IL�QONPQUIRSQO����ULggOIS������YOOL�IL�QONPQUIRSQO�SRMO�LQL�TIL��JQM�ScL��YOOL�IL�QONPQUIRSQOZRIO[a]\O�LUO�ZRIO[��]\O�M��YLQMUgT��O]O����ULgg6")4&��7787��'�0+'�-���)�-�0$'�10(�-���� !�%�&&8

Page 181: SystemVerilog for Verification

�������������� ��������������������������� !"#$%&'()*&+,-./'01122&03456++)$+478&9:*;0/&*(/<0&0:=(095++++<0&0:=(0/78&9:*;04560&9$%&'()*&+2+&03>>+?*;@%(0+(A0+BC?+D=1%0+=$(0:+=11+*(A0:+9=(=+A=7+E00&+'A*70&$%&'()*&+D*)9+,-./'01122@*7(/:=&9*;)F0456++BC?+G+A0'4HIJ?K+LM.K+L?.K+?NMK+MOP560&9$%&'()*&+2+@*7(/:=&9*;)F0>>+?*;@=:0+(A)7+'011+3)(A+=&*(A0:>>+OA)7+'*%19+E0+);@:*D09+E8+(011)&<+3A=(+$)019+;)7;=('A09$%&'()*&+E)(+,-./'01122'*;@=:04)&@%(+Q=70O:+(*56++,-./'011+'0116++R'=7(4'011K+(*56++)$+4(A)7SIJ?+TG+'011SIJ?5+++++++++:0(%:&+U6++)$+4(A)7SLM.+TG+'011SLM.5+++++++++:0(%:&+U6++)$+4(A)7SL?.+TG+'011SL?.5+++++++++:0(%:&+U6++)$+4(A)7S?NM+TG+'011S?NM5+++++++++:0(%:&+U6++)$+4(A)7SMO++TG+'011SMO5++++++++++:0(%:&+U6++)$+4(A)7SBC?+TG+'011SBC?5+++++++++:0(%:&+U6++)$+4(A)7SM=81*=9+TG+'011SM=81*=95+:0(%:&+U6++:0(%:&+V60&9$%&'()*&+2+'*;@=:0>>+M:)&(+=+W@:0((8X+D0:7)*&+*$+(A)7+*EY0'($%&'()*&+D*)9+,-./'011229)7@1=84)&@%(+7(:)&<+@:0$)Z56++[O\?011O8@0+@6++R9)7@1=84]7,-.+)92U9+IJ?GZK+LM.GZK+L?.GZK+?NMGEK+MOGZK+BC?GZK+M=81*=9_U GZ]K+++++++++++++@:0$)ZK+)9K+IJ?K+LM.K+L?.K+?NMK+MOK+BC?K+M=81*=9_U56++(A)7S@='a4@56++R3:)(04]7]K+@:0$)Z56++$*:0='A+4@S\0;_)5+R3:)(04]Z+]K+@S\0;_)56++R9)7@1=860&9$%&'()*&+2+9)7@1=8>>+?*@8+(A0+9=(=+$)0197+*$+(A)7+'011$%&'()*&+D*)9+,-./'01122'*@8/9=(=4)&@%(+,-./'011+'*@856++'*@8SIJ?+++++G+(A)7SIJ?6++'*@8SLM.+++++G+(A)7SLM.6++'*@8SL?.+++++G+(A)7SL?.6 ��������������� �������������� ���������������������� !"�����#�$%&'� !"(�������")������#�$%&'�")(�������*+ �����#�$%&'�*+ (�������",�-�,.�#�$%&'�",�-�,.(/0.120�$&�0�3�����4.,$,55�6,7/�,�������1�$%&'��89/�$120�$&�0�:,'/);�<=>4�/--33����?&0�2$�:,'/);�$�@(��<=>4�/--�.'$(��&1�?$��##�02--@�.'$�#�0/A?@(��/-'/������������B�,'$?.'$C�$�@(������4.,$,?.'$@(��;/$2;0�.'$(/0.120�$&�0�3�����55�",�7�$%&'��89/�$D'��;��/;$&/'�&0$��,�8�$/�,;;,�120�$&�0�E�&.�<=>4�/--33�,�7?�2$�2$�F)6 /--)��/�$�@(��$��20&�GH �����#�$%&'�GH (��$��20&�I">�����#�$%&'�I">(��$��20&�I >�����#�$%&'�I >(��$��20&� !"�����#�$%&'� !"(��$��20&�")������#�$%&'�")(��$��20&�*+ �����#�$%&'�*+ (��$��20&�",�-�,.�#�$%&'�",�-�,.(/0.120�$&�0�3��,�755�<0�,�7�,�8�$/�,;;,��&0$��$%&'��89/�$120�$&�0�E�&.�<=>4�/--3320�,�7?&0�2$�F)6 /--)��/�1;�J@(��$%&'�GH �����#�1;�J�20&�GH (��$%&'�I">�����#�1;�J�20&�I">(��$%&'�I >�����#�1;�J�20&�I >(��$%&'� !"�����#�1;�J�20&� !"(��$%&'�")������#�1;�J�20&�")(��$%&'�*+ �����#�1;�J�20&�*+ (��$%&'�",�-�,.�#�1;�J�20&�",�-�,.(/0.120�$&�0�3�20�,�755�G/0/;,$/�,�==>��/--�1;�J�,0�<=>��/--�K�2'/.�&0�'��;/8�,;.120�$&�0�==>4�/--�<=>4�/--33$�4==>?@(��==>4�/--�����(�������#�0/A?@(�������I">�����#�$%&'�I">(���55�==>�%,'�A&./;�I">�������I >�����#�$%&'�I >(������� !"�����#�$%&'� !"(�������")������#�$%&'�")(

Page 182: SystemVerilog for Verification

�������������� ������������������������������������ �!� "��������� �!� "���#$�%#&������$&"'%&����&�(���)**+,,�-$&$# �$���$���&"#�.$� ## �/�0��������%�$"������.�%�$����'%&����&�1��"�2*+)�$!!((3$&$# �$)��&"#�.$45����6���78(9:��&"#.����'�#�4�&������9����;�<=>��������?�@�5�6$3�&�������&"#.�����������#$�$ ��4A5�6$3�&����������'�4�&"#.78:�����@B6@5������������&"#.���4�&"#.�;;�@5�C�AB�98����������$!�$������������&"#.����&"#.�;;�@�������$&"��������&"#�.$7�:����&"#.����$&"�����&"#�.$)&��)3$&$# �$"���9�$&"'%&����&�(�3$&$# �$)��&"#�.$,,���.�%�$���$�����1 !%$�'�#�������6D$��'%&����&�6���78(9:�2*+)�$!!((�$��46���7E@(9:��"#5�����$����AB�99����#$�$ ��4F5�6$3�&�������$������&"#�.$7�$��C��"#7E@(<F::��������"#����"#�;;�A����$&"����$�����$��C�AB�==�$&"'%&����&�(��$�GHIJKKLMNOPPJQRSTTJUTJSRVWTXJUYIZXUQSRJXWJ[KLMNOPP\JI]QIXJXHSXJUXJYWITJZWXJHS_IJSabJcUIRY\JWdJSJVIXHWYJXWJQWZ_IdXJXWJSJ[KLMNOPPefSV RIJggeghJTHWiTJXHIJjklJQIRRTJdSZYWVJSXWVUQJmIZIdSXWd\JSTJWdUmUZSRRnJTHWiZJUZfIQXUWZJheoeJGHIJmIZIdSXWdJdSZYWVUpITJXHIJqRrIdUZXJUZTXSZQIJWcJXHIJjklJQIRR\JSZYJXHIZTIZYTJWrXJSJQWnJWcJXHIJQIRRJXWJXHIJYdU_Ide ��������������� �������������� �������������������� !""#"$!%&'() * +�,-+!.��//01233456789:;:<2=><?4456780:114@1A:B<C;=?4DD4E1A:B<C;=4F><49:;:<2=><44G2C1@>H449:;IJ<K?444DD4L2C1@>H4=>4J<CK:<4F><40:11344:K:;=4444J<KI9:;?444DD4MK:;=4F<>G4J<CK:<4NO:;4J>;:4NC=O40:1144C;=444444;P:113?4444DD46AG40:1134F><4=OC349:;:<2=><4=>40<:2=:44C;=444444Q><=7R?4444DD4SOC0O4TH4B><=42<:4N:49:;:<2=C;9U44FA;0=C>;4;:NVC;BA=4G2C1@>H49:;IJ<KW444444444444444C;BA=4:K:;=4J<KI9:;W444444444444444C;BA=4C;=4;P:113W4Q><=7RX?4444=OC3Y9:;IJ<K4Z49:;IJ<K?4444=OC3YJ<KI9:;4Z4J<KI9:;?4444=OC3Y;P:11344Z4;P:113?4444=OC3YQ><=7R44Z4Q><=7R?4444@1A:B<C;=4Z4;:NVX?44:;JFA;0=C>;4[4;:N44=23\4<A;VX?444456780:1140:11?4444<:B:2=4V;P:113X4@:9C;444444233:<=V@1A:B<C;=Y<2;J>GC]:VXX?444444023=V0:11W4@1A:B<C;=Y0>B_VXX?4444440:11YJC3B12_VB3B<C;=FVabc=[4d:;bcJ[4W4=CG:W4Q><=7RXX?4444449:;IJ<KYBA=V0:11X?444444aJ<KI9:;?DD4S2C=4F><4J<CK:<4=>4FC;C3O4NC=O4C=4444:;J44:;J=23\4[4<A;:;J012334[456789:;:<2=><efghijkllmlnkopqrokspjktuvwjukxifookspfskojyzok{|}kxjiiokvysqkspjk~��korvsxpmk�pvoxifook�ojokspjkzuvwjukxfii�fx�okvykefghijkllm��mk|qsjkspfskspjujkvokfkxvux�ifukujifsvqy�opvhkpjujmk�pjk������kxifookpfokfk��j�jkq�k����������kq��jxso�kfyzkspjk��������fyzk���������kgjspqzokvyk����������kfujkhfoojzk������kq��jxsomk�pjyk�q�xqghvijkspjksrqkxifoojo�k�q�kgf�kyjjzkjvspjuk��������� ¡���������¢k�j�qujkspj����������kxifookzj�vyvsvqy�kquk�������� � ¡��� ����������¢k�j�qujkspj������kxifookzj�vyvsvqym����� !""#"£!¤+¥¦ +!.��//=_B:J:F4012334R<CK:<80@3?012334R<CK:<?44G2C1@>H49:;IJ<K?44444DD4§><40:11343:;=4F<>G49:;:<2=><44:K:;=444J<KI9:;?44444DD4:1149:;:<2=><4NO:;4742G4J>;:4NC=O40:1144K5=>BC2TH4TH?44444444DD4©C<=A214CF04F><4=<2;3GC==C;940:113

Page 183: SystemVerilog for Verification

�������������� ���������������������������� !�!��"#��$%%�$�&�"�'��(����)(�*"�(+�����,(��)�#!)�(�")�)�-.�)/!(�0$�%�",�1�)23��4�����������������������)/!(����)(�3��21�)4�����������������������)/!(��5("/�$6,�6,4�����������������������)/!(��)(�*"�(+�7����,(��)�($�&��!).7����,(��)�($�&���)3�.�)/!(�58+���%%���%%7��)3�%$���9����������)�-.79�:")�(�!�(�$�3������"�'��(#!)�(�")�������99)�-.�)/!(�0$�%�",�1�)23��4����������������������)/!(����)(�3��21�)4����������������������)/!(��5("/�$6,�6,4����������������������)/!(��)(�*"�(+�7���(;��<1�)23���=�1�)23�����(;��<3��21�)�=�3��21�)���(;��<6,������=�6,���(;��<*"�(+���=�*"�(+���)3#!)�(�")�9�)�-�����!).79�6!)�(;��3�����<����>�(�(�$)�$�(�")�#�"0�1�)��$("�4���)3��)("��5?($�&�������99�!).7���58+���%%���%%�����(�3�"/�=�@������+)�(�$%�A��/"�(���6,<���<3$($��B=�@���6,<���<�"����B=�@���6,<���<�%$���B=�@���#"��������1�)�������6�$3�(;����%%�$(�(;��#�")(�"#�(;��0$�%�",����1�)23��</��&.��%%7�������1�)9�?,���������*��C(�$)�0�(��$%%�$�&�������#"��$�;�.�������7���1�)���������������</���(,.(;��4���%%4�3�"/7����������#�.3�"/7�3��$�%��?,������")D(�(�$)�0�(�(;�����%%�������)3������%%<3��/%$E.�/�/��)(#.FGH@(9����H@39�F4��(�0�4�*"�(+�77�������)3.��%%7� ��������������� �������������� ������������������������� ! "#$�%& �'#(()#'*�����+�",#'-�.')�/0&12������')�/0&134�� 5 6. -&�7�',((28����,$9�:�;6����<,$=9">3<, .',((28�����?,%�>,�',((�+"�%� -,�%#&()�6����!@9">=<,$8�����;,((� -,�<,$,"# �"�A,�#",�9�$,�A& -� -&��',((���,$9,$9 #�*�:�"B$����,$9.2:�C,$9�#�',((�&$ �� -,�DE; #�*�D"&>,"::�,$9.&$4B �EFG5',((�',((28��H;IJ,((;K4,��* 8��',((34#'*.�* 28��LA"& ,.MC,$9&$<�',((:�M28���+�",#'-�.�* 3I,%0&12���LA"& ,.MN6�M7��* 3I,%0&128�L9&�4(#K8�����G ,"# ,� -"B�)K ,���+�',((��O.?63')"28��?63')"3'(#>�PQ�R8��+�"�.&$ �&QS8�&PQT=8�&UU2�),<&$�������G+�$� �,$#)(,97�(��4����A-&(,�.?63')"3,$�QQQ�RV)R2�O.?63')"28�������H��," �C #" �W+�J,((7�#��," �,$#)(,7��,$9�)K ,�S�.&QQS2����?63')"3��'��PQ�.&�QQ�S28����?63')"39# #�PQ��* 3I,%0&18����O.?63')"28��,$9��?63')"3��'�PQ�VX8��?63')"39# #�PQ�YV)68��?63')"3'(#>�PQ�S8,$9 #�*Z[\]_aabc�defgdhe_ijkl_jm[n[mom[ddpgekmee[ddk\]_m[n[modhe[h[j_m[_in_qfj_[ri[qh_j[m_ kdhj[rd\khh_ibsekdm[dde[d_\]hth[dodpgekme[j_ud_inti_q[uhbvh_dhm[d_m[r_wh_rihekdm[ddhfkrx_mhr_gn_e[lkfjkrhe_ijkl_jgkheyfuhe[lkrzhfme[rz_[rtmfi_krhe_ijkl_j

Page 184: SystemVerilog for Verification

�������������� �������������������������� ��!����""#$%&'&()*+,--)./01&/2*+,--)./01&/3*4-2))10/#5,+)#,-6)%/&3#7809%5#)./01&/)'/1:))))))))))))))))))))))09%5#);<=3*&++)*&++:))))))))))))))))))))))09>5#)40#)'/>%?2))&9'#,-6)@)%/&3#7))10/#5,+)#,-6)%>-#3#7809%5#)./01&/)'/1:)))))))))))))))))))))))09%5#);<=3*&++)*&++?2))&9'#,-6)@)%>-#3#7&9'*+,--)@)./01&/3*4-ABCDEFGHIFJDKLMNNDBMNDMDOCPQDNRSTLCDKMLLUMKVWDXRYBDZ[NYD\]CDYMNVDYBMYDRNDKMLLCDM_YCPDMKCLLDRNDPCKCROC`�������������abc�db������ ��!����""#$%&'&()*+,--)e>90#>/2*+,--)e>90#>/3*4-2)))10/#5,+)#,-6)%>-#3/7809%5#)e>90#>/)'/1:))))))))))))))))))))))))09%5#)<<=3*&++)*&++?2)))&9'#,-6)@)%>-#3/7&9'*+,--)@)e>90#>/3*4-fMSTLCD��ggDNB\XNDYBCDEFGHIFJDKLMNNDhRVCDYBCDiJHjkJDKLMNNWDYBRND[NCNDMDIlmknkoY\DUPCMVDYBCDKRPK[LMPDK\STRLCDCTC]C]KQDXRYBDEFGHIFJpqrs�������������tu��abc�db�����""#$%&'&()*+,--)e>90#>/3*4-2*+,--)e>90#>/2))1;#>%0,v7)v72))))))))))ww)x0/#5,+)09#&/(,*&)y0#z)>5#%5#)>().;v))e>90#>/3*4-)*4-{|}~2)))ww)�5&5&)>()*,++4,*6)>4�&*#-))09#)�>/#=.2))&7#&/9)(59*#0>9)9&y809%5#)1;#>%0,v7)v7:)09%5#)09#)�>/#=.?2))&7#&/9)#,-6)/598?2))&7#&/9)#,-6)/&*&01&)8>5#%5#)<<=3*&++)*&++?2&9'*+,--)@)e>90#>/ww)9&y8?@)*>9-#/5*#),9)>4�&*#(59*#0>9)e>90#>/@@9&y809%5#)1;#>%0,v7)v7:)09%5#)09#)�>/#=.?2))#z0-�v7)))))�)v72 ��������������� �������������� ��������������������� !"#�$%�&�!"#�$%'()*+,)-��")�.�)(/00�#,)12.�3,)���(�4")��"#�5�6�7")��"#..#,)12'��88$9-(::�-(::'��+"#(;(#�<(=�)����#(-(�;(1-(::2'����+"#(5-��1-<�>?�@2������-<�>?�@ A"��9#B1����C�-(::2'��00�!"��D#(-(�;(�-5::<5-6��()*()*�5�6�.�#,)00�#(-(�;(12.�3(5*�-(::�+#"4���(�%EFC�A5-6��)�"�5�88$�-(::�5�6�7")��"#..#(-(�;(1",�A,��88$9-(::�-(::2'��GF7H(::FIA(�!6�'��FB -<� -:5;�J&�K'��/��:(�1FB -<� �"-�L&&�KM<K�NN�FB -<� ()�L&&�KM<O2����P1FB -<�2'��+"#�1�)���&O'��J&QR'��SS2�<(=�)����00�$+�)"��()5<:(*C�:""A����/��:(�1FB -<� ()�L&&�KM<O2�P1FB -<�2'����!6� 7(4?�@�&�FB -<� *5�5'����P1FB -<�2'��()*��FB -<� -:5;�J&�O'��-(::�&�)(/12'��-(:: ,)A5-61!6�2'��-(:: *��A:5I1TA�A#�)�+1UPVO�.�7")VO*.�UC�T��4(C�!"#�$%22'()*�5�6�.�#(-(�;(WXYZ[\]Y_] aZbYc[ZYdeY\cYaZ\Yff[Zg]hZcXYZaijYZcX]kbXZcXYZgkl\ci]lmnopqprsptupvwZlaZcXYZ\Yff[Z\ckffxZY\YijYaZ_xZcXYZh]lic]ZyicXZcXYZgkl\ci]ltzpt{qntu|n}~ZWXYZgkl\ci]lZmnopqprsptupv��Zi[Z\ffYaZg]hZcXYZ\ff_\��t�q���op�qt�m��s�muqur��wZ[X]ylZilZ�hefYZ��~�~ZWXYZgkl\ci]ltzpt{qntu|n}��Zi[Z\ffYaZg]hZ�t�q����u��qt�m��s�muq�r��ZilZ�hefYZ��~�~

Page 185: SystemVerilog for Verification

�������������� � �������������������������� ����!!"#$%%&'()*"+,"*##%-&&../,"*##&0123-&&45+&4*()*"+6&4$"+7$#-*58"#$%%&9&'()*"+,"*##%"#$%%&:";<*=;$<8-&&>;5?4@&"?@-&&'()*"+,"*##%&*()*"+,"*##%13-&&../,"*##&"*##0123-&&45+&4*()*"+6&4$"+7$#-&&*(+*<5&?75"+4;5&5*AB>;5?4@&"?@C-&&*(+*<5&D4<+7$#&?75"+4;5&D;48&A<$),7)BC-&&*(+*<5&?75"+4;5&D;48&%$D*,*()*"+*8BE./,"*##&7"*##C-&&*(+*<5&?75"+4;5&D;48&"F*"G,$"+7$#B45)7+&../,"*##&"*##6&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&45)7+&45+&);<+5C-&&*(+*<5&?75"+4;5&D;48&84%)#$HB%+<45@&)<*?4(IJJC-*58"#$%%&9&:";<*=;$<8?75"+4;5&:";<*=;$<8995*AB>;5?4@&"?@C-&&+F4%K"?@&I&"?@-&&*()*"+,"*##%&I&5*A1.7LM(3-&&?;<*$"F&B*()*"+,"*##%143C&&&&*()*"+,"*##%143&I&5*ABC-*58?75"+4;5&9&:";<*=;$<8?75"+4;5&D;48&:";<*=;$<899%$D*,*()*"+*8BE./,"*##&7"*##C-&&../,"*##&5"*##&I&7"*##K+;,../-&&>*##>?@MH)*&>*##>?@&I&+;)K%07$+K#7+K<*$8B5"*##KNO/C-&&284%)#$HBJPQR+9&:"=&%$D*9&NO/IQR(6&S;<A$<8IQ=J6&&&&&&&&&&&&2+4L*6&5"*##KNO/6&>*##>?@KSTUC-&&5"*##K84%)#$HB2)%)<45+?BJPQR+9&:"=&%$D*9&J6&2+4L*CC-&&VV&S458&$##&M(&);<+%&AF*<*&+F4%&"*##&A4##&=*&?;<A$<8*8&&?;<&B45+&4IR-&4W.7LM(-&4XXC&&&&4?&B>*##>?@KSTU143C&=*@45&&&&&&*()*"+,"*##%143K0K)7%F,=$"GB5"*##C-&VV&:$D*&"*##&45&+F4%&0&&&&&&*()*"+,"*##%143K4*()*"+XX-&&&&&&4*()*"+XX-&&&&*58*58?75"+4;5&9&%$D*,*()*"+*8 ��������������� �������������� �������������������� !�"#! $"%�!&'(!)&$**�+'�,-)���)./ �0��"112-�'.."�'..3""""""""""""""""""""""""""""""""""""""" �0��" ��"0!&��45""112-�'.."6)��+5"" ��"6)��+- $75""�'..8$ 90.):/;090& ���/<=>?�*"%�("�+'�,*"<3";� 6'445"" �"/'70'��-�'..9@0!&��A8B89 C'/4"DD"?4"('E �"""";$ 90.):/<=>?�*"FGGHG*">6"�'.."�!�"�!��$3"%IJ"KL>?$"'60�:<3""""""""""""";� 6'3"0!&��45""""�'..8$ 90.):/<1!�"M!��$*"<45""""��E8�F&&!&9NN5""""&'��&�5""'�$""'70'��-�'..9@0!&��A8 )���).NN5"" )���).NN5""�!&')�+"/'70'��-�'..9@0!&��A8B@ A4"('E �"""" �"/'70'��-�'..9@0!&��A8B@ A8�!60)&'/�'..44"('E �"""""";$ 90.):/<=>?�*"O)��+"�!��$"�!&"�'..<3";� 6'45""""""'70'��-�'..9@0!&��A8B8$'.'�'/ 45""""""&'��&�5""""'�$""'�$"";$ 90.):/<=>?�*"FGGHG*">6"�'.."�!�"�!��$<3";� 6'45""�'..8$ 90.):/<1!�"M!��$*"<45""��E8�F&&!&9NN5'�$����� !�"*"�+'�,-)���).PP"Q& ��"'�$"!�"9 6�.)� !�"&'0!&������ !�"#! $"%�!&'(!)&$**R&)0-�0/45"";$ 90.):/<=>?�*">6">?$"'70'��'$"�'..93">?$")���)."�'..9"&�#$<3""""""""""";� 6'3" '70'��3" )���).45""PP"S!!,"�!&".'��!#'&"�'..9""�!&')�+"/'70'��-�'..9@ A4"('E �"""" �"/'70'��-�'..9@ A8B89 C'/44"('E �";$ 90.):/<=>?�*">6"�'..9"&'6) �" �"%IJ"K7@>?$A")�"'�$"!�"�'9�<3"""""""""";� 6'3" 45""""�+ 98$ 90.):/<T��.) 6'$*"<45""""��E8�F&&!&9NN5""'�$"""'�$'�$����� !�"*"R&)0-�0

Page 186: SystemVerilog for Verification

�������������� ����������������������������������������� �!���"#��������$%%��%�$�������&����'���������((���)"�#*�����%�)����+,-��.���)"�#*/012�(�1!��������12���+)��������""� �12�����$�"����&�/ �.��!� ���+)��� �����$�",-����������*�+)���3��""�4�5,���%������.���)"�#*/6+412�5(��+)712� ����712�/ ������������� ��+)���3��""�4�58��+)��� ��+)���3��""�4�58����$�",-����������*�+)���3��""�4�5894:5,�����+)���3��""�4�5894:58���)"�#*�����������������.)�)�����*/1�'���������(�6+12�(�/ �)����+ ��,,-���������$�������(����)"�#;<=>?@ABBCDEAFGHIFAJG@AK?<FFALF@MAJHAN<JG@OAPLQKJRHQ<?AKHS@O<N@CA;RQK@AJG@AKHS@O<N@HQ?TA?HHUFA<JAM<J<ARQA<AFRQN?@AK?<FFVAJG@AKHS@OANOHL>ARFAM@PRQ@MA<QMARQFJ<QJR<J@MARQFRM@JG@AWXYZ[\]ZAK?<FFCAG@AM<J<AS<?L@FA<O@AO@<MA_TAJG@AK?<FFFAa\bcdZefA=@JGHMVAJG@QJG@AKHS@OANOHL>FAa\bcdZef=@JGHMARFAK<??@MAJHAO@KHOMAJG@AS<?L@FCghijklmnnopqmrstuvwxthkmuxylzh{lmukh||�"����}�&���%�-������4~(25����-������4�$!6+�~(25����-����&��%��$)�}�3�������-������&��)�����������������������45�7��42(�5�-��������)����8���%���7�2-�������&��)�����������������������45�7��4~(~�5�-�����%��������772��������)����8���%���7�2-�������������� ����-�����%��$)�(�}�3����������$����������-����}�3��������7����-�������������������������&��%��$)������$�������(���������'�!)"����)$���������$�������&������!)"�*��)$������4~(25���� �������������������������)$������4�$!6+�~(25����,-����.���)"�#*/012�(�}�&���%�(����71�8����71�/ �.��!� ���� ����,-��������8����7����-��������8����7����-����}�3�������8��!)"�*,-������$�������(���!)"�����"����(�}�&���%� ��������������� �������������� �������������������� !""#$%!&'()&!*' !+,-./01230!4��&&!*'�*!4(5*�65&!*' !� *'(7&!*(!7869 !*' :;<!65* 8=�4 #>?@ABCDEEFGHDIJCDKLMNOPQRCPDSB?TTUVWXXYZ[\] _ab_cYYaZ[\]dYefcYYZbVVZfgdhibYVjjkliYmnoopqrcYssYUjihYjfYVjjktliYuWvVbYYZjwfgYUfgcYYvuYmxledytzpqrYf{cYYbyub_wYflwUujwYwb{|aZ[\]dYef}YZjwfgYUfg~cYYbyub_wYuWXkY�w uWV�b]�jXuY|~cYYbyub_wYuWXkY�jXu�_ubY|wuYW}YZbVVZfgdhibY~cYssYUjwfgl_bYYbyub_wYuWXkY�jXu�bWY|wuYW}YjluiluYZbVVZfgdhibY~cYYbyub_wYuWXkY_lw|~cbwUVWXXYpYZ[\] _ab_flwUujwYZ[\] _ab_ppwb{|aZ[\]dYef}YZjwfgYUfg~cYYu�X�efY�YefcYYu�X�UfgY�YUfgcbwflwUujwYpYwb{uWXkYZ[\] _ab_pp�w uWV�b]�jXuY|~cYYef��lX�jbY��YzcYYef�� _Y��YqcYYef��WuW�wY��YqcYYef��bVY��YzcYYef��]��Y��YzcYYef��_]��Y��YzcbwuWXkYpY�w uWV�b]�jXuuWXkYZ[\] _ab_pp�jXu�_ubY|wuYW}YZbVVZfgdhibY~cYssYUjwfgl_bYY�zqYef�� _Y��YWcYef��WuW�wY��YcYef��bVY��YqcYY�zqYef��_]��Y��YqcYY{�VbY|ef��h]�uWUk���q~Y�zqcYY�zqYef��_]��Y��YzcYef��bVY��YzcYY{�VbY|ef��h]�uWUk��q~Y�zqcbwuWXkYpY�jXu�_ubuWXkYZ[\] _ab_pp�jXu�bWY|wuYW}YjluiluYZbVVZfgdhibY~cYY�zqYef�� _Y��YWcYef��bVY��YqcYY�zqYef��]��Y��YqcYY{�VbY|ef��h]�uWUk���q~Y�zqcYY�zqYY�Yef��WuW�lucYef��]��Y��YzcYef��bVY��Yzc

Page 187: SystemVerilog for Verification

������������� ���� ��������������������� !�"# $�%���&��'�()&�������&��*+,��-�.�-''-/%�!$��*���*�01�2��*���3 �$��4%������5��()&��!$��66�*)%��0/-����-)/0��()&���%��-������-�2�����# !�7�%�0��0�����!$��8 -����9:��)-�'�;)���%0�����9!$���)-���%���� $��<�=>>$��??!�@�0�%����*���3 ��3A����8/-�%�)��!$B������3A�C;;����*���3 ��3A����D#B�%�������*���3 ��E+4����$����()&�A-�����F�*���3 �!$�����))�/2G�H���*���3 �$���%���66�E�-�������)-���8 -����9E�-����%0����9!$���)-���%���� $��<�=>>$��??!�@�0�%����()&�������F�*���3 �!$���������))�/2G�H�I��*���3 �!�@�0�%����8��&2����93C1C;F�:���;)�� JKJ��)%���%&� JKJF��J2������ JKJ9F�������������������F��))�/2G�HF�*���3 �!$������8��%�&�$�����%����%���8��&2����9E�-�����9!$�%���&��'�-/%LLMNOPQRSTUVRSOWSXRXYZ[\]_ a[]b\b[]b\cdecf_\]\]Zdgh\h\if_ a[\jjkl\fhm\cnh]\gbZ\o[cp\q[g\rdhs]bcfhb]k\tnche\o[cqrfbdhu\pdn\gaa\v[\rc[fbhe\_fhp\b[]b]u\m[[hmhe\dh\bZ[\_fwdcqnhrbdhfabp\bd\v[\b[]b[mk\xfrZ\b[]b\rfh\bZ[h\v[\cnh\gbZ\mqq[c[hb\][[m]kLLMNMLOyz{TO|}TXROWSXRO~O�{XRO�USO�SQQYZ[\qc]b\b[]b\pdn\cnh\]Zdnam\cdvfvap\Zfo[\wn]b\dh[\r[aau\]nrZ\f]\bZ[\b[]b\h\if_ a[jjkl�k\�dn\rfh\fmm\f\h[g\rdh]bcfhb\bd\bZ[\������\raf]]\vp\[�b[hmhe\bu\fhm\bZ[h ��������������� �������������� �������������������� ��!"#"��$"%&��� "�� %" '�"��(�)%�*�� "&�+%)�")#�,%*�-# �%�."/���" '�0" �0 $%)102"3%4"�#�" )3" $%"��5502"#�," '��"4��%�0 )#��" '�"�4*&�)"%+"��550" %")4�"5%�!�)0�64����0.789:;<=>>?@A=B<CD=EFDG=HI<=J<;;KLMNLOPQORSMPOSTUQSVWSQQXYKOLOPVSVLQTZSQ[RP\]QQ_QKOLOPVSVLQTZSQ[RPa]QQ_bQQQYcSMKTOdaef\]Q\]ghi[RP\]jklQQQQcSMKTOdaefa]Qa]ghi[RPa]jklQQQQUKRfTmUdaVWSQPTmQQQQTZKRSQnMNTUQLWSQUnobpqTZUnRrVQsVZtTLMZPVZSdWtsQQuZtTLMZPVZSQVZtpUnOWWQvMZmTNfkfUVnnQV]SVZrWQvMZmTNpQQUMZWSLOTZSQMZVfUVnnWQwZvVnnWQ QkpQxQQmRZUSTMZQZVyYTZKRSQTZSQ[RP\][RPa]bpQQQQWRKVLdZVyY[RP\][RPa]bpQQVZrmRZUSTMZQiQZVyVZrUnOWWQiQvMZmTNfkfUVnnWQQTZTSTOnQzVNTZQQQQVZtQQZVyY\]Qa]Q[RP\]Q[RPa]QPTmbpQQQQzVNTZQ{{Q|RWSQWTPRnOSVQmMLQkQUVnnQQQQQQvMZmTNfkfUVnnWQUkQQZVyY[RP\][RPa]bpQQQQQQVZtdUmNQQUkpQQQQVZrQQQQVZtdNVZfUmNYbpQQQQ{{QvMZmTNQyTnnQ}OtVQ~RWSQkQUVnnQQQQVZtdzRTnrYbpQQQQVZtdLRZYbpQQQQVZtdyLOKfRKYbpQQVZrVZrKLMNLOPQ{{QSVWS>>?�?@=�8I�H9;�=��H:=�<;;C�'�"��� " �0 "3%4"*#3")4�"�)�# �0"�))%)0"&3"%��#0�%�#553",)%����!"��5502"#0"0'%$���"�#*�5�"��.��."�%4"���," %"*#1�"#"�#55&#�1"+%)" '�",)�(�)" '# "0� 0" '�",)%�"&� .�'��2"��" '�" �0 2"����� " '�0"��$"+4�� �%�#5� 3"#+ �)" '�",)�(�)"�5#00"'#0"&���"�%��0 )4� �,",4)��!" '�"&4�5,"�'#0�.

Page 188: SystemVerilog for Verification

���������� ��� ����������������������������������� !����"�������#��$%&'(&)*+),-'*)-./+-01-++23%)&)*0-0&+.4-+5,*67+8+9:+%)&)*0-0&+.4-+5,*;7+8+9<+++3=-'%.)>;?@67+67ABC5,*67DEF:++++=-'%.)>;?@;7+;7ABC5,*;7DEF:++++/%,@.G/>;01-+*.G:++++.4%,-+H'(./+&1-:+/HI<JK.4/H,L0+M04N.&'4*04->1NM++O4N.&'4*04-+04NJ/H)11+P&.N0&@/Q1@L&'%+07-04L1+P&.N0&@/Q1J++N.&-,)H+-)1I+%&[email protected]%,-+R;S@/0HH+/0HH:+&0G+Q.-+L&'%<J++++TT+6)4L'*HU+L&'%+E+',-+'G+0N0&U+EBB+-&)41)/-.'41++++L&'%+8+3V,&)4L'*@&)4(03B:WW<+88+B<J++04L-)1I+04L/H)11++.4.-.)H+Q0(.4++++04N+8+40X367:+;7:+5,*67:+5,*;7:+*.G<J++++04N>(04@/G(3<J++++04N>Q,.HL3<J++++Q0(.4+++++++++++++TT+Y&0)-0+0&&'&+.4Z0/-.'4+/)HHQ)/I++++++P&.N0&@/Q1@L&'%+L/L+8+40X3<J++++++04N>L&N>/Q1>%,1[@Q)/I3L/L<J+TT+\,-+.4-'+L&.N0&]1+++++04L++++04N>&,43<J++++04N>X&)%@,%3<J++04L04L%&'(&)*+TT+-01-���_�� ������ abcdefbghijkedblmdeblmenloefgpeqocrsegergnjkjseijdiqjpfbteulrrlmcpveibjevocsjrcpjdcpeibcdeqllwxeyloefgpeibjpefkjgijepjmeijdideqnezodie{lscuncpvegedcpvrjeucrjegpsecpzjfi|cpvepjmeqjbg}clkteoicrc~cpveibjebllwdedofbegdefgrrqgfwdegpse{orichrjejp}cklp{jpihbgdjdxabjeijdiqjpfbemgdegqrjeilevjieile����euopficlpgrefl}jkgvjelueibje�a�edmcifbtegirjgdieulkeibjeqgdcfefl}jkevklohxeyloefgpeodjeibcdej�g{hrjeilej�hrlkje{lkjegqloie�nd|ij{�jkcrlveijdiqjpfbjdx ����������� �������������������������� �!�"���"�##!��"����$��������!����%�!%��������&�����##����'���!��������(�"�)�*������������������������%��(�����&'��+,-��.������/��&����!����%0�� �!�"��"������/��� �"��"!�����%��"����"����/�% �"�����1��#!�������%�#!�����%����/��//�/�2!�����%�%!"���%�$�3�(��#�/�%��� %)�4�$�3��������&'�5%�������%��%���������%���%����%������%��$��6��%%)��(� �!�7!%��$�������"����"����%�#��������!�����!%��������&'��� �!���/����$�����/�1��%��(�����%��(�"�/�����/�!�/��%���/�#�� �/�((������"��"���%�%!"���%% �"�����1����$����#!�������%�#!����������%�%��"����(��#�%����/���%���"���������%).//�������� ������&'���//%��3�����/���� �!��%�#!��������%����"����%�/����2��$�����������������/���/�#���%�������/�����������"����������/����%��!"�!��%�(��#�"���!�����)8 %��#�������������/!"�%�����9���"��&�����##���������(�"��+9&�0�������%����$� ��������(�"��$��������::������� �������(�����������!���)�;�"�� �!�/�"��������<�#����=��������!�����$��������>?@ABC�%����#����� �!�"���"��������%��(����$������ �8 %��#���D�������!����)�.//�������� �� �!����"�/��"���"����8 %��#����������!����%)�*��������9&� �!�"���"����"����"�/����������/%�%��#!�!%��"������%�����(����"��#�/�������7!%��E���/%�8 %��#��������$������$�(!�"�������� )�(� �!���3����8 %��#��#�/��������/��%�����"��%!#����#�����/������ �!�$�������"��D��"�����8 %��#��������� �!�"���!%������9&�)�8 %��#��#�/��%�$������#�D"��%!#���#����/%�����2�%��"����"��/�$��������!�������%�2!��������� �!��(�3������%�#!�����),���(��%�����(��(����%�"��������%�/���D"�����"���/�%��$%���$� �!�"�����%%�/�((������/���� ��%�2��$����8 %��#����������/��)�,���%�"��/����(��%�"�������"�����"��%��$������$ �!�"�����%%�"�������2�"6���/�(�����2��$����8 %��#����������/��)

Page 189: SystemVerilog for Verification

�������������� ������������������������������ !"#�$�"%#�&'()*+,-.)*(/)(01234(-)+5).'+-)6'13.(,)-'7/)879)'7/).7)31--)+5.(:,14);149(-)<(./((5=8-.(2>(,+47:)15?)@A)15?).'()2(6'15+6-)7*)'7/).7)?(641,(),79.+5(-)15?).'(+,)1,:9B2(5.-)75)<7.')-+?(-C)D1.(,)-(6.+75-)-'7/)'7/).7)31--)1,,18-)15?)-.,96.9,(-C���������������E�F#�#G���H�I#�"�$�"%#�&'()27-.)<1-+6)?1.1).83().'1.)879)615)31--)<(./((5)=8-.(2>(,+47:)15?)@)+-)15)JKLA.'()�B-.1.(A)��B<+.).83(C)=1234()M�CM)-'7/-).'()=8-.(2>(,+47:)67?().'1.)6144-)1)@)*16B.7,+14),79.+5(A)-'7/5)+5)=1234()M�C�C�� !"#�������N�F# $#G�"O��POH#�P�""����Q�R�PFOG��"�GO%F��#STUVWXYZ[\]_ZYabcXSVbYSbXYdcXVWSdefSbUaXYSbXYSghUWViWdTYdaXVTdXScYXjkXhYYSbSXSdeYljiSbYYYYVWYfSbXYSmnhYSomnphYSqqgYYYYYYrsSkUedtfZupsvYmYupsZwYSwYdcXVWSdefSgghYYjbsjbsUWViWdT&'(Jxyz{L)-.1.(2(5.)?(641,(-)).'1.)=8-.(2>(,+47:),79.+5()|}~Lz{J}�)+-)+234(B2(5.(?)+5)1)*7,(+:5)415:91:()-96')1-)@)7,)@��C)&'()27?+*+(,)�)������))-3(6+*+(-).'1..'+-)+-)1)���),79.+5(A)15?).'(),(-.)7*).'()-.1.(2(5.)?(-6,+<(-).'(),79.+5()1,:92(5.-C)=1234()M�CM)31--(-)��B<+.)-+:5(?);149(-)9-+5:).'()=8-.(2>(,+47:)JKL)?1.1).83().'1.213-)?+,(6.48).7).'()@)JKL).83(MC)&'()@)*956.+75)+5)=1234()M�C�).1�(-)15)+5.(:(,)1-15)+539.)15?)-7).'()���)31--(-).'()1,:92(5.)<8);149(C�� !"#������Q�R�PFOG��"�R%�PF�O�SbXYdcXVWSdefSbXYSgY�YYSYfSomngYWjXaWbYnhYYjekjYYYYYYWjXaWbYS�dcXVWSdefSngh����������#�E !OGF��#P"�G�F�O�&'(Jxyz{L)?(641,1.+75)?(*+5(-).'()3,7.7.83()7*).'()@).1-�)7,)*956.+75A)<9.)9-+5:=8-.(2>(,+47:).83(-C)�)@)*956.+75)/+.')1),(.9,5);149()+-)2133(?).7)1)=8-.(2>(,+47:*956.+75C)�);7+?)@)*956.+75)615)<()2133(?).7)1)=8-.(2>(,+47:).1-�)7,);7+?)*956.+75CM&'()=8-.(2>(,+47:)+5.)+-)14/18-)��)<+.-A)/'+6').'()/+?.')7*)15)+5.)+5)@)+-)73(,1.+5:)-8-.(2)?(3(5?15.C) ��������������� �� ������������������������������������������� ������!"����#�$���%�����&�"���������'�$���� �������� �������������!"����#�$���%��'���(����!��'���)*(�&����������������+,-+���%�.�������!"����#�$���%������/01+,-+(�2��������������,34,5+������''�6�������!"����#�$���%������7,34,5+&�������������,34,5+������$���$.�6�8�" �$6����!"�9���#�$���%(�2��������,34,5+�:���������%��:����"�:��&����6�������8� �����������6�&� ��$����7,34,5+������������!"����#�$���%��"�:��(�;�����������.�$���6���$��9����&���$��<��'���:"���'�$���%�,34,5+������ ������=,>?��$%��������6������ ������@A+(BCDEFGHIJKLHMNCOPQOPHRNGHOCDGHSTHCOHQDESURGVHTWOXRQSOYZ[\Z]_]a[]abc_adeaf__gg_hi]j\d_j]d_[k_h_kjcab[j_ladeal_a[_lmnadeal__bY[Za_lopqrhl_adea_s_kjcab[j_t[bu_mnadeavwf__bjbab]x_mnadeavwf__gg_h_kjcab[j_i]e_e]d_j]d_]e_ydmz[Zu{_ci]j\d_ba__bY[Za_lopqrhl_|d}Ydca_s_kjcab[j_bja_kd}Ydcavwf__~~~____bk_v]ca]x_�s_kd}Ydcavww_�ubeYx]mvl�����lwf__~~~djuYZ[\Z];���������'�$��$����������" ��$�����"��$�!"����#�$���%���6�� ��$��"�������6����$���$������������6��%�����6��'$�%$���&���6����&�����$�����&�'��8�%��&���6���A@+&��������9'�������9������'���(�2�����'�$��6�$������� ����:���������������6����$�������'������� ����������6����$�6(����"������6��������������'�$��6������6������.�$����������������"��$���6�&'�������@/4�=+����������������'��8�%�� �����"�����'�$�� ��$�����������6�6(���"����%����������@/4�=+�������������$����������6��������'��8�%�(IJKIKLH�UPWDGORH�QUGXRQSO���'�$��6���$��������������.����$���$���$���$%������(��"�6������������$%������6�$��9��������@A4�+��6����%�����$���!"����#�$���%������&�:������������:����+4�+���6@A��+(�2���6�$�������=,7����������''�$��6(����������������$���$�������'���.�������������������%�$��$�$�������:�$&��$���.�����$���$��.��������"�����8�������@�(BCDEFGHIJK�H�UPWDGORHVQUGXRQSO�bY[Za_lopqrhl_kjcab[j_bja_]uu x_vbjYa_bja_]{_�{___________________________e_________[aYa_bja_e {bY[Za_lopqrhl_kjcab[j_t[bu_ea[Yn[udxvwf;�������$�6����:�%�����"��$�����6��:"�6����$��%���"���'����$%����������5�A-+���6������������'���$� ����%�.������$$�$���$���"� $������������'��(

Page 190: SystemVerilog for Verification

�������������� ��������������������������� �!�"#$%&���%$'#&(��)&#*�"$(+#��%,'��(#-./0123/45-26734.8/0-./0-90:00-107-;<=905>/?5.0=@00>68>0000005>/?5.0-A123/45-267-B=9@C�����D�E%,'��(#�FG��+HIJKLMINOIPQRLSKISLOTLUITTRVLSKNWXYKLSKRLZ[\LKITLS]WLISJKO_YLVRO_OSOW_TaLW_RLWNLSKRbcTSRdRNOQWYLTOVReLI_VLW_RLWNLSKRLfLTOVRgL\SLOTLcWXNLNRTUW_TOPOQOScLSWLXTRLJW UISOPQRScURTgLhKRLbcTSRdRNOQWYLTOXQISWNLJI__WSLJW UINRLSKRLScURTLITLOSLOTLX_IPQRLSWLNRIVSKRLfLJWVRgLihKRLdfbLTOXQISWNLUNWVXJRTLjklmnopqmL]OSKLSKRLfLKRIVRNLWNLI_cLNWXrSO_RLSKISLcWXLKIMRLOUWNSRVgLsWXLJI_LXTRLSKOTLOQRLITLILYXOVRLSWLISJKO_YLSKRLScURTgthIPQRLuvruLTKW]TLSKRLVISILScURLIUUO_YLPRS]RR_LbcTSRdRNOQWYLI_VLSKRLO_UXSTLI_VLWXSUXSTWLfLNWXSO_RTgLhKRLfLTSNXJSXNRTLINRLVRO_RVLO_LSKRLO_JQXVRLOQRLpjnwxqmgLyNNIcTLIUUO_YLOTVOTJXTTRVLO_LbRJSOW_TLuvg�LI_VLuvgzeLI_VLTSNXJSXNRTLINRLVOTJXTTRVLO_LbRJSOW_Luvg{gF�|�����}�ZISILScURTLIUUO_YLPRS]RR_LbcTSRdRNOQWYLI_VLfbcTSRdRNOQWY fLiO_UXSt fLiWXSUXStPcSR JKIN JKIN~TKWNSO_S TKWNSLO_S TKWNSLO_S~O_S O_S O_S~QW_YO_S QW_YLQW_YLO_S QW_YLO_S~TKWNSNRIQ QWIS QWIS~NRIQ VWXPQR VWXPQR~TSNO_Y JW_TSLJKIN~ JKIN~~TSNO_Y��� JW_TSLJKIN~~ JKIN~~POS TM�OSLWNX_TOY_RVLJKIN TM�OS~LWNX_TOY_RVLJKINQWYOJeLNRY TM�WYOJLWNX_TOY_RVLJKIN TM�WYOJ~LWNX_TOY_RVLJKIN~POS��a�� JW_TSLTM�OSdRJdIQ~ TM�OSdRJdIQ~NRY��a��QWYOJ��a�� JW_TSLTM�WYOJdRJdIQ~ TM�WYOJdRJdIQ~WUR_LINNIc�� JW_TSLTM�UR_yNNIc�I_VQR TM�UR_yNNIc�I_VQRJKI_VQR JW_TSLMWOV~ MWOV~ ������������������ ����������� ���������������������������� �������!�"�#�$� ��!���%�&���'()����*+�,���-� �%�����������./0()����1&�2��"��3%������%+��������45.(65789:;<=��������./8>(?;���"%3@��A�%�#�B���� ��3%�&�+�3"�3%@�2 �����%%���%�C�%3������������3��� �D���#E���FGH�%���������� ��@�A3�"����� ��3%���I���%%�C�%3��&J�2��"����"%3@��/K(8&'L)7&.;K=)(5)&(5)&MK56(5)&=7<M&.;K=)=7<M&:;<58M7&���@�.)=(56&��%3������%�D���C�%3����A��+���'()���@�MK6(:#�B�A3�"�����"������ ��3 ����C�"�� ��3"�����'()NOPQR���������2�3%@� �S3� �� ��3 ������������� ������./0()T7:T<M��� 3"�3 �#UVWUWXYZ[\]_abYcYdc_eYfgchYi]j_ak*���%��lm#n����2����2�+�3�"���"�%%����+�A3�"�������������1������%�D � +�@� �"�%+&2����3����1�2 ���� &���� �D+� �@3"�����������3����A�"�@�������+�3����@����2 ���#�E��-� �%���=7<M��+�������������1�8K4'M7#oc[\pkYUVWqYZ[\]_abYcYrY[c_eYsjat_]auvwxyz{|}~���|{����zux�{y���{�u��u�w�z{y���{y�����u�uzu��{��u�w����|�u�������|�{�u��������UVWVYr]aakt_abY_]YcYo[\pkYrYi]j_ak��3 �1�"�@��������"������������3%��������@�%&��3"�������� �"���� &�����������������,���@���@��D+���@��2����-� �%�����@�%�#�� �+�3 �"�@��"�3%@�D���� �A� ��"����@�%��������"���� �@������-� �%�����@�%��������� ����"������ �"+"%��%�C�%#�H3"���A������"����� ���2������,D���"�3��� �2 ���������1�� �1��#�E��3���C� +�����%�&�����"�3��� ��������������� ��������"���%�!���@�%&�2�������3��&��3��3��&���� �����A����� ��%�C�%3��D��2����"�%%�&���@��������@�����3��� ���3%���%��������"��#UVWVWUY�Yr]ja_kY�_eYo_c_tYo_]cbk*���%��lm#�����2������1�"�@��A� ����,D���"�3��� &�3������������"�C� ��D%�������%@����"�3���C�%3�#

Page 191: SystemVerilog for Verification

�������������� ��������������������������� !"#$�%���$&!'�"()#*���($�$)+�,�%)�-��./01234567894:/;<=9>/461>30?5@AB89C/?D51DE26F>G666666666666661>08?689C/?D51DE26F/G666666666666661>08?689C/?6@585?G666666666666661>08?689C/?62>E4H6I668?E?/16308/J05461<E@61>30?6K6LM6NN6O?E?/161>30?68?>@EJ566/P6B@585?H666661>30?6K6LM6666NN6Q585?6652856/P6B2>E4H61>30?6K6F/M666NN6R>E469E235665285666666666661>30?SSM666666NN6T>30?661>30?6UK6LVAPM666666666666666NN6WE8X63::5@6Y/?66F>6K61>30?MZ[\] __abcdebfghibjkldcmjbcn]bopjqcq]bjkdlm]brkqbjkldcmjsbcdebjtbq\]ubcn]bvcjj]ebcjwxyasbz\k{\bn]e|{]jbqtb}~y�~_i��h�b[\]bkdv|qbybkjbopjqcq]sbcdeb�brkqjbzke]sbcdekjbvcjj]ebcjbwxya�_��hf�b�tqk{]bq\cqbkqbkjbvcjj]ebcjbcb�g~abvtkdq]nsbz\k{\b�]cdjq\]b|de]nmukdlb�cm|]b{cdb{\cdl]sbr|qbut|b{cddtqb{\cdl]bq\]b�cm|]bt�bq\]bvtkdq]nsbj|{\cjb�c�kdlbkqbvtkdqbqtbcdtq\]nb�cm|]�b�k�]zkj]sbq\]b__abcdebfghibkdv|qjbcn]bcmjt�cn�]ebcjb�g~a�b�dbq\kjb]�c�vm]sbq\]b�prkqb{t|dq]nb�cm|]bkjbjqtn]ebkdbcb{\cnsbcdebjtut|b\c�]bqtb�cj�bt��bq\]b|vv]nbrkq�[\]b�km]bwi�y��b{tdqckdjbq\]be]�kdkqktdjb�tnb�ujq]��]nkmtlb���bjqn|{q|n]jbcde�]q\tej�b[\]b�b{te]b]�c�vm]jbkdbq\]bn]jqbt�bq\kjb{\cvq]nbm]c�]bt��bq\]b�y~�f}i_jqcq]�]dqjsb|dm]jjbq\]ubcn]bk�vtnqcdqbqtbq\]bekj{|jjktd��c�vm]b�o��bj\tzjbcb�ujq]��]nkmtlbvntlnc�bq\cqbk�vtnqjbcdeb{cmmjbq\]b�b�|d{qktd�tnbq\]b�prkqb{t|dq]n� ������������������ ����������� ������������������ !�"#$�%&'��"�()!* �#&+" �'�,* $�� � *#�� &'�-�./0123456789:54;<=>3.1=4?1.@4>1<=3A2BC1<30<34D.34EFGHI41<3J44444444444444444444444444444444444444.=0<34D.34EFGHI4.=J44444444444444444444444444444444444444.=0<34D.342AKA3J4L1M@NO021P2M/4M<31/M3.>4>1<=3A2O44D.34EFGHI41<3J4.=O44D.344444442AKA3J4L1M@O44.=.3.ML4DAP.=4444Q/1=.312C5RSG41<3TUV@J4.=TUV@J42AKA3TUH@J4L1M@TUH@W=5J44444444444441<3J4.=J2AKA3J4L1M@NO44442AKA34T4HO4444L1M@4T4HO4444.=4T4XYFO44441<34T4ZYO4444>1<=3A2BC1<3J4.=J42AKA3J4L1M@NO4[[4\00L]4@A;M<L34?ML<AK4444XH42AKA34T4XO4444>1<=3A2BC1<3J4.=J42AKA3J4L1M@NO4[[4\00L]42AKA34444___44A=@A=@021P2M/��������$��$�"a���b� ���c��defghijklmnopqpnqrsfnpttuvwnruxnqunwquyfnpnznuynz{{nsu|}qfyn|}nruxyn~rwqf��fy|tu��uof�n�nghijklmn�py|p�tfn|wnv|ofnf}ux�enquneutonpnsu|}qfynu}nqefn�p�e|}fnvefyfnqef�uofnvpwn�u�s|tfo�n|�f�n���nuyn����|qw�defn�ux}qfyn|}n~p�stfn����nvuy�wnvfttnpwntu}�npwn|qn|wnqefnu}trnu}fn|}nqefnofw|�}�ndef�ux}qfyn�ptxfn|wnwquyfon|}npnwqpq|��np}onwunvef}nruxn|}wqp}q|pqfnpnwf�u}on�ux}qfy�n|qnv|ttu�fyvy|qfnqefn�ptxf�n��nruxn}ffon�uyfnqep}nu}fn|}wqp}�fnu�npnzn�uof�nqefnzn�uof}ffownqunwquyfn|qwn�py|p�tfwnwu�fvefyfnuqefynqep}npnwqpq|�n�py|p�tf�n�n�fqqfynvprn|wnqupttu�pqfnwquyp�f�np}onspwwnpnep}otfnqun|q�nptu}�nv|qenqefn|}sxqnp}onuxqsxqnw|�}ptwn�pt�xfw�n~p�stfn����nweuvwnpn�ux}qfynqepqnwquyfwnqefn���|qn�ux}qn|}nqefnwqyx�qxyfng��nde|w|wnu�fy�|ttn�uynpnw|�stfn�ux}qfy�n�xqn|�nruxnpyfn�yfpq|}�npn�uoftn�uynpntpy�fynof�|�f�nrux�p}n�x|ton�yu�nqe|wnf�p�stf�

Page 192: SystemVerilog for Verification

�������������� ���������������������������� !"#�$���#% &�!'(")�("'#�"*��'# $�)�+,-./012345617,89:+,-./01234;<//=.89:+,-./0123462>,052>89:?@7212A35?>0.?3B33CC3D?>0.?0>23?=39=/13.=0-?2>36</02330-5,E-213.9<>3.-?FG3.HFCC3I=-5?>0.?3<3.=0-?2>35?>0.?0>26=,1J3.=0-?2>HK-2LMN3B33.HJ3.3O3M.HJN3;<//=.M5,P2=AM.HNNF33.Q:.-?3O3RF33>2?0>-3.FGCC3S0-3?923.=0-?2>3A=>3=-23.@./26=,13.=0-?2>HM.H3J,-5?T3333333333333356U,?V2.V</J3.=0-?T33333333333333.=-5?356U,?V2.V</J3,T33333333333333.=-5?356U,?3>252?T33333333333333.=-5?356U,?3/=<1N3B33,A3M>252?N33333,-5?Q:.-?3O3RF33CC3S252?332/523,A3M/=<1N3,-5?Q:.-?3O3J,F3CC3W=<136</02332/5233333333333,-5?Q:.-?XXF3333CC3I=0-?33,-5?Q:.-?3YO3RZHAF3333333333333CC3[<5\30772>3],?33J.=0-?3O3,-5?Q:.-?F333333333333CC3>,?23?=3=0?70?33,=K7>,-?AM_I3.=0-?Oa1T3,Oa1T3>252?Oa1T3/=<1Oa1b-_T333333333333J.=0-?T3J,T3>252?T3/=<1NFGcdefeghigjgkelgmendopqgrstuvwxyzuw{qgnog|okinf}|ngndeg|o}knefghkinjk|e~gcdhifen}fkigjgr��u��wgndjngm}ing�eg�jiiepghknogndeg|j��gnogrstuvwxy~cdeg�g|opeg}ieigndeg���gnji�gg�sz�x�uv�gnogphi��j�gpe�}�gmeiij�ei~gcdegfo}nhkeghi}ie�}�gldekg�o}gjfegpe�}��hk�g�gjkpg��inem�efh�o�g|opegihpe����ihpegjighnglfhneignondegijmego}n�}nigjig��������qghk|�}phk�gndegihm}�jnof�ig�o�g�h�e~gcdegfo}nhkeghipe�hkepghkg�wx�t�wx��~cdegnein�ek|dg�ofgndhig|o}knefgph��efig�fomgndeginjnh|gokeghkgie�efj�glj�i~g�hfinqgnde|o}knefgm}ing�eg|okinf}|nepg�e�ofeghng|jkg�eg}iep~g�e�nqgndeg|o}knefghig|j��epgokgj|�o|�gep�eqgfjndefgndjkg|j��hk�ghnghk��hkeglhndgndeginhm}�}i~g�ofgihm��h|hn�qgndeg|o}knefhighk�o�epgldekgndeg|�o|�g�oeigdh�dqgjkpginhm}�}ighigj���hepgldekgndeg|�o|�g�oei�olqgnogj�ohpgjk�gfj|eg|okphnhoki~ ������������������ ����������� ������������������� !�"#$�%&'��"�()!* �#&+" �'�,* $���')*"� �"#��� &'�-�./0123456789:54;<=>3.1=4>?@=ABC4>1<=3C2DE=CFGHI./0123456789:54;<=>3.1=4J1.A4>1<=3C2D444444G.=0<34>?@=ABC4.=K3L44444441<30<34M.34NOPQR41<3L4444444.=0<344M.34NOPQR4.=L4444444.=0<344M.3442CKC3L4B1@AHI021S2@/4@<31/@3.>43CK3I44TT4UCK343F14.=K3@=>CK41;43?C4>1<=3C244.=.3.@B4MCS.=4444M.34NOPQR41VL41WL4.VL4.WI4444M.344444442CKC3L4B1@AL4>BXVI4444>?@=ABC444.=K3VL4.=K3WI44444TT471.=3K4314K312@SC4.=4:4444.=K3V4Y4>1<=3C2DE=CFGHI4444.=K3W4Y4>1<=3C2DE=CFGHI4444;12X444444;12CJC24ZVQ4>BXV4Y4[>BXVI444444;12CJC24\G01KCASC4>BXVH4MCS.=44444444>1<=3C2DG.=K3VL41VL4.VL42CKC3L4B1@AHI44444444>1<=3C2DG.=K3WL41WL4.WL42CKC3L4B1@AHI444444C=A4444][email protected]\G=CSCASC4>BXVHI4444B1@A4Y4VI4444\G=CSCASC4>BXVHI4444B1@A4Y4QI4444 ^44C=AC=A021S2@/�����_���'���" � *&"�&%�a�#b�c�d��+��efghijklmnhopqrstuvhiwgxlylgihjfzjh{|}hzkgh}ilmnhjfghxzm|mlxz~hkgwkgigmjzjl|mh|ywzx�g�h�z~}gi�heflihkgwkgigmjzjl|mhij|kgihzh�{ijg��gkl~|nh�zklz�~ghzihzh�hzkkz{h|yh|mgv�zk~lgkh�gkil|mih|yhjfgh���h}ig�ho���uh�}jhjflihlihm|�h|�i|~gjghzm�hif|}~�hm|jh�gh}ig��

Page 193: SystemVerilog for Verification

�������������� ����������������������������������� !��"���#"�$"%���$�������&�'�$�(��)���*+��,-./0123145���� !��"��"��"*�$�������&�6$�)��'��$+�������������7��)$���*+��89:;<=>?@A?>BCD<E:=>DF>E>GHAI9C>@AJCEC=>KE<9EIL=M���+��7���"�N����"�������)��O*����P��$��(��$�'�"�����"*������"�Q��)��'++���%$��"7����N"��$�(�"�RST���'�$��U�"�&�����)��O*����P��$��(�#"�$"%���N�'�&�%��N���'+��&�V"Q���'���*�'��W�N�&�����"����)����#"�'���+��+���*�T7�*�'����&����N��#����%��6����%$���"�&�6��&�U�'����)���"N��X1YZ[\]_Y_[[Ya bcX��M����d"�+��U����N��#����e��%$�������6��� !%$��6��&��f"������$��M$('���g !ghU�'���X1YZ[\]_Y_[[Ya bcXijkl�?@m@mG>GABCEC=>nEL;=Jo"N)�e!��"���%$��$��O*����P��$��(�$�������&�$���)���$�'�"����'�$�(��6��%$���Q��6��"�4-45�"�&�p-45�U�"���)�6��$��q"%���g ! ���$�(���%$��e!��"���#"�$"%��U��'N)�"��5rs/3tuU�$�������&�$��"��'��$(��&�%*��U�6$�)��)�4-45�%$�������&�$���)����"����$(�$7$N"���%$�U�"�&��)��p-45�$���)����d��)$()���%$���O���)�#"�'��gv%��$�������"���w��$��WU�gv%g�$���wgU�gv%x�$���w U�"�&�gv%d�$���w����e!��"���#�N�����'N)�"��5rs/3tyz{|k}t5~r���$�������&�'�$�(�+"$����7�� �%$��U,-brs/3123145U�6)$N)�N���"$����)��4-45�"�&�p-45�%$����q)��� !%$��#"�$"%���5~r��$�������&�$��"��$�(���,-brs/3123145��P"�$"%����6$&����)"��� !%$���"��������&�$���'�!�$+���,-brs/3123145���������U�6$�)��)��7$������������N���"$�$�(��)��� ���"���$(�$7$N"���%$��U�"�&��)����d����������N���"$�$�(��)����d��� �%$��U�'+�����)��������$(!�$7$N"���%$������e�!%$��5rs/3�#"�$"%���$�������&�"������,-brs/3123145�7����)����"���$(�$7$N"���� �%$��U�"�&�"���N��&�7����)��'++�����%$���fM$('���g ! h��q)��'�'��&� e!%$��$���)$��'++���#"�'��"���'�&�����$��&U�"�&�*�'�"������+���$%���7����"�Q$�(�����d���&!�EIL=>?@A@e!��"���%$����N�&$�(e!O�"���#"�'� "#"� %#"�� � �g g �� � g� g g�������)"���)��Sg���! ������V�)"���)��6���(�&�7$�$�$����7���#+$�#�N#"���T����"&��7�"U�"�&�%U��)�*��)�'�&�%��"#"��"�&�%#"�U��'����$Q���)��S�T�PST��q)�� ����#���$����7��)����V�)"���)��+��+���&�7$�$�$����z�|z{���,2�z{|k z�|z{���,2�z{|k ������������������ ����������� �������������������������������� ���!"#$%&'()'(*+��,-������./�0�1�����2!3"4&3")'"*+��5��6�����/�����2�7�-7������89�������,-����/6�����+$%&'��������:;<=:�7�12��;72�7�>>����<���7?�6�@��ABCDEFGHIJIGKLMENCFGMOGNGPQJRBLGPJSLNLFGTNEBNRUFV�5�7��2?��7�/>�������61�7���5���2/�������/��67�-���27���2����61�7���5����������1�������W���7�/>������61�7������&X4YZ[+$%&'*������27���������YX!&%X)\[']*�� ����7�/>����&X4YZ[+$%&'_ ab[c����!"#$%&'()'(*+���0�����2/������62�������2�1,�������1�����d�>-1���e������25�������>-27�������>�����?27���89������62/���7�KNfgUFGHIhHHGiFSLRFjklGOMEGkMDjLFEGLlNLGklFkmSGOMEGnGMEGoGTNUDFSpqrstuvwxyz{|wv}~��ups�v�������v�s~�u�t��������pqrstuvwxyz{|wv}~��ups�v�sp�v�s~�u�t�vvvvvv�p�r~uv�������vp��u�vvvvvvvs~ur~uv�s�p�v�����vs~u�vvvvvvvp�r~uvv�s�p�v�����vp��vvvvvvvp�r~uvv�s�p�vvt���u�v�s���� ���62/���7�-7�0�2/�1,���25�����d�>-1���e������/>����11�������-/����7��e9�������d�>9-1���e��e��������������62����2�6��6��?27���������0�1/���2��)!)Z�+$*\������&�� ���6�/�1�62/���������11���-�������e9������0�1/�� c"*+��a���XY!)\c"*+��a*"*+��a *"*+��a���XY!)\ c"*+��a���XY!)\c"*+��a*"*+��a *"*+��a���XY!)\

Page 194: SystemVerilog for Verification

�������������� ����������������������������� !"#�$���#% &�#%�#�'%�'()�* $�+��"&�,�-��!�)../0123435/6578495:5;3/<=6/9=>;356?/<6=:/@4:785/ABCDE=FG/9=>;356?H9?/IF;23J//////////////2EK=LF9M59M48I/9=>;3J//////////////9=;23/2EK=LF9M59M48I/FJ//////////////9=;23/2EK=LF9/65253J//////////////9=;23/2EK=LF9/8=4GN/O//F</H65253/P/QRBN/O//../ST59U/V>23/3T5/WE48/WF3/=</294846////F=X76F;3<HYZ66=6[/\/=6/]/G535935G/=;/65253 ;;YN_////653>6;_////F</H8=4G/P/QRBN/O//../ST59U/V>23/3T5/WE48/WF3/=</294846////F=X76F;3<HYZ66=6[/\/=6/]/G535935G/=;/8=4G ;;YN_////653>6;_////F</HF1aWE48N/O/////../ST59U/V>23/3T5/WE48/WF32/=</?1WF3/E593=6////F=X76F;3<HYZ66=6[/\/=6/]/G535935G/=;/F ;;YN_////653>6;_////F</H65253N/////F;231a9;3/b/Q_///////../c5253//5825/F</H8=4GN/F;231a9;3/b/F1a4E48_/../K=4G/E48>5//5825///////////F;231a9;3dd_/////////../S=>;3//F;231a9;3/Pb/QR?<_//////////////////../e42U/>7756/WF3//9=>;31a4E48/b/F;231a9;3_////////////../f6F35/3=/=>37>3//9=>;31aWE48/b/Q_ghijklimnopipkihkqrsiptsiuvwlxnpvkoipkipsqwvonpsirxsnoxjiysrnlusikhinirkozvpvkoihklozvoinoivw{kqpsziwsptkz|ijklirnoirnxxiptsi}~giwsptkzii�������������������������i�tvuiwsptkzinozirkoupnopinqsizshvoszivoiptsivorxlzsihvxsi�����������i�tsi�nxls���������ipsxxuiptsiuvwlxnpkqipkis�srlpsini�������inhpsqijklqivw{kqpsziwsptkzqsplqou��������� "-�$#�"��*$ �����#�#��# ����#�#�ghijklitn�sini�~gin{{xvrnpvkoiptnpimkq�uimvpti� upnpsipj{suinozijklimnopipkirko�sqpivppkimkq�imvpti¡ upnpsipj{su|ihkxxkmiptsihkxxkmvo¢i¢lvzsxvosu�£oiptsi¤jupsw}sqvxk¢iuvzs|irtno¢siptsivw{kqpizsrxnqnpvkoihqkwiluvo¢i� upnpsipj{suulrtinui¥��inozi���ipki¡ upnpsipj{suiulrtinui��¦��inozi����¦���i§n�siulqsijklinqsluvo¢i¡ upnpsi�nqvnyxsuivoiptsihlorpvkoirnxx�£oiptsiiuvzs|iumvprtiptsinq¢lwsopizsrxnqnpvkouihqkwi��©��ª��ª«�ipki��¬�¦��ª��ª«��i­ojiqshsqsorsipkiptsinq¢lwsopuimvxxitn�sipkilusiptsi�«�«�iulhhv�ipk ��������������� �� ������������������������������� ��������� ������������ ��!�"��#�����$�����%&'(�"!��� �����!����������������)� ��*� ������������� ��+�!���� ����������� ��!�"��#����������%&'(�"!����������� �������� �+�!���)� ��*� ������,-./012334567380620199: ��������������;<=�� �� ������� ��!����+�!�����!��>� ��>??�� �@�����A��!� B��C���������� �����+����� ���>??�� �������� ����!�������!�B�����;<=#���D���!�B� ��� ��� ���E���� ��� ���"������! ��,-./.,0FG4012H364I0730199@��D���JK�J��� +����>??�������� ������L�"!��� �����#�+!���K�������!�D�����=��� ������� �����@�����A��!� B�����"�����!��@��D���JK�JM���������>??�+��DD���� ���!��@��D��JK�J��NOPQR40,-.,/012H364I05ROSSTUVWWXYZ[\] _Xab[cUdTeXXYZ[\] _fghXXiZdjXTZ[\] _kWdl\VUfWimd]nTnVUoXTZ[\]pXXXXXXXXXXXXXXXXXXXXXXXTZ\W]XWimd]nTnVUoXdpXXXXXXXXXXXXXXXXXXXXXXXTZ\W]XWimd]X_ W]pXXXXXXXXXXXXXXXXXXXXXXXTZ\W]XWimd]XUZVjghb_diV]eXX[\Wdl\jXTqV_XT\]hrhYZ[\] _eeYZ[\] _fgXaXXT\]XsXthXXXXXXXXXXXXXXuuXv\d]dVUdwXTZ[\]_riZdjXYZ[\] _eeTZ[\] _kWdl\VUfWimd]nTnVUoXTZ[\]pXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTZ\W]XWimd]nTnVUoXdpXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTZ\W]XWimd]X_ W]pXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTZ\W]XWimd]XUZVjgXaXXdxXf_ W]gXXXXXT\]XsXthXXXXXuuXy W]XXUWXdxXfUZVjgXT\]XsXodhXXXXuuXzZVjXXUWXXXXXXXXXXXT\]{{hXXXXXXXuuXYZ[\]XXT\]X|sXt}~hXXXXXXXXXXXXXXXXuuX�VW�X[bb_Xcd]XXoTZ[\]XsXT\]hr

Page 195: SystemVerilog for Verification

�������������� ������������������������������ �!"#$%&'()*+(,-.(/.01(,-00(-(23-34,(5(/6(577(8'3&/9:(3&-3(42:(/.'(3&-3(42(;./<.(-3(04.;(348'=>2(-(6'2?03:(1/?6(@123'8A'640/B(,/9'(,-../3(,-00(-(577(8'3&/9(4.(-.(/CD',3(-2(3&'/CD',3(9/'2(./3('E423(<&'.(3&'(04.;'6(6?.2=%&'(2/0?34/.:(-2(2&/<.(4.(@-8F0'(GH=G�:(42(3/(,6'-3'(23-34,(8'3&/92(3&-3(,-.(,/88?I.4,-3'(<43&(3&'(577(91.-84,(/CD',32(-.9(8'3&/92=(%&'(J4623(8'3&/9:(KLMNOPQRSNPT:,/.236?,32(-.(/CD',3(J/6(3&'(,/?.3'6(-.9(6'3?6.2(-(&-.90'(3/(3&'(/CD',3=(%&'(2',/.923-34,(8'3&/9:(KLMNOPQR:(,-002(3&'(577(8'3&/9(3&-3(F'6J/682(3&'(,/?.3'6(0/B4,:?24.B(3&'(/CD',3(&-.90'=��UVW �����X��������U �!"#$��Y#�W�YZ�[ �\]\_abcbadefghaiej \_kl\mnopaa_\j_ a\macej \_kqrssactuuataiej \_af v ti\waxtvvfyaz\avfytuadtuj\v\]\_abcbadefgaiej \_kndefghaf vwaaaaaaaaaaaaaaaaaaaaaaaaavd{f|\i|tuhaiej waaaaaaaaaaaaaaaaaaaaaaaaaie vavd{f|\i|tuhafwaaaaaaaaaaaaaaaaaaaaaaaaaie vavd{fa_\v\waaaaaaaaaaaaaaaaaaaaaaaaaie vavd{fauetgopaacej \_kahika}ancej \_kahoaf vqaaik~�iej \_klvfytuniej wafwa_\v\wauetgoqr%&'P�OPQN���(,/9'(3'002(3&'(577(,/8F40'6(3&-3(3&'('E3'6.-0(4.J/68-34/.(2'.3(3/(3&'04.;'6(2&/?09(?2'(5(,-004.B(,/.�'.34/.2(-.9(./3(F'6J/68(.-8'(8-.B04.B=(�/?(,-.(F?33&42(C'J/6'('-,&(8'3&/9(3&-3(42(,-00'9(C1(@123'8A'640/B:(/6(F?3(P�OPQN�����������(-6/?.9(-(2'3(/J(8'3&/92=�6/8(3&'(3'23C'.,&(F/4.3(/J(�4'<:(3&'(577(,/?.3'6(0//;2(3&'(2-8'(-2(3&'(,/?.3'6(3&-323/6'9(3&'(�-0?'(4.(F'6I4.23-.,'(23/6-B':(2&/<.(4.(@-8F0'(GH=�:(-.9(2/(1/?(,-.(?2'(3&'2-8'(3'23C'.,&:(@-8F0'(GH=G�:(J/6(C/3&=��������"UU�Y�����Y[����!������Y$����"Y�� � W������"# W%&'(F6'�4/?2(5�577(,/9'('E-8F0'2(<'6'(0/<I0'�'0(8/9'02(3&-3(,/88?.4,-3'9(<43&3&'(@123'8A'640/B(-3(3&'(24B.-0(0'�'0=(%&42(42(./3('JJ4,4'.3�(J/6('E-8F0':(3&'(,/?.3'6(42,-00'9('�'61(,0/,;(,1,0':('�'.(4J(3&'(9-3-(/6(,/.36/0(4.F?32(&-�'(./3(,&-.B'9=(�&'.1/?(,6'-3'(8/9'02(J/6(,/8F0'E(9'�4,'2(2?,&(-2(F6/,'22/62(-.9(.'3</6;4.B(9'�4,'2:,/88?.4,-3'(<43&(3&'8(-3(3&'(36-.2-,34/.(0'�'0(J/6(J-23'6(248?0-34/.2= ��������������� �� ������������������������������� !" ����#�������#������$��%��������&���'��������$�����(�)����������#���#������&�#�(���#�����������*"�+,-./01234251677189:;<0=189--:;>8,<>;?1@><A1-0<A9BCDEFGGHIJKLMNOPHQRKSETDUHHIJKLMNOPVWXHHYJTZHDJKLMVWXHHYJTZHEJFZVDJLGMHGY[TM\ND\FE]HTWXHHYJTZHONGNMVWXHHTLMHNMVWXROTYFMNUHHKLGTLNZHD_FOHDLMXXIJKLMNOPUUIJKLMNOPVWHQHHHHHHHHHaaHbLTMTFETcNHDJKLMNOHHDLMHdHeXHYJTZHIJKLMNOPUUDJKLMVWHQHHHHHHHaaHbLDONfNLMHDJKLMNOHHDLMHdHDLMHgHhXHHDLMHidHejPkXHHHHHHHHHHHHHHHHHaaHlFGmHKRRNOHSTMYJTZHIJKLMNOPUUEJFZVDJLGMHGY[TM\ND\FE]HTWHQHHDLMHdH]TXHHDLMHidHejPkXHHHHHHHHHHHHHHHHHaaHlFGmHKRRNOHSTMYJTZHIJKLMNOPUUONGNMVWHQHHDLMHdHeXaaHnNMHM_NHDJKLMNOHYFEKNHTLHFHRJTLMNOHMJHFHGY[TM\ND\FETLMHIJKLMNOPUUNMVWHQHHONMKOLHDLMX ����o����������������#�#�����#�pqrqs'tuvw'�����xuyzs�����)����������#�����������#�������#�������{|����������'���##���&�����o#���}�����('��#�#��)����������� !" ~"

Page 196: SystemVerilog for Verification

�������������� ����������������������������� � !"�#$����$�%&$�'((� $�)*�" !&)���+���"&,) �$-./01/23345678567819:1;<2=>=2?-1<0./@A.0B24A7<:1;C3<1DEF2?22;1:7;<2<1D2>A7<:1;[email protected]<:1;C34A7<:[email protected].<8:F?22>A7<:1;C2B4C2I2E>A7<:1;C2BF2.<8:G224CJK4A7<:[email protected]<:1;[email protected].<8:M24A<8:28@N.:O14OL6B2.F2?22>A7<:1;C2B4C2I2E>A7<:1;C2BF2.<8:[email protected]<:1;C3;181:[email protected].<8:F2?22>A7<:1;C2B4C2I2E>A7<:1;C2BF2.<8:G224CJK;181:EFGH.<:24A7<:1;C3P1:[email protected].<8:F2?22>A7<:1;C2B4C2I2E>A7<:1;C2BF2.<8:G22;1:7;<24CJKP1:EFGH-./01/233456785678H-1<0./QRSTUUVTWXYSZ[\]ST[ZTYRSTYZ\X_\]YWXTSaST]bXYSZTW_T]\ZZWScTbdTYTYRSTYS_YeSX]Rfg\hdSTijfikTR\_TYRSTgl_YShmSZWnTWhdZYT_Y\YShSXY_T\XcT\T]\__TYToZ\dTYRSTpqqerS]YfTQRW_T\ o_TlbTYTRWcSTYRSTpqqTR\XcSTWX_WcSTYRST]\__fTsYSTYR\YTYRSTtuvwx[bX]YWXTZSYbZX_T\XTyzvT{�j|eWY}T_WnXSc~TZ\YRSZTYR\XT�yv�����}T\_TYRST\YYSZTo bcZS�bWZSTZSYbZXWXnT\TdWXYSZTYT\T���yv�u����}T\_T_RoXTWXTQ\eSTij|ifT�XTWhdZYSc[bX]YWXT]\XTXYTZSYbZXT\TdWXYSZ}TXlTZSYbZXT\T_h\Ta\bST_b]RT\_T��y�}��vu}����vyzv}yzv}��ztyzv}�u��}����v�u��}���z��u}T\XcT�v�yzt}Tdb_T_WXnSeWYTa\bS_T[TYldST�yvT\XcT��ty�f ��������������� �� ����������������������� !�"##�� $���%�&�'����� $�()*+,-./01234/.5678-(+7.89:7;<=.8+67-=,>?7=@ABC()*+,-./01234/.5678-(+7.D+(;.8+67-=,>?8+67-A(7*6-.89:7;<=.(7E-BC()*+,-./01234/.5678-(+7.D+(;.8+67-=,>?<+:;A(7*6-.89:7;<=.(7E-F...........................................(7*6-.G(-.HIJKL.(BC()*+,-./01234/.5678-(+7.D+(;.8+67-=,>?,=E=-A(7*6-.89:7;<=.(7E-BC()*+,-./01234/.5678-(+7.(7-.8+67-=,>?M=-A(7*6-.89:7;<=.(7E-BCNN.O,:*.-9=.8+67-=,.(7-=,5:8=.@(-9.:.8<:EE.NN.-+.9(;=.-9=.4PP.(7E-:78=.9:7;<=8<:EE.4+67-=,>C...89:7;<=.(7E-C...5678-(+7.7=@C......(7E-.Q.8+67-=,>?7=@ABC...=7;5678-(+7...5678-(+7.D+(;.8+67-ABC......8+67-=,>?8+67-A(7E-BC...=7;5678-(+7...5678-(+7.D+(;.<+:;AG(-.HIJKL.D:<BC......8+67-=,>?<+:;A(7E-F.D:<BC...=7;5678-(+7...5678-(+7.D+(;.,=E=-ABC......8+67-=,>?,=E=-A(7E-BC...=7;5678-(+7...5678-(+7.G(-.HIJKL.M=-ABC......,=-6,7.8+67-=,>?M=-A(7E-BC...=7;5678-(+7=7;8<:EE.J.4+67-=,>

Page 197: SystemVerilog for Verification

�������������� ���������������������������� �!"#�$%&�'()�*++��(,���-!.$/���"&(,!0123145647825489:6:27;8<1=66>27;8<1?6:@=669;9894A6B<39;6666:@6C6;<D=6666:@E1<F<8GH=6666IJ9F0A4KGLMNO6P2F861<F<8O6:27;8<1@CQRJLS6:@E3<8GHH=6666:@EA24JG@TUH=66669V6G:@E3<8GH6WC6@TUH6IJ9F0A4KGLX112169;6A24JLH=6666:@E:27;8GH=66YY6:27;86C6@T?6666:@E:27;8GH=66YY6:27;86C6R66669V6G:@E3<8GH6WC6RH6IJ9F0A4KGLX112169;612AA2Z<1LH=666<;J<;J0123145���[��.�����\))�]��&�).$/_abcd_efbghihhjhkblmnhi_ambiiojpiqbnbcbjrghqs_cithsuhhj dishlvhcon_pbjrwxysdmoqbnwl_rhnlopfschbrbjbccbd_agbnehizmhca_cli_lhq_lmesbso_jzbjrchsecjbj_sfhcbccbduosfsfhchiensix���[����.$/���{.��$!.($�\))�]!�|��}�"�"�blmnh~�x~�if_uibc_esojhsfbsq_lmeshisfhaocis��gbnehiojsfh�ot_jbqqoihcohix�soiqbnnhrtdsfh dishlvhcon_pq_rhoj blmnh~�x��x�������������*�)(-".$��"(�%(��-"���.#($�%%.�!�).�!Z29J6V9BGFZ�98N<:N4A6J484�TR�H6�669;869=66J484�R�6C6@=66J484�@�6C6@=66V216G9CT=69�TR=69��H6666J484�9�6C6J484�9�@�6�6J484�9�T�=� ���������������� ����������������������� !�"#$�%&�#�� &�$#'�&��()*+,-./01234/.5678-(+7.9+(:.5(;.......................<+6-*6-.;(-.=>?@AB.:C-C=DABEF*,+G,C).C6-+)C-(8.-HI-F..;(-.=>?@AB.:C-C=DABF..(7(-(CJ.;HG(7....5(;<:C-CEF....5+,HC8K.<:C-C=(BE.L:(I*JCM<(NN:C-C=(BEF...H7:H7:*,+G,C)OPQRSTUQVWQUQVTUWXXWYUPZU[R\P]WSSRUW_TaURaUW__PSWQTbUW]bUaQPXTbUR]UcYaQTdeTXR_PfgTT]UQVPfVURQURaUSW_S_WQTbUR]UhiUjVTXTURaU]PUkWYUQPUW__PSWQTUW]UWXXWYUR]UhUW]bUXTZTXlT]STURQUR]UcYaQTdeTXR_Pfi���m����&�n���o&����&#��p$$�q��r�ms�����cWdt_TUuvivuUaVPkaUQVTU[R\P]WSSRUhUXPQR]TUZPXUWUwlaQWQTUWXXWYi�������������x�$#'�&����#� #��'���%&�#�� &���$&���y&�!�ms�������$$�q9+(:.5(;<I9z+G(8{H8{CJ.:C-C=DABE.|..(7-.(F..:C-C=AB}C9CJ.~.?F....��.�,(-H.-+.;+-K.C9CJ..:C-C=AB};9CJ.~.AF....��.....C7:.;9CJ..:C-C=?B}C9CJ.~.?F..:C-C=?B};9CJ.~.AF..5+,.<(~DF.(�DAF.(��E.|....:C-C=(B}C9CJ.~.:C-C=(3?B}C9CJ.�.:C-C=(3DB}C9CJF....:C-C=(B};9CJ.~.AF..��.0+7�-.5+,GH-.-+.8JHC,.;9CJ..���������������������� !�"#$�%&�#�� &�$#'�&���y&�!�ms�������$$�q()*+,-./01234/.5678-(+7.9+(:.5(;<+6-*6-.J+G(8.=>?@AB.:C-C=DABEF*,+G,C).C6-+)C-(8.-HI-F..J+G(8.=>?@AB.:C-C=DABF..(7(-(CJ.;HG(7....5(;<:C-CEF....5+,HC8K.<:C-C=(BE.L:(I*JCM<(NN:C-C=(BEF...H7:H7:*,+G,C)

Page 198: SystemVerilog for Verification

�������������� ������������������������������ �!�"�#�!�$�%�������&�"��'��(!�'���'))*��'���������(!�'���+,-./0123/4554678$���!$'"��9�'""':!�#��%�����:!��;<�"�*�9�'� �=>�:�?�$'&���%���)����!��@�"��$�A'!��!��!�;?*'����!>�:�?��'��"�&�"!�(��9����"��$��*':�?���A��$���*�;���!�����:!��;(<�"�*�9>�'� �%"����:�?"�=��� �����?!���$�!�;'))��9��B$�!�'))"�'�$��!�A"'9�*�>�;�'���9�$'��:�?�%�**�$'&�����"�%"����'� � �#?9�:�?"�=��� ���A�'�:��A��$��'""':�!�C�!��$'�9��D�;�"��"�#?!��'))"�'�$��!����?!��E�)���'""':!>F�'� ��$��"�'!!���'�� ��:!��;<�"�*�9"�?����!����;'��)?*'����$�;��B$�!��'**�%�:�?����%"����9���"���=�"�?����!��$'���'��)�"'������'�:�!�C��'""':��+,-.-+/G47HI/0123/J5546�';)*�!�����K�'� �������!$�%�$�%����)'!!�'�!�;)*��'""':�#��%�����:!��;<�"�*�9'� �=�%��$��)���'""':!��L!���$���;)�:�!M?'"��#"'�N��!�OP�����$���:!��;<�"�*�9QRSTUV�!�'��;�������!)���A:��$'��:�?�'"��)'!!��9�'���)���'""':�W4X1Y2/+,-,Z/[27\]23I/I_2/I4YYH3a/4/b/5_c\H32/dH\/43/_123/45546efghijklmnopqlkrstujehtkvhewkrexyhz{hsjgsjkxejk|}~���kwzjz|���gih�izfkzsjhfzjeukj��j�kkxejk|}~���kwzjz|����ki�kketejez�kx��etkkkkrexyhz{wzjz��kkkkrhi�zu�k{wzjz|e��kkkkkk�we�g�z�{e��wzjz|e���kkk�tw�twgih�izf��?"�=��� ��"�A�"����!��$���)���'""':�%��$�'�$'� *���A��:)�����S���UU���������B$�!�)����!����'�!�"?��?"��%��$���A�";'�����'#�?���$��'""':�!?�$�'!��$�� ��*'"� �%�" "'�9�����?��'��*��'����$��'��?'*�'""':��*�;���!�%��$��'**!�!?�$�'!�����V�UU���VU� ����������� �� ������������������������ � ��������� !! "#$%&''(%)*$+,-$./0'/#123.455+67+.&83'&+0+*$+9':''%.0'%;'<&+0+=''&+0+'>',%.0'<9'/#?30455+6@05,&+0+*$+9=''&+0+ABC'>'D=''&+0+ADC'>'D=''($5',%>E='%F>EB='%GG9''''&+0+A%C'>'&+0+A%HDC'G'&+0+A%HEC=I���J���K����L!! "�M�NO���PQRSRTUSRTVUWXTYZ[TVR\Q]_T\]TU R__T\QRaST]W\RW\_TUWTSUWbR_cTU_TRdaWRTaWefghijklTPQR_RT]WmXTn]SoTna\QT]pRWTUSSUXTQUWmR_TRmUSRTU_TefqhrstuuvwxvsgyrcTW]\Tna\QTp]aW\RS_T_zQTU_Tef{i|}r~}vyT]STef���i~}r~}vyj�PQRTd]mm]naWbVR\Q]_Tba�RTX]zTaWd]SVU\a]WTU�]z\T\QRT_a�RT]dTUWT]pRWTUSSUXl[WTPU�mRT����cT\QRT�USaU�mRTkTa_TUTefqhrstuuvwxvsgyrTUWTgTa_TUWTis|l� ��������pRWTUSSUXT�zRSXTdzW\a]W_�zW\a]W YR_Sap\a]Wis|�ef�r�|�k��g� �Rd\T�]zWTd]STaVRW_a]WTis|�ef�i�k|�k��g� �abQ\T�]zWTd]STaVRW_a]WTis|�ef����k��g� �]nT�]zWTd]STaVRW_a]WTis|�efxi�k�k��g� �abQT�]zWTd]STaVRW_a]WTis|�ef�s~ur�rs|�k��g� �TadTmRd\T��TSabQ\cTUWT��TadTmRd\T�TSabQ\is|�ef�i�r�k��g�  zV�RST]dTRmRVRW\_TaWTaVRW_a]WT¡T_��abQ�_��]n¢�is|�ef£i�rsei�s�k�  zV�RST]dTaVRW_a]W_TaWT]pRWTUSSUXis|�ef�i�rq�tuuvw�k� P]\UmT_a�RT]dTUSSUXTaWT�X\R_

Page 199: SystemVerilog for Verification

�������������� ������������������������������ �!"���#�$�" $��"�����!%"���#����"���&�#"�$%�����$�"�����"�$��%$$%'��$�%#���������(��"�)�%*���+�,�-.�/012134567789:4;978<=>4?@=94ABB6C7D��E%(F���+�.��G�"���&�!�H��%## (�H�"�%"�"���%$$%'��%H���I�����(��"#G�� (*�$�H��.�.E%(F���+�.�J�!%��#�&�!�H����"��%��,H�(��#���%��%$$%'.�����&�!�H�� #�#�"���KLMNO%�HKLPQRS�(�"��H#�"�����H�"���%$$%'�$%���#G����!�G����"��#��T%(F��G�H��U"�������"��� # %���..#�V�,+.�W6X@Y=4/01024Z=7[\=9]4]6YY89:4_4]>=4a8[4XbY[8>8X=97896Y4@=946BB6Ccdefghijklmnojipqrshcfritfcuidvucwexyvzcrfqhicrhi{|}|}~�egf�gydiyqhfdyhcsih�wh�iiicrhiy|���}|���}�iiiiii��i�fh�i�fguigyr��wiyg�i{c�{�xf�iiicrchcyxi���criiiiiipfg�ys{izy|c��}~iy|c}|�}i�ic���iiiiiidvucwexyvzy~�iiiiiipfg�ys{izy|c��}~i�ucwexyvzj��iy|��u}|��u}i�i��uj�iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiic�i��iy|c}|�}~�iii�ru�ruegf�gyd���#�!%��#�"���&�!�H�����E%(F���+�.���"�%"�$�%H#�"���%$$%'� #����"����F���%$$%'�(�"�,�H#.�����(�"��H�KLMNO�S��������Q���KQN���$�" $�#�"�������#"���H�T�� (*�$���$"���#F�!����H�H�(��#���.�E��KLMNO�S�����$�" $�#�+���$�"���%$$%'�H�!�%$�H���"��"��$%������ +¡.�¢�£���#�G�KLPQRS�S�����$�" $�#��.�¤� �#�� �H� #��KLMNO�%�H�KLPQRS��"��&�¥N¦,���F#.�����(�"��H#�KLM�¥§�%�H�KLQRS§�$�" $��"������"�%�H�$���"���H�T��$�(�"���%$$%'�H�!,�%$%"���G���%�H�+�$�#F�!"�I��'���$�"���$%������ +¡.�©"�"���!��"�$����E%(F���+�.��G�"��!%��KLª�§«¦¦¬���­§¦®�$�" $�#�%�F���"�$�"��%�����(��"����%�"���H�(��#���%��%$$%'.Z6\Y=4/0°±F���%$$%'���!%"�$�� �!"���#² �!"��� ³�" $�#�F���"�$�"� LNQ��KLª�§«¦¦�µ­§¦�S� E"�$%�����$�"�����"�$��%$$%'LNQ��KLª�§«¦¦¬���­§¦�S��Q���¶¶¶� ©�����(��"����"���%$$%'LNQ��KLª�§«¦¦¬���­§¦��S��Q�� ©�����(��"����%�+,·�%$$%'LNQ��KLª�§«¦¦¬���­§¦®�S��Q���Q®� ©�����(��"����%��,·�%$$%'LNQ��KLª�§«¦¦¬���­§¦�S��Q���Q®��Q� ©�����(��"����%�¹,·�%$$%' ����������� �� �������������������������������� !�� ����� � "" #$%&'()*'&+,-.*/0%1+2(+$3,41566.*7.1'-4(89(:((&12(&;(<=((&12(-%>(?(+$@%A/8;(>9=((&12(8&>(?(+$7&B8/8;(>9=((&12(-%C(?(+$@%A/8;(C9=((&12(8&C(?(+$7&B8/8;(C9=((D%6(/&?-%>=(&E?8&>=(&FF9(:((((D%6(/<?-%C=(<E?8&C=(<FF9(:((((((&12(G.(?(/&12G9(+$H42566I-4)J26C/8;(&;(<9=((((((&%K,6&12D/LMN(.OP'QOP'Q(?(P'R1L;(&;(<;(G.9=((((((G.(?(&(G(<=((((S((SS���T�U�V �W���X�� �Y"" #!�� �ZV[\]_a]bccbde]fgahijekfcabfalbkgbme]nbke]noa bpqallera]ke_]b]l_]a_cr_cas]bpqallera]ke_]ktu_spb] bkkb]bccbdvefgrsofeoabpqallera]ke_]kwbko_]nbkfgad bpqe]f_b]aoara]ffgbfekfgakbrakexabkbke]noaaoara]f_yfgay_crbobcnsra]ftz_ca{br oaweyd_sgbmafgay_crbobcnsra]f|}~�������|����e] fga }����~ kfbfara]fwd_s p_sol bkk e] fga bpfsbobcnsra]f|}~�����������������|����������t� �������������!��� �����"�� �W������ � "" #!&),%62(L�J��ML(D�102&%1($%&'($&4AK,.0�/&1,�2(�&2(O��N�Q(���OQ9=,6%B6.)(.�2%).2&0(24+2=((�&2(O>N�QO�N�QO�N�>Q(�,.0�O�N>Q=((&1&2&.-(�4B&1((((D%64.08/�,.0�O&Q9(�,.0�O&Q(?(&=((((�,.0�OCQ(?(�� 8>C��¡�¢£K��.�0'4D=((((¤'&+,-.*/L¥¦N(�,.0�OCQ?P8L;(�,.0�OCQ9=((§§(��(�&2+((((¤'&+,-.*/L¥¦N(�,.0�OCQO�Q?P8L;(�,.0�OCQO�Q9=(§§(�C(�&2+((((¤'&+,-.*/L¥¦N(�,.0�OCQO�QO�Q?P8L;(�,.0�OCQO�QO�Q9=(§§(£(�&2+(((($&4AK,.0�/�,.0�9=((41'41',6%B6.)(N(24+2

Page 200: SystemVerilog for Verification

�������������� ������������������������������ !"��#$%&'��� (�"�!��&��))�*$+,-./+-012345675,89:/9+;308<==4>?48.@0/AB/C//-8:/-D//E,=/7-F9+G,17AHIBD/-J9+?-KA7AHIBD/-LLB////-,23=-8:E7MNO/PQRST.UFT@@VW8MH////////////////-H/X7@,8K/@,8K/-8:/XB9+Y0:<==Z@0[\:=I7AH/-BBD]_abcdefdecdgdb_hcdaidjfklmcdnopoqdlraisdfdt�uvadwfmxcdxsaiydz{{|}dfihdbfssdecrcsxmd~r_kd�����������{������d_d{����{�������p��������)%&'��!��!$%����*��$��deasdl_aid�_xdkf�d�_ihcrde_�d_dlfssd_v�cbsdvc�ccidj�sck�cram_ydfihdgp�ecdmf�_xd_~dbmfssdlr_lcracsdh_csdi_dkfbedvc�ccidecd�_dmfiyxfycs}dfihds_d�_xbfii_dsefrcd_v�cbsdharcbm�pd�iscfh}d�_xdkxsdbrcfcdsakamfrdsrxbxrcsd_idcfbedsahc}lmxsdlfb�dfihdxilfb�dkce_hsd_db_iwcrdvc�ccidecd�_d~_rkfspd�ibcd�_xdefwcdfmmeasdaidlmfbc}d�_xdbfidsefrcdb_kl_sacd�lcsp���������$$%&'���)# �#)�$���� ��&��*$���¡�)%�!'��&"���ecd~_mm_�aiydc¢fklmcdsefrcsdfdsaklmcdsrxbxrcd~_rdfdla¢cmdkfhcd_~derccdv�cslfb�chdai_dfd�_rhpdjfklmcdnopo£dse_�sdecdgdsrxbxrcpd_abcdefdgdrcfsdfd¤¥��fsdsayichdwfrafvmc}d�eabedbfidyawcd�_xdxic¢lcbchdrcsxms}dfihds_decdsrxbxrcdkfr�secdbefrdfsdxisayichpd�ecdv�csdfrcdaidrcwcrscd_rhcrd~r_kdecdj�sck�cram_ydvcbfxsceasdb_hcd�fsd�racid~_rdfd�icmd¦qtdlr_bcss_rdefdasdmamcucihafi}d�eabedkcfisdefecdmcfsdsayia~abfidv�cdasds_rchdfdfdm_�crdfhhrcssdefidecdk_sdsayia~abfipd§djxij§©gdasdvaydcihafi}dfihds_decdv�csdfrcds_rchdaidecdsfkcd_rhcrdfsdaidj�sck�cruam_yªd�}«}�p�����������¬��� !"���!�$��)����$�)# �#)�:>30.0E/9:=­5:/C//­89-K80./5A4=/PH/KH/=D//®®/VQ/P-K°08.-48®®­89-K80./5A4=/=H/KH/PD//®®/±\<²N/E,=[4:]/X32=KPD+,-./-8+0=:732=KP/=KPB/C//=KP°³=/F/=KP°³=D/////®®/µ8+0=:/:A0/5,@,=/+4@­09//=KP°³K/F/=KP°³KD//=KP°³P/F/=KP°³PD//-,23=-8:E7MNO//µ8+0=:/=KPFT¶·VHT¶·VHT¶·VW8MH////////////=KP°³=H/=KP°³KH/=KP°³PBD] ������������ ������� ����������������� !"�����#�$%���&��&�'&%(�)����*%����&���! )��&���$" ��'�+� ,�&$)�% &���!��$%&'�* &�������'�+� �!'��&��!$�-�����./012����*%�����'&%(�)�&$)��!����������� !"3� ���!�������#������$�%!$��%*��4�� !%&��!$�-�5���!*������6789:;��!)�<���,��&%��=>#��4& *��3!* )�#����!��)��$�&���'&�&���3!�)-?@ABCDEFGHIJEKDLMNDOPQERSTELQ@TUOVELMTWPMWTDXYZ[\[]_XabXZcbd[\ efgX hijkl mnmfo pqrstuogvZw Xxyz{|}x]a~bXgw~�wg\g~�[X�g~waXqrstuZ_XabX�oZwncvcaXwvcXgbX[_Xob�c__qrso^ c~\fgX hijkl mnmfo^]a~bXgw~�wg\\g_Z�cY�_Xg~n Z[]g��xx�o^ ^�\g_Z�cY�x�_qrs���m��m��xm Z[]g�m mnmf�o^[~\]a~bXgw~ j\g_Z�cY^��zcbdX�[b�c__ ZwZ[Xg[_g~Xw c_XabX^]a~bXgw~qrstuZcbd��o^ ^Zcbd� � oZcbd�n �noZcbd�f �fo^[~\]a~bXgw~ jZcbd^���~Zcbd c_XabXg~XwX�[b�c__ ZwZ[Xg[_^]a~bXgw~�wg\a~Zcbd�qrstuZ_XabX�o^ ^ ` �Z_XabX� o n �Z_XabX�no f �Z_XabX�fo^[~\]a~bXgw~ ja~Zcbd[~\b�c__ jqrs^g~gXgc�f[ng~^ ^qrsZg�[�o^ ^qrstuZ_XabXo^ ^Zg�[� �~[�o^ ^ [Z[cX���f[ng~^ ^ ^c__[X�Zg�[��c~\wvg�[���o ^ ^ �� }[cX[ c~\wvZg�[�^ ^ ^Zg�[��\g_Z�cY�x�~��jf[]w [x�o�� zg~XgX^ ^ ^Z_XabX �Zg�[��Zcbd��o ^ ^ ^ ^��}w~�[ XXw c_XabX^ ^ ^g~�[X�Z_XabX�o ^ ^ ^ ^ ^ ^ ^ ��}c�� }Xwg~�[ XfgX_^ ^ ^Zg�[��a~Zcbd�Z_XabX�o ^ ^ ^ ^ ���~Zcbd_XabXXwb�c__^ ^ ^Zg�[��\g_Z�cY�x��jc]X[ ^x�o ^�� zg~XgX^ ^[~\^[~\[~\Zwncv

Page 201: SystemVerilog for Verification

�������������� ������������������������������ !"�����#$!%$$�� &�!$'($"�)*����+�,-./012345267892:;<2=>02?>..2.3@/01.2A@;B2C2D>=E23;2F:.35BG5@/H;1I2J;<2B/1432055K3;2?>..2>2.3@/012A;@23452.:BD;H/=2L>H<52;A2>2.3@<=3<@592;@21532>2.3@/012@[email protected]/012345/035@0>H2.3>352;A2:;<@2C2=;K52A;@2K5D<1IM4525>./5.32N>:23;2?>..2>2.3@/012A@;B2C23;2F:.35BG5@/H;12/.2A;@2:;<@2C2A<0=3/;023;@53<@02>2?;/035@23;2>2.3>3/=2.3@/01I2M452.3@/012B<.32D52K5=H>@5K2>.2OPQPRS2/02C92>0K20;3>.2>2H;=>H2.3@/01I2T;0.3>3/=2L>@/>DH5.2>@52.3;@5K2;023452.3>=E2>0K2>@52@5=H>/B5K2N4503452A<0=3/;02@53<@0.I �'U)$����V��W$!X"��������!"����Y"*'�,Z[\] _]abcde]fg]fghi^jc\caZZ[\]jklmno^ j]abcpdjqrstmuqstmuqstmurq]fgvw]q]fgvwfq]fgvwgho^]xcy]bjoz{2K>015@2N/342.3>3/=2.3;@>152/.234>32B<H3/?H52=;0=<@@5032=>HH.2=;<HK250K2<?2.4>@/01.3;@>15I2|;@25}>B?H592>2F:.35BG5@/H;12~�RO��Q�2.3>35B503234>32/.2?@/03/012.5L5@>H?/}5H.2B/1432=>HH23452>D;L52��R�P2B534;K2B<H3/?H523/B5.I265?50K/012;024;N2345F:.35BG5@/H;12=;B?/H5@2;@[email protected]=>HH.92H>35@2=>HH.23;2��R�P��2=;<HK2;L5@N@/35@5.<H3.2A@;B25>@H/5@2=>HH.92<0H5..23452F:.35BG5@/H;12=;B?/H5@2B>E5.2>2=;?:2;A2345.3@/01I2T;35234>32>2=>HH23;2>02/B?;@35K2B534;K2=>0205L5@2D52/035@@<?35K2D:23452F:.35B�G5@/H;12.=45K<H5@I2F>B?H52��I��2.3;@5.23452.3@/01.2/02>245>?23;2.<??;@32=;0=<@@503=>HH.I �'U)$����V��W$!X"��������!"����Y"*'����$�U����,��xpabx�����e����lm��xpabx���e�����l���xpabx����e���������e���� _���e�����Z[\] _]abcde]fg]fghi^jc\caZZ[\] ]abce[x\k����e���� ������e����no^Z[\]_jo^jc\caZabc[x\ea�u �to^abcbZ[\]jo^ j � �]abce[x\k[x\ea�uno^bZ[\]j � j]abcpdjqrstmuqstmuqstmurq^ ^ ^ ^ ^ ^ ^ ^ ^ ^]fgvw]q]fgvwfq]fgvwgho^[x\ea�u��bZ[\]j �lo ^ ^ ^ ^  ¡¢b£cp¢]fxcby¤¤¥^apd[x\ea�u w����e����h^ ^[x\ea�u �to^]xcy]bjoz ��������������� ���������� ��������������� �!"�#�$#�%&'"�#� �(�#)" *+,-./0123,104.2536/13786559:9123653;<=>?@ABC>DC?3./3E1F1/97G3H3;<=>3:IF709.F3768J7I8601539053.I0-I0350/9708K3L65123.F390539F-I05?3M9043F.3.I0592139F01/6709.F5GN-179:97688K?363;<=>3:IF709.F32.153F.0367715536FK3E8.L683./35060973O6/96L815?3-1/:./,6FK3:9813.-1/609.F5?3./39F01/6703M90436FK049FE3.I0592130413:IF709.F35I7436530413.-1/60J9FE35K501,?3-/.715515?3546/123,1,./K?35.7P105?3107G3Q413NK501,R1/98.E37.,-981/,6K3.-09,9S136M6K37688530.363;<=>3:IF709.F39:30413/15I803953F.03F11212?3./3/1-8671304176883M90430413/15I8053:/.,363-/1O9.I5376883M9043041356,136/EI,1F05G3Q413TU@CA=VUW:IF709.F39F3N6,-813XYGZ?36F230413[VB3:IF709.F39F3XYG\36/13L.043;<=>3:IF709.F536530419//15I803953.F8K3L65123.F30419/39F-I05G]�&'�����__�%&'"�#�a���'����b��c#"�defghijklmnopkjfqhrjsqtuidgtjdtijsvuighdvwxdtfqijdtijdyzdefghijklmnopkjfqhrjsqtuidgtjhrvwj{dtxdtfqijhrvwjdtyzHF39,-./0123,104.23,6K3F11230.3PF.M304137.F01|03.:3M41/1390395376881235.30460390376F7688363}~+3Q�?3H��?3./3R}+3,104.25?3./363NK501,R1/98.E3065P3046034653L11F31|-./012G�5130413@ABC>DC3600/9LI013:./3041513,104.25G]�&'�����_��%&'"�#� �c"�#�$#�#�*�*defghijklmnopkjugtir�ijiv{�juvww�{�x�dij�����j�vivyzHF39,-./0123,104.23,6K3I513E8.L68350./6E1?36F235.3903953F.03;<=>?3LI03,9E403F.0346O16FK3}~+3/1:1/1F715?36F235.39032.153F.03F11230413.O1/41623.:363@ABC>DC3,104.2G3NI04J1/86F23�Y����3I5153041301/,3�E1F1/97�3:./3041513,104.2536530413NK501,R1/98.E3~��2.153F.0346O13635-179:973F6,1G3�K321:6I80?36F39,-./0123,104.23953E1F1/97?36536/1,6FK3.:304131|6,-81539F304953746-01/GQ41/13953.O1/416239FO.P9FE363@ABC>DC39,-./0123,104.23653041359,I860./3F112530./17./23041376889FE37.F01|0?36F235.3.F8K321786/1363,104.23653@ABC>DC39:3F11212G3�F0413.041/346F2?39:363E1F1/9739,-./0123,104.237688536F31|-./0123065P3./363}~+3,104.204603677155153NK501,R1/98.E326063.L�1705?3041359,I860./37.I8237/654GH37.F01|0J6M6/13}~+3,104.23953.F1304603F112530.3PF.M3M41/13903M6537688123:/.,35.0460390376F367715539F:./,609.F3/18609O130.3046038.7609.FG3�����!"&&��c�#�a�b�"&�!�#"�]�*#�&���"aQ4131|6,-81535.3:6/346O1354.MF3K.I34.M30.376883�37.213:/.,3K.I/3NK501,R1/98.E,.2185G3Q413�}+3685.3688.M53K.I30.376883NK501,R1/98.E3,104.253:/.,3�37.21G3Q41

Page 202: SystemVerilog for Verification

�������������� ��������������������������� !���"�#!$%&!'�!%!���(��!�%�)!��!��$��#!�"�!���*��!+���!%&!�(��%���&!�&,-!��!%!����.$�&�*��& !�%�)!��(����&��& !(%��!�+!%!"%�#/%��!��#��0123431565789:;<5=>:?@A<B5C<AD?B�%�(��!EF0GH!�"�/�!%!��#*��!�"%�!��(����!%!$�&��I�!+*&$���&-!%&#!�I(����!%!������.������ !+*&$���&0!7J9:;<5123KL5=>:?@A8MN5J57OPA<9Q<@8;?N5RSMTA8?MUVWXYZ[\YV]_[[UaVbc[defghid[]VjcZkc[lXj]cVj[mVW[]nWoaYpqrs_[[ZkaVbc[defghid[lXj]cVj[omnWoaYpq_[[tt[uV[cqaZ[Vb[pbvo[[ j cpY[]nWoaYpqrs_[[lXj]cVj[mVW[omnWoaYpqrs_[[[[wWoaYpqrdxyz[\YV]ds_[[ZjWlXj]cVjZjWUVWXYZ[z[\YV]{"�|}~���!#�$�%�%���&!�&!�%�(��!EF0GH!���)�!&%)�#!'�$%*��!�"����!+��'�#�!(*���& !%!���*�&!�%�*�!#�$�%�%���&!��!%&�!%� *��&��0��*!$%&��!���&! ���!�"�!*�*%�!��(��!(%��&�"����0!{"��!�&+���%���&�&!�"�!|}~���!#�$�%�%���&!/�*�#!#*(��$%��!�"�!�&+���%���&!�&!�"�+*&$���&!#�$�%�%���&!%�!�"�!�&#!�+!�"�!��#*��!%&#!$�*�#!�"*�!'�$���!�*�!�+!��&$!�+��*!����!$"%& �#!�"�!+*&$���&0�%�(��!EF0G�!�"�/�!�"�!,!$�#�!�"%�!$%���!�"�!�I(����#!+*&$���&07J9:;<5123K�5�J;;8MN5JM5<>:?@A<B57OPA<9Q<@8;?N5RSMTA8?M5R@?95�ZkcZbj[mVW[omnWoaYpqrs_mVW[]nWoaYpqrs[�[[Vnabjclrdiz[[]nWoaYpq�jds_[[omnWoaYpqrs_�{"��!�I%�(��!(��&��!�"�!��&�!+���!�"�!,!$�#�-!+����/�#!'�!�"�!����~�����*�(*�!+����"�!������������ -!%�!�"�/&!�&!�%�(��!EF0G�07J9:;<5123K�5�SA:SA5R@?95P89:;<5<>:?@Aiz[[]nWoaYpqxyz[\YV] ������������������� ����������� ���������������� !"���#$$!�%�&'( )*+),!$"%����� !"�-./0123.1245678/3927:297;8231<3=1>?.2<.7;0@2=12/>2A9<314B18/07CD297;24592.5E1201CF5?9231<3=1>?.1<2/>2G278273.18205>C;5C1<D27825HH0/?53/7><23.53297;2I5>3237281;<1J2K./<<1?3/7>2?81531<252A9<314B18/[email protected]/<2<3/4;0531@[email protected]@<2385><5?3/7><2:87425>21L318>502:/01JK.12:/8<32E18</7>27:23.12414789D2<.7I>2/>2A54H01<2MNJOP25>@2MNJO�D2;<1<27>092:;>?F3/7><D25>@2<721E1893./>C28;><2I/3.2>72105H<1@23/41J2K.12A9<314B18/07C2?7@12?500<[email protected]><252:/01J2K.127>092?7445>@2/>23.12:/012<13<23.12414F7892</Y1D25>@2<723.12G2?7@12?500<25>21LH7831@2:;>?3/7>J&#*Z$)����[��&'( )*+),!$"%�*"\�$)�]",�(!*Z$)�*)*",'�*"\)$_abcd c_efgddhi_ejdklmnopkdqarsjh_rdectuqhbcvwjehrxdqrtcygddczi_ejdklmnopkdqarsjh_rd cu{ahbgdd||d}_djficd_edtexwddhrhjhtbddddectuqhbcvk c ~tjkygddhrjd c��gddqarsjh_rd cu{ahbvhriajdhrjdwh�cygdddd cd�drc��wh�c�gddddd||d�bb_stjcdfrthsd c_efdcbccrjwddcrqarsjh_rcr _abcd�d c_ef�73/?123.532/>2A54H012MNJOPD23.12R���Q�2<353141>32@71<2>732.5E125>9258C;41>3<25<3./<2/>:78453/7>2/<250815@92/>23.12:;>?3/7>2@1?05853/7>JK.12G2?7@12/>2A54H012MNJO�27H1><23.12:/01D2815@<252?7445>@D25>@2?500<23.121LH7831@:;>?3/7>J2�88782?.1?�/>C2.5<2=11>28147E1@2:782?74H5?3>1<<J

Page 203: SystemVerilog for Verification

�������������� �������������������������� �!�"#$��%#�&��$�'(�����"#���)$�*(����)$�"�����+�#&%�$�*,)"%(#)-./-012345627-789:5;6<51/=>251/20-?68@5;-<AB?02C@1?7-=D2251/2A76>22EFGH2C@5;->22@5;-2I2@4J-1<@1?7-K2L0L=>22MB5;-2<N@-4@<@5;-==2D2222A762I2@O-/A<@5;-=>2222PM5/AB2<A76=222222D222222A?P-2QRQS2D2222222251/2B5>22222222@PA?1@<@5;-K2LT62T62LK2UB5=>222222227-789:5;6<B5=>2222222290-?V>222222W2222W22W22@A;4P-<@5;-=>WXYZ[\] _a[bcdZ[ce[fgchc_di[jcfY[]Z[\] _a[f][\]efgk\f[_[ Z]gl[jcfY[���ZdZ Zfem����������no�!#���)$�*(���*#&�'(��������#&p��#$��R2qrr���s���!�t�'u�!���()v��p'%��w�&(�#v�t�'ux[gZ_d[Z]gl[]aZd[Y_e[]yZg_fc]e[ek\Y[_e[gZ_a[_a[jgcfZ[fY_f[\]ek Z[fcZi[_afYke[kef[zZ[]aZdZa[jcfY[f_e{em|_ydZ[�}m��[eY]je[fYZ[|lefZ~Zgcd]�[\]aZ[b]g[fYZ[eZ\]a[hZgec][]b[fYZ[Z]gl]aZdm[�f[Y_e[eZhZg_d[cyg]hZ Zfe[\] y_gZa[f][|_ydZ[�}m��m[XYZgZ[_gZ[fj][Zjf_e{ei��������[_a[���������i[jYc\Y[gZeyZ\fchZdl[f_{Z[}�[e[_a[��[e[f][\] �ydZfZm[XYZ[cy]gfZa[ZfY]a[���������[ce[]j[_[f_e{[_e[cf[ce[\_ddc�[]fYZg[f_e{em[�]k_l[gZ ZzZg[fY_f[]dl[_[f_e{[\_[\_dd[_]fYZg[f_e{m[XYZ[������[ef_fZ Zf[]jeyZ\cbcZe[fY_f[���������[ce[_[\]fZ�f[ZfY]ai[_e[fYZ[eckd_f]g[ZZae[f][\gZ_fZ[_[eZy�_g_fZ[ef_\{[jYZ[cf[ce[\_ddZam ������������������� ����������� ����������������� !"��#�$%�&'��&()���*&$����&$ ��&(���+%",��-�&$"�(�"�!.!/012345/4/0678559/:06;5<=>?@A<5B0C;4D;5;EFG564E1HI934JF;69CK5ICE/4L8554D:06;5<=>?@A<5;EFG5/4/H64E18554D:06;5<=>?@A<5;EFG5/4/HM69;48554D:06;5<=>?@A<5I2CB;90C5/4/HN29318559C9;9E3564E1HI934J</4/O1E;<L8559C;5/4/PQ855I2CB;90C5/4/HN2931J9C:2;59C;5F9R4L85555/4/5S5C4MPF9R4Q8554C1I2CB;90C55;EFG5/4/H64E1J9C:2;59C;5E116T502;:2;59C;51E;EL85555UVW51E;E5S5/4/PE116Q8554C1;EFG55;EFG5/4/HM69;4J9C:2;59C;5E116T59C:2;59C;51E;EL85555UXW5/4/PE116Q5S51E;E8554C1;EFG4C1/012345Y5/4/067Z[\]]_a\]bc]defgh\]�ij�i]gkbfekbhl]\mgecan]o[\]_en\]noeo\f\co]o[eo]a\_a\n_ffecanj�������������p�q&(��"&�$��(�q&���r(�*%����r(�q�����-�&$"�(�*)rq"%&r4D;46C5s0915/4/H64E1J9C;T59C;tL854D;46C5s0915/4/HM69;4J9C;T59C;L854D;46C5s0915/4/HN2931J9C;L859C;564E1HI934JBuE65tICE/4L5v559C;5B/1855w?xy5tI934855I9345S5I0:4CJICE/4T5<6<L855Mu9345JzI40IJI934LL5v5555B/15S5IK4;BJI934L85555FM9;Bu5JB/1L5v555555BEF45{|{Y5v555555559C;5u9855555555IFBECIJI934T5<}15}15<T5~u9L855555555/4/HN2931Ju9L855555555N64EG8555555�

Page 204: SystemVerilog for Verification

�������������� ������������������������������������������ ��!!"#�!� �#��$%&��������'����'('�)�#�*+��+!�+!�*#�,�-!#�,�!!"#�,!� �.&��������-�-/"��!(�!!"#�,�$%.&���������'�(!� ��01��$%.�����������2/%"�� '(*3��4� �1+!#��$%1+!5�*#�!� �#��$%.&��������6"��7&������8������������9�������������� ��!!"#�!� �&��������'����'('�)�#�*+��+!�+!�*#�,�-!#�,�!!"#�,!� �.&��������-�-/:"� �(�!!"#�!� �.&��������6"��7&������8����8��8��'�)2��('�)�.&8;<=>?@AABCD>EFG=><BH>C=I>?@AABCDH>J<BJ>IKFJ=>JI@>G@?BJF@CHL>BCD>J<=C>K=BDH>MB?N@C=>@E>J<=AL>BCD>FC?GOD=H>J<=>=PQ=?J=D>RBGO=STUVWXYZ[\]_ZaVVUbcZdeXYZdafZgeVWXYZVYVafhZVacYXi�jkk9�jl�mn9�oo�p��jl�mn[\]q]ZUXXebrZsYtuacgZebZvwxYytgz@O>?BC>=PQ@KJ>{|HJ=A}=KFG@~>A=J<@DHL>=P?=QJ>E@K>J<@H=>D=EFC=D>FCHFD=>B>?GBHHS>;<FHK=HJKF?JF@C>FH>HFAFGBK>J@>J<=>K=HJKF?JF@C>@E>FAQ@KJFC~>HJBJF?>�>A=J<@DHL>BH>H<@IC>FC>{=?�JF@C>��S�S�L>BH>@M�=?JH>D@>C@J>=PFHJ>I<=C>{|HJ=A}=KFG@~>=GBM@KBJ=H>|@OK>?@D=S>;<=H@GOJF@C>FH>J@>QBHH>B>K=E=K=C?=>J@>J<=>@M�=?J>M=JI==C>J<=>{|HJ=A}=KFG@~>BCD>�>?@D=S�@I=R=KL>OCGFN=>B>�>Q@FCJ=KL>B>{|HJ=A}=KFG@~><BCDG=>?BCC@J>M=>QBHH=D>J<K@O~<>J<=���S>z@O>?BC>FCHJ=BD><BR=>BC>BKKB|>@E><BCDG=HL>BCD>QBHH>J<=>BKKB|>FCD=P>M=JI==C>J<=JI@>GBC~OB~=HS;<=>E@GG@IFC~>=PBAQG=H>MOFGD>@C>J<=>QK=RF@OH>R=KHF@CH>@E>J<=>A=A@K|S>;<=>{|HJ=A�}=KFG@~>?@D=>FC>{BAQG=>��S��><BH>B>?GBHH>J<BJ>=C?BQHOGBJ=H>J<=>A=A@K|S>�@I>|@O>?BC<BR=>AOGJFQG=>A=A@KF=HL>=B?<>FC>B>H=QBKBJ=>@M�=?JS>;<=>?@AABCD>EFG=>FC>{BAQG=��S��>?K=BJ=H>JI@>A=A@KF=HL>��L>BCD>��S>;<=C>FJ>Q=KE@KAH>H=R=KBG>IKFJ=H>J@>FCFJFBG�F�=D>G@?BJF@CH>FC>M@J<>A=A@KF=HL>BCD>GBHJG|>JKF=H>J@>K=BD>MB?N>J<=>RBGO=HS>�@JF?=>J<BJG@?BJF@C>��>FH>OH=D>E@K>M@J<>A=A@KF=HS ������������������� ����������� ������������� �!"���#$�%&���%"'��(�"')�$���)*"$+�,&)*�--.����"'&�+/012000/213000401231564212317740188127921331669012315692123177:;<=>?@A<BC<DEFGH=IGJ<=IGK@ADLIA@=M=K<N=GOP<IA=QGD=<R<D?=S=IGBBMKJ=EK=A;<=QEF<T=:;<<UVGDA<J=QLKIAEGK=WXWYZ[\]=IMFF@=A;<=SXW_a=IGK@ADLIAGDT=bA=A;<K=@AGD<@=A;<=;MKJF<AG=A;<=SXW_a=GOP<IA=EK=M=>?@A<BC<DEFGH=cL<L<d=MKJ=D<ALDK@=A;<=cL<L<=EKJ<U=AG=A;<=eIGJ<T=:;<=;MKJF<@=MD<=@AGD<J=EK=M=cL<L<=@G=A;MA=?GL=IMK=J?KMBEIMFF?=MJJ=K<N=B<BGfDE<@T=:;<=<UVGDA<J=AM@g@=WXWYXh=MKJ=WXWYi\jX=KGN=;MR<=MK=MJJEAEGKMFMDHLB<KAd=A;<=EKJ<U=GQ=A;<=B<BGD?=;MKJF<=EK=A;<=cL<L<T���������� k��l+)��m�'&�"n��"$o���,&)*����"'l��"$���p��++qrstuv1qvqrwxy11zq{rw|1}~����}1�r�|v�|1|���1wv�s��zuv��|wz��1���qv�y11v�{rw|1}~����}1|���1qvq�wv�sy11v�{rw|1}~����}1|���1qvq��wz|vy11v�{rw|1}~����}1�t��|zr�1qvq��tzusy11z�z|z�u1wv�s��zuv�}qvq�s�|}�y11��1��uu1�1�rsv1|r1wv�s1�zuv11�u���1/vqrwxy1111z�|1qvq��y1111�t��|zr�1�v��z�{t|1z�|1�z�v�y111111qvq1�1�v���z�v�y1111v�s�t��|zr�1111|���1qvq�wv�s�z�{t|1z�|1�ssw�1rt|{t|1z�|1s�|��y111111�301s�|�1�1qvq��ssw�y1111v�s|���1111|���1qvq��wz|v�z�{t|1z�|1�ssw�1z�{t|1z�|1s�|��y111111�201qvq��ssw�1�1s�|�y1111v�s|���1�1qvq��wz|v11v�s�u���1�1/vqrwx11/vqrwx1qvq����y1111111111��1�tvtv1r�1/vqrwx1r��v�|�11��1�r��|wt�|1�1�v�1qvqrwx1z��|���v1�1{t��1r�1|�v1�tvtv11�t��|zr�1z�|1qvq��tzus�z�{t|1z�|1�z�v�y

Page 205: SystemVerilog for Verification

�������������� ���������������������������������������� !"�#��������$%&' ()*+,-��#�������.'������$% !"��#/0�����12'�,.!����.+ -����)��+1�!�&'.�!�.�!13�+11�4��'.&'.�!�.�1+.+#��������$5!136%���)��+1�+11�4�1+.+#�����1.+ -��.+ -����)��!.��!�&'.�!�.�!134�+11�4�!�&'.�!�.�1+.+#��������$5!136%���)��!.��+11�4�1+.+#�����1.+ -��1��1'7��8�������9:;<=>?@ABCD?E?FGH>?IG?F:==?>J<GKI>H?I:LML?NOIP?QQR?;>;GKS�3.����T�!1����)��+1�!�.4�!�.4�!�.U#���3.����T�!1����)��!.��!�.4�!�.4�!�.#���3.����!�.����)*'!71�!�.#��!�.���+1)2!7��,(+��U2�+��#�V��!�.�,�14�!13���WXYZ�U2!7����2!7����2�&���2�+��4�[�[#����(!7���\2��2�2!7�##�V����,�1���2]�.,�2!7�#�����2 ,+�2�2!7�4�[1[4�_!13#����� �!.,(��,�1#������V������,+ �� �8�V��������!�.�(!4�$!13���������2 ,+�2�2!7�4�[1�1�[4�_(!#���������$!13������)*'!71�(!#���������*��+-�������a������,+ �� b8�V��������!�.�+11�4�1+.+4��3&���������2 ,+�2�2!7�4�[,�1�1�[4�_,�14�_+11�4�_1+.+#������������)��+1�!134�+11�4�_�3&�,.�1#���������!2��1+.+�\���3&�,.�1#����������!�)&�!�.2�[c8�d+.+�14��3&�1e�[4�1+.+4��3&#���������*��+-�������a ������������������� ����������� ����������������������������� !��""#$�"�!�%��������&��� &'&�(�$�)*��*"�*"�)$�+�,"$�+�""#$�+"�!�-%��������,�,./#�!�'�"0$��""#$�"�!�-%��������1#��2%������3����3��3��&�(4��'&�(�-%3567879:;<=:>=?@A@B:CD:EC@F=GFHIJKLMNOJPOKMQKRNKSTUMVOJWKTJOIMWKSXKOIJKYMLROSMNKZIJVJKSOKZRXKWJQSNJW[KX\LIKRX] _a[KTMW\YJ[KUVMbVRT[KMVKURLcRbJKXLMUJ[Kd\XOKYScJKRKNMVTRYKefXOJTgJVSYMbTJOIMWhKiQKfM\KSTUMVOKRKTJOIMWKSNKOZMKWSQQJVJNOKXLMUJX[KOIJKLMVVJXUMNWSNbKjKLMWJJPJL\OJXKSNKOIJKLMNOJPOKMQKZIJVJKOIJKklmnaKXOROJTJNOKMLL\VVJWhKHISXKSXKXSTSYRVKOMWJQSNSNbKRKefXOJTgJVSYMbKn_opKORXcKSNKJRLIKMQKOZMKXJURVROJKTMW\YJXhKqRLIKORXcRLLJXXJXKrRVSRsYJXKSNKSOXKMZNKTMW\YJ[KZSOIKNMKRTsSb\SOfhiQKfM\KRWWKRKXJLMNWKTMW\YJKOMKeRTUYJK�thu�KOIROKSTUMVOXKOIJKXRTJKjKLMWJKRNWJPUMVOXKSOXKMZNKQ\NLOSMN[KOIJKjKTJOIMWKZSYYKLRYYKWSQQJVJNOKefXOJTgJVSYMbKTJOIMWX[WJUJNWSNbKMNKOIJKLMNOJPOKMQKOIJKSTUMVOKRNWKJPUMVOKXOROJTJNOXhv?wxy=:567z{:v=|C@}:wC}~y=:DC�:�Awxy=:=GxC�F:=G?wxy=,4"�(��!4�%���,�4#!�)�����)��4 !�0!�&� �!�4 ��4�"��."���(��'-%���0�4#!�)�����)�&� �!�4 ���."���(��%��1(4�2�1�'-%��� �!��(��."���(��'-%��&� �!�4 ��4�"���."���(��'-%�����"���(��')����!4�)-%��� "&� �!�4 � ",4"�(����!4�,4"�(��1(4�2%���,�4#!�)�����)��4 !�0!�&� �!�4 ��4�"��."���(��'-%���0�4#!�)�����)�&� �!�4 ���."���(��%��� �!��(��."���(��'-%��&� �!�4 ��4�"���."���(��'-%�����"���(��')����1(4�2)-%

Page 206: SystemVerilog for Verification

�������������� ����������������������������������� ��!�" ��#$%&'()*+)*',%(-,'*%.*'(/&'0'1&*%(2'3.44,'*-(',&+.5.*&'67,*&18&594(:'1&*%(2,;2&+&/29/:'(/'-%&5&'*%&'0'1&*%(2'-.,'3.44&2<=>?@ABCDEFGHCIJK@JKCLMN?COP?@ABCBQ>?@ABCRPKSCKRNC?NTJABOU!���V��WX YZ[\!�" ��#U!���V��WX YZ[\!���XDEFHF]C=BKKP_CKSBC=N@BCLNMC>Ca?@NMKBTCbBKSNTc),*'.,'7()5'67,*&18&594(:'3(2&'3./'3.44'.'1&*%(2'9/'*%&'4(3.4',3(+&;'./'91+(5*&2'01&*%(2'3./'3.44'.'1&*%(2'()*,92&'9*,'2&d.)4*'3(/*&e*<'f,&'*%&'1&*%(2'ghijklmnoj'*(:&*'.'%./24&'*('*%&'3)55&/*',3(+&;'./2'*%&/'),&'*%.*'%./24&'9/'.'3.44'*('ghljklmnoj'*(1.p&'*%&'0'3(2&'*%9/p'9*'9,'9/,92&'./(*%&5'3(/*&e*<'6.1+4&'�q<�r',%(-,'*%&'0'3(2&'d(5*-('1&*%(2,<'$%&'d95,*;'gshjtuvtgmnojwx;',.y&,'*%&',3(+&'(d'-%&5&'9*'-.,'3.44&2d5(1'*%&'67,*&18&594(:',92&<'$%&',&3(/2'1&*%(2;'mtz{go|svwx;',&*,'9*,',3(+&'*('*%&,.y&2'(/&;'+59/*,'.'1&,,.:&;'*%&/'3.44,'7()5'd)/3*9(/;'ghtz{go|svwx<=>?@ABCDEFG}C~CNTBC_BKKP_C>TCOBKKP_CNKBQK������������W�V��WX YZ���W�[��X���ZVW��X�������WY��V�ZVW��X��������ZVW��X����W����[��X�����������V��WX YZ���������������������������W��X�����VX���������U!��V��WX YZ��Y ��������W��X���W�����������������W�����Y������[��X��W����[��X�����������[���Y�����W��X���W�[��[��X���ZVW��X�������VX�������U!��Y �����W�W�V��WX YZ�����������������W�����Y������[��X��W����[��X��������W�V��WX YZ����$%&'0'3(2&'3.44,'ghijk�suj��nulmnojwx�*%.*'5&*)5/,'.',*59/:'(d'*%&'3)55&/*',3(+&<$%&',3(+&'9,'+59/*&2'*-93&;'(/3&'-9*%'*%&',3(+&'-%&5&'*%&'0'3(2&'-.,'d95,*'3.44&2d5(1;'./2'.:.9/'-9*%'*%&',3(+&'*%.*'-.,'+5&y9(),47',.y&2<'$%&'5()*9/&'ghijklmnoj ������������������� ����������� �������������� !"#$�!�$ %&'(�)& *�!�+,$ #-.#%&/0(�$102#�!'3�%# 4%'$�!�20&' #%� 0�!5678�9��*!'3/#� *! �1!'�:#�4$#3�)& *�567�;78�9���<='� *#�+,$ #-.#%&/0(�103#�&'�+!-2/#��>?@AB� *#�C&%$ �-034/#B�DE�8FB�1!//$�!�G-# *03� *! �$!H#$� *#�10' #I ?�J*#'� *#�-034/#�;�9�1!//$�8KLM59E�N��B� *#-# *03�$# $�$102#�:!1"� 0�DE�8FB�!'3�$0�& �1!//$� *#�56KLM59E�N���-# *03�&'� *#DE�8F�-034/#B�'0 � *#�;�9�-034/#?OPQRSTUVWXYZU[\]ST_UPSSabcUQTde\]_UdePdUcTdUPb]U_TdU\bdTfdghijklmnkhopqmmrgshtumvwxyz{vmoh|ul}um~j|ourh|m�hrimo�ir�sk����qmmrgshtumvwxyz{vmoh|ul}um~j|ourh|m�hrim���l�g���ohsl��qmml}shtumvwxyz{vm~j|ourh|m���ir�sk��qmm~j|ourh|m�hrim���ir�sk����qmmmm�ir�sk���v���m�gv�qmml|i~j|ourh|m�m���ir�sk��mmr|rur�kmnl�r|mmmm���l�g���ohsl��qmmmmo�ir�sk����qmml|il|ighijklm�mnkhopmghijklmuhsqmmrgshtumvwxyz{vmoh|ul}um~j|ourh|m�hrimo�ir�sk����qmml}shtumvwxyz{vm~j|ourh|m���ir�sk��qmm~j|ourh|m�hrim���ir�sk����qmmmm�ir�sk���v���m�gv�qmml|i~j|ourh|m�m���ir�sk��mmnkhopmn���qmmr|rur�km��mo�ir�sk����ql|ighijklm�muhs�*&$�2%0341#$� *#�04 24 �$*0)'�&'�+!-2/#��>?@�?

Page 207: SystemVerilog for Verification

�������������� ���������������������������� !"�!"�#$%��&'��"�(%���(%)�*+,-./012345,-4336/,789:,;92<=>*+,*4330?@,;92<=><1A./012345BC+,;92<=><1A./012345*+,-./012345,-4336/,789:,;92*+,*4330?@,;92<=><1A./012345BC+,;92<=><1A./012345DEFGHEFIJGFKLGMNOKGHEPHLQMGERGKHEQLGMEGSIIETGSGUGVEJLIGMEGWPETGTNLXLGOMGTSKGOPKMSPYMOSMLJGRXEVZGSPJGJORRLXLPMOSMLGLSHNGOPKMSPHL[G\EXGL]SVQILZGSGVLVEXGVEJLIGVSG_LOPKMSPMOSMLJGKLLXSIGMOVLKZGSPJGPLLJKGMEGSIIEHSMLGFPOaFLGKMEXSbLGREXGLLXGOPKMSPHL[���c�d%ee�("feg� "h�$�i�eg!�g�&jNOKGHNSQMLXGNSKGKNETPGMNLGklmGTEXWOPbGTOMNGUGSPJGUnn[GoOMNGSGIOMMILGTEXWZGEFGHSPHEPPLHMGEMNLXGISPbFSbLK[GjNLGLSKOLKMGTSGOKGMEGHSIIGMNLGpLXOIEbGGqrsrtuvwxGMSKW[GmREFGPLLJGMNLGXLMFXPGSIFLGRXEVGMNLGXLMFXPGSIFLGRXEVGMNLGHEVVSPJZGFKLGMNLGyPO]rsrtuvwxGRFPHMOEPGSPJGMNLGz{|}~�~�~��GVSHXE[GjNLG�KMLVpLXOIEbGHEJLGOPG�SVYQILG��[��GHSIIKGSGUGTXSQQLXGREXGrsrtuvwx[���������������&"����$f�%g�(%)��(���feg�d��$����$�#%$���$�0:298;,�����*�,7�?-;09?,0?;,-433.2683�1;80?@,1��289@84:,4�;9:4;0-,2683.;61;�,,,0?;,86;.A43�,,,1;80?@,1-802;�,,,0?0;043,=6@0?,,,,,,07,���;61;�23�148@1��1-802;���,=6@0?,,,,,,,,�/012345���9,�1-802;,1�0;-�,79�?/���,,,,,,,,�70?01��,,,,,,6?/,,,,,,�A43�6�23�148@1��1-802;��1��,1-802;��,,,,,,�/012345��BC+,��??0?@,���1���,1-802;��,,,,,,86;.A43,�,-433.2683�1-802;��,,,,,,�/012345��BC+,�683,1-802;,86;�8?6/,��/��,86;.A43,��,,,6?/6?/289@84:,+,2683.;61;�SVQILG��[��GOKGMNLGUGTXSQQLXGMNSMGHSIIKGKKMLV� GSPJGMXSPKISMLKGMNLGXLMFXPGSIFL[ ���������� ��� ���������������������������������� !"#$%&'()*+$,-'./0-*!"#$%&'()1/2'%"30-4!"#$%&'()156"20-4"#2)$6%%,7(.%8$9#/2)$-6.:)$9;;6#'<)=))"#2).(/&%2)>)/?/2(;8$9;;6#'<@)).(2&.#)ABCDEFEGEHF8.(/&%2<@IJKLMNOPQRS�PTUPKPVOWNPUXWTMYPYZKYPMWT[YUPKPLOUUK\OPK[]PWOYW[UPKP_KNOR�� ������������������� ������a���� ����ba��c� � d�����e!fg&/.g%9$6%g3"#g7(.%7."#2)*h(.%i)j(%%9)59.%'fk#*)@(l"2)8m<)����n���b��o���bpZOPqVrPKNNstUPusPYsPXKNNPvPWsYT[OUPKUPTwPYZOuPKWOPxUYPK[sYZOWPJuUYOLyOWTNs\PWszYT[O{PMKUUT[\PJuUYOLyOWTNs\PYuMOUP]TWOXYNuPT[YsPvRPpZTUPZKUPNOUUPs_OWZOK]PYZK[PYZOV|r{PtZTXZP}TN]UPKW\LO[YPNTUYU{PK[]PKNtKuUPZKUPYsP~OOMPYWKX~PswPYZOPXKNNT[\PXs[YO�Y{[sYPYsPLO[YTs[PYZOPXsLMNO�TYuPswPZK_T[\PMPYsPwsWPvPWsYT[OUPwsWPO_OWuPUuUYOLPYKU~R�]]TYTs[KNNu{PtTYZPYZOPqVr{PusWPvPXs]OPXK[PXKNNPJuUYOLyOWTNs\PWsYT[OU{PKNNstT[\O�YOW[KNPKMMNTXKYTs[UPYsPXs[YWsNPUTL NKYTs[RP�TYZPYZOPV|rPusPtsN]P[OO]PYWT\\OWP_KWTzK}NOUPK[]PLsWOPKW\LO[YPNTUYU{PK[]PusPZK_OPYsPtsWWuPK}sYPU}YNOP}\UPwWsLPL NYTMNOXKNNUPYsPYTLOzXs[ULT[\PYKU~URpZOPLsUYP]TwwTXNYPMKWYPswPYZOPqVrPTUPLKMMT[\PJuUYOLyOWTNs\PYuMOUPYsPv{POUMOXTKNNuPTwusPZK_OPUYWXYWOUPK[]PXNKUUOUPYZKYPKWOPUZKWO]P}OYtOO[PYZOPYtsPNK[\K\OURPrwPusPXK[LKUYOWPYZTUPMWs}NOL{PusPXK[PXs[[OXYPKNLsUYPK[uPKMMNTXKYTs[PYsPJuUYOLyOWTNs\R

Page 208: SystemVerilog for Verification

��������������� ������������������������ !���"�����#$���%&���'(���)�*�++ �,-./0��� �1223����� �������4�5��6 �789�84�:9�;� �-+��4���8�)�<;���+� �-�8�*��&���=�> ?��(��@��!(A('(�$�@?�B?'�=(��#$���%&���'(���)�*�++ �,-.�/0��� �122C5�<�� ����4�D����;��E���� �/���F�G��4���8�H9E�� �-I��;<�J�#$���%&���'(�K������(���L?�A�((M�=(��N(�%?'�?�A�O$�?%� �&���=� ?��(�.�D<8+5�<���P9Q+�G<�� 122C59EE��G �5+�RR4�S(��'( M����K�����%��������&���'(��#$��!����T�U(A����#�$'���!?��V�''W�/�����G� �5-.�/6��0G6G�XG��Y�90 �122259EE��G �5+�RR4���8�/�+Z �-;9���#$���%&���'(��[\����]���(��T�]? ��K\(�A>?� ���_B�A�'���� �/6��0G6G�XG��Y�90 ���G;�� �5- �1223����� �P�;����!��a( ?'��$�b��� �c'� �5�EE9����;���G��R�;<��-5, �defgh ��9+6122C �00��ijk1d:�l9� �m��G�+ �,��<�+G�� �����;<�����!��K���(=�&���=� ?��(��n��!�#$���%&���'(�K������(����D��R���;����5��;�+ �1223 ��������������� �������������������������������������������������������� ��!�������"���� ������������������#���$�����%&'�()*+,�-��../�01�+�1��2345&67&*89):;1<:=1:&�>&?&*&<@&�A1<=19-�)*�;>A�B�� ������������������������������������ �������!�����#���$�����%&'()*+,�-��..CD155-�(19&�%�E�1<F�D15&9-�21<G13�H�� �����$���������I��!$������������J�K����L�������M��������I�����L�������%&'�()*+�N853-�%(,�A@O*1'�P899-��..Q2=5R&*91<F-�25=1*5�� �����������������I�S���������T���������������������������������T�����������������������U���������� ����������=*)V&E�23<)V434�W4&*�O*)=V-�..�2=5R&*91<F-�25=1*5E�X1Y8F61<<-�286)<E�Z91+&-�D&5&*E�1<F�A))*[3-�DR89��������"������������������J�\�M$��������������������������������������������������S���������%)*'&99-�A],�2V*8<:&*-��..2=5R&*91<F-�25=1*5E�1<F�A8994-�X)<����������������������������M���T����%)*'&99-A],�2V*8<:&*-��.._23<)V434-�<@���������a#�K����������������������$�����������������������I��"���"I����L$��-�R55V,bb43<)V434�@)6bV*)F=@54b61:&991<b61:&991<c'V�R569-��..QY1<�F&*�2@R))5-�P1<4E�1<F�d&*:&*)<-�H1<8@+�a����������"#�e���K$���������I�e��"����������������������21<�H)4&-�N],�X7N)<-��..78G131*1:R1Y1<-�2*8+1<5R-�1<F�>161<15R1<-�A&331VV1<��\�U���������M$���������������������\���������f�%)*'&99-�A],�2V*8<:&*-��../g1@R)'4+8-�]<F3E�1<F�g1@R)'4+8-�;1**3��aT��S����h��P)993'))F-�N],�g1*<&*d*)5R&*4�25=F8)4-�Ciii

Page 209: SystemVerilog for Verification

����������� � �������������� ���� �������� ���� � ��� ��� ����� �!�����������������"� #�$%&'�' "�� !���"� #'&()�� !���"� #%&"��&' !���"� #*'"+&() !���((&( �!��$" ,��� � �� !�+� �� �!�� -�� --�+��&�� -��+�&+ ����-��+"'"�. ,��� � �� !���,��+&%�' ����-��+���'+ ����-��-��/� #�&0�(�/� �� �"'+& �!�"�*'1'&2' ���� �,�%�%("' + -�������(�'�&) !��(��� ")� �-����(&& ���� � � ����+&()� -���"3� �,������������� (&4� ������� �) � !� �� �%�*��(/� ��-������� !� ")� �����-���� ")�+&()� �����-����*'" ��� ���� � ���!���� ��*(�'�&) !� �*(�'�&)#(�'/� ���� !��0��*��%�*��(/� ��-������� !�2�('"'/ �!5� ��5) ���5 �-67 -������� ��6' 4#(�'�&)#���� ��-88 �-����!99 ��:: ������� �-;�8�&%�(� &( � ����<�= �-<>= �!<= ��?7 -!@��+"'� �,AB��CDE��F� � �� �%�� ���� �����!����!-���,����,��F� � �� �%�� ���� �����,���,�G�4� (�� ������ �!���!����!-H������(� $$$���*)*�� ��&%�(� &( -�H� "0��(�/"&' ,��,���,-��,!�� ��H/�' ������ �!��2����4�&�1 � !��2����4�&�1��"'�%(&/(�)� � �'&'�)&*���'*)�(� ��� �%� ���(/*)�' � ������������ ������ ���������������������� ���� !�"#$% ����!$��&����&#�"'& ���%(� ���))�%�!!"*&+�&�,-�!!'#"��"�� ,.�� /���/���#'+(�)� ,0#'&!�)�"&�0�-#'(% ,0�%&�+"# ,��,-/�,./���/�������"1��2!"3� �./�,-/�,./���/������4�&��� 0- �"&$����"!�� �"��)����/�,��'#��')�+��4'�! ��+��4'�! �0+���"�"+�&!"'&���./�, �,0(�#$�� ,,�,�5���� ,�/�,./���)���#�"'&�+��4'�! �0�&(�#$�� ��/�,��!!�)�"'&#'&#�))�&�0 .#'��)�*� , "++��"��� 0 ��0 .()'#���)��0���!!'#"��"����))�% ,.�� /���/�����6���!��'(�"'& , �/�,�.789�)'���) 0 ��00�/�00��00���'+"#�!�"+���!�*�&�)��"'& � ����'6:"&6+�1 ,00�,0�/�,0.���'6:"&6+�1�'(�"'& ,�����'+��"# �./�����-/��-/�0,0�0,�/�0,�/���-����"&��4)���! �������,� /�,��;:�#$�'')��'�� 0 �<�#$�!2=��)�>')+ � -:�!��#��!! ��,<�!�8) �.�/����:�*"&???�&� ��/��0.'(�"'&���"&���!$!��&����&#�"'&! ��<�)*�)'&/�@�&"#$ 111�/��/�,-0/���0:"�")�#�"'&���#'&!�)�"&�! 0���0��:"�")�#�"'&���!"*&��0 :"&!'� ,���,�-:"��������%(� ��/�,.-/�,��:"��!�)��+"&*!���!�)��+"&*�'(�)��') -,:���()"&��(����)& ��-<=> � -:'�&����+�"�:'1 ��-����:)��$ ��:���,� /�,��:%���������%(� ��/�,.��,.-/�,��A#��#6#)#�+��4'� ��0����/���,#���:�#$#'��)�*� , �#)���"'& �.�"&B�#���"!�)�:�&#� �.�!#')�:'�)� �..�!�*� �.�#�!�-�/�-./��0/��-/��� /����C#�!�-,/����/��. ��&#�"'&�)���)&������ �-D�)&%/�E���)� ��0#4�&����������%(� ,.-/�,.��,.�/�,��#4�) ,.�D4�#$�)�#��!! 0-.#��!! 0��/�0�.#��!!�#'&!�)�#�') 0��#��!!�!#'(��)�!'���"'&�'(�)��') 0,�/��,.#�'#$�*�&�)��') 0 �#�'#$"&*�:�'#$ .���0/��-/�0 �0 0/�00��00-D'4�&/�<�& ��0#'++�&�#'��)*)'�( ,��#'++�&��'(�"'& , -/�,���,�.#'+("���"'&��&"�0 �#'+('!"�"'& �-�/��������/���.#'&#���&��"'&!�)"&* -�#'&#�))�&���!!�)�"'& 0 .#'&�"�"'&���'(�)��') ,0/��,D'&�"*�#��!! �--#'&!���%(� -�/��./�0 -/�0�.#'&!�)�"&�� .#'&!�)�"&��2)�&�'+���!�.��/�0�0/�0.�/���-#'&!�)�"&�

Page 210: SystemVerilog for Verification

����� ����� ��� ���� ��������������������������������� ������������ ��������� �����������������������������������!"��� �����������������#��� �������������������������"����������� ��������������#� ����$���$ ���"��%�� ������������������������������� &������������%����' �����$!�����"��%�� ���������(�)�#$��""������)����� ��������$���� �����"$�� ��������������))� �����(�$�����������������������������*+* ����������(��)� ������������"��#����,����� ���������������������!�#"!$���!"�����)��$���� ���*+- �������������*#""��)���*��,, ���������������������" �����������#�������%��� ���.������$� ���� �� �����������)� ����)�� �����)�����������) ������%���������"� ��'�� ��//+ �� ������������ �������"�������,�#��������"�������,�#���(��#� ������0�����������0����� ����������"��%�� �����������������(�������� ���/�����1�)�""��)�2���,��� ������� �� ���������������� ���,�� ����������� ����� ������������$���"��%�� �����������������������������������������������������������333'%�������$ ������������"��� �����# ����������������� ����# ���������$� ���������'�������) ���/12 ���/120* ��������/�(������� ������"����� �����������������������"����%���� �������4��#"�������$�� ����#"������(��#�� ����#"������ ��5�(���"��������� ����(����������������(������))��� ������������� ���� ���������� $�������'���% ��� ������������ ���� �������� �������#��������������� ���� ����������������������� �������#��������������� �����������������6,����278 ��,����� ���� ���,���!,����"��%�� ��,���!���� �"��%�� �����,���!�����"��%�� ��,���!����!���� �"��%�� ��,����� ������������ ������ ��������������������� � !��"!�#"$#%��&��'��(��)��)* �%!��#!��%!���!���$�"�+�)���)�)��*,� �%�����+��, � $�-!�� !�#"!������.������/0���/0)+� 1-�����).��.�0���)�0�1 #!��--$�-1!��������).��+��, � $�-!��#!��"!��-���23334��0 �1%$�1 ���23334��05)0* �1%!���1$������23334��050�0� �1%!���-$���!����$��"��6�'��)����*,�� �"�����'��)����*,�� �"�60.���0 �#)�/6��0�� ���60.���0)+�.�7��)/� ���6��0/�.)++8).2� �% 9/)�8)/��.�++�.���0 1��:�0��)����.+)�� 1#%!����$���!����!���%!����!���#!���"!�� �/��5.�7��)/� ��1/��5�0��5.�7��)/� ��1/��.������� # $�-/�)+��,���0 �� ;�)0�+� 1�%$1� )��)* 1#-<)=6�!�>)��)+��1<)��?)���@��.��,���0�A)0/6)/� &&&<)��?)���B�����.)���0�A)0/6)/� &&&!��<@A &&&�����/�)� 1"�$1"����2 ���!��%#<BA &&&$&&&�!��!�1�C��� 1- !��1#�/0���58�0� �1"$�1%!����$����++�/)+58�0� �1%������)���)�������0 1-"$1-%��,+�.���,����.�00�.���0 1-���,����%��0.����0����0�����)0.� ��-!��"��0���)+�()���0��0���.+)�)���0 "� �0'+�0��.�0���)�0�1 ��0�6�)�/6��0���*,� �",�����*,� 11"�0,6�)�/6��0���*,� �",�����*,� 11"�0�����=6�6� �"�0���� 1�%!�1"1�0�����.�0���)�0�1�%!�1"1$1"�!�1"�$1"%!�1 #�0��)0��)�� 1� �0���)�)��*,� �"!��%�$�%#!�� ��0��/����)�)��*,� �#!��"!�#1�0����).� %�!� -!�1-�!��� .�00�.��0/����,���%#,��.��6�)+�.��� ��"7���6)+���$���!����$��%!���1$��"�0���,��.����.���60�.)���0 &&&�!��!��1"!����!��#��0�����.����$���!���#��5,��0�� �%%!��-�DEF�����0���,��.����.���60�.)���0 �1"����)����)�/6��0���G+)��������� #"AF����.��.�0��++�� 11%+�02���+����-+�.)+1#"!�� -$� 1+�/�.��)�)��*,� ��$�"!� -!��%#!�� �+�0/�+�0/��0��-�+�0/�0���)�)��*,� �"!��%�$�%#!�� �AHI %AHI�J*����B���+�/ �"!�"-!� �!�1-1!�1�%!�1 �!��1"!����!���1K�).�� �%�).�����6+� 1-�I)/�++)0 ����)�+8�& ��-!����!��#1$�#�8�60��� ��#$���608�60��� ��#�)2���L).2�)��6++�8�* &&&����)++�. 1� �)&������� ��

Page 211: SystemVerilog for Verification

����� ������ ������������������������������������������ ���� ������������ �� ���������� ��!! ������� ���!����������" �����#���$����%�� ��� ��������& ��!�� �� ������� ��"��'��() ! ����&�%�� ��� ��#�&*+������� ��������,���� �������������(�� -��'��!!�'������������������������������������������������� ��.�() ������� ��" �������� ���� ���� �����!������� ���/() 0/��� �1��'������'!�//1 ���/(!�� ��'��� ��//1 ��������������'" ��������//1������'"(� ' ��� �� ������! �����������" �##/�������"! �##/��2�� ,,,������3��!�#���������3(��3��, ��� �����#���������� ��!!3���3����3��!!��' ���'��������3��!�� ������������&�'������������������!4���3(��3��, ������������������ �� ������'����"� ������"� ���5�� - ����������#���#��� -�' ���������#�������� - �����" ����������� ���������#��������6 � ��!! ��#����� ��!! ���1���7�� �����3��!�� ������ ������������1�����!������" ����"!� ������%� ! ���189 �����������"������!� ����������3(� - ����� ��� ��'������%� ����!3��� ���6 ����������#����#���!0 �������!0�� �����1�!��� �����������3��� ���6 ���������0 �������0�� ������������ ������������� �#�1:;< �����������#�������� ������!!���� ������ !! ������ � ���� �����'��� ���������#�������������������'����(�� -!!��'���!4������� �������" ������������"� ��������������!� �0��� ������(��'����� �����������#����#��(�� ����������� ���� �#����������� ��������������!�3(� -���� ����!�3%������� ���� �# ������������ ������ ��������������� ������������������� ���!�"#� $% &�'� $%()*%� &��!&�+� $%, &�'��&"���&+'���-&� $%, .� �-"!�-�� $%*)��� �&�"� $%*)�.��% &�!&���&����&�����-+���&&� $%*)�.� /����0 �&-!�&�� $%*)�1��2�$,��*$ &��!&�"� $%*)�1�34�5��6 &����&+�� $%*)�1�3$���4 &�+� $%.����$,� �-'7� ,��8����9�*$ +���+���+��� ��% � ��0:� �'���"��'&��"���&�"�����!��'���+���2 ��� �9�)�$���0:� "-:*����0:� &&"��2���$,��,*�$��$9 &����9�% � ��0:� �'!�������$ "��*���$�� �9�)�$�. ����$�)��6*% ��'����"!���;.(8:�(8�,8 ��+&. ):���)��6*% �-����-"!�-�.,�$ ��*�9�$�� ��*$ �-�.,*��/* �% &����'!����&'�����'����"!��+�.�$9�, ��/ ,<. ��'.�) :6*�� ���!��-���'�.6*���$��% � ��0:� �"�����!��'���+�.6*���� ��% � ��0:� ���!��'���+�.�9$ ���� �"�.�$��2�$,��*$ ��'���-".�1��2�$,��*$ �'��&�"��&+'.*�8�===/�2*�� &�-!&������-!��&�����.: �.��) ���> ��.� ���)��6*% �&'.� ���8 �� /��. &�+!&+-.� ��,)��6*% &��!&��.�*� 9� "�8 �� /�� &�'!&�" .�*:�)��6*% �&'.��� )�$9�*:�� �*� '�!'���&''!&'�.���$9�,*$, ��$ ��*$ '+.���$9�% � ��0:� '+!�-�����!��'���+�.���,�'-!'���''.�/�,� .. ���.�/.���)��6*% �-.�)�)��6*% �&������&+�.�:���,� .. ���?��6��� $%��?�� ���'&�����?@(ABCDEF(FBGB(HEIEJ? �+-?@B &-+���--����&!���.8K�����!�����������+�!�+�.8K��@�,@ ����!������+-���+����-&.8F�)�$.�*$ �-&.8%:�=6 ����������������-&.8L��B�� 0E��)A��& �-�.8L��B�� 0A�� �--!�-�.8L��B��E��)A�� �-�.8L��B��E��)A��& �-�.8L��B��E��)A��� �-�!�-�.8L��B��E��)A��� �-�.8L��H )�M�*)?,*:� �&�.8L��?,*:� �&�.8L��?,*:�M�*)H )� �&�.8N�96 �-&!�-�.8O$,��)�$��-&.8I�2��-&!�-�.8I*9�, ������+�.8I*9�,@�,@ �������+-!�+����-&.8I*5 �-&!�-�.8P:�$B�� 0N $%�� �--!�-&���-�!�-�.87�96��-&!�-�.8?,*:� �&�.8?��?,*:� �&�.8?�1� �-&.8?�1�P2B�� 0 �-&.0$,6�*$*�.�%��8� +�.0.��)34 �&�?0.��)C ��&?0.��)@����*9�B..����*$ &-+���--���-+����&!���Q� .< �' �9�)�$�. ����):� ���R�.���: � )�����1�%�,� ..G6��J ���> &�����

Page 212: SystemVerilog for Verification

����� ����� �� ��������� ���������������� ��������������������� ������������ ������������� ����������������� �����������!�������� ���� ���������� ��������������� ��"�����������#���$� ����$$���� � ���$$���������� � �� �������!�%����������������%����������� ��������& �"����� ����� ����� ����� � ����� ����������� ��� ��#�� �������&��� ��' ��� ���%��&�������� ������� �(� ��������(�) ��� ��� �� �* ������� � ����+ ���������������� ����+�������� �"����� � � ��$��� ���������"�����������,#�������-������.��� ���#�/���0 "�1��&������2�������$��2�� ���&���-��%���1����$����122 �1����$�3��$�����$�4����&��� ��1����$%���� )))�)))�������"�� ��������������������"��� 1����$%���� )))�)))���"�� ����������������������"���"������#�� ���0 ""#�� ��������%������(����������������&��� � ��� �� "�� ��� �� ������ �� ����� ��������������"����" #�� �������� ������� 122 ���������"���������������� ���� �������#������������ ���� "��� ��#���& ����� �����"�134 "��� ��#�/������� ��#�5�� ��6!������������������ "�����!���&��+ ���!�$������� � � ���� ��!� � �!������ ���� ��!������������ ������!���/ ������� ��"7829 ��� ���� ��)�������� ��