SAVANT is a VHDL frontend analyzer (compiler) that parses, type-checks, and converts VHDL models into an object-oriented intermediate based on the AIRE standard. The SAVANT software is released under the GNU General Public Library License.
Before installing SAVANT, the Clifton Labs standard utilities (clutils must be downloaded and installed. These utilities are used extensively in Clifton Labs C++ coding efforts and include string utilities, an argument parser, and configuration file infrastructure.
To download clutils, issue the following command in your working directory:
cvs -d :pserver:anonymous@cvs.cliftonlabs.com:/usr/local/cvsroot co clutils
The build system for all Clifton Labs software is based on GNU
autotools 2.0 release. After checking out the code, you need to type
autoreconf -i to create the necessary support files. The
INSTALL file included in the clutils directory contains detailed
instructions for configuring and installing clutils. A typical configure
command will look like the following:
./configure CXX=[c++_version] CC=[c_version] CXXFLAGS="-Wno-long-long -Wall -W -ggdb3"
--prefix=[install_dir] --with-pccts-headers=[location_of_pccts_headers]
After installing clutils, the SAVANT software can be downloaded from CVS using:
cvs -d :pserver:anonymous@cvs.cliftonlabs.com:/usr/local/cvsroot co savant
SAVANT also includes an INSTALL file that provides detailed instructions for configuring and installing SAVANT. A typical configure command will look like the following:
./configure CXX=[c++_version] CC=[c_version] CXXFLAGS="-Wno-long-long -Wall -W -ggdb3"
--prefix=[install_dir] --with-pccts-headers=[location_of_pccts_headers]
--with-clutils=[clutils_install_dir]
Following these instructions produces a VHDL analysis system capable of reading in a VHDL file and creating an AIRE tree representation in memory.
Extending the SAVANT system is extremely easy using a plugin-based architecture that can operate on the tree representation. Currently, the SAVANT/TyVIS/warped system provides VHDL simulation capabilities by generating C++ code using the TyVIS code generation plugin and providing the possibility of simulating the code in parallel using the warped architecture.
To simulate VHDL code you will also need to install warped and TyVIS. TyVIS, developed at the University of Cincinnati, is a C++ class library that encapsulates VHDL semantics such as signals and the simulation cycle. warped, also developed at the University of Cincinnati, is a discrete event simulation kernel that supports both parallel and sequential simulation.
After installing Tyvis and warped, the user can generate C++ code that can be simulated using the following command:
scram --publish-cc [VHDL file]
-- More options are described by typing: scram --help
A directory work._savant_lib will be created that
contains several C++ files. Typing make and then running
the generated executable file will provide the expected results of the
written VHDL simulation.
The plugin architecture of the SAVANT system provides access to the intermediate form of analyzed VHDL code. Plugin development can provide backend conversion to another language, such as C++ with the TyVIS plugin, XML (as is illustrated in the plugin development tutorial), or whatever the plugin developer wants to produce. Properly formed VHDL code is also produced as part of the AIRE tree specification.
The SAVANT plugin tutorial provides an example implementation of a VHDL to XML conversion plugin. The tutorial also includes scripts necessary to create plugin skeleton code and to walk the AIRE tree to process all nodes. Users can access the plugin tutorial through CVS at:
cvs -d :pserver:anonymous@cvs.cliftonlabs.com:/usr/local/cvsroot co savant_plugin_tutorial
ExtensionDocumentation.pdf in the doc/
directory describes the plugin architecture and provides a tutorial on
the creation of the XML generation plugin.
plugin_creation.pl and create_tree_walk.pl
located in the bin/ directory are described and used to
generate the plugin.
After successfully following the instructions contained in
ExtensionDocumentation.pdf to develop and compile a plugin,
the plugin can be used with the SAVANT system by typing:
scram -plugins [plugin file] [vhdl file]
The SAVANT system is under constant development and the development community benefits from active participation of its users. The mailing lists described below provide access to the development community and allow users to submit bug reports, request support, and submit patches.
We welcome and encourage contributions to SAVANT software. Ideally we would prefer that the patches/contributions come in as context diffs from the cvs archive. If you would like to submit patches/code for the SAVANT archive, please email us. Thank you.