#
13495:75d257a1795e |
|
04-Dec-2018 |
Gabe Black <gabeblack@google.com> |
systemc: Ensure resets and edges are notified when signaling a change.
Boolean sc_buffers (either pure bool or sc_dt::sc_logic) should signal positive and negative edges and resets even when their value doesn't change, unlike sc_signals. The spec doesn't actually say that and just mentions the value changed event, but it may have been implied that the other types of events also happen, they just made special mention of the value change event.
This change moves some code around a bit so that when _signalChange() is called, if the underlying type is a boolean signal, it will automatically notify the appropriate edge event and signal any reset. Putting the functionality in _signalChange instead of delegating it to the sc_buffer lets us have a single template for sc_buffer and makes the base class template specialization handle whether the edge events exist, and if so which should be notified.
Change-Id: Ic4ca86afc3fde6a9df5c15a0a7386e24ac89a9e2 Reviewed-on: https://gem5-review.googlesource.com/c/14916 Reviewed-by: Matthias Jung <jungma@eit.uni-kl.de> Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
|
#
13303:045f002c325c |
|
06-Oct-2018 |
Gabe Black <gabeblack@google.com> |
systemc: Distinguish internal events from normal sc_events.
The internal events aren't supposed to show up in the namespace or as children of objects.
Change-Id: Id04b9bfe2e1f8f216390dd989797558eaf33d715 Reviewed-on: https://gem5-review.googlesource.com/c/13309 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
|
#
13288:f1c04129f709 |
|
04-Oct-2018 |
Gabe Black <gabeblack@google.com> |
systemc: Change how signal based resets work.
The previous implementation used the value changed event to track when signals changed value, but there were a couple problems with this approach. First, this piggybacked on the sensitivity mechanism in some ways, but diverged in others. The sensitivity didn't notify a process when it was satisfied like other sensitivity types would, and it also ignored whether the process was disabled.
Second, the value_changed_event is notified by a signal instance as a delta notification, but reset signals are supposed to act immediately. That means they should happen before all delta notifications, or in other words all delta notifications should see the reset status of a given process. That's particularly important in the case of wait(int n) where setting the reset clears the reset count, and the count is checked when determining whether or not to wake up a process when its sensitivity is satisfied, potentially by a delta notification.
Third, by removing the middle man and not trying to repurpose the sensitivity mechanism, the code gets simpler and easier to understand.
Change-Id: I0d05d11437291d368b060f6a45a207813615f113 Reviewed-on: https://gem5-review.googlesource.com/c/13294 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
|
#
13277:b479038de4d9 |
|
02-Oct-2018 |
Gabe Black <gabeblack@google.com> |
systemc: Implement writer policies.
This includes the nonstandard SC_NO_WRITE_CHECK #define which the Accellera tests use and depend on.
Change-Id: I106c4c16160325725a00d5c337047251817dca32 Reviewed-on: https://gem5-review.googlesource.com/c/13203 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
|
#
13274:79ce1482d383 |
|
01-Oct-2018 |
Gabe Black <gabeblack@google.com> |
systemc: Implement register_port in all the predefined channels.
Something the Accellera implementation does which would be good to do in the gem5 implementation is to create a base class for sc_signal which isn't templated, and which holds the common/non-type specific versions of the various sc_signal methods. This will reduce code redundancy and binary size, and also let us hide more code in .cc files so that it's less likely we'd need to recompile model code to fix a bug.
Also, since this all uses of sc_channel_warn_unimple have now been eliminated, remove that function.
Change-Id: Ia574647c034e7136093c2047b69de725ac34f52f Reviewed-on: https://gem5-review.googlesource.com/c/13200 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
|
#
13245:c666c5d4996b |
|
20-Sep-2018 |
Gabe Black <gabeblack@google.com> |
systemc: Implement general and VCD trace support.
This doesn't include WIF trace support, but does make allowances for adding it in the future.
Change-Id: Ifb62f40a7d8a13e94463930a44ac4b1cf41e3009 Reviewed-on: https://gem5-review.googlesource.com/c/12826 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
|
#
13205:e965ce37608e |
|
12-Sep-2018 |
Gabe Black <gabeblack@google.com> |
systemc: Implement sc_buffer.
This required a small change to sc_signal so that the value change event and the change stamp for it were accessible.
Change-Id: Ife0545d84f3b25e98da079786c30ffa51025cce7 Reviewed-on: https://gem5-review.googlesource.com/c/12804 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
|
#
13142:c00af880d3e5 |
|
30-Aug-2018 |
Gabe Black <gabeblack@google.com> |
systemc: Implement the << operator for sc_signal.
Change-Id: I16955e58d96d49ec3bba90b73f5a368a245da438 Reviewed-on: https://gem5-review.googlesource.com/c/12454 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
|
#
13141:f29234fb9ef4 |
|
30-Aug-2018 |
Gabe Black <gabeblack@google.com> |
systemc: Implement the "event()" style sc_signal methods.
Change-Id: Ia829aef2292ff2d50e14433d5c36a2e15a9de54b Reviewed-on: https://gem5-review.googlesource.com/c/12453 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
|
#
13044:df7783886021 |
|
08-Aug-2018 |
Gabe Black <gabeblack@google.com> |
systemc: Partially implement the sc_signal class template.
There are a few details of this class that still need to be fleshed out, but this implements most of it.
Change-Id: I6f8b546aacd8537d4341dc91e59b95864ae0f7c4 Reviewed-on: https://gem5-review.googlesource.com/12075 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
|
#
12945:365bae01b46d |
|
18-Jun-2018 |
Gabe Black <gabeblack@google.com> |
systemc: Add m_cur_val and m_new_val to sc_signal.
These members are referred to in one of the tests.
Change-Id: Iab0110a0e3acf627986664069622704f17b703a1 Reviewed-on: https://gem5-review.googlesource.com/11355 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
|
#
12933:9fb537a605f6 |
|
16-Jun-2018 |
Gabe Black <gabeblack@google.com> |
systemc: Add the nonstandard sc_trace_params and sc_trace_params_vec.
These two types are supposedly only for internal use in the Accellera implementation based on a big warning in all caps, but they still appear in the tests and examples in that version of systemc.
Change-Id: Icfb3ffdf1e78988def5dac145172bf28f93d7d38 Reviewed-on: https://gem5-review.googlesource.com/11283 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
|
#
12912:8a06e701c31a |
|
15-Jun-2018 |
Gabe Black <gabeblack@google.com> |
systemc: Add a nonstandard sc_signal constructor.
This constructor takes an initial value to set the sc_signal to, and is used in the tests.
Change-Id: I197218846d9a79f9237238c78b1bbd8a7f55443f Reviewed-on: https://gem5-review.googlesource.com/11266 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
|
#
12841:22aa7ba47bf9 |
|
09-May-2018 |
Gabe Black <gabeblack@google.com> |
systemc: Stub out the predefined channels.
Change-Id: Ie030aad26875bd49e54981ec1e9076b7b5af6630 Reviewed-on: https://gem5-review.googlesource.com/10839 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Gabe Black <gabeblack@google.com>
|