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.

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.
  • 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.
  • HNF SAM feature to allocate a range of addresses to a specific SNF.
  • HNF 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.

Table 4-52 CMN-600 Ports

Name Protocol Type Description
pvbus_m_hni PVBus Master HNI downstream port.
pvbus_m_snf PVBus Master SNF downstream port.
pvbus_s_rnf PVBus Slave RNF upstream port.
pvbus_s_rni PVBus Slave RNI upstream port.
reset_in Signal Slave Reset signal.
rnf_sci_s SystemCoherencyInterface Slave System Coherency port to move the RNF master in and out of the coherency domain.
rnf_upstream_reset_in PVBus Slave System Coherency port to move the RNI master in and out of the coherency domain.
rni_sci_s SystemCoherencyInterface 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_upstream_reset_in 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
cache_state_modelled bool true, false true Model the cache state.
hnf_cache_size string - "512KB" HNF Node Cache size in KB or MB. For example, "128KB" or "2MB".
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".
periphbase uint64_t - 0x2C000000 Value for PERIPHBASE. Bits [25:0] are treated as 0.
number_of_hnf uint64_t 0x1-0x20 0x8 Number of HNF nodes.
number_of_hni uint64_t 0x1-0x10 0x1 Number of HNI nodes.
number_of_rnf uint64_t 0x1-0x2 0x4 Number of RNF nodes.
number_of_rni uint64_t 0x0-0x20 0x4 Number of RNI nodes.
number_of_rnd uint64_t 0x0-0x20 0x4 Number of RND nodes.
default_hni_port uint64_t 0x0-0x15 0x0 HNI port number that is the default boot target.
number_of_snf uint64_t 0x0-0x8 0x1 Number of SNF nodes.
number_of_sbsx uint64_t 0x0-0x8 0x1 Number of SBSX nodes.
mesh_row_size uint64_t 0x2-0x10 0x4 Number of rows in the XP mesh.
mesh_column_size uint64_t 0x2-0x10 0x4 Number of columns in the XP mesh.
snf_type uint64_t - 0x0 A bitmap where each bit indicates whether the SNF node type is CHI or AXI. 0=CHI, 1=AXI.
rnf_sci_enable string - "" 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_sci_enable string - "" 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".
force_on_from_start bool true, false false The CMN-600 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.
mesh_config_file string - "" Name of a file containing the mesh placement of CMN-600 components.
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".
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".
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".
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".
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".
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".
Was this page helpful? Yes No