NAME

SystemC::Manual - SystemPerl primary documentation

SUMMARY

The publicly licensed SystemPerl package provides several extensions to SystemC. It provides sp_preproc, extending the language for AUTOmatic connection of hierarchy like my Verilog-Mode, trace files and netlist linting. Its netlist and parsing utilities are general enough for writing your own tools. Two additional tools provide for speeding up GCC compiles and dependency correction. You can download SystemC from the link off of http://www.veripool.org/systemperl

DESCRIPTION

This package provides several 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 hierarchy 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 SystemC::SystemPerl after installation.

sp_include shows a technique for speeding up SystemC compiles using GCC. sp_makecheck allows for cleaning up dependency files when dependencies have been removed or changed.

Finally, the src directory contains useful C++ utilities for simulation, such as changing cout to send to both the screen and a file. You may point to this directory underneath the kit, or set SYSTEMPERL_INCLDUE to point to these sources.

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."  ");
            }
        }

SystemPerl example

        SC_MODULE(mod) {
            /AUTOSIGNAL/
            SC_CTOR(mod) {
                SP_CELL (sub, submod);
                /AUTOINST/

This expands into:

        SC_MODULE(mod) {
            /AUTOSIGNAL/
            // Beginning of SystemPerl automatic signals
            sc_signal<bool>             a;       // For submod
            // End of SystemPerl automatic signals

            SC_CTOR(mod) {
                SP_CELL (sub, submod);
                /AUTOINST/
                // Beginning of SystemPerl automatic pins
                SP_PIN (sub, a,       a);
                // End of SystemPerl automatic pins

SUPPORTED SYSTEMS

This version of SystemPerl has been built and tested on:

It should run on any system with Perl, a C compiler, bison, and flex.

SystemC must be installed to get the complete function. Currently 1.2.1beta, 2.0.1, 2.1 and 2.2 are the versions supported for tracing, other versions should work without tracing or with minor editing.

INSTALLATION

gunzip SystemPerl_version.tar.gz ; tar xvf SystemPerl_version.tar}

cd SystemPerl*

export SYSTEMC=/path/to/systemc

in your "~/.bashrc" file.

        If different than the above, make sure the "SYSTEMC_KIT" environment
        variable points to your original SystemC source code kit.

        Type "perl Makefile.PL" to configure SystemPerl for your system.

        You may get a warning message about needing Verilog::Netlist, if so
        you need to install or upgrade the "verilog-perl" package from CPAN.

export SYSTEMPERL=/path/to/systemperl

in your "~/.bashrc" file.

DISTRIBUTION

SystemPerl is part of the <http://www.veripool.org/> free SystemC software tool suite. The latest version is available from CPAN and from <http://www.veripool.org/systemperl>.

Copyright 2001-2010 by Wilson Snyder. This package 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.

AUTHORS

Wilson Snyder <wsnyder@wsnyder.org>.

SEE ALSO

Primary Documentation:

SystemC::Manual (This document)

Language Documentation:

SystemC::SystemPerl

Programs

sp_includer, sp_makecheck, sp_preproc

Major modules:

SystemC::Netlist, SystemC::Parser

Submodules

SystemC::Coverage SystemC::Coverage::Item SystemC::Coverage::ItemKey

SystemC::Netlist SystemC::Netlist::AutoCover SystemC::Netlist::AutoTrace SystemC::Netlist::Cell SystemC::Netlist::Class SystemC::Netlist::CoverGroup SystemC::Netlist::CoverPoint SystemC::Netlist::File SystemC::Netlist::Method SystemC::Netlist::Module SystemC::Netlist::Net SystemC::Netlist::Pin SystemC::Netlist::Port

Verilog::Netlist