Commit Graph

123 Commits

Author SHA1 Message Date
Gabe Black
7235d3b521 systemc: Add the Accellera implementation for the data type classes.
These files have been cleaned up style wise, and some macros have been
resolved like they were for the header files.

Change-Id: I447e5311961036847e7da0c5a86c0da25a633010
Reviewed-on: https://gem5-review.googlesource.com/10844
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-08-08 10:09:06 +00:00
Gabe Black
5ee040a534 Systemc: Port over all of the systemc "datatype" headers.
These are the headers originally written by Accellera with a few
modifications. Most significantly, I went through and mostly (but not
entirely) manually editted them to conform to gem5 style and to be
more self consistent. Second, I resolved some macros which optionally
select features. I removed support for deprecated functions, and
otherwise enabled everything.

The actual implementation behind these headers will also be ported
over, but in a subsequent change.

Change-Id: I203d3f6c8a3af9120b946001d01defbb0643a6b6
Reviewed-on: https://gem5-review.googlesource.com/10843
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-08-08 10:08:12 +00:00
Gabe Black
7adb1b250b systemc: Stub out all the standard utilility classes and functions.
Change-Id: I9e9724edb6281e0b0a6bae5546b0ede77d295c12
Reviewed-on: https://gem5-review.googlesource.com/10841
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-08-08 10:07:26 +00:00
Gabe Black
cd3e7230be systemc: Flesh out the sc_port implementation slightly.
This makes other files compile because it changes the relationship
between constructors,etc., slightly.

Change-Id: I8d9a6e12ec640a82da166fe05c4f5e91f3f608de
Reviewed-on: https://gem5-review.googlesource.com/10840
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-24 21:47:15 +00:00
Gabe Black
5872389715 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>
2018-07-24 21:45:55 +00:00
Gabe Black
34467a211b systemc: Add systemc and systemc.h header files.
These are the header files as defined by the standard, although some
predefined channel types and most of the sc_dt namespace have yet to be
stubbed out, and so those portions are excluded.

Change-Id: Ic70f887c06e591974a4265c820eb0fdfa740d19a
Reviewed-on: https://gem5-review.googlesource.com/10838
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-24 21:44:44 +00:00
Gabe Black
b2702374dc systemc: Stub out the sc_spawn related classes and functions.
Change-Id: I79f695cca97aaae9af324eb18cab073f42f0a193
Reviewed-on: https://gem5-review.googlesource.com/10837
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-24 21:44:10 +00:00
Gabe Black
e9610aa9f3 systemc: Stub out the sc_process_handle class.
Change-Id: I2250ccb369e0a5f2b9172d35662a9ce5e41ab1c1
Reviewed-on: https://gem5-review.googlesource.com/10836
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-24 21:42:26 +00:00
Gabe Black
a60868f5d5 systemc: Seperate the "external" header interface.
Most (but not all) of the SystemC headers are part of the "external"
interface that an existing, standard compliant module would include
through <systemc.h> or <systemc>. Since those follow slightly different
rules (relative includes, no gem5 includes), this change separates them
out so that they're easier to identify.

Also, this change moves the other files into a "core" subdirectory,
with the intention to add a "dt", aka data type, directory some time in
the future when those standard defined types are implemented.

Change-Id: Ida63f9cc0bc0431024d4dd691cc5b22b944a99a8
Reviewed-on: https://gem5-review.googlesource.com/10835
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-24 21:38:22 +00:00
Gabe Black
82d17ee5df systemc: Stub out the sc_module class and related functions.
Change-Id: I2c20717fe1f750bf7ae84de79726b1503ec6e1cd
Reviewed-on: https://gem5-review.googlesource.com/10834
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-24 21:35:57 +00:00
Gabe Black
527f23c7dd systemc: Add a stubbed out implementation of the sc_sensitive class.
This sc_sensitive class is mostly implementation defined, but has a
few standards defined methods.

Change-Id: I7157f6bfaaef38b5804b19a1de9f3f0aff08b697
Reviewed-on: https://gem5-review.googlesource.com/10833
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-24 20:42:02 +00:00
Gabe Black
9cc75bd8d7 systemc: Add a stub implementation for sc_attr related classes.
Change-Id: I59ba11f71b5412643ea7026df91587fafa0c6fda
Reviewed-on: https://gem5-review.googlesource.com/10832
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-24 20:41:17 +00:00
Gabe Black
385f799fe2 systemc: Add a stubbed out sc_event_finder class.
The standard defines this class very loosely, and so there isn't much
in the stub definition.

Change-Id: I2f8d07927a4eb087235e345a09d5a4d4891413b5
Reviewed-on: https://gem5-review.googlesource.com/10831
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-23 22:21:09 +00:00
Gabe Black
9ea0962532 systemc: Implement a stub version of the sc_prim class.
Change-Id: Iad32f6e385e62dc10491783c1e5cdd5d9bfcc3e6
Reviewed-on: https://gem5-review.googlesource.com/10830
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-23 22:20:20 +00:00
Gabe Black
29cee9208d systemc: Add stubbed out versions of sc_port and sc_export.
Change-Id: I04edb5da995212f9179eeb7a97486031eea71aff
Reviewed-on: https://gem5-review.googlesource.com/10829
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-23 22:19:18 +00:00
Gabe Black
021b86d116 systemc: Add stubbed out versions of sc_event and related classes.
Change-Id: Id45c80cbb8774d8469d4df6ce7915161df977de0
Reviewed-on: https://gem5-review.googlesource.com/10828
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-23 22:18:22 +00:00
Gabe Black
0ac709b5b8 systemc: Add stubbed out versions of the sc_time functions.
Change-Id: Ie7e3eac0382dc2ed861eaa9ea53ab11069812db8
Reviewed-on: https://gem5-review.googlesource.com/10827
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-23 22:17:08 +00:00
Gabe Black
973961df9b systemc: Add the sc_nbdefs.hh header from Accellera.
This header defines the uint64 type alias needed for the sc_time class.

Change-Id: I7793dbfb98001796c8c8fe24f69fe7868249ff85
Reviewed-on: https://gem5-review.googlesource.com/10826
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-23 22:16:22 +00:00
Gabe Black
b3cab9d881 systemc: Add a stub version of the sc_interface class.
Change-Id: Iad1da472e13b0e16ad4de03f456ca0a001e69b51
Reviewed-on: https://gem5-review.googlesource.com/10825
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-23 22:15:37 +00:00
Gabe Black
821b175834 systemc: Hook up sc_main.
sc_main is exported as a python method on the SystemC_Kernel class and
takes a series of string arguments. The internal c++ implementation
converts those arguments into the standard argc and argv and uses them
to call the standard SystemC version of that function.

A weak SystemC version of sc_main is provided so that systemc will
compile with or without a simulation provided version of that
function. The weak version just complains and dies.

Change-Id: Iad735536c37c8bc85d06cf24779f607ae4309b8b
Reviewed-on: https://gem5-review.googlesource.com/10824
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-23 22:14:00 +00:00
Gabe Black
7014f69487 systemc: Partially implement the sc_module_name class.
This class is mostly implemented as defined by the spec, except that
it doesn't maintain the module name stack (which doesn't yet exist).

Change-Id: I05fdc4aa40fb0497b0165824baee87ebf01a7821
Reviewed-on: https://gem5-review.googlesource.com/10823
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-23 22:09:45 +00:00
Gabe Black
889fdb90d9 systemc: Add a stub kernel SimObject.
The guts of this class will be added in later changes.

Change-Id: I3582c40f88f7d9ba6028a6f0a8ee5c32924a65bf
Reviewed-on: https://gem5-review.googlesource.com/10822
Maintainer: Gabe Black <gabeblack@google.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
2018-07-16 21:54:10 +00:00
Gabe Black
2c974a9ae0 systemc: Add a stubbed out sc_object class.
Also add a SConsopt variable USE_SYSTEMC to hide systemc support until
it's usable.

Change-Id: Ibb37483432b147ee690a36bb5c8dd74f1c4c7ae4
Reviewed-on: https://gem5-review.googlesource.com/10821
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>
2018-07-16 21:53:05 +00:00