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()
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
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
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])
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
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)
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()
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()
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()
# 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):