Design Article

PRODUCT HOW-TO: Verifying your Configurable OCP Interfaces

Carlo Del Giglio and Alok Sanghavi

6/7/2010 6:35 PM EDT

The Open Core Protocol (OCP) is a core-centric protocol that comprehensively describes the system level integration requirements of intellectual property (IP) cores. The flexible nature of the specification makes it widely applicable to many different hardware applications that require a simple, robust data transfer protocol.

The OCP International Partnership, a group that is dedicated to proliferating the OCP standard, estimates that OCP has been used in numerous SoC designs which have already shipped in many hundreds of millions of units. The popularity of this protocol is increasing rapidly as more designers become aware of the benefits of a flexible standard.

Naturally, along with the advantages of flexibility come many variants of the implementation that fall under the official protocol specification. While this makes it easy to adapt the protocol to the individual requirements of a specific design implementation, it does present a challenge for the verification team.

Verifying protocol interfaces is a challenging exercise for any verification group. Formal verification of protocols has become far more prevalent in recent years because of its ability to exhaustively remove all doubt of incorrect interface behavior prior to tape-out.

This article presents a basic overview of OCP covering both the basic operation and configuration files. It then introduces a configurable OCP formal verification IP generator that automatically creates appropriate OCP properties for a specific to design implementation of the protocol.

These concepts are then used to demonstrate a silicon-tested method of developing a verification plan for OCP designs.

A review of OCP basics
OCP uses a master and slave configuration. All signals are synchronized on the rising-edge clock. It uses a read and write command structure to pass information between components. It supports both blocking and non-blocking forms, along with basic pipelined operations. The specification is completely bus-independent, with device selection and arbitration performed outside the OCP logic.

Figure 1 below illustrates a conceptual implementation of a simple system containing a wrapped bus and three IP core entities: one that is a system target, one that is a system initiator, and an entity that is both.

Figure 1. Wrapped Bus with OCP Instances

Multiple read and write commands make up the basic command structure of the protocol. Read (non-blocking), ReadLinked (blocking), and ReadExclusive (blocking) are some of the more common read commands.

The write command also contains several forms, including Write (non-blocking), WriteNonPost (blocking), WriteConditional (blocking), and Broadcast (linked multi-device).

OCP signals are divided into three main groups: dataflow, sideband, and test. Basic operation requires only a small subset of the dataflow signals. The sideband and test signals are optional in this configuration.

Figure 2. OCP Configuration File

Because of the many possible configurations for OCP, the specification requires the protocol interface to be defined within a text-based configuration file. This file identifies the design-specific parameters such as data command subsets and modes, data and address widths, burst sequence and alignment, data handshaking, and optional signals.

The parameters can be explicitly declared in the file or loaded from default settings. Figure 2 above shows a sample configuration file.


Next:




Please sign in to post comment

Navigate to related information

Datasheets.com Parts Search

185 million searchable parts
(please enter a part number or hit search to begin)

Feedback Form