{{{ #!html

General rules for the SoCLib hardware components

}}} [[PageOutline]] = A) Introduction = = B) Naming convention = '''namespaces''' SystemC being build upon C++, we use the C++ namespace constructs, to create unambiguous names. SoCLib defines the following namespaces: * `soclib` * `soclib::common` * `soclib::caba` *`soclib::tlmt` '''variables''' The following conventions have been defined : * All component port names should be prefixed with `p_` * All component register names should be prefixed with `r_` * All component member variable names should be prefixed with `m_` = C) Component indexation = In a VCI-based architecture, all initiators and targets must be indexed. Initiators and targets have different address spaces. * The target index is used by interconnect components : those components decode the VCI address MSB bits to get the target index and route the VCI command packets. * The initiator index is used by the interconnect components to route the VCI response packets : the initiator index is the VCI SRCID value. Indexes can be : * a simple scalar index, in case of a ''flat'' interconnect. * a composite index, in case of a ''clusterised'' architectures, using a two level hierarchical interconnect. Each component is identified by two scalars: cluster_index, local_index. The `common/int_tab.h`file defines an utility class storing a list of indexes : All indexes must be declared as IntTabs.