🚀 DAY 2 OF LAUNCH WEEK: Announcing Socket Certified Patches: One-Click Fixes for Vulnerable Dependencies.Learn more →
Socket
Book a DemoInstallSign in
Socket

soc_maker

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

soc_maker

bundlerRubygems
Version
0.1.1
Version published
Maintainers
1
Created
Source

= System-on-Chip Maker (soc_maker)

The System-on-Chip (SoC) Maker is a tool to design and create SoCs in a simple way, written in Ruby.

PLEASE NOTE: THIS SOFTWARE IS IN DEVELOPMENT AND HIGHLY EXPERIMENTAL!!

== Current Features

  • All configuration files are YAML based (see http://en.wikipedia.org/wiki/YAML)
  • Hierarchical systems can be designed
  • Usage of an IP core library
  • A CLI for an easy interaction (not completed, needs to be re-designed or removed, interaction is not that easy)
  • Ruby interface to interact with the soc_maker on a lower level
  • VHDL output
  • parameterization of cores
    • instance parameterization (vhdl-generics/verilog-parameters)
    • global/static parameterization (vhdl-packages/verilog-includes)

== Install

  • from git:

    git clone https://github.com/feddischson/soc_maker.git
    cd soc_maker
    git checkout tags/v0.1.0         # please adapt version if necessary
                                     # see https://github.com/feddischson/soc_maker/releases
    gem build soc_maker.gemspec
    gem install soc_maker-0.1.0.gem  # requires ruby >= 2.0
    

== TODOs

  • User-Guide
    • YAML API documentation
  • API version check

== Planed Features

  • Graphical User Interface (GUI)
  • Import wizzard: should scan IP core sources and suggest configuration
  • Verilog output
  • Plugin-interface
  • Synthesis and Simulation support plugins
  • More cores

== Status A first "Hellow World" SOC has been created, simulated, synthesized and tested on a Spartan-3AN starter kit board. The system consists of an OpenRISC CPU, some on-chip memory and a UART core (see ./examples/or1200_test).

Furthermore, some dummy cores have been assembled to a hierarchical system, where a SOC contains a few cores and a sub-SOC.

The following cores are integrated into the SOC-Maker core library and can be used:

== Motivation The motivation of this project is the need of an open-source application to create system-on-chips easily and fast on a higher level than vhdl or verilog. By creating a generic application, it can support a wide range of processors, cores, controllers and bus-topologies. By using the SoC-Maker, it should be easy for a system-designer to assemble multiple IP-cores together with a low effort and without low-level knowledges. Furthermore, pre-defined SoCs can be published and extended. This makes it interesting for IP-core developers. An existing SoC created with the Soc-Maker can be easily extended by a custom IP core which is then tested and used. Not only memory-mapped systems are a target application, also signal-processing systems are interesting, where signal-processing blocks are concatenated.

One useful example is an Open-RISC based SoC, where it would be nice, if core and system-developers can easily create a SoC with an Open-RISC CPU. The need of a detailed knowledge of the Open-RISC, the Wishbone bus and so on is not needed anymore.

A second example is a any kind of wireless receiver, where signals are filtered, mixed, decimated and further processed. All the signal processing can be put together into a subsystem with parameters (mixer-resolution, decimation-rate and son on). On a higher level, this sub-system can then be used in a typical memory-mapped SoC together with other IP-cores and sub-systems.

== The Goal

The goal in one sentence: the SoC-Maker should make it possible to parameterize and assemble one or multiple IP-cores into one IP-core on a high level.

IP-core IP stands for Intellectual Property and the definition can be found on wikipedia: http://en.wikipedia.org/wiki/Semiconductor_intellectual_property_core

Parameterization Parameterization of IP-cores says, that the user can configure and setup all required parameters of an IP-core.

Assembly Assembly in this context means, that the IP-cores are connected in a pre-defined or user-defined way, that the final IP-core works as required by the user.

One or Multiple IP cores The minimum number of IP-cores, which are used in such a system is one. Of course, the common case is that more than one IP-core is used to create one final IP-core.

Into one IP core The assembly into one IP-core can be seen in different ways: on the one hand, this final IP-core can be seen as a System-on-Chip. On the other-hand, it can be defined as a subsystem with additional parameters. This parameters are then passed to the single IP-cores. The subsystem, which is one big IP-core, can then be used in other systems or sub-systems.

The High Level The high level says, that the user must not work on code or RTL level. Furthermore, the high-level can can be different: one way could be a graphical user interface. A second way might be an easy to read ASCII file written for example in XML, YAML or JSON.

== Requirements

  • The user is able to organize IP cores and interfaces in a library, which includes

    • adding existing IP cores / interfaces
    • removing IP cores / interfaces
    • displaying IP cores (which are in the library)
    • adding IP cores to the target-SOC
  • There should be a library functionallity: the library should hold

    • core definitions
    • interface definitions
  • There should exist a core definition for each core. The definition should define the following data

    • all source files, which are required for synthesis only
    • all source files, which are required for simulation only
    • all source files, for synthesis and simulation
    • top-level source file
    • top-level port and parameters
    • parameter configuration and validation
    • an option to download/check out files from a repository (svn, git ...)
  • There should exist an interface specification for each interface used in the library

    • The interface specification defines, how the IP cores are connected
    • Allow versioning
    • Allow a wide range of topologies
  • There should be a SOC definition The SOC definition defines, which IP cores are used by the target-SOC, how they are connected and how the IP cores are parameterized.

  • IP-core configuration It must be possible to configure an IP core. The configurable parameters are defined in the IP-core definition and set in the SOC definition. The parameters are then used to instantiate the IP-core during the HDL generation

  • Toplevel-Generation The SoC maker should auto-generate a toplevel in VHDL or Verilog. Both HDL languages should be supported for generation.

  • Configuration Files All configuration should be stored in YAML files, this includes

    • SOC definition
    • Core definition
    • Interface specification
    • SoC maker configuration
  • User-Interaction It should be possible to use the SOC-Maker on three levels:

    • Script-level: this is the lowest level and uses the ruby API directly
    • CLI-level: a commandline-interface can be used to interact with the API
    • GUI-Level: this is the highest level: a graphical user interface should make it possible to have a simple interaction with the API

== Author

Christian Haettich, feddischson [ at ] opencores.org

== License

Copyright (C) 2014 Christian Haettich - feddischson [ at ] opencores.org

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

FAQs

Package last updated on 09 Jun 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts