self.core_busy = Signal() # core is running (busy)
# instruction and data bus: 64-bit, 48 bit addressing
+ # sigh self.ibus = wishbone.Interface(data_width=32, adr_width=48)
self.ibus = wishbone.Interface(data_width=64, adr_width=48)
self.dbus = wishbone.Interface(data_width=64, adr_width=48)
o_ibus__cti = self.ibus.cti,
o_ibus__bte = self.ibus.bte,
o_ibus__we = self.ibus.we,
- o_ibus__adr = Cat(Signal(3), self.ibus.adr), # 64-bit
+ #o_ibus__adr = self.ibus.adr, # 64-bit
+ sigh o_ibus__adr = Cat(Signal(3), self.ibus.adr), # 64-bit
o_ibus__dat_w = self.ibus.dat_w,
o_ibus__sel = self.ibus.sel,
i_ibus__ack = self.ibus.ack,
for i in range(mem.depth):
yield mem._array[i].eq(0)
yield Settle()
- startaddr //= 4 # instructions are 32-bit
- mask = ((1 << 64)-1)
+ startaddr //= 4 # instructions are 32-bit
+ if mem.width == 32:
+ mask = ((1<<32)-1)
+ for ins in instructions:
+ if isinstance(ins, tuple):
+ insn, code = ins
+ else:
+ insn, code = ins, ''
+ insn = insn & 0xffffffff
+ yield mem._array[startaddr].eq(insn)
+ yield Settle()
+ if insn != 0:
+ print ("instr: %06x 0x%x %s" % (4*startaddr, insn, code))
+ startaddr += 1
+ startaddr = startaddr & mask
+ return
+
+ # 64 bit
+ mask = ((1<<64)-1)
for ins in instructions:
if isinstance(ins, tuple):
insn, code = ins
imem_ifacetype='test_bare_wb',
addr_wid=48,
mask_wid=8,
+ imem_reg_wid=64,
reg_wid=64)
m.submodules.issuer = issuer = TestIssuer(pspec)
imem = issuer.imem._get_memory()