Documente Academic
Documente Profesional
Documente Cultură
Keywords Open core protocol (OCP) Intellectual property (IP)
System on chip (SOC) Socket-based interface Core concentric
1 Introduction
reducing the development time, cost, and design risk. OCP is an interface for
communication between IP cores on an SOC. OCP defines a bus-independent
configurable interface.
OCP renovates IP cores making them independent of the architecture and design
of the systems in which they are used and shortens system verification and testing
by providing a secure boundary around each IP core. OCP is simple, synchronous,
point-to-point, highly scalable, and configurable to match the communication
requirements associated with different IP cores. Even complex high-performance
cores can be accommodated capably with OCP extensions. Cores with OCP
interfaces enable true plug-and-play [2] approach and automated design processes,
thus allowing the system integrator to choose the best cores and best interconnect
system.
Unlike bus approach, with reference to the standard communication approach,
there are mainly two protocols: VCI (Virtual Component Interface) and OCP. OCP
which is scalable and bus independent is a superset of VCI which reports only data
flow aspects; moreover, OCP supports sideband control signaling and tests harness
signals which are configurable. OCP is the only protocol which unifies all the
inter-core communication. OCP establishes a point-to-point interface between two
IP cores [3]. One of them acts as the master who is the controller and generates the
commands and other as the slave responding to commands generated by the master,
either by accepting or giving data to the master.
The OCP defines a point-to-point interface between two communicating entities
such as IP cores and bus interface modules (bus wrappers). One entity acts as the
master of the OCP instance and the other as the slave. Only the master can present
commands and is the controlling entity. The slave responds to commands presented
to it, either by accepting data from the master or presenting data to the master. For
two entities to communicate in a peer-to-peer fashion, there need to be two
instances of the OCP connecting them—one where the first entity is a master, and
one where the first entity is a slave.
2 Project Scope
Implementation is carried out using behavioral Verilog HDL [4] simulation envi-
ronment. The design implements a simple memory read and write operations and
Burst transactions between two IP cores. The design complies with subset of
OCPIP handshake signals. The implemented design, i.e., DUT, is verified using
system Verilog and UVM. As the system Verilog is superset of Verilog and is based
upon OOPS [5] (Object Oriented Programming) concepts, the environment can be
extended without modifying the intention of the original existing code by adding all
the required new features.
Validation of Open Core Protocol by Exploiting Design Framework … 11
3 OCP Protocol
The dataflow signals consist of a small set of required signals and a number of
uncompelled signals that can be configured to support additional requirements [1].
The dataflow signals are grouped into basic signals, burst extensions (support for
bursting). The naming conventions for dataflow signals use the prefix M for signals
driven by the OCP master and S for signals driven by the OCP slave [3].
• Clk: Input clock signal for the OCP clock.
• Maddr: Input address to the master in which data has to be written into the
corresponding memory location and is to be accessible later during read oper-
ation. Maddr width is configurable.
• MCmd: Mode assignment command of width 3. This signal specifies the mode
of OCP which is requested by the master. Usually, depending upon the com-
mand generated by the master, slave responds and performs that operation.
If OCP is in idle state, it does not perform any mode of transfer, whereas during
non-idle state depending on the direction of data flow, OCP [2] performs either
read/write operation.
• Mdata: The data sent by the master that has to be written into the prescribed
memory location of slave which is a configurable one.
• MDatavalid [6]: This is the indication to the slave that the data sent by the
master is valid only. When it is set, it specifies that the Mdata field is valid.
• MRespAccept: Acknowledgment from master that the response from slave was
accepted by it when MRespAccept is set.
• SCmdAccept: Acknowledgment from slave that the response from master was
accepted by it when SCmdAccept is set.
• Sresp: Response from the slave to a transfer request from the master. It is of
width 2.
• SData: It transfers the requested data by master as read data from the slave to
the master.
• MBurstLength: This illustrates configurable number of transfers in a burst.
MBurstLength of value 0 is illegal.
• MBurstPrecise: This specifies whether the precise burst length is known at the
start of the burst or not.
• MBurstSeq: This 3-bit-width field indicates the sequence of addresses for
requests in a burst.
• SRespLast: Last response from the slave in a burst.
• MReqlast: Last request from the master in a burst.
4 Functional Description
4.1 Master
Master is the one who starts the transactions by providing data and address to the
slave. It is the commander and controller of the entire design. It makes the slave to
function on what it needs. The basic block diagram of master with all the input and
output signal specifications is shown in the figure.
Master activates the OCP by sending command, address, and data to the slave
when clock is active. Slave responds to the master’s command and sends an
acknowledgment to the master indicating the acceptance of command from master
as SCmdAccept [7]. Write/read mode of transmission is performed based on the
master’s request. In order to indicate that the data sent by master is valid, it sends a
valid bit on MDatavalid to the slave; on receiving it, slave starts writing the data in
the corresponding memory location. Similarly, master reads the data from slave by
activating data to be read on SData by specifying the exact memory location.
Master block with all its inputs and outputs driving to slave are shown in Fig. 2.
Validation of Open Core Protocol by Exploiting Design Framework … 13
Slave simply performs the operation depending on the command sent by the master.
It activates itself to respond on to the master request. Data handshaking process of
communication is adopted to have a proper and efficient communication [8]. Slave
acknowledges for each and every signal from master as a correspondence or
acceptance of request from the master. The detailed slave block is shown in Fig. 3.
Slave responds to the request sent by the master [9]. It performs read/write mode
of transfer by responding to the signals from master. Slave acknowledges the master
for each and every transfer at enabled clock. During read mode of operation, it
acknowledges the master that the data sent by it is a valid one by sending its
response by means of Sresp signal. Both master and slave are controlled by the
same clock [1].
5 Timing Analysis
The timing analysis for simple write and simple read of OCP is illustrated in Fig. 4.
The diagram shows a write with no response enabled on the write [5].
OCP burst mode for a burst of four 32-bit words, incrementing precise burst write,
with optional burst framing information (MReqlast) is illustrated [4]. As the burst is
precise (with no response on write), the MBurstLength signal is constant during the
whole burst. MReqlast flags the last request of the burst, and SRespLast flags the
last response of the burst. The slave monitors MReqlast for the end of burst. The
timing diagram is shown in Fig. 5.
6 Simulation Results
Basic mode of OCP with simple write and read is implemented and verified [2].
Master initiates the transfer by sending the address and data to the slave on Maddr
and MCmd, respectively. Slave acknowledges the master by asserting the
SCmdAccept to the master. It performs either read or write based upon the com-
mand generated by the master. The simulation results obtained for the applied
transaction between master and slave when RTL is verified by using UVM
Methodology on SimVision tool are shown in Fig. 6.
7 Conclusion
This paper is mainly about the implementation and verification of basic modes of
OCP. This work delivers that OCP is an efficient protocol for secured data core
communication. OCP is capable enough in reducing the design time and risk by
simultaneously designing the cores and working in the system. Based upon the
real-time applications, IP cores are supposed to be designed such that they can be
redesigned by cores which are not having inbuilt system logic that can be reused
with no additional time for cores to be re-created.
References