/svx

SystemVerilog Extension Library -- a library of utilities for generic programming and increased productivity

Primary LanguageSystemVerilogApache License 2.0Apache-2.0

//======================================================================
//
//               .oooooo..o oooooo     oooo ooooooo  ooooo     
//              d8P'    `Y8  `888.     .8'   `8888    d8'      
//              Y88bo.        `888.   .8'      Y888..8P        
//               `"Y8888o.     `888. .8'        `8888'         
//                   `"Y88b     `888.8'        .8PY888.        
//              oo     .d8P      `888'        d8'  `888b       
//              8""88888P'        `8'       o888o  o88888o
//
//                  SystemVerilog Extension Library
//
//
// Copyright 2016 NVIDIA Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
// implied.  See the License for the specific language governing
// permissions and limitations under the License.
//======================================================================

               +---------------------------------------+
               |    SystemVerilog Extension Library    |
               |                  SVX                  |
               +---------------------------------------+

                          Author: Mark Glasser
                       email: mglasser@nvidia.com

The SystemVerilog Extension library is a library of utilities that
extend the functionality of SystemVerilog.  The utilities include data
structure and process management facilities that enhance the
capabilities already available in SystemVerilog, making it easier to
write and debug compled programs.

PACKAGE CONTENTS
----------------

The SVX library distribution is organized into a set of directories

src      - contains the library source code

doc      - contains the documentation PDF files as well as the
           documentation source.

test     - contains a comprehensive test suite

examples - contains use model examples

apps     - A collection of SystemVerilog utilities that are built using SVX.


INSTALLATION
------------

Simply unpack the tar kit in a convenient location.  Nothing else is
required to install the package.


COMPILING
---------

To use the SVX library in your own work You will have to compile and
link the SVX library along with other SystemVerilog code in the usual
way.  Create an environment variable SVX_HOME which points to the
location where you installed the SVX library.  E.g

% setenv SVX_HOME /home/tools/svx-1.0.0

In your make file add the svx package file to the list of source files

SRC += ${SVX_HOME}/src/svx.sv

Make sure that the SVX source directory is in your include path.

INC += +incdir+${SVX_HOME}/src


USAGE
-----

To use the library import the SVX package and include the file of macro
definitions in your SystemVerilog source.  E.g.

import svx::*;
`include "svx_macros.svh"

This will provide access to all of the SVX library features in your
SystemVerilog programs.


DOCUMENTATION
-------------

The documentation for the SystemVerilog Extension library is delivered
as a single PDF file, doc/svx.pdf.

The documentation was written using LaTeX, a text-based document markup
language, and dot, a text-based language for describing graphs.  A
Makefile is included in the doc directory for re-building the PDF.

To build the documentation, cd to the doc directory and run the
Makefile.

% make

To remove all of the generated files type

% make clean

To remove all the generated files, leaving the final PDF file(s), type

% make dist_clean

You may have to adjust the make file to account for the locations of
latex, dot, and related programs in your environment.


TEST SUITE
----------

The SVX library is delivered with a comprehensive test suite.  The suite
lives in the test directory.  The suite is built using svunit, an open
source testing framework built by Bryan Morris and Neil Johnson.  You
can download a copy from SourceForge at sourceforge.net/projects/svunit.

To run the test suite, simply execute the makefile

% make

To remove all of files generated during the execution of the test suite,
type

% make clean

The create.sh script builds the individual test suites and the test
runner for the test suite.  If you add tests update create.sh to include
your new unit tests and run the script to re-build the testing
infrastructure.  Consult the svunit documentation for details on how
test suites are constructed.