Esempio n. 1
0
def main():

    tracer = TraceGen(39, 28, 32)
    file = open("test_load.tr", "w")

    file.write(tracer.print_header())

    file.write(
        tracer.print_comment(
            "Load from address - 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60"
        ))
    for i in range(0, 64, 4):
        temp_vaddr = (1 << 31) | i
        temp_ptag = (1 << 19)
        file.write(tracer.send_load(temp_vaddr, temp_ptag, False))
        file.write(tracer.nop())
        file.write(tracer.recv_data(i))
        file.write(tracer.nop())

    file.write(tracer.test_finish())
    file.close()

    file = open("test_uncached_load.tr", "w")

    file.write(tracer.print_header())

    file.write(tracer.print_comment("Uncached Load from address 36"))
    temp_vaddr = (1 << 31) | 36
    temp_ptag = (1 << 19)
    file.write(tracer.send_load(temp_vaddr, temp_ptag, True))
    file.write(tracer.nop())
    file.write(tracer.recv_data(36))

    file.write(tracer.test_finish())
    file.close()
Esempio n. 2
0
 def __init__(self,
              paddr_width=40,
              data_width=64,
              num_lce=1,
              out_dir='.',
              trace_file='test',
              debug=False):
     self.paddr_width = paddr_width
     self.data_width = data_width
     self.tg = TraceGen(addr_width_p=self.paddr_width,
                        data_width_p=self.data_width)
     self.num_lce = num_lce
     self.out_dir = out_dir
     self.trace_file = trace_file
     self.debug = debug
Esempio n. 3
0
import sys
import random
sys.path.append("../py/")
from trace_gen import TraceGen

tg = TraceGen(addr_width_p=20, data_width_p=64)

# preamble
tg.print_header()

# test begin
random.seed(8)
num_instr = 1024
store_val = 8
for i in range(num_instr):
    load_not_store = random.randint(0, 1)
    tag = random.randint(0, 15) << 10
    block_offset = random.randint(0, 7) << 3
    addr = tag + block_offset
    if (load_not_store):
        tg.send_load(size=8, addr=addr, signed=0)
    else:
        tg.send_store(size=8, addr=addr, data=store_val)
        store_val += 16

# test end
tg.test_done()
#
#   bsg_trace_rom.py
#

import sys
import random
sys.path.append("../../../software/py/")
from trace_gen import TraceGen

num_lce_p = int(sys.argv[1])
id_p = int(sys.argv[2])
num_instr = int(sys.argv[3])
seed_p = int(sys.argv[4]) + id_p if len(sys.argv) >= 5 else 0
random.seed(seed_p)

tg = TraceGen(addr_width_p=39, data_width_p=64)

# preamble
tg.print_header()

print("# seed: {0}".format(seed_p))

# test begin
store_val = num_lce_p if id_p == 0 else id_p

for i in range(num_instr):
    load_not_store = random.randint(0, 1)
    tag = random.randint(0, 255) << 6
    block_offset = random.randint(0, 7) << 3
    addr = tag + block_offset
    if (load_not_store):
 def __init__(self, paddr_width=40, data_width=64, debug=False):
     self.paddr_width = paddr_width
     self.data_width = data_width
     self.tg = TraceGen(addr_width_p=self.paddr_width,
                        data_width_p=self.data_width)
     self.debug = debug
Esempio n. 6
0

def write_memory(mem, addr, value, size):
    # by default
    # create an array of "bytes" (really, integer values of each byte) for addr to addr+(size-1)
    # bytes of value are stored into memory in Little Endian order
    for i in range(size):
        v = (value >> (i * 8)) & 0xff
        #eprint('write: mem[{0}] := {1:x}'.format(addr+i, v))
        mem[addr + i] = v


#write_memory(byte_memory, 0, 256, 2)
#print(read_memory(byte_memory, 0, 1))

tg = TraceGen(addr_width_p=args.paddr_width, data_width_p=args.dword_size)

# preamble
tg.print_header()

# test begin
random.seed(args.seed)

tg.wait(100)

store_val = 1

for i in range(args.num_instr):
    # pick access parameters
    load = random.choice([True, False])
    size = random.choice([1, 2, 4, 8])
Esempio n. 7
0

def write_memory(mem, addr, value, size):
    # by default
    # create an array of "bytes" (really, integer values of each byte) for addr to addr+(size-1)
    # bytes of value are stored into memory in Little Endian order
    for i in xrange(size):
        v = (value >> (i * 8)) & 0xff
        #eprint('write: mem[{0}] := {1:x}'.format(addr+i, v))
        mem[addr + i] = v


#write_memory(byte_memory, 0, 256, 2)
#print(read_memory(byte_memory, 0, 1))

tg = TraceGen(addr_width_p=args.paddr_width, data_width_p=args.data_width)

# preamble
tg.print_header()

# test begin
random.seed(args.seed + args.lce_id + 1)

tg.wait(100)

store_val = args.lce_id if (args.lce_id != 0) else args.num_lce

for i in range(args.num_instr):
    load = random.choice([True, False])
    #size = random.choice([1, 2, 4, 8])
    size = 8
Esempio n. 8
0
import sys
sys.path.append("../software/py")
from trace_gen import TraceGen

paddr_width = 40
uc_mask = (1 << (paddr_width - 1))
tg = TraceGen(addr_width_p=paddr_width, data_width_p=64)
# TODO: the addressing below is a carryover from manycore-land. This generates valid addresses,
# but is not exactly how BP works. This test will be changed to use direct assignment of addresses
# in a future change, when we also change the use of the msb bit of the address to no longer rely
# on it for cached/uncached determination.

tg.print_header()

# wait for CCE to do initialization sequence
tg.wait(5000)

base_addr = 0
tg.send_store(size=8, addr=(base_addr | uc_mask), data=1234567890)
tg.recv_data(data=0)
tg.send_load(size=8, addr=(base_addr | uc_mask), signed=0)
tg.recv_data(data=1234567890)

base_addr = 0
tg.send_store(size=8, addr=(base_addr | uc_mask), data=0x1133557722446688)
tg.recv_data(data=0)
tg.send_load(size=1, addr=(base_addr | uc_mask) + 0, signed=0)
tg.recv_data(data=0x88)
tg.send_load(size=1, addr=(base_addr | uc_mask) + 1, signed=0)
tg.recv_data(data=0x66)
tg.send_load(size=1, addr=(base_addr | uc_mask) + 2, signed=0)
Esempio n. 9
0
def main():

    tracer = TraceGen(28, 12, 6, 66)
    filepath = sys.argv[1]

    # Store/Load double word test
    filename = filepath + "double_word_test.tr"
    file = open(filename, "w")

    file.write(tracer.print_header())
    file.write(
        tracer.print_comment(
            "Store to address - 0, 8, 16, 24, 32, 40, 48, 56"))
    for i in range(8, 72, 8):
        file.write(tracer.send_store(8, i - 8, 0, False, i))

    for i in range(0, 8, 1):
        file.write(tracer.recv_data(0))

    file.write(
        tracer.print_comment(
            "Load from address - 0, 8, 16, 24, 32, 40, 48, 56"))
    for i in range(8, 72, 8):
        file.write(tracer.send_load(True, 8, i - 8, 0, False))

    for i in range(8, 72, 8):
        file.write(tracer.recv_data(i))

    file.write(tracer.print_comment("Store/Load double word test done\n"))
    file.write(tracer.test_done())

    file.close()

    # Store/Load byte test (signed and unsigned)
    filename = filepath + "byte_test.tr"
    file = open(filename, "w")

    file.write(tracer.print_header())
    file.write(tracer.print_comment("Store byte to address 64"))
    file.write(tracer.send_store(1, 64, 0, False, 170))
    file.write(tracer.recv_data(0))
    file.write(tracer.print_comment("Load signed byte from address 64"))
    file.write(tracer.send_load(True, 1, 64, 0, False))
    file.write(tracer.recv_data(-86))

    file.write(tracer.print_comment("Load unsigned byte from address 64"))
    file.write(tracer.send_load(False, 1, 64, 0, False))
    file.write(tracer.recv_data(170))

    file.write(
        tracer.print_comment("Store/Load unsigned/signed byte test done\n"))
    file.write(tracer.test_done())

    file.close()

    # Store/Load halfword test (signed and unsigned)
    filename = filepath + "half_word_test.tr"
    file = open(filename, "w")
    file = open(filename, "w")

    file.write(tracer.print_header())
    file.write(tracer.print_comment("Store halfword to address 128"))
    file.write(tracer.send_store(2, 128, 0, False, 43690))
    file.write(tracer.recv_data(0))
    file.write(tracer.print_comment("Load signed halfword from address 128"))
    file.write(tracer.send_load(True, 2, 128, 0, False))
    file.write(tracer.recv_data(-21846))

    file.write(tracer.print_comment("Load unsigned halfword from address 128"))
    file.write(tracer.send_load(False, 2, 128, 0, False))
    file.write(tracer.recv_data(43690))

    file.write(
        tracer.print_comment(
            "Store/Load unsigned/signed halfword test done\n"))
    file.write(tracer.test_done())

    file.close()

    # Store/Load word test (signed and unsigned)
    filename = filepath + "word_test.tr"
    file = open(filename, "w")

    file.write(tracer.print_header())
    file.write(tracer.print_comment("Store word to address 192"))
    file.write(tracer.send_store(4, 192, 0, False, 2863311530))
    file.write(tracer.recv_data(0))
    file.write(tracer.print_comment("Load signed word from address 192"))
    file.write(tracer.send_load(True, 4, 192, 0, False))
    file.write(tracer.recv_data(-1431655766))

    file.write(tracer.print_comment("Load unsigned word from address 192"))
    file.write(tracer.send_load(False, 4, 192, 0, False))
    file.write(tracer.recv_data(2863311530))

    file.write(
        tracer.print_comment("Store/Load unsigned/signed word test done\n"))
    file.write(tracer.test_done())

    file.close()

    # Store to same index with 9 different ptags (to verify writeback)
    filename = filepath + "writeback_test.tr"
    file = open(filename, "w")

    file.write(tracer.print_header())
    file.write(
        tracer.print_comment(
            "Store to address - 256, 4352, 8448, 12544, 16640, 20736, 24832, 28928"
        ))
    for i in range(8, 72, 8):
        temp_ptag = ((i - 1) >> 3)
        file.write(tracer.send_store(8, 256, temp_ptag, False, i))
        file.write(tracer.recv_data(0))

    file.write(
        tracer.print_comment("Load from the above addresses to verify store."))
    for i in range(8, 72, 8):
        temp_ptag = (i - 1) >> 3
        file.write(tracer.send_load(True, 8, 256, temp_ptag, False))
        file.write(tracer.recv_data(i))

    file.write(
        tracer.print_comment(
            "Store to same cache index but different physical address - address 33024"
        ))
    file.write(tracer.send_store(8, 256, 8, False, 72))
    file.write(tracer.print_comment("Receive zero (to dequeue fifo)"))
    file.write(tracer.recv_data(0))
    file.write(tracer.print_comment("Load from address 33024"))
    file.write(tracer.send_load(True, 8, 256, 8, False))
    file.write(tracer.recv_data(72))
    file.write(tracer.print_comment("Load from address - 256"))
    file.write(tracer.send_load(True, 8, 256, 0, False))
    file.write(tracer.recv_data(8))
    file.write(tracer.print_comment("Load from address 33024"))
    file.write(tracer.send_load(True, 8, 256, 8, False))
    file.write(tracer.recv_data(72))

    file.write(
        tracer.print_comment(
            "Writeback, Eviction and Replacement successfully tested"))
    file.write(tracer.test_done())

    file.close()

    # Uncached Store/Load
    filename = filepath + "uncached_test.tr"
    file = open(filename, "w")

    file.write(tracer.print_header())
    file.write(tracer.print_comment("Store to address 320 in uncached mode"))
    file.write(tracer.send_store(8, 320, 0, True, 320))
    file.write(tracer.recv_data(0))
    file.write(tracer.print_comment("Load from address 320 in uncached mode"))
    file.write(tracer.send_load(True, 8, 320, 0, True))
    file.write(tracer.recv_data(320))
    file.write(tracer.test_done())
    file.close()

    # Unaligned accesses
    filename = filepath + "unaligned_test.tr"
    file = open(filename, "w")

    file.write(tracer.print_header())
    file.write(tracer.print_comment("Store byte to address - 7"))
    file.write(tracer.send_store(1, 7, 0, False, 255))
    file.write(tracer.recv_data(0))
    file.write(tracer.print_comment("Store halfword to address - 2"))
    file.write(tracer.send_store(2, 2, 0, False, 1010))
    file.write(tracer.recv_data(0))
    file.write(tracer.print_comment("Load byte from address - 7"))
    file.write(tracer.send_load(False, 1, 7, 0, False))
    file.write(tracer.recv_data(255))
    file.write(tracer.print_comment("Load halfword from address - 2"))
    file.write(tracer.send_load(False, 2, 2, 0, False))
    file.write(tracer.recv_data(1010))
    file.write(tracer.print_comment("Store word to address - 4"))
    file.write(tracer.send_store(4, 4, 0, False, 70000))
    file.write(tracer.recv_data(0))
    file.write(tracer.print_comment("Load word from address - 4"))
    file.write(tracer.send_load(False, 4, 4, 0, False))
    file.write(tracer.recv_data(70000))
    file.write(tracer.print_comment("Store \"byte\" to address - 1"))
    file.write(tracer.send_store(1, 1, 0, False, 256))
    file.write(tracer.recv_data(0))
    file.write(tracer.print_comment("Load byte from address - 1"))
    file.write(tracer.send_load(False, 1, 1, 0, False))
    file.write(tracer.recv_data(0))

    file.write(tracer.test_done())

    file.close()

    # Directed test 1
    filename = filepath + "wt_test_1.tr"
    file = open(filename, "w")

    file.write(tracer.print_header())
    file.write(tracer.print_comment("Store double word to address - 0"))
    file.write(tracer.send_store(8, 0, 0, False, 64))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_store(8, 0, 1, False, 128))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_store(8, 0, 2, False, 256))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_store(8, 64, 3, False, 512))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_store(8, 64, 3, False, 1024))
    file.write(tracer.send_store(8, 0, 1, False, 2048))
    file.write(tracer.send_load(False, 8, 0, 0, False))
    file.write(tracer.recv_data(0))
    file.write(tracer.recv_data(0))
    file.write(tracer.recv_data(64))
    file.write(tracer.send_load(False, 8, 0, 1, False))
    file.write(tracer.recv_data(2048))

    file.write(tracer.test_done())

    file.close()

    # Directed test 2
    filename = filepath + "wt_test_2.tr"
    file = open(filename, "w")

    file.write(tracer.print_header())
    file.write(tracer.print_comment("Store double word to address - 0"))
    file.write(tracer.send_store(8, 0, 0, False, 64))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_store(8, 0, 1, False, 128))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_store(8, 0, 2, False, 256))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_store(8, 64, 3, False, 512))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_store(8, 64, 3, False, 1024))
    file.write(tracer.send_store(8, 0, 1, False, 2048))
    file.write(tracer.send_load(False, 8, 0, 0, False))
    file.write(tracer.send_load(False, 8, 0, 1, False))
    file.write(tracer.recv_data(0))
    file.write(tracer.recv_data(0))
    file.write(tracer.recv_data(64))
    file.write(tracer.recv_data(2048))

    file.write(tracer.test_done())

    file.close()

    # Directed test 3
    filename = filepath + "wt_test_3.tr"
    file = open(filename, "w")

    file.write(tracer.print_header())
    file.write(tracer.print_comment("Store double word to address - 0"))
    file.write(tracer.send_store(8, 0, 0, False, 64))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_store(8, 0, 0, False, 128))
    file.write(tracer.send_load(False, 8, 64, 0, False))
    file.write(tracer.send_store(8, 0, 0, False, 256))
    file.write(tracer.send_load(False, 8, 128, 0, False))
    file.write(tracer.send_store(8, 0, 0, False, 512))
    file.write(tracer.send_load(False, 8, 192, 0, False))
    file.write(tracer.send_store(8, 0, 0, False, 1024))
    file.write(tracer.send_load(False, 8, 256, 0, False))

    for i in range(0, 8):
        file.write(tracer.recv_data(0))

    file.write(tracer.test_done())

    file.close()

    # Multi cycle fill directed test
    filename = filepath + "multicycle_fill_test.tr"
    file = open(filename, "w")

    file.write(tracer.print_header())
    file.write(tracer.print_comment("Store byte to address - 0"))
    file.write(tracer.send_store(1, 0, 0, False, 152))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_load(False, 1, 0, 0, False))
    file.write(tracer.recv_data(152))
    file.write(tracer.print_comment("Store byte to address - 73"))
    file.write(tracer.send_store(1, 73, 0, False, 152))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_load(False, 1, 73, 0, False))
    file.write(tracer.recv_data(152))
    file.write(tracer.print_comment("Store byte to address - 146"))
    file.write(tracer.send_store(1, 146, 0, False, 152))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_load(False, 1, 146, 0, False))
    file.write(tracer.recv_data(152))
    file.write(tracer.print_comment("Store byte to address - 219"))
    file.write(tracer.send_store(1, 219, 0, False, 152))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_load(False, 1, 219, 0, False))
    file.write(tracer.recv_data(152))
    file.write(tracer.print_comment("Store byte to address - 292"))
    file.write(tracer.send_store(1, 292, 0, False, 152))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_load(False, 1, 292, 0, False))
    file.write(tracer.recv_data(152))
    file.write(tracer.print_comment("Store byte to address - 365"))
    file.write(tracer.send_store(1, 365, 0, False, 152))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_load(False, 1, 365, 0, False))
    file.write(tracer.recv_data(152))
    file.write(tracer.print_comment("Store byte to address - 438"))
    file.write(tracer.send_store(1, 438, 0, False, 152))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_load(False, 1, 438, 0, False))
    file.write(tracer.recv_data(152))
    file.write(tracer.print_comment("Store byte to address - 511"))
    file.write(tracer.send_store(1, 511, 0, False, 152))
    file.write(tracer.recv_data(0))
    file.write(tracer.send_load(False, 1, 511, 0, False))
    file.write(tracer.recv_data(152))

    file.write(tracer.test_done())

    file.close()
Esempio n. 10
0
import sys
sys.path.append("../py/")
from trace_gen import TraceGen

WAIT_TIME = 50

ways = 8
sets = 16
block_size_bytes = 64
cache_size = block_size_bytes * ways * sets

tg = TraceGen(addr_width_p=20, data_width_p=block_size_bytes)

# preamble
tg.print_header()

# test begin
tg.wait(WAIT_TIME*100)
tg.send_load(signed=0, size=8, addr=0)
tg.recv_data(data=0x0000000F0000000F)

tg.send_load(signed=0, size=8, addr=16)
tg.recv_data(data=0x0000000F0000000F)

# test end
tg.test_done()
Esempio n. 11
0
def main():
  
  tracer = TraceGen(28, 12, 4, 64)
  
  # Store/Load double word test
  file = open("test_sd_ld.tr", "w")

  file.write(tracer.print_header())
  file.write(tracer.print_comment("Wait for SYNC"))
  file.write(tracer.wait(65))
  file.write(tracer.print_comment("Store to address - 0, 8, 16, 24, 32, 40, 48, 56"))
  for i in range(8, 72, 8):
    file.write(tracer.send_store(8, i-8, 0, False, i))
    file.write(tracer.recv_data(0))
  
  file.write(tracer.print_comment("Load from address - 0, 8, 16, 24, 32, 40, 48, 56"))
  for i in range(8, 72, 8):
    file.write(tracer.send_load(True, 8, i-8, 0, False))
    file.write(tracer.recv_data(i))

  file.write(tracer.print_comment("Store/Load double word test done\n"))
  file.write(tracer.test_finish())

  file.close()

  # Store/Load byte test (signed and unsigned)
  file = open("test_sb_lb.tr", "w")

  file.write(tracer.print_header())
  file.write(tracer.print_comment("Wait for SYNC"))
  file.write(tracer.wait(65))
  file.write(tracer.print_comment("Store byte to address 64"))
  file.write(tracer.send_store(1, 64, 0, False, 170))
  file.write(tracer.recv_data(0))
  file.write(tracer.print_comment("Load signed byte from address 64"))
  file.write(tracer.send_load(True, 1, 64, 0, False))
  file.write(tracer.recv_data(-86))
 
  file.write(tracer.print_comment("Load unsigned byte from address 64"))
  file.write(tracer.send_load(False, 1, 64, 0, False))
  file.write(tracer.recv_data(170))

  file.write(tracer.print_comment("Store/Load unsigned/signed byte test done\n"))
  file.write(tracer.test_finish())

  file.close()

  # Store/Load halfword test (signed and unsigned)
  file = open("test_sh_lh.tr", "w")

  file.write(tracer.print_header())
  file.write(tracer.print_comment("Store halfword to address 128"))
  file.write(tracer.print_comment("Wait for SYNC"))
  file.write(tracer.wait(65))
  file.write(tracer.send_store(2, 128, 0, False, 43690))
  file.write(tracer.recv_data(0))
  file.write(tracer.print_comment("Load signed halfword from address 128"))
  file.write(tracer.send_load(True, 2, 128, 0, False))
  file.write(tracer.recv_data(-21846))

  file.write(tracer.print_comment("Load unsigned halfword from address 128"))
  file.write(tracer.send_load(False, 2, 128, 0, False))
  file.write(tracer.recv_data(43690))

  file.write(tracer.print_comment("Store/Load unsigned/signed halfword test done\n"))
  file.write(tracer.test_finish())

  file.close()

  # Store/Load word test (signed and unsigned)
  file = open("test_sw_lw.tr", "w")

  file.write(tracer.print_header())
  file.write(tracer.print_comment("Wait for SYNC"))
  file.write(tracer.wait(65))
  file.write(tracer.print_comment("Store word to address 192"))
  file.write(tracer.send_store(4, 192, 0, False, 2863311530))
  file.write(tracer.recv_data(0))
  file.write(tracer.print_comment("Load signed word from address 192"))
  file.write(tracer.send_load(True, 4, 192, 0, False))
  file.write(tracer.recv_data(-1431655766))

  file.write(tracer.print_comment("Load unsigned word from address 192"))
  file.write(tracer.send_load(False, 4, 192, 0, False))
  file.write(tracer.recv_data(2863311530))

  file.write(tracer.print_comment("Store/Load unsigned/signed word test done\n"))
  file.write(tracer.test_finish())

  file.close()

  # Store to same index with 9 different ptags (to verify writeback)
  file = open("test_wb.tr", "w")

  file.write(tracer.print_header())
  file.write(tracer.print_comment("Wait for SYNC"))
  file.write(tracer.wait(65))
  file.write(tracer.print_comment("Store to address - 256, 4352, 8448, 12544, 16640, 20736, 24832, 28928"))
  for i in range(8, 72, 8):
    temp_ptag = ((i-1) >> 3)
    file.write(tracer.send_store(8, 256, temp_ptag, False, i))
    file.write(tracer.recv_data(0))

  file.write(tracer.print_comment("Load from the above addresses to verify store."))
  for i in range(8, 72, 8):
    temp_ptag = (i-1) >> 3
    file.write(tracer.send_load(True, 8, 256, temp_ptag, False))
    file.write(tracer.recv_data(i))

  file.write(tracer.print_comment("Store to same cache index but different physical address - address 33024"))
  file.write(tracer.send_store(8, 256, 8, False, 72))
  file.write(tracer.print_comment("Receive zero (to dequeue fifo)"))
  file.write(tracer.recv_data(0))
  file.write(tracer.print_comment("Load from address 33024"))
  file.write(tracer.send_load(True, 8, 256, 8, False))
  file.write(tracer.recv_data(72))
  file.write(tracer.print_comment("Load from address - 256"))
  file.write(tracer.send_load(True, 8, 256, 0, False))
  file.write(tracer.recv_data(8))
  file.write(tracer.print_comment("Load from address 33024"))
  file.write(tracer.send_load(True, 8, 256, 8, False))
  file.write(tracer.recv_data(72))

  file.write(tracer.print_comment("Writeback, Eviction and Replacement successfully tested"))
  file.write(tracer.test_finish())

  file.close()

  # Uncached Store/Load
  file = open("test_uncached.tr", "w")
  
  file.write(tracer.print_header())
  file.write(tracer.print_comment("Wait for SYNC"))
  file.write(tracer.wait(65))
  file.write(tracer.print_comment("Store to address 320 in uncached mode"))
  file.write(tracer.send_store(8, 320, 0, True, 320))
  file.write(tracer.recv_data(0))
  file.write(tracer.print_comment("Load from address 320 in uncached mode"))
  file.write(tracer.send_load(True, 8, 320, 0, True))
  file.write(tracer.recv_data(320))
  file.write(tracer.test_finish())
  file.close()

  # Unaligned accesses
  file = open("test_unaligned.tr", "w")

  file.write(tracer.print_header())
  file.write(tracer.print_comment("Wait for SYNC"))
  file.write(tracer.wait(65))
  file.write(tracer.print_comment("Store byte to address - 7"))
  file.write(tracer.send_store(1, 7, 0, False, 255))
  file.write(tracer.recv_data(0))
  file.write(tracer.print_comment("Store halfword to address - 2"))
  file.write(tracer.send_store(2, 2, 0, False, 1010))
  file.write(tracer.recv_data(0))
  file.write(tracer.print_comment("Load byte from address - 7"))
  file.write(tracer.send_load(False, 1, 7, 0, False))
  file.write(tracer.recv_data(255))
  file.write(tracer.print_comment("Load halfword from address - 2"))
  file.write(tracer.send_load(False, 2, 2, 0, False))
  file.write(tracer.recv_data(1010))
  file.write(tracer.print_comment("Store word to address - 4"))
  file.write(tracer.send_store(4, 4, 0, False, 70000))
  file.write(tracer.recv_data(0))
  file.write(tracer.print_comment("Load word from address - 4"))
  file.write(tracer.send_load(False, 4, 4, 0, False))
  file.write(tracer.recv_data(70000))
  file.write(tracer.print_comment("Store \"byte\" to address - 1"))
  file.write(tracer.send_store(1, 1, 0, False, 256))
  file.write(tracer.recv_data(0))
  file.write(tracer.print_comment("Load byte from address - 1"))
  file.write(tracer.send_load(False, 1, 1, 0, False))
  file.write(tracer.recv_data(0))

  file.write(tracer.test_finish())
  
  file.close()
Esempio n. 12
0
#   bsg_trace_rom.py
#

import sys
import random

sys.path.append("../../../software/py/")
from trace_gen import TraceGen

num_lce_p = int(sys.argv[1])
id_p = int(sys.argv[2])
num_instr = int(sys.argv[3])
seed_p = int(sys.argv[4]) + id_p if len(sys.argv) >= 5 else None
random.seed(seed_p)

tg = TraceGen(addr_width_p=56, data_width_p=64)

# preamble
tg.print_header()

print("# seed: {0}".format(seed_p))

# test begin
store_val = num_lce_p if id_p == 0 else id_p

for i in range(num_instr):
    load_not_store = random.randint(0, 1)
    tag = random.randint(0, 15) << 10
    block_offset = random.randint(0, 7) << 3
    addr = tag + block_offset
    if (load_not_store):