This is the SystemC Perl Package, aka SystemPerl. Copyright ========= This package is Copyright 2001 by Wilson Snyder . You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file, with the exception that it cannot be placed on a CD-ROM or similar media for commercial distribution without the prior approval of the author. This code is provided with no warranty of any kind, and is used entirely at your own risk. Description =========== This package provides three major sub-packages. The SystemC::Parser understands how to read SystemC files, and extract tokens and such, similar to Verilog::Parser. SystemC::Netlist builds netlists out of SystemC files. This allows easy scripts to determine things such as the hiearchy of SC_MODULEs. The netlist database may also be extended to support other languages. sp_preproc provides extensions to the SystemC language, called the SystemPerl language. This allows most of the Tedium to be removed from SystemC coding, just as the author's /*AUTO*/ comments did for the Verilog language. See `man SystemPerl' after installation. Parsing example: package Trialparser; @ISA = qw(SystemC::Parser); sub module { my $self = shift; my $module = shift; print $self->filename.":".$self->lineno().": "; print "Contains the module declaration for $module\n"; } package main; my $sp = Trialparser->new(); $sp->read ("test.sp"); Netlist example: use SystemC::Netlist; my $nl = new SystemC::Netlist (); foreach my $file ('testnetlist.sp') { $nl->read_file (filename=>$file, strip_autos=>1); } $nl->link(); $nl->autos(); $nl->lint(); $nl->exit_if_error(); foreach my $mod ($nl->modules_sorted) { show_hier ($mod, " "); } sub show_hier { my $mod = shift; my $indent = shift; print $indent,"Module ",$mod->name,"\n"; foreach my $cell ($mod->cells_sorted) { show_hier ($cell->submod, $indent." ".$cell->name." "); } } Obtaining Distribution ====================== The latest version is available at `http://www.perl.org/CPAN/' Download the latest package from that site, and decompress. `gunzip SystemPerl_version.tar.gz ; tar xvf SystemPerl_version.tar' Supported Systems ================= This version of SystemC has been built and tested on: * i386-linux It should run on any system with Perl and a C compiler. Installation ============ 1. `cd' to the directory containing this INSTALL notice. 2. Type `perl Makefile.PL' to configure SystemC for your system. (Note this package will probably run slower if you are still using perl 5.005.) 3. Type `make' to compile SystemC. 4. Type `make test' to check the compilation. 5. You can see examples under the test_dir directory. The *.sp files are "inline" converted, while the *.h and *.cpp files are expanded from the .sp files. 6. Type `make install' to install the programs and any data files and documentation. 7. Install `systemperl.h' somewhere in your project's build path. The best place is probably the $SYSTEMC/include directory.