Frequently Asked Questions

All FAQs | Organizational | General Technical
Specification Version | Relationship to Other Technologies | Bursting
Simulation & Test | Threads & Connections | Participant Membership/VSIA Status

General Technical

1. What is the definition of a core?
2. What is the OCP?
3. What comprises OCP?
4. How flexible is OCP?
5. Which interfaces can OCP be used for?
6. How does OCP handle analog signals?
7. Has the OCP been implemented in any other language (SystemC, C++, Fortran, etc.)?
8. Is an OCP connection a peer-to-peer connection?
9. What if two cores require peer-to-peer communication?
10. Wouldn't two OCP interfaces require a lot of die size?
11. Can any two cores with OCP interfaces communicate?
12. What if two cores have similar, but not identical, OCP interfaces?
13. Is OCP really just another bus?
14. What is the OCP word size?
15. How big can the OCP word size be?
16. Is OCP big or little endian?
17. How do I connect my big endian core using OCP?
18. What OCP compliant cores are available?
19. What is an OCP bridge?
20. Does the OCP specification cover scratch pad RAMs?
21. Does the OCP specification support transaction protocols?
22.
Does the OCP specification provide templates for common types of interfaces?
23. What OCP Profiles currently exist?
24.
How is security handled by OCP?
25. Does OCP provide any support for divided clocks?




1: What is the definition of a core?
A: A core is a semiconductor component that provides a processing function. A core may contain many other cores as subcomponents. But, such subcomponent cores are not directly accessible except by other subcomponent cores within the larger core. Finally, a core might also be a logic bridge to popular busses such as PCI and AMBA.

2: What is the OCP?
A: The Open Core Protocol (OCP) is an efficient, frugal, core connection standard. It interconnects two semiconductor cores on a single integrated circuit so that they can reliably communicate when synthesized and manufactured.

3: What comprises OCP?
A: OCP specifies a signal exchange protocol over a family of on-chip core interfaces. OCP is an interface family because it is a structured architecture that allows many different configurations.

4: How flexible is OCP?
A: OCP is very flexible. Many OCP signal groups, such as the data signal group, have various widths that designers can select. Other groups are completely optional. Thus, OCP enables System-on-Chip (SoC) designers a structured but highly configurable interface.

5: Which interfaces can OCP be used for?
A: The OCP interface can be used for any interface. It was not designed to be used only with "user visible" interfaces. There are, in fact, many benefits to using the OCP interface for "private" interfaces. First of all, using a standard makes it easier to develop the interface and support it in the future. In addition, the OCP interface is by its very nature designed to be core-centric, so that you would only need to use the features of OCP that are needed by a particular IP core.

6: How does OCP handle analog signals?
A: OCP is a protocol standard for digital virtual components. As such it only deals with digital signals.

7: Has the OCP been implemented in any other language (SystemC, C++, Fortran, etc.)?
A: OCP-IP recognizes the importance to its members of representing the OCP standard socket in SystemC and so has taken appropriate action through its System-Level Design Working Group. OCP-IP had shipped many thousands of TLMs and work in conjunction with OSCI in maintaining a common set of industry models for TLMs. SystemC OCP models and examples are available from the OCP-IP Web site. In addition, OCP-IP GSC member, Sonics, Inc., has developed some C++ models for OCP interfaces without the use of SystemC, but as we understand it, these are not commercially available products. This however, illustrates the feasibility of developing C-level interfaces for OCP through various approaches.

8: Is an OCP connection a peer-to-peer connection?
A: No. OCP provides a master/slave connection between two cores. One core, called the OCP initiator core, has an OCP master interface. A master interface enables a core to generate OCP requests such as READ or WRITE and receive the READ responses. The other core, called the OCP target core, has an OCP slave interface which allows it to receive and respond to requests. Thus OCP fits better into the client/server model, with the master as the client and the slave providing a service.

9: What if two cores require peer-to-peer communication?
A: In this case, you should provide both cores with two OCP interfaces, both a master and slave interface. The master on each core then connects to the slave on the other.

10: Wouldn't two OCP interfaces require a lot of die size?
A: No. Because OCP is so frugal, having two OCP interfaces between the same two cores virtually never poses any problems.

11: Can any two cores with OCP interfaces communicate?
A: No. First, masters can only communicate with slaves and slaves can only communicate with masters. Second, a master and a slave must have "similar" OCP interfaces in order to be compatible. The OCP specification includes a precise definition of "similar."

12: What if two cores have similar, but not identical, OCP interfaces?
A: OCP enumerates various signal tie-off rules and protocol behaviors that allow many similar cores to interface even though their OCP interfaces are not identical.

13: Is OCP really just another bus?
A: No. A bus typically interconnects more than two cores. OCP is a simple interconnect between two cores. Moreover, a bus does not have the high degree of configurability that OCP does. The core might be a logic bridge to another bus such as PCI or AMBA. So, if you need a specific bus in your design, you can add it if you have an OCP bridge.

14: What is the OCP word size?
A: The maximum number of data bits an OCP interface can transfer in a single operation is called the word size for that OCP interface.

15: How big can the OCP word size be?
A: OCP allows various, selectable width data transfers. Presently allowed word sizes are 8, 16, 32, 64 and 128 bits. This restriction was removed in the 2.0 version of the OCP specification, where the OCP word size would be configurable without a specific range of values.

16: Is OCP big or little endian?
A: OCP is little endian with respect to bit numbering, but it is largely endian-neutral with respect to addressing. Only whole words are addressed, and byte lane enables are provided for each byte within a word. So address bits are not directly associated with byte lanes. This makes adaptation to either big or little endian cores simpler. The newer OCP 2.0 specification extends the notion of endian neutrality even farther. Interfaces can be declared as either big or little endian, endian-agnostic (such as a memory that doesn't care), or endian-programmable (such as a core with byte swapping logic).

17: How do I connect my big endian core using OCP?
A: You create a small logic bridge that converts (byte swaps) the core's native big endian transfer logic to OCP's little endian transfer style.

18: What OCP compliant cores are available?
A: The number of compliant cores is constantly increasing. Newer cores use OCP as the native interface. Cores that predate OCP, called legacy cores, can incorporate bridging logic to present an OCP interface.

19: What is an OCP bridge?
A: When bridge logic provides an OCP interface for a legacy core, the bridge logic is called an OCP bridge.

20: Does the OCP specification cover scratch pad RAMs?
A: In the case of the scratch-pad memory, you could use a very simple OCP interface, consisting of the OCP basic features, along with making use of the "byte enable" option. You would also need to appropriately set the address and data widths for the scratch-pad memory. Thus, an OCP interface for the scratch-pad memory can be very simple and not involve a lot of overhead, either in terms of development time or in terms of hardware/gates.

21: Does the OCP specification support transaction protocols?
A: OCP itself is a full featured and complete transaction protocol. It is capable of handling all types of point-to-point data transfers using an address and data bus as well as a full compliment of configurable control/datahandshaking signals. OCP is more than just a data protocol; it actually specifies an entire socket, which captures the complete signal set emanating from a core. All of the signals, data protocol, test, control and status are subsumed into the OCP socket specification. This is unique in the industry.

22: Does the OCP specification provide templates for common types of interfaces?
A: Yes, the OCP 2.1 Specification provides a set of templates for different types of IP core OCP interfaces. This is done through the use of OCP Profiles. Each of these profiles includes predefined OCP interfaces, along with settings for the various OCP configuration parameters. Additionally, implementation guidelines are provided for each of these OCP Profiles.

23: What OCP Profiles currently exist?
A: With the OCP 2.1 Specification, two sets of OCP Profiles are provided: new profiles for new IP cores using a native OCP interface, and bridging profiles which are used for bridges between OCP and other bus protocols. The set of new OCP Profiles includes profiles for the block data flow model, the sequential undefined length data flow model and the register access model. The set of bridging OCP Profiles includes profiles for the Simple H-Bus (used for Amba) and the X-Bus packet write and X-Bus packet read profiles (used for AXI).

24: How is security handled by OCP?
A: The OCP interface can be used to create secure domains across a system. Such domains might include a CPU, shared memory, or I/O subsystems. The OCP master drives the security level for a request by using the MSecure signal to define security access modes, along with using MConnID to identify a specific target in the system for the request. This MSecure signal is a user-defined subnet of the MReqInfo signal.

25: Does OCP provide any support for divided clocks?
A: Yes, divided clocks can be directly handled by making use of the EnableClk clocking signal. This EnableClk signal is used to indicate which rising edges of the Clk signal are rising edges of the OCP clock. This dynamic clock frequency control can be easily adapted to handle divided clocks for an OCP interface.

All FAQs | Organizational | General Technical
Specification Version | Relationship to Other Technologies | Bursting
Simulation & Test | Threads & Connections | Participant Membership/VSIA Status