1 BUSpec specification of AMBA-AHB protocol - ERNETpallab/BUSpec_AHB.pdf · 1 BUSpec...
Transcript of 1 BUSpec specification of AMBA-AHB protocol - ERNETpallab/BUSpec_AHB.pdf · 1 BUSpec...
1 BUSpec specification of AMBA-AHB protocol
AHB is a new generation of AMBA bus which is intended to address the requirements of high-performancesynthesizable designs. It is a high-performance bus that supports multiple bus masters and provide high-bandwidth operation.
AMBA AHB implements the features required for high-performance, high clock frequency systemsincluding:
� burst transfers
� split transactions
� singla cycle bus-handover
� single clock edge operation
In BUSpec we have successfully modeled this protocol. We have not considered all aspects of AHBprotocol such as fixed length incrementing transfers, locked transfers. However modeling of AHB busprotocol in BUSpec clearly reveals the power of this language. The BUSpec specification of AHB busprotocol is given as follows (for clarity some comments are provided in the specification).
��������
�� �� � �� ������ ����� �� �� ������� �� � �� ���� ����
�� �� ��������� � � ��������� �����
������������� �������
����� ���
�� !
����� !
"����� # $% ��� # �% ������ # $% ����� # $%
����� # �% ���� # $% ��� � # �&
'
�(�����&
�("�����&
'
�� !
����� !
"����� # �% ����� # $% ��� # �% ����� # �%
���� # $% ������ # $% ��� � # �&
'
)("�����&
�(�����&
'
)� ���
����� �����
��*�� !
�� ��
'
��*�� !
�� ��
'
��*�� !
�� ��
'
)� �����
)� ��������
�� +���� �������� �� �� ������
������������� +,��
����� ���
-+,��� !
����� !
1
"����� # �% ��� # �% ����� # �% ������ # $%
���� # $% ��� � # $&
'
)(�����&
)("�����&
.�)/�����0&
'
�+,��� !
����� !
"����� # �% ��� # �% ����� # �% ������ # �%
���� # $% ��� � # �&
'
)(�����&
)("�����&
.�)/�����0&
'
)� ���
����� �����
-+,���*�+,��� !
-+,��� �+,���
'
-+,���*-+,��� !
-+,��� -+,���
'
)� �����
)� ��������
�� )��� �� �� �-�) �������� �� �12
������������� �-�)
����� ���
��3 !
����� !
����� # $% ��� # �% ��� � # �% ���� # $%
������ # �% ����� # �% "����� # �&
'
)(�����&
)("�����&
.�)/�����0&
'
�45 !
����� !
����� # $% ��� # �% ��� � # $% ���� # $%
������ # �% ����� # �% "�����#�&
'
)(�����&
)("�����&
.�)/�����0&
'
)� ���
����� �����
��3*��3 !
��3 ��3
'
�45*��3 !
�45 ��3
'
2
�45*�45 !
�45 �45
'
)� �����
)� ��������
�� )��� �� �� ��6, 7��� ��������
������������� 7��6,
����� ���
�4 !
����� !
"����� # �% ��� # �% ����� # �% 8��� # �%
� ��� # �% ���� # $% ����� # �% ������ # �%
"���� # �% ��� � # �&
'
9�� /� �0&
)(�����&
)("�����&
.�)/�����0&
'
�5� !
����� !
"����� # �% ��� # �% ����� # �% 8��� # �%
� ��� # �% ���� # $% ����� # �% ������ # �%
"���� # �% ��� � # �&
'
9�� /8 ���0%
9�� /� �0&
)(�����&
)("�����&
.�)/�����0&
'
�5 !
����� !
"����� # �% ��� # �% ����� # �% ���� # $%
8��� # �% ����� # �% ������ # �%
"���� # �% ��� � # $&
'
9�� /� �0&
)(�����&
)("�����&
.�)/�����0&
'
�4: !
����� !
"����� # �% ��� # �% ����� # �% ���� # $%
8��� # �% ����� # �% ������ # �%
"���� # �% ��� � # $&
'
9�� /� �0%
9�� /8 ���0&
)(�����&
)("�����&
.�)/�����0&
'
�5$ !
����� !
"����� # �% ��� # �% ����� # �% ���� # $%
8��� # �% ����� # �% ������ # �%
"���� # �% ��� � # $&
3
'
9�� /� �0%
)����/8 ���% ����/8 ���00%
)����/� �% ����/� �00&
)(�����&
)("�����&
.�)/�����0&
'
�5� !
����� !
"����� # �% ��� # �% ����� # �% ���� # $%
8��� # �% ����� # �% ������ # �%
"���� # �% ��� � # �&
'
9�� /� �0%
9�� /� ���0&
)(�����&
)("�����&
.�)/�����0&
'
�; !
����� !
"����� # �% ��� # �% ����� # �% ���� # $%
8��� # �% ����� # 4% ������ # �%
"���� # �% ��� � # �&
'
9�� /� �0%
)����/� �% ����/� �0<�=�0%
9�� /8 ���0&
)(�����&
)("�����&
.�)/�����0&
'
�> !
����� !
"����� # �% ��� # �% ����� # �%
���� # $% 8��� # �% ����� # 4% ������ # �%
"���� # �% ��� � # $&
'
)����/� �% ����/� �0<�=�0%
9�� /8 ���0&
)(�����&
)("�����&
.�)/�����0&
'
�53 !
����� !
"����� # �% ��� # �% ����� # �%
���� # $% 8��� # �% ����� # 4% ������ # �%
"���� # �% ��� � # $&
'
)����/8 ���% ����/8 ���00%
)����/� �% ����/� �00&
)(�����&
)("�����&
.�)/�����0&
'
�3 !
����� !
"����� # �% ����� # �% ���� # $% ����� # �%
4
8��� # �% ��� # �% ������ # �%
"���� # �% ��� � # �&
'
9�� /� �0%
)����/� �% ����/� �0<�=�0%
9�� /8 ���0&
)(�����&
)("�����&
.�)/�����0&
'
�5? !
����� !
"����� # �% ����� # �% ���� # $% ����� # �%
8��� # �% ��� # �% ������ # �%
"���� # �% ��� � # �&
'
9�� /� �0%
9�� /8 ���0%
)����/8 ���% ����/8 ���00%
)����/� �% ����/� �00&
)(�����&
)("�����&
.�)/�����0&
'
��? !
����� !
"����� # �% ����� # �% ���� # $% ��� # �%
����� # �% 8��� # �% ������ # �%
"���� # �% ��� � # $&
'
9�� /� �0%
9�� /8 ���0&
)(�����&
)("�����&
.�)/�����0&
'
�? !
����� !
"����� # $% ��� # �% ����� # �% ���� # $%
������ # �% 8��� # �% ����� # 4%
"���� # �% ��� � # �&
'
9�� /� �0%
)����/� �% ����/� �0<�=�0%
9�� /8 ���0&
)(�����&
�("�����&
.�)/�����0&
'
�: !
����� !
"����� # $% ����� # �% ���� # $% ��� # �%
8��� # �% ����� # 4% ������ # �%
"���� # �% ��� � # $&
'
9�� /� �0%
9�� /8 ���0&
)(�����&
�("�����&
.�)/�����0&
5
'
)� ���
����� �����
�5*�5 !
�5 �5
'
�5*�4 !
�5 �4
'
�4*�5 !
�4 �5
'
�4*�; !
�4 �;
'
�4*�> !
�4 �>
'
�4*�3 !
�4 �3
'
�4*�? !
�4 �?
'
�4*��? !
�4 ��?
'
�4*�: !
�4 �:
'
�;*�; !
�; �;
'
�;*�> !
�; �>
'
�;*�3 !
�; �3
'
�;*�? !
�; �?
'
�;*��? !
�; ��?
'
�;*�: !
�; �:
'
�>*�; !
�> �;
'
�>*�53 !
�> �53
'
�53*�53 !
�53 �53
'
�>*�? !
�> �?
6
'
�53*�? !
�53 �?
'
�3*�5? !
�3 �5?
'
�?*�5? !
�? �5?
'
�5?*�5? !
�5? �5?
'
�3*�; !
�3 �;
'
�3*�? !
�3 �?
'
�:*�? !
�: �?
'
�:*�: !
�: �:
'
��?*�3 !
��? �3
'
��?*��? !
��? ��?
'
�4:*�5$ !
�4: �5$
'
�5$*�5$ !
�5$ �5$
'
�5$*�5� !
�5$ �5�
'
�4:*�5� !
�4: �5�
'
)� �����
)� ��������
�� )��� �� �� ��6, ,�� ��������
������������� ,��6,
����� ���
��: !
����� !
"����� # �% ��� # �% ����� # �%
8��� # $% ���� # $% ����� # �%
������ # �% "���� # �% ��� � # �&
'
)(�����&
)("�����&
.�)/�����0&
'
��$ !
7
����� !
"����� # �% ��� # �% ����� # �% ���� # $%
8��� # $% ����� # �% ������ # �%
"���� # �% ��� � # $&
'
)(�����&
)("�����&
.�)/�����0&
'
�5> !
����� !
"����� # �% ��� # �% ����� # �%
���� # $% 8��� # $% ����� # �%
������ # �% "���� # �% ��� � # $&
'
9�� /� ���0&
)(�����&
)("�����&
.�)/�����0&
'
�54 !
����� !
"����� # �% ��� # �% ����� # �% ���� # $%
8��� # $% ����� # �% ������ # �%
"���� # �% ��� � # $&
'
9�� /8 ���0&
)(�����&
)("�����&
.�)/�����0&
'
�55 !
����� !
"����� # �% ��� # �% ����� # �% ���� # $%
8��� # $% ����� # �% ������ # �%
"���� # �% ��� � # $&
'
)����/8 ���% ����/8 ���00%
)����/� �% ����/� �00&
)(�����&
)("�����&
.�)/�����0&
'
�5; !
����� !
"����� # �% ��� # �% ����� # �% ���� # $%
8��� # $% ����� # �% ������ # �%
"���� # �% ��� � # $&
'
9�� /8 ���0&
)(�����&
)("�����&
.�)/�����0&
'
��� !
����� !
"����� # �% ��� # �% ����� # �% ���� # $%
8��� # $% � ��� # �% ����� # 4%
������ # �% "���� # �% ��� � # �&
'
8
9�� /� ���0%
)����/� �% ����/� �0 < �=�0&
)(�����&
)("�����&
.�)/�����0&
'
��� !
����� !
"����� # �% ��� # �% ����� # �% ���� # $%
8��� # $% ����� # 4% ������ # �% "���� # �%
��� � # $&
'
)����/� �% ����/� �0 < �=�0&
)(�����&
)("�����&
.�)/�����0&
'
��4 !
����� !
"����� # �% ����� # �% ���� # $% ����� # �%
8��� # $% ��� # �% � ��� # �% ������ # �%
"���� # �% ��� � # �&
'
)(�����&
)("�����&
.�)/�����0&
'
��5 !
����� !
"����� # �% ����� # �% ���� # $% ��� # �%
����� # �% 8��� # $% ������ # �% "���� # �%
��� � # $&
'
)(�����&
)("�����&
.�)/�����0&
'
��; !
����� !
"����� # $% ��� # �% ����� # �% ���� # $%
������ # �% 8��� # $% ����� # 4%
"���� # �% ��� � # �&
'
9�� /� ���0&
)(�����&
�("�����&
.�)/�����0&
'
��> !
����� !
"����� # $% ����� # �% ���� # $% ��� # �%
8��� # $% ����� # 4% ������ # �% "���� # �%
��� � # $&
'
)����/� �% ����/� �00&
)(�����&
�("�����&
.�)/�����0&
'
)� ���
9
����� �����
��:*��: !
��: ��:
'
��:*��$ !
��: ��$
'
��$*��� !
��$ ���
'
��$*��� !
��$ ���
'
��$*��4 !
��$ ��4
'
��$*��5 !
��$ ��5
'
��$*��; !
��$ ��;
'
��$*��> !
��$ ��>
'
���*�� !
��� ���
'
���*��� !
��� ���
'
���*��> !
��� ��>
'
���*��; !
��� ��;
'
���*��5 !
��� ��5
'
���*��> !
��� ��>
'
���*��� !
��� ���
'
���*��> !
��� ��>
'
���*��; !
��� ��;
'
��4*��4 !
��4 ��4
'
��4*��� !
��4 ���
'
��4*��; !
10
��4 ��;
'
��5*��5 !
��5 ��5
'
��5*��4 !
��5 ��4
'
��>*��> !
��> ��>
'
��>*��; !
��> ��;
'
�54*�55 !
�54 �55
'
�55*�55 !
�55 �55
'
�55*�5; !
�55 �5;
'
�54*�5; !
�54 �5;
'
)� �����
)� ��������
�� )��� �� �� ���+�) 7��� ��������
������������� 7���+�)
����� ���
��$ !
����� !
"����� # �% ����� # �% ���� # $% ��� # �%
8��� # �% ������ # �% ����� # �%
"���� # $% ��� � # �&
'
9�� /� �0&
)(�����&
)("�����&
.�)/�����0&
'
��� !
����� !
"����� # �% ����� # �% ��� # �% ���� # $%
����� # �% "���� # $% 8��� # �% ��� � # $&
'
9�� /� �0&
)(�����&
)("�����&
.�)/�����0&
'
��� !
����� !
"����� # $% ����� # �% ���� # $% ��� # �%
8��� # �% ����� # �% "���� # $%
��� � # �&
'
)����/� �% ����/� �0 < �=�0%
11
9�� /8 ���0%
9�� /� �0&
)(�����&
�("�����&
.�)/�����0&
'
�;$ !
����� !
"����� # $% ����� # �% ���� # $% ��� # �%
8��� # �% ����� # �% "���� # $%
��� � # $&
'
)����/� �% ����/� �0 < �=�0%
9�� /8 ���0%
9�� /� �0&
)(�����&
�("�����&
.�)/�����0&
'
�;� !
����� !
"����� # $% ����� # �% ���� # $% ��� # �%
8��� # �% ����� # �% "���� # $%
��� � # $&
'
)����/� �% ����/� �00%
9�� /8 ���0&
)(�����&
�("�����&
.�)/�����0&
'
�;� !
����� !
"����� # $% ����� # �% ���� # $% ��� # �%
8��� # �% ����� # �% "���� # $%
��� � # �&
'
)����/� �% ����/� �00%
9�� /8 ���0&
)(�����&
�("�����&
.�)/�����0&
'
�;4 !
����� !
"����� # $% ����� # �% ���� # $% ��� # �%
8��� # �% ����� # �% "���� # $%
��� � # $&
'
)����/� �% ����/� �00&
)(�����&
�("�����&
.�)/�����0&
'
�;5 !
����� !
"����� # $% ����� # �% ���� # $% ��� # �%
8��� # �% ����� # �% "���� # $%
��� � # �&
'
12
)����/� �% ����/� �00%
9�� /� ���0&
)(�����&
�("�����&
.�)/�����0&
'
)� ���
����� �����
��$*��� !
��$ ���
'
���*��$ !
��� ��$
'
���*��� !
��� ���
'
���*�;4 !
��� �;4
'
�;4*�;4 !
�;4 �;4
'
�;4*�;5 !
�;4 �;5
'
�;$*�;� !
�;$ �;�
'
�;�*�;� !
�;� �;�
'
�;�*�;� !
�;� �;�
'
���*�;$ !
��� �;$
'
)� �����
)� ��������
�� )��� �� �� ���+�) ,�� ��������
������������� ,���+�)
����� ���
��3 !
����� !
"����� # �% ����� # �% ���� # $% ��� # �%
8��� # $% 8 ��� # �% ������ # �% ����� # �%
"���� # $% ��� � # $&
'
9�� /� ���0&
)(�����&
)("�����&
.�)/�����0&
'
��? !
����� !
13
"����� # �% ����� # �% ��� # �% ���� # $%
����� # �% "���� # $% 8��� # $%
��� � # �&
'
)����/� �% ����/� �0 < �=�0%
9�� /� ���0&
)(�����&
)("�����&
.�)/�����0&
'
�5: !
����� !
"����� # �% ����� # �% ��� # �% ���� # $%
����� # �% "���� # $% 8��� # $%
��� � # �&
'
)����/� �% ����/� �00%
9�� /8 ���0&
)(�����&
)("�����&
.�)/�����0&
'
�;; !
����� !
"����� # �% ����� # �% ��� # �% ���� # $%
����� # �% "���� # $% 8��� # $%
��� � # $&
'
9�� /� �0%
9�� /8 ���0&
)(�����&
)("�����&
.�)/�����0&
'
�;> !
����� !
"����� # �% ����� # �% ��� # �% ���� # $%
����� # �% "���� # $% 8��� # $%
��� � # $&
'
)����/� �% ����/� �00%
)����/8 ���% ����/8 ���00&
)(�����&
)("�����&
.�)/�����0&
'
�;? !
����� !
"����� # �% ����� # �% ��� # �% ���� # $%
����� # �% "���� # $% 8��� # $%
��� � # $&
'
9�� /� �0&
)(�����&
)("�����&
.�)/�����0&
'
�;: !
����� !
"����� # �% ����� # �% ��� # �% ���� # $%
14
����� # �% "���� # $% 8��� # $%
��� � # $&
'
)����/� �% ����/� �00&
)(�����&
)("�����&
.�)/�����0&
'
��: !
����� !
"����� # $% ����� # �% ���� # $% ��� # �%
8��� # $% ����� # �% "���� # $%
��� � # �&
'
9�� /� ���0&
)(�����&
�("�����&
.�)/�����0&
'
)� ���
����� �����
��3*��3 !
��3 ��3
'
��3*��? !
��3 ��?
'
��3*��: !
��3 ��:
'
��?*��? !
��? ��?
'
��?*��: !
��? ��:
'
��?*��3 !
��? ��3
'
�;;*�;> !
�;; �;>
'
�;>*�;> !
�;> �;>
'
�;>*�5: !
�;> �5:
'
�;?*�5: !
�;? �5:
'
�;:*�5: !
�;: �5:
'
)� �����
)� ��������
��)��� �� �� � ��� ��������
������������� � ���
15
����� ���
��4 !
����� !
����� # �% ������ # �% ���� # 4% ��� # �%
8��� # �% ����� # �% ��� � # $&
'
)(�����&
.�)/�����0&
'
�4; !
����� !
����� # �% ������ # �% ���� # 4% ��� # �%
8��� # �% ����� # 4% ��� � # $&
'
)(�����&
.�)/�����0&
'
�4> !
����� !
����� # �% ������ # �% ���� # 4% ��� # �%
8��� # �% ����� # �% ��� � # $&
'
)(�����&
.�)/�����0&
'
�4$ !
����� !
����� # �% ������ # �% ���� # 4% ��� # �%
8��� # $% ����� # �% ��� � # $&
'
)(�����&
.�)/�����0&
'
�43 !
����� !
����� # �% ������ # �% ���� # 4% ��� # �%
8��� # $% ����� # 4% ��� � # $&
'
)(�����&
.�)/�����0&
'
�4? !
����� !
����� # �% ������ # �% ���� # 4% ��� # �%
8��� # $% ����� # �% ��� � # $&
'
)(�����&
.�)/�����0&
'
��5 !
����� !
����� # $% ����� # �% ���� # 4% ��� # �%
����� # $% "����� # �% ��� � # �&
'
�(�����&
)("�����&
'
)� ���
����� �����
��4*��5 !
16
��4 ��5
'
�4$*��5 !
�4$ ��5
'
�4;*��5 !
�4; ��5
'
�4>*��5 !
�4> ��5
'
�43*��5 !
�43 ��5
'
�4?*��5 !
�4? ��5
'
)� �����
)� ��������
��)��� �� �� ,)�,@ ��������
������������� ,)�,@
����� ���
�4� !
����� !
����� # �% ������ # �% ���� # �% ��� # �%
8��� # �% ����� # �% ��� � # $&
'
)(�����&
.�)/�����0&
'
�4� !
����� !
����� # �% ������ # �% ���� # �%
��� # �% 8��� # $% ����� # �% ��� � # $&
'
)(�����&
.�)/�����0&
'
�44 !
����� !
����� # $% ����� # �% ���� # �%
��� # �% ����� # $% "����� # �% ��� � # �&
'
)("�����&
�(�����&
'
)� ���
����� �����
�4�*�44 !
�4� �44
'
�4�*�44 !
�4� �44
'
)� �����
)� ��������
�� )��� �� �� � ��� �������� /���0
������������� ,� ���
17
����� ���
��; !
����� !
"����� # �% ����� # $% ����� # �%
���� # $% ��� # �% ���� # �&
'
)("�����&
�(�����&
'
��> !
����� !
"����� # �% ����� # $% ��� # �%
����� # �% ���� # $% ���� # �%
���� # �&
'
)("�����&
�(�����&
'
)� ���
����� �����
��;*��> !
��; ��>
'
)� �����
)� ��������
�� )��� �� �� ����A�������� ���������
������������
��*-+,��� !
�� -+,���
'
��*�+,��� !
�� �+,���
'
�44*-+,��� !
�44 -+,���
'
�44*�+,��� !
�44 �+,���
'
�44*�� !
�44 ��
'
�+,���*�4 !
�+,��� �4
'
�+,���*�5 !
�+,��� �5
'
�+,���*��$ !
�+,��� ��$
'
�+,���*��� !
�+,��� ���
'
�+,���*��3 !
�+,��� ��3
'
�+,���*�4� !
�+,��� �45
18
'
�+,���*��: !
�+,��� ��:
'
�+,���*��$ !
�+,��� ��$
'
�+,���*��3 !
�+,��� ��3
'
�+,���*��? !
�+,��� ��?
'
��?*�$ !
��? ��$
'
��?*��: !
��? ��:
'
��?*�4 !
��? �4
'
��?*�5 !
��? �5
'
��?*��$ !
��? ��$
'
��?*��� !
��? ���
'
��?*�4$ !
��? �4$
'
��?*��? !
��? ��?
'
��3*��? !
��3 ��?
'
��?*�4� !
��? �4�
'
��?*�;5 !
��? �;5
'
�5:*�;5 !
�5: �;5
'
�5:*��� !
�5: ���
��3*�4$ !
��3 �4$
'
��3*�4� !
��3 �4�
'
��:*�4$ !
��: �4$
'
19
��:*�4� !
��: �4�
'
��:*�� !
��: ��
'
��:*�� !
��: ��
'
��:*��� !
��: ���
'
��;*�4$ !
��; �4$
'
��;*�4� !
��; �4�
'
��;*�� !
��; ��
'
��;*�� !
��; ��
'
��>*�4$ !
��> �4$
'
��>*�4� !
��> �4�
'
���*��3 !
��� ��3
'
���*��3 !
��� ��3
'
�?*�� !
�? ��
'
�?*�� !
�? ��
'
�?*��4 !
�? ��4
'
�?*�4� !
�? �4�
'
���*�� !
��� ��
'
���*�� !
��� ��
'
���*��4 !
��� ��4
'
���*�4� !
��� �4�
'
20
��$*��4 !
��$ ��4
'
��$*�4� !
��$ �4�
'
��$*�� !
��$ ��
'
��$*�� !
��$ ��
'
��$*�4 !
��$ �4
'
��$*�5 !
��$ �5
'
��$*��3 !
��$ ��3
'
��$*��? !
��$ ��?
'
��$*��: !
��$ ��:
'
��$*��$ !
��$ ��$
'
��5*��; !
��5 ��;
'
��>*�� !
��> ��
'
��>*�� !
��> ��
'
��>*�+,��� !
��> �+,���
'
��>*-+,��� !
��> -+,���
'
��3*�4 !
��3 �4
'
��3*�5 !
��3 �5
'
��3*��$ !
��3 ��$
'
��3*��� !
��3 ���
'
���*�5> !
��� �5>
'
21