Subject: tyvis update
From: Dhananjai Madhava Rao (dmadhava@ECECS.UC.EDU)
Date: Wed Aug 08 2001 - 09:21:01 MDT
Update of /home/paw/CVS/tyvis/VHDLKernel
In directory viking.ececs.uc.edu:/work/tmp/cvs-serv28836
Modified Files:
Events.hh Makefile.am ScalarType.cc SignalBase.cc
SignalBase.hh VHDLData.cc VHDLData.hh VHDLKernel.cc
VHDLKernel.hh
Removed Files:
MarkedQueue.cc MarkedQueue.hh SortedList.cc SortedList.hh
Log Message:
A new implementation of marking that is intended to work with sequential and
parallel simulations is in place. A brief overview of the changes and the new
implementation are:
* With the new changes, the MarkedQueue (present in the earlier implementation)
is no longer required. Other associated files (SortedList.hh,.cc) that are
no longer of any use have also been removed from the archive.
* Marking of transactions posted to signal is now done by each signal with the
help of the process to dispatch events generated (such as addTransaction,
cancelTransaction) during the marking process.
* To perform marking, each signal (i.e., SignalBase) maintain a list of pending
transactions. Since every signal is a part of a process's state, the list of
transactions automatically become a part of the corresponding process's
state. The transactions need to be maintained as a part of the processes
state so that the pending transactions are consistent and coherent with the
state of a process after rollbacks (that could occur during parallel, Time
Warp based simulations).
* Each transaction in the transaction list is implemented using a "Transaction"
data structure which is a 3 tuple consisting of <transactionTime (VTime),
value (VHDLData), sequenceNumber (unsigned int)>. Although, the LRM uses
only <transactionTime, value> for marking, the "sequenceNumber" is an
additional field necessary for implementing marking in a
synchronization-kernel independent manner. The "sequenceNumber"s are used to
pair-up (addTransaction, cancelTransaction) pairs for a given signal at the
receiving end (i.e., at the processes that are sensitive to the given
signal). Each signal maintains its own set of sequence numbers.
Note: Checks have not been made for overlapping of sequenceNumber (assuming
that the number of transactions posted by a single signal assignment
can be represented in the range of values supported by "unsigned int")
* Pairing up and cancellation of transactions is performed by
VHDLKernel::executeProcess() -- when a process get's scheduled for simulation
by the WARPED kernel. It uses the unique <signal_id, sequenceNumber> in
each addTransaction/cancelTransaction event to match and cancel corresponding
pairs of events.
A more detailed description (including snippets from the LRM) of the various
phases of marking has been documented as a part of the source code at suitable
points.
The current implementation has been tested ONLY with the sequential kernel using
few basic cases. The tests have been performed using gcc 2.95.2
To Do:
-----
* Check with gcc 3.0
* Test the implementation using sequential kernel
* Test the implementation using the parallel kernel
* Need to re-visit the issue of optimally copying the transaction list when
state copying is invoked by the kernel.
This archive was generated by hypermail 2b25 : Mon Mar 18 2002 - 13:00:12 MST