diff options
Diffstat (limited to 'src/systemc/tests/systemc/misc/stars/star125412')
-rw-r--r-- | src/systemc/tests/systemc/misc/stars/star125412/golden/test.log | 11 | ||||
-rw-r--r-- | src/systemc/tests/systemc/misc/stars/star125412/test.cpp | 119 |
2 files changed, 130 insertions, 0 deletions
diff --git a/src/systemc/tests/systemc/misc/stars/star125412/golden/test.log b/src/systemc/tests/systemc/misc/stars/star125412/golden/test.log new file mode 100644 index 000000000..f892f5148 --- /dev/null +++ b/src/systemc/tests/systemc/misc/stars/star125412/golden/test.log @@ -0,0 +1,11 @@ +SystemC Simulation +main thread at time 10 ns +main thread at time 20 ns +main thread at time 30 ns +main thread at time 40 ns +main thread at time 50 ns +main thread at time 60 ns +main thread at time 70 ns +main thread at time 80 ns +main thread at time 90 ns +main thread at time 100 ns diff --git a/src/systemc/tests/systemc/misc/stars/star125412/test.cpp b/src/systemc/tests/systemc/misc/stars/star125412/test.cpp new file mode 100644 index 000000000..9d8e17f14 --- /dev/null +++ b/src/systemc/tests/systemc/misc/stars/star125412/test.cpp @@ -0,0 +1,119 @@ +/***************************************************************************** + + Licensed to Accellera Systems Initiative Inc. (Accellera) under one or + more contributor license agreements. See the NOTICE file distributed + with this work for additional information regarding copyright ownership. + Accellera licenses this file to you under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with the + License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied. See the License for the specific language governing + permissions and limitations under the License. + + *****************************************************************************/ + +/***************************************************************************** + + test.cpp -- + + Original Author: Martin Janssen, Synopsys, Inc., 2002-02-15 + + *****************************************************************************/ + +/***************************************************************************** + + MODIFICATION LOG - modifiers, enter your name, affiliation, date and + changes you are making here. + + Name, Affiliation, Date: + Description of Modification: + + *****************************************************************************/ + +/* +I believe there is a bug in SystemC 2.0 beta 1 which +causes simulation to end prematurely in certain cases. +Specifically, if an event notification occurs at a particular +time but no processes are ready to run at that time, +simulation will end. However, there may still be processes +that need to be run at future times. + +Below I've included an example which demonstrates the bug, +and below that I've provided a proposed fix for the bug. + +// This SystemC 2.0 example shows the bug... +*/ + +#include <systemc.h> + +class top : public sc_module +{ + public: + SC_HAS_PROCESS(top); + + top(sc_module_name name) : sc_module(name) + { + SC_THREAD(main); + } + + void main() + { + sc_event e; + + // comment out the following line to see bug go away + + e.notify(55, SC_NS); + + for (int i = 0; i < 10; i++) + { + wait(10, SC_NS); + cout << "main thread at time " << sc_time_stamp() << endl; + } + } +}; + +int sc_main (int argc , char *argv[]) +{ + top top1("Top1"); + sc_start(); + return 0; +} + +/* +/////// End of example + +The proposed fix for this in SystemC 2.0 beta 1 is: + +Edit src/sysc/kernel/sc_simcontext.cpp + +Lines 801-802, which read: + +// no more runnable processes +break; + +Should be changed to read: + +// no runnable processes at current time, but maybe in future +t = next_time(); +continue; + +The same changes should be applied at lines 845-846 +Then rebuild and reinstall the SystemC library. + + +___________________________________________________ +Stuart Swan, Senior Architect +System Level Design Group, Cadence Design Systems +Building 11 +2670 Seely Avenue +San Jose, CA 95134 +Phone: +1 408 895 4579 +Email: stuart@cadence.com +___________________________________________________ + +*/ |