3.10.11 CMN600

CMN600 Interconnect Fast Model. This model is written in C++ and models version r1p1 of the RTL.

CMN600 contains the following CADI targets:

  • CMN600CML
  • CMN600Cache

CMN600 contains the following MTI components:

CMN600 - about

The CMN600 model supports the following:

  • rnf, rni/rnd, hni, and snf/sbsx interface ports. The mapping between the port number and NodeId is based on the NodeId index. For example, RNF2 controls pvbus_s_rnf[2]. Its index is specified in the node_info register as logical_id. Similar behavior can be expected for HNI.

    If both RND and RNI nodes are present, then all starting rni ports are mapped to RND nodes and then the RNI nodes. For example, for CMN600 with two RND nodes, one RNI node, and given each RNI/RND node controls three interface ports, pvbus_s_rni[0-2] maps to RND0, pvbus_s_rni[3-5] maps to RND1 and pvbus_s_rni[6-8] maps to RNI0. Similarly, SNF and SBSX nodes are mapped to pvbus_m_snf[] ports where starting ports are mapped to SNF and then SBSX nodes.

  • A parameter to define the mesh placement of the CHI nodes. The parameter mesh_config_file can be used in the following ways:

    • Set mesh_config_file to the name of the yml configuration file emitted by Socrates™.

    • Set mesh_config_file to a JSON file, with a .json file extension, with the following format:

      {
          "mesh_row_size":4,
          "mesh_column_size":3,
          "mesh_placement" : {
          "0.0" : "RND:HND",  "1.0" : "RND:RNF",  "2.0" : "RND:RNF",
          "0.1" : "HNF:HNF",  "1.1" : "HNF:HNF",  "2.1" : "HNF:HNF",
          "0.2" : "HNF:HNF",  "1.2" : "HNF:HNF",  "2.2" : "HNF:HNF",
          "0.3" : "RND:HNF",  "1.3" : "HNF:HNF",  "2.3" : "HNF:SNF"
      }
  • The discovery feature to determine the system address of CHI Nodes.
  • Hashed and non-hashed memory regions, and the sys_cache_group for hashed memory regions.
  • RN SAM and HN-F SAM memory partition size of 512MB (CMN-600 r0) and 64MB (CMN-600 r1). To select the desired partition size, use the parameter sam_mem_partition_granularity. This parameter can be set to either "64MB" or "512MB".
  • DVM filtering using VMF registers.
  • Entry/exit of RNs from snoop and DVM domains using both SYSCOREQ/SYSCOACK signals and through software using MXP syscoreq registers.
  • Reading the content of the cache through HNF l3_cache_access* registers, if cache_state_modelled is true.
  • HN-F SAM feature to allocate a range of addresses to a specific SNF.
  • HN-F Cache way lock and OCM.
  • CAL (Core Aggregation Layer) always supports up to four devices. The CAL feature is supported at alpha quality.

Limitations:

  • PMU counters are not supported. Counter registers are implemented as RAZ.
  • All RNI and RND nodes control three interface ports. The other variants that control one or two ports are not supported.
  • QoS is not supported and all related registers are RAZ/WI.
  • Error injection and error generation are not supported. All error registers are RAZ/WI.
  • Power/Clock/Interrupt signals are not supported.
  • RN SAM and HN-F SAM memory partition size of 128MB is not supported.
  • HNT nodes are not supported.
  • Atomic operations to noncachable/device regions are not supported.
  • External RNSAM is not supported, except based on node type. The model populates the relevant bit in the child pointer register.
  • By default, HNF hashing uses the address[12:MAX] instead of the actual address[6:MAX], due to the DMI mechanism in the model. Enable the parameter enable_snf_hashing to make hashing logic use the actual address[6:MAX].
  • 0KB SLC data RAM and tag RAM are not supported.
  • There are no constraints on mesh sizing when XID_WIDTH and YID_WIDTH = 4.
  • The CML feature is supported at beta quality.

Table 3-308 Ports

Name Protocol Type Description
pvbus_m_cml PVBus Master CML downstream ports
pvbus_m_cml_cfg PVBus Master CML downstream hub configuration port
pvbus_m_hni[8] PVBus Master HNI downstream ports.
pvbus_m_snf[8] PVBus Master SNF downstream port.
pvbus_s_cml PVBus Slave CML upstream ports
pvbus_s_rnf[32] PVBus Slave RNF upstream ports.
pvbus_s_rni[96] PVBus Slave RNI upstream ports.
reset_in 2.7.2 Signal protocol Slave Reset signal.
rnf_sci_s[32] SystemCoherencyInterface Slave System Coherency port to move the RNI master in and out of the coherency domain.
rnf_upstream_reset_in[32] PVBus Slave Used by the interconnect to determine the reset state of the RNF master to check an aspect of reset sequencing. If force_on_from_start is used, this port must be connected.
rni_sci_s[96] SystemCoherencyInterface Slave System Coherency port to move the RNF master in and out of the coherency domain.
rni_upstream_reset_in[96] PVBus Slave Used by the interconnect to determine the reset state of the RNI master to check an aspect of reset sequencing. If force_on_from_start is used, this port must be connected.

Table 3-309 Parameters for CMN600CML

Name Type Default value Description
acchannelen_rnf string "0" For each rnf port, indicates if the port is populated with a snoop responding device or not The input value is a string for e.g. '0xffff' or 'ffff'
acchannelen_rni string "0" For each rni port, indicates if the port is populated with a dvm responding device or not. The input value is a string for e.g. '0xffff' or 'ffff'
cache_state_modelled bool 0x1 Model the cache state.
default_hni_port int 0x0 HNI port number that is the default boot target.
enable_logger bool 0x0 Enable PVBusLoggers for the downstream ports in the CMN model.
enable_snf_hashing bool 0x0 Enable support of multi snf port via hnf hashing, 3sn and 6sn load distribution. Works only if cache_state_modelled = 1
force_on_from_start bool 0x0 The CMN600 interconnect will normally start up with snooping disabled. The parameter rnf_sci_enable and rni_sci_enable determines which connections are managed by the System Coherency Interface. For connections that are managed by the System Coherency Interface, then they will look after themselves for entering and leaving the coherency domain and this parameter has no effect for those ports. However, for connections that are _not_ managed by the System Coherency Interface, this parameter enables the upstream system of a port to be snooped if the upstream is not in reset and if acchannelen_rnf allows it. Thus SW need not know how to turn on and off snoops in the interconnect. The reset state of the upstream rnf ports is determined by the signals:- rnf_upstream_reset_state[] and must be connected for any port that could go into reset and you want managed by this parameter. If the connection is managed by SCI or can never go into reset then you need not connect this and the interconnect will assume th
hnf_cache_size string "128KB" HNF Node Cache size in KB/MB e.g. 128KB, 2MB
hni_index_to_nodeid string "" A string parameter to define relation between hni port num and hni nodeid. for e.g. 0=0x12,1=0x38
mesh_column_size int 0x4 Number of columns in the XP mesh.
mesh_config_file string "" Name of a file containing mesh placement of cmn600 components
mesh_row_size int 0x2 Number of rows in the XP mesh.
number_of_hnf int 0x4 Number of HNF nodes.
number_of_hni int 0x2 Number of HNI nodes.
number_of_rnd int 0x6 Number of RND nodes.
number_of_rnf int 0x2 Number of RNF nodes.
number_of_rni int 0x0 Number of RNI nodes.
number_of_sbsx int 0x0 Number of SBSX nodes.
number_of_snf int 0x2 Number of SNF nodes.
periphbase int 0x2c000000 Value for PERIPHBASE. Bits [25:0] are treated 0
rnd_index_to_nodeid string "" A string parameter to define relation between rnd port num and rnd nodeid. for e.g. 0=0x12,1=0x38. Each rnd node covers 3 ports, so port num is multiplied by 3 to cover 3 consequtive ports. So, the ports assigned will be 0,1,2=0x12 and 3,4,5=0x38
rnf_index_to_nodeid string "" A string parameter to define relation between rnf port num and rnf nodeid. for e.g. 0=0x12,1=0x38
rnf_sci_enable string "0x0" For each rnf port, indicates if the port is managed by System Coherency Interface for coherency domain entry/exit 1 = Managed by SCI, 0 = Managed by Software. The input value is a string for e.g. '0xffff' or 'ffff'
rni_index_to_nodeid string "" A string parameter to define relation between rni port num and rni nodeid. for e.g. 0=0x12,1=0x38. Each rni node covers 3 ports, so port num is multiplied by 3 to cover 3 consequtive ports. So, the ports assigned will be 0,1,2=0x12 and 3,4,5=0x38
rni_sci_enable string "0x0" For each rni port, indicates if the port is managed by System Coherency Interface for coherency domain entry/exit 1 = Managed by SCI, 0 = Managed by Software. The input value is a string for e.g. '0xffff' or 'ffff'
sam_mem_partition_granularity string "512MB" RN SAM and HN-F SAM memory partitions granularity in MB e.g. 64MB, 512MB
sbsx_index_to_nodeid string "" A string parameter to define relation between sbsx port num and sbsx nodeid. for e.g. 0=0x12,1=0x38
snf_index_to_nodeid string "" A string parameter to define relation between snf port num and snf nodeid. for e.g. 0=0x12,1=0x38

Table 3-310 Parameters for CMN600Cache

Name Type Default value Description
cmn600_cache.cache_state_modelled bool 0x1 Model the cache state.
cmn600_cache.force_on_from_start bool 0x0 The CMN600 will normally start up with snooping disabled, however, using this then we allow the model to start up as enabled without having to program it. This is only setup at simulation reset and not at signal reset. If the upstreams can ever be held in reset then you *must* connect the reset_state_of_upstream_port so that it knows when to disable snoops to the upstream systems. Otherwise, the upstream system will receive snoop messages whilst in reset and it will complain that it 'received a snoop request whilst it was in reset'.
cmn600_cache.number_of_phantom_entries int 0x20 Number of phantom entries in the cache. Phantom entries are used by certain cache operations to hold temporary data. Usually this should be left at the default value which is safe for all systems containing up to 32 masters.
cmn600_cache.reentrancy_support string "env" Must be one of: on/off/cacheglobal/env: 'on': hazard checking per cache line (normal mode), 'off': no hazard checking (use only for single master systems), 'cacheglobal': hazard checking globally for cache (not per cache line, testing feature, provokes more hazards than necessary), 'env' (or empty string): take value from FM_REENTRANCY_SUPPORT env var, if this is not set use 'on', default is 'env'
Non-ConfidentialPDF file icon PDF version100964_1161_00_en
Copyright © 2014–2019 Arm Limited or its affiliates. All rights reserved.