The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
1 SystemC::Vregs
****************

This is the SystemC Vregs Package, aka Vregs.

1.1 Copyright
=============

This package is Copyright 2001-2010 by Wilson Snyder
<wsnyder@wsnyder.org>.

   This program is free software; you can redistribute it and/or modify
it under the terms of either the GNU Lesser General Public License
Version 3 or the Perl Artistic License Version 2.0.

   This code is provided with no warranty of any kind, and is used
entirely at your own risk.

1.2 Summary
===========

The publicly licensed Vregs package provides a means for extracting
registers, classes, enumerations, and defines from documentation.  Vregs
then extracts header files for C++, Verilog, and Perl.

   Being very object oriented, the program can easily be extended to
support additional output languages and output files.  You can download
Vregs from the link off of http://www.veripool.org/vregs

   Vregs does not require SystemC or C++ to be useful, though some of
the generated header files are only useful in object oriented languages
like C++.

1.3 Description
===============

Vregs converts documentation to C++, Verilog, and perl headers.

   First, you write your specification using the example documentation
in Microsoft Word format in vregs_spec.doc, or using any editor that can
produce HTML code.  Vregs only cares about the general table layout, not
style and font issues; almost any program will do, both Microsoft Word
and Adobe Framemaker have been used in the past.

   When the document is ready for conversion, save the document as
HTML.  Microsoft Word annoyingly opens the HTML after saving; be sure
to exit the HTML version immediately.

   You then run Vregs, which reads the HTML code and writes out a .vspec
file, which contains a summary of the extracted information.  This file
can be examined for errors, or edited standalone.  Vregs also produces
header fields with #defines for all of the constants and magic numbers
in the spec.

   Alternatively you can write a .vregs file directly and then have this
converted to LaTex format for printing.  If you use another text
language, it is easy to write another output format.

   Vregs can be customized to change the code it creates using
templates; see 'man vreg' for details.

1.4 Obtaining Distribution
==========================

Vregs is part of the L<http://www.veripool.org/> free Verilog software
tool suite.  The latest version is available from
`http://www.perl.org/CPAN/', and from `http://www.veripool.org/vregs'.

   Download the latest package from that site, and decompress.  `gunzip
SystemC-Vregs_version.tar.gz ; tar xvf SystemC-Vregs_version.tar'

   You will also need to have installed Bit::Vector, HTML::TableExtract,
and Verilog::Language from CPAN.  If you wish, simply try and install
Vregs and it will tell you what prerequisites are missing.

1.5 Supported Systems
=====================

This version of Vregs has been built and tested on:

   * i386-linux

   It should run on any system with Perl.

1.6 Installation
================

  1. `cd' to the directory containing this README notice.

  2. Type `perl Makefile.PL' to configure Vregs for your system.

  3. Type `make' to compile.

  4. Type `make test' to check the compilation.  Note that
     vregs_spec.doc with this distribution is converted into the files
     in the test_dir directory.

  5. Type `make install' to install the programs and any data files and
     documentation.

  6. Install `vregs-mode.el' in your Emacs site-lisp directory.

  7. Add the `include' directory to your project's build path, if you
     wish to use the register information classes produced by Vregs.

  8. Examine the example document under vregs_spec.doc and
     vregs_spec.html.  This document is used to produce the header
     files you see when you do a `make test'.

  9. If you wish to examine data structures created by vregs, see the
     vderegs.cpp program provided in the include directory.