rggen by taichi-ishitani

Code generation tool for control/status registers in a SoC design

Gem Version Build Status Maintainability codecov Quality Gate Status Gitter

RgGen

RgGen is a code generation tool for ASIC/IP/FPGA/RTL engineers. It will automatically generate soruce code related to configuration and status registers (CSR), e.g. SytemVerilog RTL, UVM RAL model, Wiki documents, from human readable register map specifications.

RgGen has following features:

  • Generate source files related to CSR from register map specifications
    • SystemVerilog RTL
    • UVM RAL model
    • Register map documents written in Markdown
  • Register map specifications can be written in human readable format
    • Supported formats are listed below:
      • Ruby with APIs to describe register map information
      • YAML
      • JSON
      • Spreadsheet (XLSX, XLS, OSD, CSV)
  • Costomize RgGen for you environment
    • E.g. add special bit field types

Installation

Ruby

RgGen is written in the Ruby programing language and its required version is 2.3 or later. You need to install any of these versions of Ruby before installing RgGen tool. To install Ruby, see this page.

Installatin Command

RgGen depends on following sub components and other Ruby libraries.

To install RgGen and the dependencies, use the command below:

$ gem install rggen

RgGen and dependencies will be installed on your system root.

If you want to install them on other location, you need to specify install path and set the GEM_PATH environment variable:

$ gem install --install-dir YOUR_INSTALL_DIRECTORY rggen
$ export GEM_PATH=YOUR_INSTALL_DIRECTORY

You would get the following error message duaring installation if you have the old RgGen (version < 0.9).

ERROR:  Error installing rggen:
        "rggen" from rggen-core conflicts with installed executable from rggen

To resolve the above error, there are three solutions. See this page

Usage

See Wiki documents.

Example

You can get example configuration file and register map specification listed below:

By using these example files, you can try to use RgGen. Hit command below:

$ rggen -c config.yml -o out block_0.yml block_1.yml
  • -c
    • Specify path to your configuration file
  • -o
    • Specify path to the directory where generated files will be written to

Then, generated files listed below will be written to out directory.

Contact

Feedbacks, bug reports, questions and etc. are wellcome! You can post them by using following ways:

See Also

Copyright & License

Copyright © 2019 Taichi Ishitani. RgGen is licensed under the MIT License, see LICENSE for futher detils.

Code of Conduct

Everyone interacting in the RgGen project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.

The MIT License (MIT)

Copyright (c) 2019 Taichi Ishitani

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

Project Meta

  • Registered 3 years ago
  • Started 7 months ago
  • Last commit 4 months ago

Commits

{"labels":[2019],"series":[[150]]}

Commits per year

Contributors

{"labels":[2019],"series":[[2]]}

Unique contributors per year

Releases

v0.18.0 is is the latest of 10 releases.

  • v0.18.0
    Nov 19, 2019 03892f2
  • v0.17.0
    Nov 13, 2019 cc1876a
  • v0.16.0
    Oct 1, 2019 22c78d6
  • v0.15.0
    Sep 18, 2019 a5f39d1
  • v0.14.0
    Sep 3, 2019 265309e
  • v0.13.0
    Aug 28, 2019 bb82ca5
  • v0.12.0
    Aug 19, 2019 fabe5a1
  • v0.11.0
    Aug 11, 2019 caa66f1
  • v0.10.0
    Jul 31, 2019 3835a19
  • v0.9.0
    Jul 26, 2019 6befd0f

Languages

{"labels":[],"series":[]}

Share of languages used

Data Sheet
Project Web Site
https://github.com/rggen/rggen.git
MIT
Issue Tracker
Last updated 4 months ago
v0.18.0 released 19 days ago
2 forks
2 watchers
2 stars
150 commits by 3 contributors
taichi Taichi Ishitani
0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,9,1,5,6,6,10,18,6,2,7,4,16,29,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

Activity in last 1 year

Updated 8 days ago