共需要创建三个文件:Demo.py demo.hh demo.cc
其中Demo.py如下
from m5.params import *
from m5.SimObject import SimObject
class Demo(SimObject):
type = 'Demo'
cxx_header = "demo/demo.hh"
demo.hh内容如下
#ifndef __DEMO_HH__
#define __DEMO_HH__
#include "params/Demo.hh" //该文件为自动创建,可以在build文件夹下找到
#include "sim/sim_object.hh"
class Demo:public SimObject
{
public:
Demo(const DemoParams *p); //传入参数也是自动创建的
};
#endif
demo.cc如下
#include "demo/demo.hh"
#include <iostream>
//共需实现两个函数:构造函数和create()函数
//构造函数
Demo::Demo(const DemoParams *params) :
SimObject(params)
{
std::cout << "Hello World! From a Demo!" << std::endl;
}
//create()函数,返回实例
Demo*
DemoParams::create()
{
return new Demo(this);
}
最后使用py脚本测试
import m5
from m5.objects import *
root = Root(full_system = False)
root.demo = Demo()
m5.instantiate()
print("Beginning simulation!")
exit_event = m5.simulate()
print("Exiting @ tick %i because %s" % (m5.curTick(), exit_event.getCause()))