IP Library Structure

Recommended Arm IP Library structure

It is important to structure your external IP well on your local system/network for a magnitude of reasons. The first is that external IPs can be quite large and is something you may not wish to have stored on a Git server. Another is to reduce the likelihood of licensed IP's ending up in the public domain by accident which is something you can risk, especially if you're using a public Git server.

Because your system level IP and licenced IP are unlikely to be stored in the same place, paths to the licensed IP are going to be needed at the system level so simulation and synthesis tools are able to compile your designs. 

A good way of doing this is to have a standardised structure so when new versions of IP are delivered from the licenser, there are minimal or no changes required to the file paths.

Arm IP Library Setup

Example Arm IP Structuring

The way the SoC Labs repositories are set up, they expect the Arm IP to be present in a location which can be referenced using the environment variable $ARM_IP_LIBRARY_PATH. 

Within this directory, each piece of IP is expected in its own directory and within each, multiple releases are present. 

The "latest" directory is the usual place to be referenced within file lists.  Each IP component has its own directory again within latest, but within each, there are two sub directories, logical and src.

These two sub directories are actually symbolic links to the latest release (the most recent directory within each IP directory). src points to the root of the latest release and logical points to the logical directory within the latest release - this usually contains the design RTL for the IP.

IP Usage

To use the IP, for example the filelist provided in the SoCLabs project repositories, paths are usually pointing to latest and then into the logical directory, for example, $ARM_IP_LIBRARY_PATH/latest/Cortex-M0/logical/xxxx.v. There may be cases where files are not within the logical directory and you may then need to find the path from the src directory instead e.g. $ARM_IP_LIBRARY_PATH/latest/Cortex-M0/src/logical/xxxx.v. 

Projects Using This Design Flow

Experts and Interested People



Log-in to Add to Your Profile

Add new comment

To post a comment on this article, please log in to your account. New users can create an account.