![Intel IXP2400 User Manual Download Page 295](http://html1.mh-extra.com/html/intel/ixp2400/ixp2400_user-manual_2071795295.webp)
Development Tools User’s Guide
295
Intel XScale
®
Core Memory Bus
Functional Model
C
This document describes two Application Program Interfaces (API): one is embedded in the
IXP2800/IXP2400 transactor, and the other provided by a Bus Function Model (BFM) which
simulates the Intel XScale
Core Memory Bus (CMB) through the transactor Foreign Model
Interface (FMI).
The CMB BFM is invoked by the IXP2800/IXP2400 transactor through transactor command, and
synchronized with the same event control logic over the transactor. This feature enables the C-
model simulation environment to run Intel XScale
native code through C/C++ API’s provided by
the IXP2800/IXP2400 transactor and CMB BFM.
The CMB BFM provides calls for reading and writing Transactor memory and callbacks for
Transactor to Intel XScale
interrupt notifications. A user can develop an Intel XScale
C/C++
application, however the Intel XScale
execution will not be timing accurate. Using the CBM
BFM, no Intel XScale
instruction fetches occur on the Transactor. The only throttling of Intel
XScale
execution is the number of outstanding memory operations that can be supported by the
Transactor’s Intel XScale
Gasket, and the user must make all memory references to Transactor
memory using CMB BFM calls. This is very different than the real environment where all Intel
XScale
instruction or data cache misses would generate a Transactor (CBM BFM) memory
reference, and no CBM BFM API calls would be necessary for accessing data on the Transactor,
because the Transactor memory would be directly accessible to the Intel XScale
processor (i.e. it
resides on the CMB).
C.1
Summary of APIs
There are two sets of APIs that were programmed to access Intel XScale
-related transactor states:
one is referred to as
XACT_IO
and the other is
CMB_IO
.
The XACT_IO API is a set of C functions that could be linked to emulate the Intel XScale
transactions through a non-simulation event, i.e. the API provides means to query/change
transactor state directly, without any simulation cycles. In contrast, the CMB_IO API provides a
way of simulating the Intel XScale
transaction by depositing the CMB with proper signals to
trigger the Intel XScale
transaction(s) through IXP2800/IXP2400 gasket such as load or store
operation. The XACT_IO is embedded in each release of IXP2800 Transactor. To access the
XACT_IO API, the user must link with a C header file,
XT_WB_xactio_api.h,
which includes the
definition of XACT_IO API and this header file is part of transactor release.
The CMB_IO API is supported by the CMB BFM,
cmb_bfm_ixp2800.dll /
cmb_bfm_ixp2400.dll
. The BFM is implemented as a Win32 DLL that supports the FMI that is
defined in the IXP2800/IXP2400 transactor. To access the CMB_IO API, the program needs to be
linked with the header files,
cmb_api.h
and
cmb_api_ex.h
.