Skip to content

MPF RTL Interface

Michael Adler edited this page Sep 19, 2017 · 3 revisions

MPF RTL Interface

MPF encapsulates CCI-P wires in a cci_mpf_if SystemVerilog interface. There is a 1:1 mapping for every CCI-P structure and wire. The interface serves several purposes:

  • MPF shims necessarily export two instances of a CCI-P interface: one in the direction of the platform (FIU) and one in the direction of the AFU. MPF shims thus offer CCI-P interfaces to the AFU, transform the semantics of the interface, and communicate with the FIU using the base CCI-P semantics. The VTP shim accepts virtual addresses on the AFU connection and produces physical address on the FIU connection. By encapsulating AFU and FIU connections in SystemVerilog interfaces, each connection is represented cleanly as a single argument to an MPF shim.
  • Some MPF shims require extra header signals not included in the base CCI-P interface. For example, WRO adds a bit to indicate whether to enforce ordering for a particular request. PWRITE adds a mask to indicate which bytes in a line should be preserved and which should be updated.
  • Logging can be added to any instance of the MPF SystemVerilog interface by setting cci_mpf_if's ENABLE_LOG parameter, making it possible to log traffic as it flows through the hierarchy.

Instantiation

MPF is included in designs as an interposer between the FIU and the AFU by instantiating the top-level module cci_mpf:

module cci_mpf
   (
    input  logic      clk,

    //
    // Signals connecting to the platform
    //
    cci_mpf_if.to_fiu fiu,

    //
    // Signals connecting to AFU, the client code
    //
    cci_mpf_if.to_afu afu,
    );

The set of MPF shims to instantiate is chosen by setting parameters to the module. See the comments in cci_mpf.sv. Some status outputs of cci_mpf() have been eliminated above for simplicity. MPF provides the module ccip_wires_to_mpf() to transform CCI-P wires to an MPF SystemVerilog interface.

Example

The tutorial top-level module, cci_afu_with_mpf.sv, demonstrates the transformation of CCI-P to MPF interfaces and the instantiation of MPF shims. The exported MPF interface can then either be used directly (MPF linked_list_afu.sv) or it can be transformed back to standard CCI-P wires (CCI-P linked_list_afu.sv).