NAME
Sim - Simulator engine for discrete events
VERSION
This document describes Sim 0.02 released on 2 June, 2007.
SYNOPSIS
use Sim;
Sim->schedule(
0.2 => sub { print "Hi\n" },
0.4 => sub {
Sim->schedule(
0.5 => sub { print "Wow!\n" },
Sim->now + 0.2 => sub { print "Hello!\n" },
);
},
0.5 => sub { print "now is ", Sim->now, "\n"; },
);
Sim->run( duration => 1.0 ); # upper-limit for simulation time
# OR: Sim->run( fires => 15 ); # upper-limit for number of event fires
print "now is ", Sim->now, "\n"; # now is 0.6
DESCRIPTION
Sim is a general-purpose discrete event simulator engine written in pure Perl. It was originally developed as the run-core of a sequential/conbinational logic circuit simulator named Tesla.
The Sim class is just a static class wrapping around a Sim::Dispatcher instance and a Sim::Clock instance. I used AUTOLOAD to do the magic instead of writing a lot of boring code. It's expected that using Sim::Dispatcher directly can be a bit faster but is certainly less convenient.
If you want to use a different clock model with vectorized time read, say a [sec, delta], which is found in a lot of EDA simulators, then you should use Sim::Dispatcher instead of Sim and define your clock class yourself.
See Sim::Dispatcher for more information.
STATIC METHODS
All the methods of Sim::Dispatcher are available for this class, but they are exposed as static methods only :)
VERSION CONTROL
You can always get the latest version of the source from the following Subversion repository:
http://svn.openfoundry.org/sim/
which has anonymous access to all.
If you do want a commit bit and become a coauthor, please let me know :)
CODE COVERAGE
I use Devel::Cover to test the code coverage of the test suite:
---------------------------- ------ ------ ------ ------ ------ ------ ------ File stmt bran cond sub pod time total ---------------------------- ------ ------ ------ ------ ------ ------ ------ blib/lib/Sim.pm 100.0 50.0 66.7 100.0 n/a 5.7 91.7 blib/lib/Sim/Clock.pm 100.0 83.3 n/a 100.0 100.0 9.0 97.3 blib/lib/Sim/Dispatcher.pm 94.6 75.0 100.0 100.0 100.0 31.1 92.2 ---------------------------- ------ ------ ------ ------ ------ ------ ------
AUTHOR
Agent Zhang <agentzh@gmail.com>
COPYRIGHT
Copyright 2006, 2007 by Agent Zhang. All rights reserved.
This library is free software; you can modify and/or modify it under the same terms as Perl itself.