From 16fa8d7cc8c92f5ab879e4cf9c6c0bbb3567860f Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Thu, 24 May 2018 01:37:55 -0700 Subject: systemc: Import tests from the Accellera systemc distribution. Change-Id: Iad76b398949a55d768a34d027a2d8e3739953da6 Reviewed-on: https://gem5-review.googlesource.com/10845 Reviewed-by: Giacomo Travaglini Maintainer: Gabe Black --- .../kernel/sc_event/test15/event_triggered.cpp | 203 +++++++++++++++++++++ .../sc_event/test15/golden/event_triggered.log | 48 +++++ 2 files changed, 251 insertions(+) create mode 100644 src/systemc/tests/systemc/kernel/sc_event/test15/event_triggered.cpp create mode 100644 src/systemc/tests/systemc/kernel/sc_event/test15/golden/event_triggered.log (limited to 'src/systemc/tests/systemc/kernel/sc_event/test15') diff --git a/src/systemc/tests/systemc/kernel/sc_event/test15/event_triggered.cpp b/src/systemc/tests/systemc/kernel/sc_event/test15/event_triggered.cpp new file mode 100644 index 000000000..fee0d2516 --- /dev/null +++ b/src/systemc/tests/systemc/kernel/sc_event/test15/event_triggered.cpp @@ -0,0 +1,203 @@ +/***************************************************************************** + + 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. + + *****************************************************************************/ + +/***************************************************************************** + + event_triggered.cpp -- test sc_event::triggered + + Original Author: Philipp A. Hartmann, Intel Corporation - 2017-08-06 + + *****************************************************************************/ + +/***************************************************************************** + + MODIFICATION LOG - modifiers, enter your name, affiliation, date and + changes you are making here. + + Name, Affiliation, Date: + Description of Modification: + + *****************************************************************************/ + +#define SC_INCLUDE_DYNAMIC_PROCESSES +#include +#include + +#ifdef BENCHMARK + static const sc_dt::uint64 num_events = 128; + static const sc_dt::uint64 num_triggers = 4; + static const sc_dt::uint64 num_iterations = 10000000; +# define CHECK(expr) ((void)0) +#else + static const sc_dt::uint64 num_events = 16; + static const sc_dt::uint64 num_triggers = 4; + static const sc_dt::uint64 num_iterations = 4; +# define CHECK(expr) sc_assert(expr) +#endif + +#ifndef UINT64_C +#if defined(_WIN32) && !defined(__MINGW32__) +# define UINT64_C(v) v ## ui64 +#else +# define UINT64_C(v) v ## ULL +#endif +#endif // UINT64_C + +using namespace sc_core; + +SC_MODULE( module ) +{ + sc_vector events; + sc_event event_return; + + SC_CTOR( module ) + : events("ev", num_events) + , m_rng_state() + { + SC_THREAD(driver); + + SC_THREAD(consumer_dynamic); + SC_THREAD(consumer_static); // odd events only + for(unsigned i = 1; i> 48 ); + } + + sc_dt::uint64 m_rng_state; +}; + + +int +sc_main( int, char*[] ) +{ + module m("m"); + sc_start(); + sc_stop(); + return 0; +} diff --git a/src/systemc/tests/systemc/kernel/sc_event/test15/golden/event_triggered.log b/src/systemc/tests/systemc/kernel/sc_event/test15/golden/event_triggered.log new file mode 100644 index 000000000..911cbc94f --- /dev/null +++ b/src/systemc/tests/systemc/kernel/sc_event/test15/golden/event_triggered.log @@ -0,0 +1,48 @@ +SystemC Simulation + 1 ns (1): m.driver: ev_0.notify() + 1 ns (1): m.driver: ev_6.notify() + 1 ns (1): m.consumer_dynamic: ev_0 ev_6 + 1 ns (1): m.driver: ev_1.notify(0 s) + 1 ns (1): m.driver: ev_15.notify(0 s) + 1 ns (2): m.consumer_static: ev_1 ev_15 + 1 ns (2): m.driver: ev_8.notify(1 ns) + 1 ns (2): m.driver: ev_7.notify(1 ns) + 2 ns (3): m.consumer_dynamic: ev_7 ev_8 + 2 ns (3): m.consumer_static: ev_7 ev_8 + 4 ns (4): m.driver: ev_5.notify() + 4 ns (4): m.driver: ev_9.notify() + 4 ns (4): m.driver: ev_13.notify() + 4 ns (4): m.driver: ev_2.notify() + 4 ns (4): m.consumer_static: ev_2 ev_5 ev_9 ev_13 + 4 ns (4): m.consumer_dynamic: ev_2 ev_5 ev_9 ev_13 + 4 ns (4): m.driver: ev_9.notify(0 s) + 4 ns (4): m.driver: ev_5.notify(0 s) + 4 ns (4): m.driver: ev_12.notify(0 s) + 4 ns (4): m.driver: ev_8.notify(0 s) + 4 ns (5): m.consumer_dynamic: ev_5 ev_8 ev_9 ev_12 + 4 ns (5): m.consumer_static: ev_5 ev_8 ev_9 ev_12 + 4 ns (5): m.driver: ev_14.notify(1 ns) + 4 ns (5): m.driver: ev_2.notify(1 ns) + 4 ns (5): m.driver: ev_5.notify(1 ns) + 4 ns (5): m.driver: ev_0.notify(1 ns) + 5 ns (6): m.consumer_dynamic: ev_0 ev_2 ev_5 ev_14 + 5 ns (6): m.consumer_static: ev_0 ev_2 ev_5 ev_14 + 5 ns (6): m.driver: ev_11.notify(1 ns) + 5 ns (6): m.driver: ev_14.notify(1 ns) + 5 ns (6): m.driver: ev_12.notify(1 ns) + 5 ns (6): m.driver: ev_5.notify(1 ns) + 6 ns (7): m.consumer_static: ev_5 ev_11 ev_12 ev_14 + 6 ns (7): m.consumer_dynamic: ev_5 ev_11 ev_12 ev_14 + 6 ns (7): m.driver: ev_0.notify(1 ns) + 6 ns (7): m.driver: ev_4.notify(1 ns) + 6 ns (7): m.driver: ev_8.notify(1 ns) + 6 ns (7): m.driver: ev_12.notify(1 ns) + 7 ns (8): m.consumer_dynamic: ev_0 ev_4 ev_8 ev_12 + 7 ns (8): m.driver: ev_12.notify(1 ns) + 7 ns (8): m.driver: ev_6.notify(1 ns) + 7 ns (8): m.driver: ev_11.notify(1 ns) + 7 ns (8): m.driver: ev_13.notify(1 ns) + 8 ns (9): m.consumer_dynamic: ev_6 ev_11 ev_12 ev_13 + 8 ns (9): m.consumer_static: ev_6 ev_11 ev_12 ev_13 + +Info: /OSCI/SystemC: Simulation stopped by user. -- cgit v1.2.3