Discussion:
SystemC and GEM5 SE Mode
(too old to reply)
Qureshi Yasir Mahmood
2017-06-07 16:22:33 UTC
Permalink
Hello All,

I am trying to setup a GEM5-SystemC co-simulation with gem5 running in SE mode. I have followed the tutorial in /util/tlm/README file and I can run the example provided. But when I try to run GEM5 in SE with TLM enabled, I get the following error,

First to build the config file, I run

../../build/ARM/gem5.opt ../../configs/example/se.py --tlm-memory=transactor --mem-type=SimpleMemory --mem-size=512MB --mem-channels=1 -c ../../../helloworld/hevc

And then to run

bash-4.2$ build/examples/slave_port/gem5.sc m5out/config.ini

SystemC 2.3.1-Accellera --- May 31 2017 13:14:37
Copyright (c) 1996-2014 by all Contributors,
ALL RIGHTS RESERVED
============================================================
EventQueue Dump (cycle 0)
------------------------------------------------------------
<No Events>
============================================================
0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
0 s (=) : sc_main Start of Simulation
warn: ClockedObject: More than one power state change request encountered within the same simulation tick
fatal: Out of memory, please increase size of physical memory.
Memory Usage: 597116 Kbytes


Can anyone please let me know, if I need to have a separate physical memory for this and hence modify the se.py file or just control it through the configuration options ?

Regards
Yasir
Matthias Jung
2017-06-07 21:50:18 UTC
Permalink
Hi Yasir,

I just had a short look, indeed there is an issue.
Using util/cxx_config with se.py or fs.py with util/tlm works fine.
We will have a deeper look into it.

Regards
Matthias
Post by Qureshi Yasir Mahmood
Hello All,
I am trying to setup a GEM5-SystemC co-simulation with gem5 running in SE mode. I have followed the tutorial in /util/tlm/README file and I can run the example provided. But when I try to run GEM5 in SE with TLM enabled, I get the following error,
First to build the config file, I run
../../build/ARM/gem5.opt ../../configs/example/se.py --tlm-memory=transactor --mem-type=SimpleMemory --mem-size=512MB --mem-channels=1 -c ../../../helloworld/hevc
And then to run
bash-4.2$ build/examples/slave_port/gem5.sc m5out/config.ini
SystemC 2.3.1-Accellera --- May 31 2017 13:14:37
Copyright (c) 1996-2014 by all Contributors,
ALL RIGHTS RESERVED
============================================================
EventQueue Dump (cycle 0)
------------------------------------------------------------
<No Events>
============================================================
0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
0 s (=) : sc_main Start of Simulation
warn: ClockedObject: More than one power state change request encountered within the same simulation tick
fatal: Out of memory, please increase size of physical memory.
Memory Usage: 597116 Kbytes
Can anyone please let me know, if I need to have a separate physical memory for this and hence modify the se.py file or just control it through the configuration options ?
Regards
Yasir
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
Qureshi Yasir Mahmood
2017-06-08 12:43:56 UTC
Permalink
Hi Matthias,

Thank you for the reply. When you say " Using util/cxx_config with se.py or fs.py with util/tlm works fine", do you mean I should compile the build/examples/slave_port/gem5.sc using cxx_config ?

Regards
Yasir


-----Original Message-----
From: gem5-users [mailto:gem5-users-***@gem5.org] On Behalf Of Matthias Jung
Sent: 07 June 2017 23:50
To: gem5 users mailing list <gem5-***@gem5.org>
Subject: Re: [gem5-users] SystemC and GEM5 SE Mode

Hi Yasir,

I just had a short look, indeed there is an issue.
Using util/cxx_config with se.py or fs.py with util/tlm works fine.
We will have a deeper look into it.

Regards
Matthias
Post by Qureshi Yasir Mahmood
Hello All,
I am trying to setup a GEM5-SystemC co-simulation with gem5 running in SE mode. I have followed the tutorial in /util/tlm/README file and I can run the example provided. But when I try to run GEM5 in SE with TLM enabled, I get the following error,
First to build the config file, I run
../../build/ARM/gem5.opt ../../configs/example/se.py --tlm-memory=transactor --mem-type=SimpleMemory --mem-size=512MB --mem-channels=1 -c ../../../helloworld/hevc
And then to run
bash-4.2$ build/examples/slave_port/gem5.sc m5out/config.ini
SystemC 2.3.1-Accellera --- May 31 2017 13:14:37
Copyright (c) 1996-2014 by all Contributors,
ALL RIGHTS RESERVED
============================================================
EventQueue Dump (cycle 0)
------------------------------------------------------------
<No Events>
============================================================
0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
0 s (=) : sc_main Start of Simulation
warn: ClockedObject: More than one power state change request encountered within the same simulation tick
fatal: Out of memory, please increase size of physical memory.
Memory Usage: 597116 Kbytes
Can anyone please let me know, if I need to have a separate physical memory for this and hence modify the se.py file or just control it through the configuration options ?
Regards
Yasir
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
gem5-***@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
Matthias Jung
2017-06-08 22:20:37 UTC
Permalink
Hi Yasir,

I just wanted to say that se.py works without problems in the cxx config.
And I confirmed that there is an issue with the TLM setup and se.py.

Regards
Matthias
Post by Qureshi Yasir Mahmood
Hi Matthias,
Thank you for the reply. When you say " Using util/cxx_config with se.py or fs.py with util/tlm works fine", do you mean I should compile the build/examples/slave_port/gem5.sc using cxx_config ?
Regards
Yasir
-----Original Message-----
Sent: 07 June 2017 23:50
Subject: Re: [gem5-users] SystemC and GEM5 SE Mode
Hi Yasir,
I just had a short look, indeed there is an issue.
Using util/cxx_config with se.py or fs.py with util/tlm works fine.
We will have a deeper look into it.
Regards
Matthias
Post by Qureshi Yasir Mahmood
Hello All,
I am trying to setup a GEM5-SystemC co-simulation with gem5 running in SE mode. I have followed the tutorial in /util/tlm/README file and I can run the example provided. But when I try to run GEM5 in SE with TLM enabled, I get the following error,
First to build the config file, I run
../../build/ARM/gem5.opt ../../configs/example/se.py --tlm-memory=transactor --mem-type=SimpleMemory --mem-size=512MB --mem-channels=1 -c ../../../helloworld/hevc
And then to run
bash-4.2$ build/examples/slave_port/gem5.sc m5out/config.ini
SystemC 2.3.1-Accellera --- May 31 2017 13:14:37
Copyright (c) 1996-2014 by all Contributors,
ALL RIGHTS RESERVED
============================================================
EventQueue Dump (cycle 0)
------------------------------------------------------------
<No Events>
============================================================
0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
0 s (=) : sc_main Start of Simulation
warn: ClockedObject: More than one power state change request encountered within the same simulation tick
fatal: Out of memory, please increase size of physical memory.
Memory Usage: 597116 Kbytes
Can anyone please let me know, if I need to have a separate physical memory for this and hence modify the se.py file or just control it through the configuration options ?
Regards
Yasir
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
Qureshi Yasir Mahmood
2017-06-12 12:44:49 UTC
Permalink
Hi Matthias,

I think I have a clue to the problem in the TLM and se.py simulation that when I configure se.py to have TLM memory using configuration parameter --tlm-memory, and also have some physical memory like SimpleMemory using --mem-type=SimpleMemory, it only creates the TLM memory port and does not instantiate the Simple memory. I manually edited the config.ini file to include both SimpleMemory and the tlm-memory and the helloworld program worked.

So I think there is a bug in se.py that when tlm-memory is used, it doesn't create any other memory.

Regards
Yasir

-----Original Message-----
From: gem5-users [mailto:gem5-users-***@gem5.org] On Behalf Of Matthias Jung
Sent: 09 June 2017 00:21
To: gem5 users mailing list <gem5-***@gem5.org>
Subject: Re: [gem5-users] SystemC and GEM5 SE Mode

Hi Yasir,

I just wanted to say that se.py works without problems in the cxx config.
And I confirmed that there is an issue with the TLM setup and se.py.

Regards
Matthias
Post by Qureshi Yasir Mahmood
Hi Matthias,
Thank you for the reply. When you say " Using util/cxx_config with se.py or fs.py with util/tlm works fine", do you mean I should compile the build/examples/slave_port/gem5.sc using cxx_config ?
Regards
Yasir
-----Original Message-----
Sent: 07 June 2017 23:50
Subject: Re: [gem5-users] SystemC and GEM5 SE Mode
Hi Yasir,
I just had a short look, indeed there is an issue.
Using util/cxx_config with se.py or fs.py with util/tlm works fine.
We will have a deeper look into it.
Regards
Matthias
Post by Qureshi Yasir Mahmood
Hello All,
I am trying to setup a GEM5-SystemC co-simulation with gem5 running in SE mode. I have followed the tutorial in /util/tlm/README file and I can run the example provided. But when I try to run GEM5 in SE with TLM enabled, I get the following error,
First to build the config file, I run
../../build/ARM/gem5.opt ../../configs/example/se.py --tlm-memory=transactor --mem-type=SimpleMemory --mem-size=512MB --mem-channels=1 -c ../../../helloworld/hevc
And then to run
bash-4.2$ build/examples/slave_port/gem5.sc m5out/config.ini
SystemC 2.3.1-Accellera --- May 31 2017 13:14:37
Copyright (c) 1996-2014 by all Contributors,
ALL RIGHTS RESERVED
============================================================
EventQueue Dump (cycle 0)
------------------------------------------------------------
<No Events>
============================================================
0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
0 s (=) : sc_main Start of Simulation
warn: ClockedObject: More than one power state change request encountered within the same simulation tick
fatal: Out of memory, please increase size of physical memory.
Memory Usage: 597116 Kbytes
Can anyone please let me know, if I need to have a separate physical memory for this and hence modify the se.py file or just control it through the configuration options ?
Regards
Yasir
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
gem5-***@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
Christian Menard
2017-06-20 12:36:41 UTC
Permalink
Hi Yasir,
Post by Qureshi Yasir Mahmood
So I think there is a bug in se.py that when tlm-memory is used, it doesn't
create any other memory.
This is not a bug, its a feature! However, there is a bug of another kind.

The --tlm-memory switch indicates that you want to use a TLM memory instead of
a gem5 memory. So, none is created. However, since there is no Memory object
in the gem5 system, the system thinks that there is not enough space. This is
the bug. There should be a Memory object that points to the external slave and
indicates to the system how much memory is available. I think the best way to
resolve this (and also a better way to configure this) would be to introduce a
new memory type 'TlmMemory' and a corresponding class that is instantiated
during configuration.

To your problem: if you want to use a gem5 memory and connect your accelerator
using the --tlm-memory switch, this is not possible. Instead you should build
your own configuration. se.py is just a template and intended to be modified for
more complex systems. You could simply copy se.py to your own config and hard
code the connection to your accelerator or maybe even add some cli arguments
to configure this connection.

Best regards,
Christian
Post by Qureshi Yasir Mahmood
Hi Matthias,
I think I have a clue to the problem in the TLM and se.py simulation that
when I configure se.py to have TLM memory using configuration parameter
--tlm-memory, and also have some physical memory like SimpleMemory using
--mem-type=SimpleMemory, it only creates the TLM memory port and does not
instantiate the Simple memory. I manually edited the config.ini file to
include both SimpleMemory and the tlm-memory and the helloworld program
worked.
So I think there is a bug in se.py that when tlm-memory is used, it doesn't
create any other memory.
Regards
Yasir
-----Original Message-----
Sent: 09 June 2017 00:21
Post by Qureshi Yasir Mahmood
Subject: Re: [gem5-users] SystemC and GEM5 SE Mode
Hi Yasir,
I just wanted to say that se.py works without problems in the cxx config.
And I confirmed that there is an issue with the TLM setup and se.py.
Regards
Matthias
Am 08.06.2017 um 14:43 schrieb Qureshi Yasir Mahmood
Hi Matthias,
Thank you for the reply. When you say " Using util/cxx_config with se.py
or fs.py with util/tlm works fine", do you mean I should compile the
build/examples/slave_port/gem5.sc using cxx_config ?
Regards
Yasir
-----Original Message-----
Sent: 07 June 2017 23:50
Post by Qureshi Yasir Mahmood
Subject: Re: [gem5-users] SystemC and GEM5 SE Mode
Hi Yasir,
I just had a short look, indeed there is an issue.
Using util/cxx_config with se.py or fs.py with util/tlm works fine.
We will have a deeper look into it.
Regards
Matthias
Am 07.06.2017 um 18:22 schrieb Qureshi Yasir Mahmood
Hello All,
I am trying to setup a GEM5-SystemC co-simulation with gem5 running in SE
mode. I have followed the tutorial in /util/tlm/README file and I can
run the example provided. But when I try to run GEM5 in SE with TLM
enabled, I get the following error,
First to build the config file, I run
../../build/ARM/gem5.opt ../../configs/example/se.py
--tlm-memory=transactor --mem-type=SimpleMemory --mem-size=512MB
--mem-channels=1 -c ../../../helloworld/hevc
And then to run
bash-4.2$ build/examples/slave_port/gem5.sc m5out/config.ini
SystemC 2.3.1-Accellera --- May 31 2017 13:14:37
Copyright (c) 1996-2014 by all Contributors,
ALL RIGHTS RESERVED
============================================================
EventQueue Dump (cycle 0)
------------------------------------------------------------
<No Events>
============================================================
0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
0 s (=) : sc_main Start of Simulation
warn: ClockedObject: More than one power state change request encountered
within the same simulation tick
fatal: Out of memory, please increase
Post by Qureshi Yasir Mahmood
size of physical memory.
Memory Usage: 597116 Kbytes
Can anyone please let me know, if I need to have a separate physical
memory for this and hence modify the se.py file or just control it
through the configuration options ?
Regards
Yasir
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
--
Dipl.-Ing. Christian Menard
Research Assistant

TU Dresden
Faculty of Computer Science
Chair for Compiler Construction
01062 Dresden

Phone: +49 351 463-42441
e-Mail: ***@tu-dresden.de
Qureshi Yasir Mahmood
2017-06-20 14:15:56 UTC
Permalink
Hi Christian,

Thank you for the reply. I get your point that since there is no tlm-memory object, GEM5 does not treat it as a memory.

For the solution you are suggesting to have a connection to the accelerator in my config file. What I have tried is to have a CPU connected to membus(interconnect) at one end and SimpleMemory and TLM slave connected at the other end (using se.py as a starting point). GEM5 simulates it, but what I am unable to do is to do a transaction or address the TLM slave from a C program. Please let me know if this is correct as the connection to the TLM slave (accelerator) is through the membus.

So I am basically trying to do a transaction in the direction of TLM bridge, but don't know how to initiate it from a C program.

Thank you

Regards
Yasir



-----Original Message-----
From: Christian Menard [mailto:***@tu-dresden.de]
Sent: 20 June 2017 14:37
To: gem5-***@gem5.org
Cc: Qureshi Yasir Mahmood <***@epfl.ch>; Matthias Jung <***@eit.uni-kl.de>
Subject: Re: [gem5-users] SystemC and GEM5 SE Mode

Hi Yasir,
Post by Qureshi Yasir Mahmood
So I think there is a bug in se.py that when tlm-memory is used, it
doesn't create any other memory.
This is not a bug, its a feature! However, there is a bug of another kind.

The --tlm-memory switch indicates that you want to use a TLM memory instead of a gem5 memory. So, none is created. However, since there is no Memory object in the gem5 system, the system thinks that there is not enough space. This is the bug. There should be a Memory object that points to the external slave and indicates to the system how much memory is available. I think the best way to resolve this (and also a better way to configure this) would be to introduce a new memory type 'TlmMemory' and a corresponding class that is instantiated during configuration.

To your problem: if you want to use a gem5 memory and connect your accelerator using the --tlm-memory switch, this is not possible. Instead you should build your own configuration. se.py is just a template and intended to be modified for more complex systems. You could simply copy se.py to your own config and hard code the connection to your accelerator or maybe even add some cli arguments to configure this connection.

Best regards,
Christian
Post by Qureshi Yasir Mahmood
Hi Matthias,
I think I have a clue to the problem in the TLM and se.py simulation
that when I configure se.py to have TLM memory using configuration
parameter --tlm-memory, and also have some physical memory like
SimpleMemory using --mem-type=SimpleMemory, it only creates the TLM
memory port and does not instantiate the Simple memory. I manually edited the config.ini file to
include both SimpleMemory and the tlm-memory and the helloworld program
worked.
So I think there is a bug in se.py that when tlm-memory is used, it
doesn't create any other memory.
Regards
Yasir
-----Original Message-----
Sent: 09 June 2017 00:21
Post by Qureshi Yasir Mahmood
Subject: Re: [gem5-users] SystemC and GEM5 SE Mode
Hi Yasir,
I just wanted to say that se.py works without problems in the cxx config.
And I confirmed that there is an issue with the TLM setup and se.py.
Regards
Matthias
Am 08.06.2017 um 14:43 schrieb Qureshi Yasir Mahmood
Hi Matthias,
Thank you for the reply. When you say " Using util/cxx_config with
se.py or fs.py with util/tlm works fine", do you mean I should
compile the build/examples/slave_port/gem5.sc using cxx_config ?
Regards
Yasir
-----Original Message-----
Sent: 07 June 2017 23:50
Post by Qureshi Yasir Mahmood
Subject: Re: [gem5-users] SystemC and GEM5 SE Mode
Hi Yasir,
I just had a short look, indeed there is an issue.
Using util/cxx_config with se.py or fs.py with util/tlm works fine.
We will have a deeper look into it.
Regards
Matthias
Am 07.06.2017 um 18:22 schrieb Qureshi Yasir Mahmood
Hello All,
I am trying to setup a GEM5-SystemC co-simulation with gem5 running
in SE mode. I have followed the tutorial in /util/tlm/README file
and I can run the example provided. But when I try to run GEM5 in
SE with TLM enabled, I get the following error,
First to build the config file, I run
../../build/ARM/gem5.opt ../../configs/example/se.py
--tlm-memory=transactor --mem-type=SimpleMemory --mem-size=512MB
--mem-channels=1 -c ../../../helloworld/hevc
And then to run
bash-4.2$ build/examples/slave_port/gem5.sc m5out/config.ini
SystemC 2.3.1-Accellera --- May 31 2017 13:14:37
Copyright (c) 1996-2014 by all Contributors,
ALL RIGHTS RESERVED
============================================================
EventQueue Dump (cycle 0)
------------------------------------------------------------
<No Events>
============================================================
0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
0 s (=) : sc_main Start of Simulation
warn: ClockedObject: More than one power state change request
encountered within the same simulation tick
fatal: Out of memory, please increase
Post by Qureshi Yasir Mahmood
size of physical memory.
Memory Usage: 597116 Kbytes
Can anyone please let me know, if I need to have a separate
physical memory for this and hence modify the se.py file or just
control it through the configuration options ?
Regards
Yasir
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
--
Dipl.-Ing. Christian Menard
Research Assistant

TU Dresden
Faculty of Computer Science
Chair for Compiler Construction
01062 Dresden

Phone: +49 351 463-42441
e-Mail: ***@tu-dresden.de
Christian Menard
2017-06-20 15:33:32 UTC
Permalink
Hi Yasir,

you will simply need to write/read to/from the correct address as described
for instance here: https://stackoverflow.com/questions/22618271/access-memory-mapped-i-o

However, for this to work. You need to configure the address range of the tlm
port correctly. Since SE mode uses virtual addresses, you will also need to
configure the memory map so that some virtual addresses point to the physical
address space of your tlm bridge and then access these virtual addresses. I do
not now how, but this should be possible. A starting point could be to search
for how the memory map is
established in the SimpleMemory.

If you get smth working, I want to encourage you to contribute an example to
the util/tlm dir in order to help others who might run into the same problems.

Cheers,
Christian
Post by Qureshi Yasir Mahmood
Hi Christian,
Thank you for the reply. I get your point that since there is no tlm-memory
object, GEM5 does not treat it as a memory.
For the solution you are suggesting to have a connection to the accelerator
in my config file. What I have tried is to have a CPU connected to
membus(interconnect) at one end and SimpleMemory and TLM slave connected at
the other end (using se.py as a starting point). GEM5 simulates it, but
what I am unable to do is to do a transaction or address the TLM slave from
a C program. Please let me know if this is correct as the connection to the
TLM slave (accelerator) is through the membus.
So I am basically trying to do a transaction in the direction of TLM bridge,
but don't know how to initiate it from a C program.
Thank you
Regards
Yasir
-----Original Message-----
Sent: 20 June 2017 14:37
Hi Yasir,
Post by Qureshi Yasir Mahmood
So I think there is a bug in se.py that when tlm-memory is used, it
doesn't create any other memory.
This is not a bug, its a feature! However, there is a bug of another kind.
The --tlm-memory switch indicates that you want to use a TLM memory instead
of a gem5 memory. So, none is created. However, since there is no Memory
object in the gem5 system, the system thinks that there is not enough
space. This is the bug. There should be a Memory object that points to the
external slave and indicates to the system how much memory is available. I
think the best way to resolve this (and also a better way to configure
this) would be to introduce a new memory type 'TlmMemory' and a
corresponding class that is instantiated during configuration.
To your problem: if you want to use a gem5 memory and connect your
accelerator using the --tlm-memory switch, this is not possible. Instead
you should build your own configuration. se.py is just a template and
intended to be modified for more complex systems. You could simply copy
se.py to your own config and hard code the connection to your accelerator
or maybe even add some cli arguments to configure this connection.
Best regards,
Christian
Post by Qureshi Yasir Mahmood
Hi Matthias,
I think I have a clue to the problem in the TLM and se.py simulation
that when I configure se.py to have TLM memory using configuration
parameter --tlm-memory, and also have some physical memory like
SimpleMemory using --mem-type=SimpleMemory, it only creates the TLM
memory port and does not instantiate the Simple memory. I manually edited
the config.ini file to include both SimpleMemory and the tlm-memory and
the helloworld program worked.
So I think there is a bug in se.py that when tlm-memory is used, it
doesn't create any other memory.
Regards
Yasir
-----Original Message-----
Sent: 09 June 2017 00:21
Post by Qureshi Yasir Mahmood
Subject: Re: [gem5-users] SystemC and GEM5 SE Mode
Hi Yasir,
I just wanted to say that se.py works without problems in the cxx config.
And I confirmed that there is an issue with the TLM setup and se.py.
Regards
Matthias
Am 08.06.2017 um 14:43 schrieb Qureshi Yasir Mahmood
Hi Matthias,
Thank you for the reply. When you say " Using util/cxx_config with
se.py or fs.py with util/tlm works fine", do you mean I should
compile the build/examples/slave_port/gem5.sc using cxx_config ?
Regards
Yasir
-----Original Message-----
Sent: 07 June 2017 23:50
Post by Qureshi Yasir Mahmood
Subject: Re: [gem5-users] SystemC and GEM5 SE Mode
Hi Yasir,
I just had a short look, indeed there is an issue.
Using util/cxx_config with se.py or fs.py with util/tlm works fine.
We will have a deeper look into it.
Regards
Matthias
Am 07.06.2017 um 18:22 schrieb Qureshi Yasir Mahmood
Hello All,
I am trying to setup a GEM5-SystemC co-simulation with gem5 running
in SE mode. I have followed the tutorial in /util/tlm/README file
and I can run the example provided. But when I try to run GEM5 in
SE with TLM enabled, I get the following error,
First to build the config file, I run
../../build/ARM/gem5.opt ../../configs/example/se.py
--tlm-memory=transactor --mem-type=SimpleMemory --mem-size=512MB
--mem-channels=1 -c ../../../helloworld/hevc
And then to run
bash-4.2$ build/examples/slave_port/gem5.sc m5out/config.ini
SystemC 2.3.1-Accellera --- May 31 2017 13:14:37
Copyright (c) 1996-2014 by all Contributors,
ALL RIGHTS RESERVED
============================================================
EventQueue Dump (cycle 0)
------------------------------------------------------------
<No Events>
============================================================
0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000
0 s (=) : sc_main Start of Simulation
warn: ClockedObject: More than one power state change request
encountered within the same simulation tick
fatal: Out of memory, please increase
Post by Qureshi Yasir Mahmood
size of physical memory.
Memory Usage: 597116 Kbytes
Can anyone please let me know, if I need to have a separate
physical memory for this and hence modify the se.py file or just
control it through the configuration options ?
Regards
Yasir
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
--
Dipl.-Ing. Christian Menard
Research Assistant
TU Dresden
Faculty of Computer Science
Chair for Compiler Construction
01062 Dresden
Phone: +49 351 463-42441
--
Dipl.-Ing. Christian Menard
Research Assistant

TU Dresden
Faculty of Computer Science
Chair for Compiler Construction
01062 Dresden

Phone: +49 351 463-42441
e-Mail: ***@tu-dresden.de
Qureshi Yasir Mahmood
2017-06-21 10:47:15 UTC
Permalink
Hi Christian,

I will start looking at the address mappings in SE mode as a starting point for this and hope to get a working system.

Thank you for your help and suggestions.

Regards
Yasir


-----Original Message-----
From: Christian Menard [mailto:***@tu-dresden.de]
Sent: 20 June 2017 17:34
To: Qureshi Yasir Mahmood <***@epfl.ch>
Cc: gem5-***@gem5.org; Matthias Jung <***@eit.uni-kl.de>
Subject: Re: [gem5-users] SystemC and GEM5 SE Mode

Hi Yasir,

you will simply need to write/read to/from the correct address as described for instance here: https://stackoverflow.com/questions/22618271/access-memory-mapped-i-o

However, for this to work. You need to configure the address range of the tlm port correctly. Since SE mode uses virtual addresses, you will also need to configure the memory map so that some virtual addresses point to the physical address space of your tlm bridge and then access these virtual addresses. I do not now how, but this should be possible. A starting point could be to search for how the memory map is established in the SimpleMemory.

If you get smth working, I want to encourage you to contribute an example to the util/tlm dir in order to help others who might run into the same problems.

Cheers,
Christian
Post by Qureshi Yasir Mahmood
Hi Christian,
Thank you for the reply. I get your point that since there is no
tlm-memory object, GEM5 does not treat it as a memory.
For the solution you are suggesting to have a connection to the
accelerator in my config file. What I have tried is to have a CPU
connected to
membus(interconnect) at one end and SimpleMemory and TLM slave
connected at the other end (using se.py as a starting point). GEM5
simulates it, but what I am unable to do is to do a transaction or
address the TLM slave from a C program. Please let me know if this is
correct as the connection to the TLM slave (accelerator) is through the membus.
So I am basically trying to do a transaction in the direction of TLM
bridge, but don't know how to initiate it from a C program.
Thank you
Regards
Yasir
-----Original Message-----
Sent: 20 June 2017 14:37
Hi Yasir,
Post by Qureshi Yasir Mahmood
So I think there is a bug in se.py that when tlm-memory is used, it
doesn't create any other memory.
This is not a bug, its a feature! However, there is a bug of another kind.
The --tlm-memory switch indicates that you want to use a TLM memory
instead of a gem5 memory. So, none is created. However, since there is
no Memory object in the gem5 system, the system thinks that there is
not enough space. This is the bug. There should be a Memory object
that points to the external slave and indicates to the system how much
memory is available. I think the best way to resolve this (and also a
better way to configure
this) would be to introduce a new memory type 'TlmMemory' and a
corresponding class that is instantiated during configuration.
To your problem: if you want to use a gem5 memory and connect your
accelerator using the --tlm-memory switch, this is not possible.
Instead you should build your own configuration. se.py is just a
template and intended to be modified for more complex systems. You
could simply copy se.py to your own config and hard code the
connection to your accelerator or maybe even add some cli arguments to configure this connection.
Best regards,
Christian
Post by Qureshi Yasir Mahmood
Hi Matthias,
I think I have a clue to the problem in the TLM and se.py simulation
that when I configure se.py to have TLM memory using configuration
parameter --tlm-memory, and also have some physical memory like
SimpleMemory using --mem-type=SimpleMemory, it only creates the TLM
memory port and does not instantiate the Simple memory. I manually edited
the config.ini file to include both SimpleMemory and the tlm-memory and
the helloworld program worked.
So I think there is a bug in se.py that when tlm-memory is used, it
doesn't create any other memory.
Regards
Yasir
-----Original Message-----
Sent: 09 June 2017 00:21
Post by Qureshi Yasir Mahmood
Subject: Re: [gem5-users] SystemC and GEM5 SE Mode
Hi Yasir,
I just wanted to say that se.py works without problems in the cxx config.
And I confirmed that there is an issue with the TLM setup and se.py.
Regards
Matthias
Am 08.06.2017 um 14:43 schrieb Qureshi Yasir Mahmood
Hi Matthias,
Thank you for the reply. When you say " Using util/cxx_config with
se.py or fs.py with util/tlm works fine", do you mean I should
compile the build/examples/slave_port/gem5.sc using cxx_config ?
Regards
Yasir
-----Original Message-----
Sent: 07 June 2017 23:50
Post by Qureshi Yasir Mahmood
Subject: Re: [gem5-users] SystemC and GEM5 SE Mode
Hi Yasir,
I just had a short look, indeed there is an issue.
Using util/cxx_config with se.py or fs.py with util/tlm works fine.
We will have a deeper look into it.
Regards
Matthias
Am 07.06.2017 um 18:22 schrieb Qureshi Yasir Mahmood
Hello All,
I am trying to setup a GEM5-SystemC co-simulation with gem5
running in SE mode. I have followed the tutorial in
/util/tlm/README file and I can run the example provided. But
when I try to run GEM5 in SE with TLM enabled, I get the
following error,
First to build the config file, I run
../../build/ARM/gem5.opt ../../configs/example/se.py
--tlm-memory=transactor --mem-type=SimpleMemory --mem-size=512MB
--mem-channels=1 -c ../../../helloworld/hevc
And then to run
bash-4.2$ build/examples/slave_port/gem5.sc m5out/config.ini
SystemC 2.3.1-Accellera --- May 31 2017 13:14:37
Copyright (c) 1996-2014 by all Contributors,
ALL RIGHTS RESERVED
============================================================
EventQueue Dump (cycle 0)
------------------------------------------------------------
<No Events>
============================================================
0: system.remote_gdb.listener: listening for remote gdb #0 on
port
7000
0 s (=) : sc_main Start of Simulation
warn: ClockedObject: More than one power state change request
encountered within the same simulation tick
fatal: Out of memory, please increase
Post by Qureshi Yasir Mahmood
size of physical memory.
Memory Usage: 597116 Kbytes
Can anyone please let me know, if I need to have a separate
physical memory for this and hence modify the se.py file or just
control it through the configuration options ?
Regards
Yasir
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
_______________________________________________
gem5-users mailing list
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
--
Dipl.-Ing. Christian Menard
Research Assistant
TU Dresden
Faculty of Computer Science
Chair for Compiler Construction
01062 Dresden
Phone: +49 351 463-42441
--
Dipl.-Ing. Christian Menard
Research Assistant

TU Dresden
Faculty of Computer Science
Chair for Compiler Construction
01062 Dresden

Phone: +49 351 463-42441
e-Mail: ***@tu-dresden.de

Loading...