<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="x-ua-compatible" content="ie=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1">

	<title>gem5</title>

	<!-- SITE FAVICON -->
	<link rel="shortcut icon" type="image/gif" href="/assets/img/gem5ColorVert.gif"/>

	<link rel="canonical" href="http://localhost:4000/helloobject/">
	<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,700,800,600' rel='stylesheet' type='text/css'>
	<link href='https://fonts.googleapis.com/css?family=Muli:400,300' rel='stylesheet' type='text/css'>

	<!-- FAVICON -->
	<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">

	<!-- BOOTSTRAP -->
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">

	<!-- CUSTOM CSS -->
	<link rel="stylesheet" href="/css/main.css">
</head>


<body>
	<nav class="navbar navbar-expand-md navbar-light bg-light">
  <a class="navbar-brand" href="/">
		<img src="/assets/img/gem5ColorLong.gif" alt="gem5" height=45px>
	</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <div class="collapse navbar-collapse" id="navbarNavDropdown">
    <ul class="navbar-nav ml-auto">
      <li class="nav-item ">
        <a class="nav-link" href="/">Home</a>
      </li>

			<li class="nav-item dropdown ">
				<a class="nav-link dropdown-toggle" href="/about" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
					About
				</a>
				<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
          <a class="dropdown-item" href="/about">About</a>
          <a class="dropdown-item" href="/publications">Publications</a>
          <a class="dropdown-item" href="/governance">Governance</a>
				</div>
			</li>

			<li class="nav-item dropdown active">
				<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
					Documentation
				</a>
				<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
					<!-- Pull navigation from _data/documentation.yml -->
					
            <a class="dropdown-item" href="/introduction">Introduction</a>
					
            <a class="dropdown-item" href="/building">Getting Started</a>
					
            <a class="dropdown-item" href="/environment">Modifying/Extending</a>
					
            <a class="dropdown-item" href="/MSIintro">Modeling Cache Coherence with Ruby</a>
					
				</div>
			</li>

      <li class="nav-item ">
        <a class="nav-link" href="/contributing">Contributing</a>
      </li>

			<li class="nav-item ">
        <a class="nav-link" href="/search">Search</a>
      </li>
    </ul>
  </div>
</nav>

	<main>
		<div class="sidenav-top">
  <img src="/assets/img/gem5ColorLong.gif" height="80">
  <div class="search">
    <form action="/search" method="get">
      <!-- <label for="search-box"><i class="fa fa-search"></i></label> -->
      <input type="text" name="query">
      <button type="submit" name="submit"><i class="fa fa-search"></i></button>
    </form>
  </div>
</div>
<div class="sidenav">
  <!-- Pull navigation from _data/documentation.yml -->
  
    <a class="item" href="/introduction" role="button" aria-expanded="false" aria-controls="collapseExample">
      Introduction
    </a>
    <div class="collapse " id="introduction">
      
    </div>
  
    <a class="item" data-toggle="collapse" href="#pt1" role="button" aria-expanded="false" aria-controls="collapseExample">
      Getting Started
    </a>
    <div class="collapse " id="pt1">
      
        <a class="subitem " href="/building">Building gem5</a>
      
        <a class="subitem " href="/simple_config">Creating a simple configuration script</a>
      
        <a class="subitem " href="/cache_config">Adding cache to configuration script</a>
      
        <a class="subitem " href="/gem5_stats">Understanding gem5 statistics and output</a>
      
        <a class="subitem " href="/example_configs">Using the default configuration scripts</a>
      
    </div>
  
    <a class="item" data-toggle="collapse" href="#pt2" role="button" aria-expanded="false" aria-controls="collapseExample">
      Modifying/Extending
    </a>
    <div class="collapse show" id="pt2">
      
        <a class="subitem " href="/environment">Setting up your development environment</a>
      
        <a class="subitem active" href="/helloobject">Creating a very simple SimObject</a>
      
        <a class="subitem " href="/debugging">Debugging gem5</a>
      
        <a class="subitem " href="/events">Event-driven programming</a>
      
        <a class="subitem " href="/parameters">Adding parameters to SimObjects and more events</a>
      
        <a class="subitem " href="/memoryobject">Creating SimObjects in the memory system</a>
      
        <a class="subitem " href="/simplecache">Creating a simple cache object</a>
      
    </div>
  
    <a class="item" data-toggle="collapse" href="#pt3" role="button" aria-expanded="false" aria-controls="collapseExample">
      Modeling Cache Coherence with Ruby
    </a>
    <div class="collapse " id="pt3">
      
        <a class="subitem " href="/MSIintro">Introduction to Ruby</a>
      
        <a class="subitem " href="/cache-intro">MSI example cache protocol</a>
      
        <a class="subitem " href="/cache-declarations">Declaring a state machine</a>
      
        <a class="subitem " href="/cache-in-ports">In port code blocks</a>
      
        <a class="subitem " href="/cache-actions">Action code blocks</a>
      
        <a class="subitem " href="/cache-transitions">Transition code blocks</a>
      
        <a class="subitem " href="/directory">MSI Directory implementation</a>
      
        <a class="subitem " href="/MSIbuilding">Compiling a SLICC protocol</a>
      
        <a class="subitem " href="/configuration">Configuring a simple Ruby system</a>
      
        <a class="subitem " href="/running">Running the simple Ruby system</a>
      
        <a class="subitem " href="/MSIdebugging">Debugging SLICC Protocols</a>
      
        <a class="subitem " href="/simple-MI_example">Configuring for a standard protocol</a>
      
    </div>
  
</div>

<div class="container" id="doc-container">
  <div class="edit"><a href="https://github.com/new-website/tree/master/_pages/documentation/part2/helloobject.md">Edit this page</a></div>
  <dl>
  <dt>authors</dt>
  <dd>Jason Lowe-Power</dd>
</dl>

<h1 id="creating-a-very-simple-simobject">Creating a <em>very</em> simple SimObject</h1>

<p>Almost all objects in gem5 inherit from the base SimObject type.
SimObjects export the main interfaces to all objects in gem5. SimObjects
are wrapped <code class="highlighter-rouge">C++</code> objects that are accessible from the <code class="highlighter-rouge">Python</code>
configuration scripts.</p>

<p>SimObjects can have many parameters, which are set via the <code class="highlighter-rouge">Python</code>
configuration files. In addition to simple parameters like integers and
floating point numbers, they can also have other SimObjects as
parameters. This allows you to create complex system hierarchies, like
real machines.</p>

<p>In this chapter, we will walk through creating a simple “HelloWorld”
SimObject. The goal is to introduce you to how SimObjects are created
and the required boilerplate code for all SimObjects. We will also
create a simple <code class="highlighter-rouge">Python</code> configuration script which instantiates our
SimObject.</p>

<p>In the next few chapters, we will take this simple SimObject and expand
on it to include <a href="debugging-chapter">debugging support</a>, <a href="events-chapter">dynamic
events</a>, and <a href="parameters-chapter">parameters</a>.</p>

<blockquote>
  <p><strong>Using git branches</strong></p>

  <p>It is common to use a new git branch for each new feature you add to
gem5.</p>

  <p>The first step when adding a new feature or modifying something in
gem5, is to create a new branch to store your changes. Details on git
branches can be found in the Git book_.</p>

  <p><code class="highlighter-rouge">{.sourceCode .sh}
git checkout -b hello-simobject
</code></p>
</blockquote>

<h2 id="step-1-create-a-python-class-for-your-new-simobject">Step 1: Create a Python class for your new SimObject</h2>

<p>Each SimObject has a Python class which is associated with it. This
Python class describes the parameters of your SimObject that can be
controlled from the Python configuration files. For our simple
SimObject, we are just going to start out with no parameters. Thus, we
simply need to declare a new class for our SimObject and set it’s name
and the C++ header that will define the C++ class for the SimObject.</p>

<p>We can create a file, HelloObject.py, in <code class="highlighter-rouge">src/learning_gem5</code></p>

<p>``` {.sourceCode .python}
from m5.params import *
from m5.SimObject import SimObject</p>

<p>class HelloObject(SimObject):
    type = ‘HelloObject’
    cxx_header = “learning_gem5/hello_object.hh”</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
You can find the complete file
here \&lt;../\_static/scripts/part2/helloobject/HelloObject.py\&gt;.

It is not required that the `type` be the same as the name of the class,
but it is convention. The `type` is the C++ class that you are wrapping
with this Python SimObject. Only in special circumstances should the
`type` and the class name be different.

The `cxx_header` is the file that contains the declaration of the class
used as the `type` parameter. Again, the convention is to use the name
of the SimObject with all lowercase and underscores, but this is only
convention. You can specify any header file here.

Step 2: Implement your SimObject in C++
---------------------------------------

Next, we need to create `hello_object.hh` and `hello_object.cc` which
will implement the hello object.

We'll start with the header file for our `C++` object. By convention,
gem5 wraps all header files in `#ifndef/#endif` with the name of the
file and the directory its in so there are no circular includes.

The only thing we need to do in the file is to declare our class. Since
`HelloObject` is a SimObject, it must inherit from the C++ SimObject
class. Most of the time, your SimObject's parent will be a subclass of
SimObject, not SimObject itself.

The SimObject class specifies many virtual functions. However, none of
these functions are pure virtual, so in the simplest case, there is no
need to implement any functions except for the constructor.

The constructor for all SimObjects assumes it will take a parameter
object. This parameter object is automatically created by the build
system and is based on the `Python` class for the SimObject, like the
one we created above. The name for this parameter type is generated
automatically from the name of your object. For our "HelloObject" the
parameter type's name is "HelloObject\**Params*\*".

The code required for our simple header file is listed below.

``` {.sourceCode .c++}
#ifndef __LEARNING_GEM5_HELLO_OBJECT_HH__
#define __LEARNING_GEM5_HELLO_OBJECT_HH__

#include "params/HelloObject.hh"
#include "sim/sim_object.hh"

class HelloObject : public SimObject
{
  public:
    HelloObject(HelloObjectParams *p);
};

#endif // __LEARNING_GEM5_HELLO_OBJECT_HH__
</code></pre></div></div>

<p>You can find the complete file
here &lt;../_static/scripts/part2/helloobject/hello_object.hh&gt;.</p>

<p>Next, we need to implement <em>two</em> functions in the <code class="highlighter-rouge">.cc</code> file, not just
one. The first function, is the constructor for the <code class="highlighter-rouge">HelloObject</code>. Here
we simply pass the parameter object to the SimObject parent and print
“Hello world!”</p>

<p>Normally, you would <strong>never</strong> use <code class="highlighter-rouge">std::cout</code> in gem5. Instead, you
should use debug flags. In the <a href="debugging-chapter">next chapter</a>, we
will modify this to use debug flags instead. However, for now, we’ll
simply use <code class="highlighter-rouge">std::cout</code> because it is simple.</p>

<p>``` {.sourceCode .c++}
#include “learning_gem5/hello_object.hh”</p>

<p>#include <iostream></iostream></p>

<p>HelloObject::HelloObject(HelloObjectParams *params) :
    SimObject(params)
{
    std::cout « “Hello World! From a SimObject!” « std::endl;
}</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
There is another function that we have to implement as well for the
SimObject to be complete. We must implement one function for the
parameter type that is implicitly created from the SimObject `Python`
declaration, namely, the `create` function. This function simply returns
a new instantiation of the SimObject. Usually this function is very
simple (as below).

``` {.sourceCode .c++}
HelloObject*
HelloObjectParams::create()
{
    return new HelloObject(this);
}
</code></pre></div></div>

<p>You can find the complete file
here &lt;../_static/scripts/part2/helloobject/hello_object.cc&gt;.</p>

<p>If you forget to add the create function for your SimObject, you will
get a linker error when you compile. It will look something like the
following.</p>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>build/X86/python/m5/internal/param_HelloObject_wrap.o: In function `_wrap_HelloObjectParams_create':
/local.chinook/gem5/gem5-tutorial/gem5/build/X86/python/m5/internal/param_HelloObject_wrap.cc:3096: undefined reference to `HelloObjectParams::create()'
collect2: error: ld returned 1 exit status
scons: *** [build/X86/gem5.opt] Error 1
scons: building terminated because of errors.
</code></pre></div></div>

<p>This <code class="highlighter-rouge">undefined reference to `HelloObjectParams::create()'</code> means
you need to implement the create function for your SimObject.</p>

<h2 id="step-3-register-the-simobject-and-c-file">Step 3: Register the SimObject and C++ file</h2>

<p>In order for the <code class="highlighter-rouge">C++</code> file to be compiled and the <code class="highlighter-rouge">Python</code> file to be
parsed we need to tell the build system about these files. gem5 uses
SCons as the build system, so you simply have to create a SConscript
file in the directory with the code for the SimObject. If there is
already a SConscript file for that directory, simply add the following
declarations to that file.</p>

<p>This file is simply a normal <code class="highlighter-rouge">Python</code> file, so you can write any
<code class="highlighter-rouge">Python</code> code you want in this file. Some of the scripting can become
quite complicated. gem5 leverages this to automatically create code for
SimObjects and to compile the domain-specific languages like SLICC and
the ISA language.</p>

<p>In the SConscript file, there are a number of functions automatically
defined after you import them. See the section on that…</p>

<p>To get your new SimObject to compile, you simply need to create a new
file with the name “SConscript” in the <code class="highlighter-rouge">src/learning_gem5</code> directory. In
this file, you have to declare the SimObject and the <code class="highlighter-rouge">.cc</code> file. Below
is the required code.</p>

<p>``` {.sourceCode .python}
Import(‘*’)</p>

<p>SimObject(‘HelloObject.py’)
Source(‘hello_object.cc’)</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
You can find the complete file
here \&lt;../\_static/scripts/part2/helloobject/SConscript\&gt;.

Step 4: (Re)-build gem5
-----------------------

To compile and link your new files you simply need to recompile gem5.
The below example assumes you are using the x86 ISA, but nothing in our
object requires an ISA so, this will work with any of gem5's ISAs.

``` {.sourceCode .sh}
scons build/X86/gem5.opt
</code></pre></div></div>

<h2 id="step-5-create-the-config-scripts-to-use-your-new-simobject">Step 5: Create the config scripts to use your new SimObject</h2>

<p>Now that you have implemented a SimObject, and it has been compiled into
gem5, you need to create or modify a <code class="highlighter-rouge">Python</code> config file to instantiate
your object. Since your object is very simple a system object is not
required! CPUs are not needed, or caches, or anything, except a <code class="highlighter-rouge">Root</code>
object. All gem5 instances require a <code class="highlighter-rouge">Root</code> object.</p>

<p>Walking through creating a <em>very</em> simple configuration script, first,
import m5 and all of the objects you have compiled.</p>

<p>``` {.sourceCode .python}
import m5
from m5.objects import *</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
Next, you have to instantiate the `Root` object, as required by all gem5
instances.

``` {.sourceCode .python}
root = Root(full_system = False)
</code></pre></div></div>

<p>Now, you can instantiate the <code class="highlighter-rouge">HelloObject</code> you created. All you need to
do is call the <code class="highlighter-rouge">Python</code> “constructor”. Later, we will look at how to
specify parameters via the <code class="highlighter-rouge">Python</code> constructor. In addition to creating
an instantiation of your object, you need to make sure that it is a
child of the root object. Only SimObjects that are children of the
<code class="highlighter-rouge">Root</code> object are instantiated in <code class="highlighter-rouge">C++</code>.</p>

<p>``` {.sourceCode .python}
root.hello = HelloObject()</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
Finally, you need to call `instantiate` on the `m5` module and actually
run the simulation!

``` {.sourceCode .python}
m5.instantiate()

print("Beginning simulation!")
exit_event = m5.simulate()
print('Exiting @ tick {} because {}'
      .format(m5.curTick(), exit_event.getCause()))
</code></pre></div></div>

<p>You can find the complete file
here &lt;../_static/scripts/part2/helloobject/run_hello.py&gt;.</p>

<p>The output should look something like the following</p>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gem5 Simulator System.  http://gem5.org
gem5 is copyrighted software; use the --copyright option for details.

gem5 compiled May  4 2016 11:37:41
gem5 started May  4 2016 11:44:28
gem5 executing on mustardseed.cs.wisc.edu, pid 22480
command line: build/X86/gem5.opt configs/learning_gem5/run_hello.py

Global frequency set at 1000000000000 ticks per second
Hello World! From a SimObject!
Beginning simulation!
info: Entering event queue @ 0.  Starting simulation...
Exiting @ tick 18446744073709551615 because simulate() limit reached
</code></pre></div></div>

<p>Congrats! You have written your first SimObject. In the next chapters,
we will extend this SimObject and explore what you can do with
SimObjects.</p>

  <br>

  <!-- RETRIVE PREVIOUS PAGE LINK -->
  
    
  
    
  
    
      
      
        
          
            
          
        
          
            
      
    
  
    
  

  <!-- RETRIEVE NEXT PAGE LINK -->
  
    
  
    
  
    
      
      
        
          
            
          
        
          
            
          
        
          
            
          
        
          
            
          
        
          
            
          
        
          
            
      
    
  
    
  


  <div class="navbuttons">
    
      <a href="/environment"><button type="button" class="btn btn-outline-primary">PREVIOUS</button></a>
    

    
      <a href="/debugging"><button type="button" class="btn btn-outline-primary">NEXT</button></a>
    
  </div>
</div>

	</main>

	<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
	<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

	<script>
	  // When the user scrolls down 20px from the top of the document, show the button
	  window.onscroll = function() {scrollFunction()};

	  function scrollFunction() {
	      if (document.body.scrollTop > 100 || document.documentElement.scrollTop > 20) {
	          document.getElementById("myBtn").style.display = "block";
	      } else {
	          document.getElementById("myBtn").style.display = "none";
	      }
	  }

	  // When the user clicks on the button, scroll to the top of the document
	  function topFunction() {
	      document.body.scrollTop = 0;
	      document.documentElement.scrollTop = 0;
	  }
	</script>

</body>

<footer class="page-footer">
	<div class="container">
		<div class="row">

			<div class="col-12 col-sm-4">
				<p><a href="/about">About</a></p>
				<p><a href="/publications">Publications</a></p>
				<p><a href="/contributing">Contributing</a></p>
				<p><a href="/governance">Governance</a></p>
			</div><br>

			<div class="col-12 col-sm-4">
				<p><a href="/introduction">Documentation</a></p>
				<p><a href="http://gem5.org/Documentation">Old Documentation</a></p>
				<p><a href="https://gem5.googlesource.com/public/gem5">Source</a></p>
			</div><br>

			<div class="col-12 col-sm-4">
				<p><a href="/search">Search</a></p>
				<p><a href="#">Mailing Lists</a></p>
				<p><a href="#">Source For This Site</a></p>
			</div>

		</div>
	</div>
</footer>


</html>
