summaryrefslogtreecommitdiff
path: root/tests/configs/ruby_config.py
blob: 190337e6747a8da5f94ee56e58b209da155a710a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import os
import subprocess

from os.path import dirname, join as joinpath

import m5
from m5.params import *

def generate(config_file, cores=1, memories=1, memory_size=1024, \
             cache_size=32768, cache_assoc=8, dmas=1,
             ruby_tick='1t', ports_per_cpu=2, protocol='MOESI_CMP_directory'):
    default = joinpath(dirname(__file__), '../../src/mem/ruby/config')
    ruby_config = os.environ.get('RUBY_CONFIG', default)
    args = [ "ruby", "-I", ruby_config, joinpath(ruby_config, "print_cfg.rb"),
             "-c", str(protocol),
             "-r", joinpath(ruby_config, config_file), "-p", str(cores),
             "-m", str(memories), "-s", str(memory_size), "-C", str(cache_size),
             "-A", str(cache_assoc), "-D", str(dmas)]

    temp_config = joinpath(m5.options.outdir, "ruby.config")
    ret = subprocess.call(args, stdout=file(temp_config, "w"))
    if ret != 0:
        raise RuntimeError, "subprocess failed!"

    return m5.objects.RubyMemory(clock = ruby_tick,
                                 config_file = temp_config,
                                 num_cpus = cores,
                                 range = AddrRange(str(memory_size)+"MB"),
                                 num_dmas = dmas,
                                 ports_per_core = ports_per_cpu)