Skip to content

icglue/icglue

Repository files navigation

ICGlue is a Tcl-Library for scripted HDL generation

ICGlue is a C/Tcl based library and tool for scripted generation of hardware description. The focus here is on simplifying to create module hierarchy, connectivity and configuration via register-files. Created output contains modules in a hardware description language (currently only systemverilog/verilog) and register-file documentation.

Features

Current features are:

  • Read in a user-defined Tcl construction script to describe hierarchy, connectivity and config registers.
  • Run some sanity checks.
  • Write out code/documentation defined by customizable Tcl-based templates.

Planned features: see todo-list.

Documentation

For an overview see icglue. For library documentation build the doxygen documentation by running

make docs

and browse it in firefox by running

make showdocs

Dependencies

Main

  • glib2
  • tcl8.6

Optional

  • nagelfar (for Tcl syntax checks)
  • doxygen (for source code documentation)

Build

  • gcc
  • make
  • pkg-config (with configs for glib2 and Tcl - otherwise you need to patch lib/Makefile)

Test

  • iverilog
  • libpcl (portable coroutine library)

Build

Run

make

to build core library and Tcl package. Run

make everything

to build doxygen-Documentation (needs doxygen) and nagelfar syntaxfiles as well (needs nagelfar installed).

Install

Run e.g.

DESTDIR=/opt/icglue make install

to install to /opt/icglue.

Developers

See developers.

Licensing

If not stated otherwise: GNU GPLv3 (see license).

Note: The license applies especially to the tool itself and its default templates, but, similar to a compiler or any other kind of data processing tool, the license does not affect the input handed to the tool or the output generated by it.

Acknowledgement

After the initial phase, most of the work for ICGlue was done at the Chair of Highly-Parallel VLSI Systems and Neuro-Microelectronics (HPSN) at TU Dresden (see HPSN). It is inspired by its predecessor icsng developed by Jens-Uwe Schlüssler.