SoC Enterprise™ provides a flexible and customizable environment for SoC design assembly to comprehensively meet specific design requirements. It’s not just an assembler as it can also generate RTL components like bus-aggregators, bridges (AHB-APB, AXI-APB, AXI4Full-AHBFull), muxes and other “plumbing” components by leveraging already existing and mature register solution along with the new “Standard Library of customizable & configurable IP Generators” (SLIP-G™).

After generating blocks with registers through IDesignSpec™, our customers can stitch them together into an SoC and package them with SoC Enterprise.

SoC-E supports IPs from different sources and formats as below:

  • IPs created by user manually
  • IPs generated by SLIP-G
  • RTL/IP-XACT generated from specifications using IDesignSpec™
  • Third party IPs in RTL/IP-XACT format

It provides the following benefits:

  • Automated, repeatable process that saves time and creates “correct-by-construction” outputs
  • Eliminate manual coding errors in IPs and connecting RTL
  • An intuitive graphical view of blocks and their connectivity with facility to traverse the hierarchy helps visualize the SoC

Flow from specification to SoC is as depicted below:

Typical Uses of SoC Enterprise

  1. Connect IDS generated block with the user’s application logic and create a wrapper around it
  2. Read an IP-XACT component and connect with the existing blocks
  3. Connect an AHB bus with an APB slave by automatically instantiating a bridge
  4. Connect several AHB blocks to an AHB master by automatically instantiating an aggregator
  5. Move a block from inside a deep hierarchy to several levels up

SoC Enterprise APIs

As Tcl is already supported by most EDA tools and users are also familiar with it, SoC-E also provides Tcl like text APIs for the purpose of automation of SoC assembly using APIs in a script and providing the script file as an input to the tool. These APIs are categorized on the basis of their functionality as illustrated in the following sections.

    1. Input APIs

      These APIs read specified files and load the blocks/IPs with their ports/signals, parameters and connectivity (IP-XACT only) into the library from which they can be instantiated by instantiation/creation APIs. The input files could be any of these files, like .v, .sv, .xml (ip-xact), and .idsng.

    2. Creation API

      These APIs can be used to create definitions of a new item like, block, interface, bus, etc. They will create a new definition in the memory with the specified name, ports, parameters, etc.

      • Add API

      These APIs are used to add instances of an item which is either created or read into the library by a create api or a read api. It can also be used to add primitives like ports, parameters, etc.

    3. Connection APIs

      These APIs that are used to connect different items and their sub-items based on the switches used. There is a method for promoting ports of subitem block(s) to the container.

    4. Generation/Check APIs

      These APIs generate outputs for the specified block or the container block. These options will be stored and used during the generations process.

    5. GUI API

      An API is provided to view the connections graphically. The graphical view displays the design in hierarchical form with an option to expand and collapse hierarchical blocks.

A Typical Example

A typical example with hierarchy is as shown above. SoC Enterprise APIs can be used to make a Tcl script for reading blocks/IPs, connecting them together, making hierarchies, etc. Apart from blocks read or created through API, some plumbing components like aggregators, bridges, etc., are instantiated automatically as per the requirements. Users can read their own plumbing components too.

The graphical view from the tool for a sample design looks as below: