4.65 CCI500 - trace

This section describes the trace sources.

ArchMsg.Error.reset_state_of_upstream_is_in_reset_but_trying_to_enable_snoops_andor_dvm

The upstream system is known to be in reset but we are trying to enable snoops/DVM to the port. In a real system, this could deadlock as snoop transactions could get routed to the port unless there were absolutely no shared transactions in flight or made. In any event, it is highly unlikely that the programmer intended this. Fields:

is_dvm_enable bool
Is DVM enable (rather than snoop enable).
upstream_port_index unsigned int
The upstream port index of the reset signal.

ArchMsg.Error.sw_reset

An error occurred in managing the reset of upstream systems whose entrance and exit of the coherency domain is managed by software. Fields:

why string
Why the problem occurred.

ArchMsg.Warning.acchannelensx_enables_an_upstream_port_with_no_snoop_channel

ACCHANNELENSx should tell us which upstream ports have a connected snoop and DVM channels. The model has detected that an enabled port does not have a snoop/DVM channel. This will be silently ignored in the model, but might have deadlocked the hardware. Fields:

acchannelensx unsigned int
The value of ACCHANNELENSx that is being used.
upstream_port_index unsigned int
Upstream port index of offending port

ArchMsg.Warning.odd_programming_trying_to_enable_upstream_port

DESCRIPTION: The software tried to enable %{which} messages on port %{upstream_port_index} that is not capable of receiving these messages, for example by being disallowed by ACCHANNELENS%{upstream_port_index} or entirely disconnected. Fields:

acchannelensx unsigned int
The ACCHANNELENSx bitmap of upstream ports.
bitmap_of_connected_upstream_ports unsigned int
This is the bitmap of upstream ports that are actually connected.
bitmap_of_dvm_upstream_ports unsigned int
The bitmap of DVM-capable upstream ports.
bitmap_of_full_ace_upstream_ports unsigned int
The bitmap of snoop-capable upstream ports.
upstream_port_index unsigned int
The upstream port index of the port
which enum
Which type of enable we were trying to enable

ArchMsg.Warning.reset_state_of_upstream_port_driven_after_first_transaction_seen

All signals should be driven at simulation reset so that both sides of the connection agree on the value of the wire. This trace source means that the driver of the signal did not do this. Fields:

upstream_port_index unsigned int
The upstream port index of the reset signal.
value bool
The value driven.

ArchMsg.Warning.reset_state_of_upstream_system_changed_whilst_a_snoop_change_is_pending

If snoop change request is pending, and the upstream system is reset during that process then the system could deadlock if there is any possibility of a shared transaction being in flight at the time. The upstream port might have an outstanding snoop request when it is reset and the interconnect would wait indefinitely for the response. Fields:

upstream_port_index unsigned int
The upstream port index of the reset signal.
value bool
The value driven.
why enum
Why this message is emitted.

ArchMsg.Warning.shared_transaction_received_from_upstream_port_where_acchannelensx_is_disabled

ACCHANNELENSx tells the interconnect which upstream ports do not have connected snoop channels. This warns when a shared transaction is received from an upstream ACE port that doesn't have its snoop channel enabled by ACCHANNELENSx and there are other ports. This may be OK if the upstream system does not accept Snoop/DVM and so is purely an ACE-Lite system, or the upstream systems are truly separate shareability domains. However, this might also mean that you have completely forgotten to program the interconnect or use the parameter force_on_from_start. This will only be warned _once_ between resets of the interconnect. Fields:

upstream_port_index unsigned int
Upstream port index of offending port

allowed_register_access

An allowed register access to the register file. Fields:

data unsigned int
The data read/written. If this is a read, it is only valid if result is ok.
is_debug bool
Is the transaction a debug transaction?
is_read bool
Is the transaction a read transaction?
ns bool
The transaction is non-secure
register enum
The register of the transaction

change_dvm_disabled_ports

This reports a bitmap of which ports are disabled to receive DVM messages. Fields:

new_bitmap unsigned int
The new bitmap of disabled ports
new_bitmap_list unsigned int
A list of port numbers that were disabled.
old_bitmap unsigned int
The old bitmap of disabled ports
old_bitmap_list unsigned int
A list of port numbers that were disabled.

change_upstream_disabled_ports

This reports a bitmap of which upstream ports of the cache are _disabled_ and so we won't sends snoop requests to them. Fields:

new_bitmap unsigned int
The bitmap of the first 32 upstream ports that are disabled.
new_bitmap_list unsigned int
A list of port numbers that were disabled.
old_bitmap unsigned int
The bitmap of the first 32 upstream ports that are disabled.
old_bitmap_list unsigned int
A list of port numbers that were disabled.

configuration_pins

One of the configuration pins changed. In the RTL these are sampled at reset, but in the model, we sample it at first transaction. If it occurs after this point then it is traced but the field 'ignored' will be true and the value reported will be what it wanted to change to rather than the value it actually is. Fields:

ignored bool
The value was ignored because it occurred after seeing a transaction.
value unsigned int
The value it wants to change to.
which enum
Which configuration pin changed.

debug_enables

The signals/parameters that cause whether events are counted or not. Fields:

dbgen bool
DBGEN value
niden bool
NIDEN value
non_secure_traceable bool
Non-secure events are traceable
secure_traceable bool
Secure events are traceable
spiden bool
SPIDEN value
spniden bool
SPNIDEN value

errirq

This is the error interrupt signal that is generated when there are unacknowledged imprecise errors. Fields:

value bool
The value it is driven to.

evntcntoverflow

The event counter overflow interrupt lines. Fields:

counter_id unsigned int
The ID of the counter that this relates to.
value bool
The value of the interrupt line

force_on_from_start

A commentary on what force_on_from_start is doing. Fields:

acchannelen_dvm unsigned int
The bitmap of which upstream ports are capable of receiving DVM messages. If the appropriate bit is clear in this register then we won't enable it.
acchannelen_snoop unsigned int
The bitmap of which upstream ports are capable of receiving snoop messages. If the appropriate bit is clear in this register then we won't enable it.
enable bool
Whether we are trying to enable the upstream port or not.
reset_state_of_upstream_system enum
What the interconnect knows about the reset state of the upstream system.
upstream_port_index unsigned int
The upstream port index.
why enum
Why the value changed

ignored_register_access

The register access is ignored for some reason. Fields:

address enum
The address.
is_debug bool
Is the access a debug access?
is_read bool
Is the access a read?
ns bool
The security state of the transaction.
why enum
Why the access was ignored.

imprecise_error_received

An imprecise error was received for the specified transaction. Fields:

address unsigned int
Address of transaction
downstream_port_index unsigned int
The downstream port index that the transaction went out.
ns bool
Is the transaction non-secure

pmu_overflow

The performance monitor counter overflowed. Fields:

counter_id unsigned int
The ID of the counter that this relates to.
event_counting unsigned int
The event that the counter is counting.
new_value bool
The new value of the overflowed flag.
old_value bool
The old value of the overflowed flag.

pmu_programmed

A programmed change to the performance monitor unit counter. Fields:

counter_id unsigned int
The ID of the counter that this relates to.
current_count unsigned int
The current value of the counter
enabled bool
Is the counter enabled?
event_counting unsigned int
The event that the counter is counting.
why enum
why

register_access

Read/Write of the register file. Fields:

address unsigned int
The address of the transaction
data unsigned int
The data read/written. If this is a read, it is only valid if result is ok.
is_debug bool
Is the transaction a debug transaction?
is_read bool
Is the transaction a read transaction?
ns bool
Is the transaction non-secure?
number_of_beats unsigned int
The number of beats in the transaction
result enum
The result of the transaction
width_in_bytes unsigned int
Width of the transaction in bytes.

reset_state_of_upstream_port

The pins reset_state_of_upstream_port[N] are intended to be use as checks by the interconnect that the programmer has disabled snoops and DVMs to upstream ports whose systems are in reset. If you connect these ports to a signal that indicates if the upstream port is in reset then the interconnect can perform this check. This trace source is the trace of those reset state changes. Fields:

upstream_port_index unsigned int
The upstream port index of the reset signal.
value bool
The value driven.

upstream_port_with_an_unsynced_snoop_change_pending

When a change to whether to send snoop requests or DVM messages to a port is setup then it takes a finite period of time to take effect and the SW should poll for completion. This tells you when an upstream port has a snoop change pending on it that hasn't been polled for completion. Fields:

comment enum
Comment
pending bool
Whether the change is pending or not
upstream_port_index unsigned int
Upstream port index
Non-ConfidentialPDF file icon PDF version100964_1180_00_en
Copyright © 2014–2019 Arm Limited or its affiliates. All rights reserved.