You copied the Doc URL to your clipboard.

CMN-600 component

This C++ component is a model of the CoreLink™ CMN-600 Coherent Mesh Network. It models version r1p1 of the RTL.

CMN-600 contains the following CADI targets:

  • CMN600

CMN-600 contains the following MTI components:

The CMN-600 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 CMN-600 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.

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.
  • CAL (Core Aggregation Layer) is 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.
  • RM-SAM GIC memory region is not supported.
  • The CML feature is not supported.

Table 4-52 CMN-600 Ports

Name Protocol Type Description
pvbus_m_hni[8] PVBus Master HNI downstream port.
pvbus_m_snf[8] PVBus Master SNF downstream port.
pvbus_s_rnf[32] PVBus Slave RNF upstream port.
pvbus_s_rni[96] PVBus Slave RNI upstream port.
reset_in Signal Slave Reset signal.
rnf_sci_s[32] SystemCoherencyInterface Slave System Coherency port to move the RNF 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 4-53 CMN-600 Parameters

Name Type Allowed values Default value Description
acchannelen_rnf string - "0" For each RNF port, this parameter indicates whether the port is populated with a snoop responding device. The input value is a string, for example "0xffff".
acchannelen_rni string - "0" For each RNI port, this parameter indicates whether the port is populated with a DVM responding device. The input value is a string, for example "0xffff".
cache_state_modelled bool true, false true Model the cache state.
default_hni_port uint64_t 0x0-0x7 0x0 HNI port number that is the default boot target.
enable_logger bool true, false false Enable PVBusLoggers for the downstream ports in the CMN model.
enable_snf_hashing bool true, false false Enable support for multi SNF port via HNF hashing, 3sn and 6sn load distribution. Works only if cache_state_modelled = 1.
force_on_from_start bool true, false false The CMN600 interconnect normally starts up with snooping disabled. This parameter has no effect on the ports that the SCI manages. For connections that the SCI does not manage, this parameter enables the upstream system of a port to be snooped if the upstream system is not in reset andacchannelen_rn permits the snooping.
hnf_cache_size string - "128KB" HNF Node Cache size in KB or MB. For example, "128KB" or "2MB".
hni_index_to_nodeid string - "" A string parameter to define the relation between HNI node index and HNI node id. For example, "0=0x12" and "1=0x38".
mesh_column_size uint64_t 0x2-0x10 0x4 Number of columns in the XP mesh.
mesh_config_file string - "" Name of a file containing the mesh placement of CMN-600 components.
mesh_row_size uint64_t 0x2-0x10 0x2 Number of rows in the XP mesh.
number_of_hnf uint64_t 0x1-0x20 0x4 Number of HNF nodes.
number_of_hni uint64_t 0x1-0x8 0x2 Number of HNI nodes.
number_of_rnd uint64_t 0x0-0x20 0x6 Number of RND nodes.
number_of_rnf uint64_t 0x1-0x20 0x2 Number of RNF nodes.
number_of_rni uint64_t 0x0-0x20 0x0 Number of RNI nodes.
number_of_sbsx uint64_t 0x0-0x8 0x0 Number of SBSX nodes.
number_of_snf uint64_t 0x0-0x8 0x2 Number of SNF nodes.
periphbase uint64_t - 0x2C000000 Value for PERIPHBASE. Bits [25:0] are treated as 0.
rnd_index_to_nodeid string - "" A string parameter to define the relation between RND node index and RND node id. For example, "0=0x12" and "1=0x38".
rnf_index_to_nodeid string - "" A string parameter to define the relation between RNF node index and RNF node id. For example, "0=0x12" and "1=0x38".
rnf_sci_enable string - "0" For each RNF port, this parameter indicates if the System Coherency Interface manages the port for coherency domain entry and exit. 1 = managed by SCI, 0 = managed by software. The input value is a string, for example "0xffff".
rni_index_to_nodeid string - "" A string parameter to define the relation between RNI node index and RNI node id. For example, "0=0x12" and "1=0x38".
rni_sci_enable string - "0" For each RNI port, this parameter indicates if the SCI manages the port for coherency domain entry and exit. 1 = managed by SCI, 0 = managed by software. The input value is a string, for example "0xffff".
sam_mem_partition_granularity string - "512MB" RN-SAM and HN-F SAM memory partitions granularity in MB. For example, 64MB, 512MB.
sbsx_index_to_nodeid string - "" A string parameter to define the relation between SBSX node index and SBSX node id. For example, "0=0x12" and "1=0x38".
snf_index_to_nodeid string - "" A string parameter to define the relation between SNF node index and SNF node id. For example, "0=0x12" and "1=0x38".
Was this page helpful? Yes No