misc: Reorder sources in util/tlm and rewrite build scripts
* Use one SConstruct to build everything instead of one SConstruct for each example. * Introduce SConscripts for sub-directories. * Build in 'build' instead of the source tree. * Build and link to SystemC from the ext/systemc directory. This ensures that SystemC does not need to be installed on the host and avoids possible issues caused by an incompatible SystemC build. * Update the README and add some minor fixes Change-Id: I641ed94f542626864fb7af499ad1be8fd4ad929f Reviewed-on: https://gem5-review.googlesource.com/3480 Reviewed-by: Matthias Jung <jungma@eit.uni-kl.de> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Jason Lowe-Power <jason@lowepower.com>
This commit is contained in:
@@ -49,29 +49,32 @@ once in order to run a gem5 simulation from within an SystemC environment.
|
||||
II. Files
|
||||
=========
|
||||
|
||||
sc_slave_port.{cc,hh} -- Implements SCSlavePort
|
||||
sc_master_port.{cc,hh} -- Implements SCMasterPort
|
||||
sc_mm.{cc,hh} -- Implementation of a TLM memory manager
|
||||
sc_ext.{cc,hh} -- TLM extension that carries a gem5 packet
|
||||
sc_peq.{cc,hh} -- TLM PEQ for scheduling gem5 events
|
||||
sim_control.{cc,hh} -- Implements Gem5SimControl
|
||||
slave_transactor.{cc,hh} -- Implements Gem5SlaveTransactor
|
||||
master_transactor.{cc,hh} -- Implements Gem5MasterTransactor
|
||||
src/sc_slave_port.{cc,hh} -- Implements SCSlavePort
|
||||
src/sc_master_port.{cc,hh} -- Implements SCMasterPort
|
||||
src/sc_mm.{cc,hh} -- Implementation of a TLM memory manager
|
||||
src/sc_ext.{cc,hh} -- TLM extension that carries a gem5 packet
|
||||
src/sc_peq.{cc,hh} -- TLM PEQ for scheduling gem5 events
|
||||
src/sim_control.{cc,hh} -- Implements Gem5SimControl
|
||||
src/slave_transactor.{cc,hh} -- Implements Gem5SlaveTransactor
|
||||
src/master_transactor.{cc,hh} -- Implements Gem5MasterTransactor
|
||||
|
||||
example/common/cli_parser.{cc,hh} -- Simple cli argument parser
|
||||
example/common/report_hanlder.{cc,hh} -- Custom SystemC report handler
|
||||
examples/common/cli_parser.{cc,hh} -- Simple cli argument parser
|
||||
examples/common/report_hanlder.{cc,hh} -- Custom SystemC report handler
|
||||
|
||||
example/slave_port/main.cc -- demonstration of the slave port
|
||||
example/slave_port/sc_target.{cc,hh} -- an example TLM LT/AT memory module
|
||||
example/slave_port/tlm.py -- simple gem5 configuration
|
||||
example/slave_port/tlm_elastic.py -- gem5 configuration with an elastic
|
||||
trace replayer
|
||||
example/slave_port/tgen.cfg -- elastic traceplayer configuration
|
||||
examples/slave_port/main.cc -- demonstration of the slave port
|
||||
examples/slave_port/sc_target.{cc,hh} -- an example TLM LT/AT memory module
|
||||
|
||||
example/master_port/main.cc -- demonstration of the master port
|
||||
example/master_port/traffic_generator.{cc/hh}
|
||||
examples/master_port/main.cc -- demonstration of the master port
|
||||
examples/master_port/traffic_generator.{cc/hh}
|
||||
-- an example traffic generator module
|
||||
example/master_port/tlm.py -- simple gem5 configuration
|
||||
|
||||
conf/tlm_slave.py -- simple gem5 configuration connecting to a
|
||||
SytemC/TLM slave module
|
||||
conf/tlm_elastic_slave.py -- gem5 configuration with an elastic trace
|
||||
replayer
|
||||
conf/tlm_master.py -- simple gem5 configuration connecting to a
|
||||
SytemC/TLM master module
|
||||
conf/tgen.cfg -- trace generator configuration
|
||||
|
||||
Other Files will be used from utils/systemc example:
|
||||
|
||||
@@ -98,56 +101,36 @@ Note: For MAC / OSX this command should be used:
|
||||
> scons --with-cxx-config --without-python --without-tcmalloc \
|
||||
> build/ARM/libgem5_opt.dylib
|
||||
|
||||
Set a proper LD_LIBRARY_PATH e.g. for bash:
|
||||
> export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/path/to/gem5/build/ARM/"
|
||||
To build all sources of the SystemC binding and the examples simply run scons:
|
||||
|
||||
or for MAC / OSX:
|
||||
> export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/path/to/gem5/build/ARM/"
|
||||
|
||||
The build system finds your SystemC installation using pkg-config. Make sure
|
||||
that pkg-config is installed and your systemc.pc is within your
|
||||
PKG_CONFIG_PATH. You can add SystemC to the PKG_CONFIG_PATH using the following
|
||||
command:
|
||||
> export PKG_CONFIG_PATH="/path/to/systemc/lib-<arch>/pkgconfig/:$PKG_CONFIG_PATH"
|
||||
|
||||
To build one of the examples:
|
||||
|
||||
> cd examples/{master,slave}_port
|
||||
> scons
|
||||
> cd ../../
|
||||
|
||||
|
||||
IV. Simple Examples
|
||||
===================
|
||||
|
||||
> cd examples/{master,slave}_port
|
||||
|
||||
In order to run our example simulation, we first need to create a config.ini
|
||||
that represents the gem5 configuration. We do so by starting gem5 with the
|
||||
desired python configuration script.
|
||||
|
||||
> ../../../../build/ARM/gem5.opt ./tlm.py
|
||||
> ../../build/ARM/gem5.opt conf/tlm_{master,slave}.py
|
||||
|
||||
The message "fatal: Can't find port handler type 'tlm_{master,slave}'" is okay.
|
||||
The configuration will be stored in the m5out/ directory
|
||||
|
||||
The build step creates a binary gem5.opt.sc in the example directory. It can
|
||||
now be used to load in the generated configuration file from the previous
|
||||
normal gem5 run.
|
||||
The build step creates a binary 'gem5.sc' for each example in the
|
||||
build/examples/{master|slave}_port directories. It can now be used to load in
|
||||
the generated configuration file from the previous normal gem5 run.
|
||||
|
||||
Try:
|
||||
|
||||
> ./gem5.opt.sc m5out/config.ini -e 1000000
|
||||
> build/examples/{master,slave}_port/gem5.sc m5out/config.ini -e 1000000
|
||||
|
||||
It should run a simulation for 1us.
|
||||
|
||||
To see more information what happens inside the TLM modules use the -v flag:
|
||||
|
||||
> ./gem5.opt.sc m5out/config.ini -e 1000000 -v
|
||||
|
||||
To see more information about the port coupling use:
|
||||
|
||||
> ./gem5.opt.sc m5out/config.ini -e 1000000 -d ExternalPort
|
||||
> build/{master,slave}_port/gem5.sc m5out/config.ini -e 1000000 -v
|
||||
|
||||
|
||||
V. Full System Setup
|
||||
@@ -156,13 +139,11 @@ V. Full System Setup
|
||||
Apart from the simple examples, there is a full system example that uses
|
||||
the gem5-to-TLM bridge.
|
||||
|
||||
>cd examples/slave_port
|
||||
|
||||
Build gem5 as described in Section III. Then, make a config file for the
|
||||
C++-configured gem5 using normal gem5
|
||||
|
||||
> ../../../../build/ARM/gem5.opt ../../../../configs/example/fs.py \
|
||||
--tlm-memory=transactor --cpu-type=timing --num-cpu=1 \
|
||||
> ../../build/ARM/gem5.opt ../../configs/example/fs.py \
|
||||
--tlm-memory=transactor --cpu-type=TimingSimpleCPU --num-cpu=1 \
|
||||
--mem-type=SimpleMemory --mem-size=512MB --mem-channels=1 --caches \
|
||||
--l2cache --machine-type=VExpress_EMM \
|
||||
--dtb-filename=vexpress.aarch32.ll_20131205.0-gem5.1cpu.dtb \
|
||||
@@ -172,17 +153,17 @@ C++-configured gem5 using normal gem5
|
||||
The message "fatal: Can't find port handler type 'tlm_slave'" is okay.
|
||||
The configuration will be stored in the m5out/ directory
|
||||
|
||||
The binary 'gem5.opt.sc' can now be used to load in the generated config
|
||||
file from the previous normal gem5 run.
|
||||
The binary 'build/examples/slave_port/gem5.sc' can now be used to load in the
|
||||
generated config file from the previous normal gem5 run.
|
||||
|
||||
Try:
|
||||
|
||||
> ./gem5.opt.sc m5out/config.ini -o 2147483648
|
||||
> build/examples/slave_port/gem5.sc m5out/config.ini -o 2147483648
|
||||
|
||||
The parameter -o specifies the begining of the memory region (0x80000000).
|
||||
The system should boot now.
|
||||
|
||||
For convenience a run_gem5.sh file holds all those commands
|
||||
For convenience a run_gem5_fs.sh file holds all those commands
|
||||
|
||||
|
||||
VI. Elastic Trace Setup
|
||||
@@ -199,13 +180,13 @@ For more information on elastic traces please refer to:
|
||||
IEEE International Conference on Embedded Computer Systems Architectures
|
||||
Modeling and Simulation (SAMOS), July, 2016, Samos Island, Greece.
|
||||
|
||||
Similar IV. the simulation can be set up with this command:
|
||||
Similar to IV. the simulation can be set up with this command:
|
||||
|
||||
> ../../../../build/ARM/gem5.opt ./tlm_elastic.py
|
||||
> ../../build/ARM/gem5.opt ./conf/tlm_elastic_slave.py
|
||||
|
||||
Then:
|
||||
|
||||
> ./gem5.opt.sc m5out/config.ini
|
||||
> build/examples/slave_port/gem5.sc m5out/config.ini
|
||||
|
||||
|
||||
VII. Knwon issues
|
||||
@@ -214,4 +195,6 @@ VII. Knwon issues
|
||||
* For some toolchains, compiling libgem5 with tcmalloc leads to errors
|
||||
('tcmalloc Attempt to free invalid pointer xxx') when linking libgem5 into a
|
||||
SystemC application.
|
||||
* When SystemC was build with --enable-pthreads, SystemC applications linked
|
||||
* When SystemC is build with pthread support enabled, the binding of gem5 to
|
||||
SystemC breaks. When gem5 is linked to a SystemC application, gem5's usage
|
||||
of thread local storage results in a segfault.
|
||||
|
||||
101
util/tlm/SConstruct
Normal file
101
util/tlm/SConstruct
Normal file
@@ -0,0 +1,101 @@
|
||||
#!python
|
||||
|
||||
# Copyright (c) 2016, Dresden University of Technology (TU Dresden)
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# 3. Neither the name of the copyright holder nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
|
||||
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
# Authors: Christian Menard
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
gem5_arch = 'ARM'
|
||||
gem5_variant = 'opt'
|
||||
#gem5_variant = 'debug'
|
||||
|
||||
gem5_root = Dir('#../..').srcnode().abspath
|
||||
|
||||
env = Environment()
|
||||
|
||||
#Make the gem5 root available in SConscripts
|
||||
env['GEM5_ROOT'] = gem5_root
|
||||
|
||||
shlibsuffix = env['SHLIBSUFFIX']
|
||||
|
||||
# add include dirs
|
||||
env.Append(CPPPATH=[gem5_root + '/build/' + gem5_arch,
|
||||
gem5_root + '/util/systemc',
|
||||
gem5_root + '/ext/systemc/src',
|
||||
'#src',
|
||||
'#examples/common',
|
||||
])
|
||||
|
||||
env.Append(CXXFLAGS=['-std=c++11',
|
||||
'-DSC_INCLUDE_DYNAMIC_PROCESSES',
|
||||
'-DTRACING_ON',
|
||||
])
|
||||
|
||||
if gem5_variant == 'debug':
|
||||
env.Append(CXXFLAGS=['-g', '-DDEBUG'])
|
||||
|
||||
deps = [] # keep track of all dependencies required for building the binaries
|
||||
|
||||
deps += SConscript('src/SConscript', variant_dir='build/tlm', exports='env')
|
||||
|
||||
deps += SConscript('examples/common/SConscript',
|
||||
variant_dir='build/examples/common',
|
||||
exports=['env'])
|
||||
|
||||
# the SystemC SConscript makes certain assumptions, we need to fulfill these
|
||||
# assumptions before calling the SConscript.
|
||||
main = env
|
||||
sys.path.append(gem5_root + '/src/python')
|
||||
AddOption('--no-colors', dest='use_colors', action='store_false',
|
||||
help="Don't add color to abbreviated scons output")
|
||||
|
||||
SConscript(gem5_root + '/ext/systemc/SConscript',
|
||||
variant_dir='build/systemc',
|
||||
exports='main')
|
||||
|
||||
# By adding libraries as dependencies instead of using LIBS, we avoid that
|
||||
# the user needs to set the LD_LIBRARY_PATH
|
||||
deps.append(File('build/systemc/libsystemc' + shlibsuffix))
|
||||
deps.append(File(os.path.join(gem5_root, 'build', gem5_arch,
|
||||
'libgem5_' + gem5_variant + shlibsuffix)))
|
||||
|
||||
ex_master = SConscript('examples/master_port/SConscript',
|
||||
variant_dir='build/examples/master_port',
|
||||
exports=['env', 'deps'])
|
||||
|
||||
ex_slave = SConscript('examples/slave_port/SConscript',
|
||||
variant_dir='build/examples/slave_port',
|
||||
exports=['env', 'deps'])
|
||||
|
||||
Default(ex_master + ex_slave)
|
||||
@@ -36,7 +36,7 @@ import optparse
|
||||
from m5.objects import *
|
||||
from m5.util import addToPath, fatal
|
||||
|
||||
addToPath('../../../../configs/common/')
|
||||
addToPath('../../../configs/common/')
|
||||
|
||||
from Caches import *
|
||||
|
||||
@@ -106,8 +106,8 @@ system.physmem = SimpleMemory() # This must be instantiated, even if not needed
|
||||
# Create a external TLM port:
|
||||
system.tlm = ExternalSlave()
|
||||
system.tlm.addr_ranges = [AddrRange('512MB')]
|
||||
system.tlm.port_type = "tlm"
|
||||
system.tlm.port_data = "memory"
|
||||
system.tlm.port_type = "tlm_slave"
|
||||
system.tlm.port_data = "transactor"
|
||||
|
||||
# Connect everything:
|
||||
system.membus = SystemXBar()
|
||||
@@ -56,7 +56,7 @@ from m5.objects import *
|
||||
system = System()
|
||||
system.membus = IOXBar(width = 16)
|
||||
system.physmem = SimpleMemory() # This must be instanciated, even if not needed
|
||||
system.cpu = TrafficGen(config_file = "tgen.cfg")
|
||||
system.cpu = TrafficGen(config_file = "conf/tgen.cfg")
|
||||
system.clk_domain = SrcClockDomain(clock = '1.5GHz',
|
||||
voltage_domain = VoltageDomain(voltage = '1V'))
|
||||
|
||||
43
util/tlm/examples/common/SConscript
Normal file
43
util/tlm/examples/common/SConscript
Normal file
@@ -0,0 +1,43 @@
|
||||
#!python
|
||||
|
||||
# Copyright (c) 2016, Dresden University of Technology (TU Dresden)
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# 3. Neither the name of the copyright holder nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
|
||||
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
# Authors: Christian Menard
|
||||
|
||||
Import('env')
|
||||
|
||||
env = env.Clone()
|
||||
|
||||
objs = []
|
||||
objs += env.Object('cli_parser.cc')
|
||||
objs += env.Object('report_handler.cc')
|
||||
|
||||
Return('objs')
|
||||
@@ -32,47 +32,13 @@
|
||||
#
|
||||
# Authors: Christian Menard
|
||||
|
||||
import os
|
||||
Import('env')
|
||||
Import('deps')
|
||||
|
||||
gem5_arch = 'ARM'
|
||||
gem5_variant = 'opt'
|
||||
#gem5_variant = 'debug'
|
||||
env = env.Clone()
|
||||
|
||||
gem5_root = '#../../../..'
|
||||
src = [File('main.cc'), File('traffic_generator.cc')]
|
||||
|
||||
target = 'gem5.' + gem5_variant + '.sc'
|
||||
bin = env.Program('gem5.sc', src + deps)
|
||||
|
||||
env = Environment()
|
||||
|
||||
# Import PKG_CONFIG_PATH from the external environment
|
||||
if os.environ.has_key('PKG_CONFIG_PATH'):
|
||||
env['ENV']['PKG_CONFIG_PATH'] = os.environ['PKG_CONFIG_PATH']
|
||||
|
||||
# search for SystemC
|
||||
env.ParseConfig('pkg-config --cflags --libs systemc')
|
||||
|
||||
# add include dirs
|
||||
env.Append(CPPPATH=[gem5_root + '/build/' + gem5_arch,
|
||||
gem5_root + '/util/systemc',
|
||||
gem5_root + '/util/tlm',
|
||||
'../common'])
|
||||
|
||||
env.Append(LIBS=['gem5_' + gem5_variant])
|
||||
env.Append(LIBPATH=[gem5_root + '/build/' + gem5_arch])
|
||||
|
||||
env.Append(CXXFLAGS=['-std=c++11',
|
||||
'-DSC_INCLUDE_DYNAMIC_PROCESSES',
|
||||
'-DTRACING_ON'])
|
||||
|
||||
if gem5_variant == 'debug':
|
||||
env.Append(CXXFLAGS=['-g', '-DDEBUG'])
|
||||
|
||||
src_systemc = [gem5_root + '/util/systemc/sc_gem5_control.cc',
|
||||
gem5_root + '/util/systemc/sc_logger.cc',
|
||||
gem5_root + '/util/systemc/sc_module.cc',
|
||||
gem5_root + '/util/systemc/stats.cc']
|
||||
|
||||
src_tlm = Glob(gem5_root + '/util/tlm/*.cc')
|
||||
src_main = Glob('*.cc') + Glob('../common/*.cc')
|
||||
|
||||
main = env.Program(target, src_systemc + src_tlm + src_main)
|
||||
Return('bin')
|
||||
44
util/tlm/examples/slave_port/SConscript
Normal file
44
util/tlm/examples/slave_port/SConscript
Normal file
@@ -0,0 +1,44 @@
|
||||
#!python
|
||||
|
||||
# Copyright (c) 2016, Dresden University of Technology (TU Dresden)
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# 3. Neither the name of the copyright holder nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
|
||||
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
# Authors: Christian Menard
|
||||
|
||||
Import('env')
|
||||
Import('deps')
|
||||
|
||||
env = env.Clone()
|
||||
|
||||
src = [File('main.cc'), File('sc_target.cc')]
|
||||
|
||||
bin = env.Program('gem5.sc', src + deps)
|
||||
|
||||
Return('bin')
|
||||
6
util/tlm/examples/slave_port/run_gem5.sh → util/tlm/run_gem5_fs.sh
Normal file → Executable file
6
util/tlm/examples/slave_port/run_gem5.sh → util/tlm/run_gem5_fs.sh
Normal file → Executable file
@@ -36,9 +36,9 @@ RCol='\e[0m'; # Text Reset
|
||||
BGre='\e[1;31m';
|
||||
echo -e "\n${BGre}Create gem5 Configuration${RCol}\n"
|
||||
|
||||
../../../../build/ARM/gem5.opt ../../../../configs/example/fs.py \
|
||||
../../build/ARM/gem5.opt ../../configs/example/fs.py \
|
||||
--tlm-memory=transactor \
|
||||
--cpu-type=timing \
|
||||
--cpu-type=TimingSimpleCPU \
|
||||
--num-cpu=1 \
|
||||
--mem-type=SimpleMemory \
|
||||
--mem-size=512MB \
|
||||
@@ -50,4 +50,4 @@ echo -e "\n${BGre}Create gem5 Configuration${RCol}\n"
|
||||
|
||||
echo -e "\n${BGre}Run gem5 ${RCol}\n"
|
||||
|
||||
time ./gem5.opt.sc m5out/config.ini -o 2147483648
|
||||
time ./build/examples/slave_port/gem5.sc m5out/config.ini -o 2147483648
|
||||
@@ -32,47 +32,27 @@
|
||||
#
|
||||
# Authors: Christian Menard
|
||||
|
||||
import os
|
||||
Import('env')
|
||||
|
||||
gem5_arch = 'ARM'
|
||||
gem5_variant = 'opt'
|
||||
#gem5_variant = 'debug'
|
||||
env = env.Clone()
|
||||
|
||||
gem5_root = '#../../../..'
|
||||
gem5_root = env['GEM5_ROOT']
|
||||
|
||||
target = 'gem5.' + gem5_variant + '.sc'
|
||||
systemc_src = []
|
||||
systemc_src += Install('.', gem5_root + '/util/systemc/sc_gem5_control.cc'),
|
||||
systemc_src += Install('.', gem5_root + '/util/systemc/sc_logger.cc'),
|
||||
systemc_src += Install('.', gem5_root + '/util/systemc/sc_module.cc'),
|
||||
systemc_src += Install('.', gem5_root + '/util/systemc/stats.cc'),
|
||||
|
||||
env = Environment()
|
||||
tlm_src = []
|
||||
tlm_src += [File('master_transactor.cc')]
|
||||
tlm_src += [File('sc_ext.cc')]
|
||||
tlm_src += [File('sc_master_port.cc')]
|
||||
tlm_src += [File('sc_mm.cc')]
|
||||
tlm_src += [File('sc_slave_port.cc')]
|
||||
tlm_src += [File('sim_control.cc')]
|
||||
tlm_src += [File('slave_transactor.cc')]
|
||||
|
||||
# Import PKG_CONFIG_PATH from the external environment
|
||||
if os.environ.has_key('PKG_CONFIG_PATH'):
|
||||
env['ENV']['PKG_CONFIG_PATH'] = os.environ['PKG_CONFIG_PATH']
|
||||
tlm = env.Library('gem5_tlm', tlm_src + systemc_src)
|
||||
|
||||
# search for SystemC
|
||||
env.ParseConfig('pkg-config --cflags --libs systemc')
|
||||
|
||||
# add include dirs
|
||||
env.Append(CPPPATH=[gem5_root + '/build/' + gem5_arch,
|
||||
gem5_root + '/util/systemc',
|
||||
gem5_root + '/util/tlm',
|
||||
'../common'])
|
||||
|
||||
env.Append(LIBS=['gem5_' + gem5_variant])
|
||||
env.Append(LIBPATH=[gem5_root + '/build/' + gem5_arch])
|
||||
|
||||
env.Append(CXXFLAGS=['-std=c++11',
|
||||
'-DSC_INCLUDE_DYNAMIC_PROCESSES',
|
||||
'-DTRACING_ON'])
|
||||
|
||||
if gem5_variant == 'debug':
|
||||
env.Append(CXXFLAGS=['-g', '-DDEBUG'])
|
||||
|
||||
src_systemc = [gem5_root + '/util/systemc/sc_gem5_control.cc',
|
||||
gem5_root + '/util/systemc/sc_logger.cc',
|
||||
gem5_root + '/util/systemc/sc_module.cc',
|
||||
gem5_root + '/util/systemc/stats.cc']
|
||||
|
||||
src_tlm = Glob(gem5_root + '/util/tlm/*.cc')
|
||||
src_main = Glob('*.cc') + Glob('../common/*.cc')
|
||||
|
||||
main = env.Program(target, src_systemc + src_tlm + src_main)
|
||||
Return('tlm')
|
||||
@@ -40,9 +40,9 @@
|
||||
#include <systemc>
|
||||
#include <tlm>
|
||||
|
||||
#include <mem/external_master.hh>
|
||||
#include <sc_peq.hh>
|
||||
#include <sim_control.hh>
|
||||
#include "mem/external_master.hh"
|
||||
#include "sc_peq.hh"
|
||||
#include "sim_control.hh"
|
||||
|
||||
namespace Gem5SystemC
|
||||
{
|
||||
Reference in New Issue
Block a user