Commit a55ba658 authored by Jan Pospisil's avatar Jan Pospisil

made SV test-vectors generation universal for different register word sizes

parent bcd4ba2d
......@@ -44,7 +44,6 @@ class WbOverlay(object):
debug = False # output low-level transactions
debugSv = False # write SystemVerilog file with all low-level transactions
debugSvFp = None # 'file' object of SystemVerilog debugging output file
offsetMult = 4 # for byte/word conversion for SV debug output
def __init__(self, drvName, lun):
self.module = encoreio.Module.get_instance(drvName, lun)
......@@ -82,6 +81,12 @@ class WbOverlay(object):
self.debugSvFp.write("int errors = 0;\n")
self.debugSvFp.write("\n")
self.debugSv = True
def _GetRegisterByteAddress(self, RegisterName, Offset = 0):
Register = self.module[RegisterName]
RegisterAddress = int(Register["offset"], 16)
RegisterWordSize = encoreio._Register.wsize_to_dwidth[Register['wsize']]
return RegisterAddress + Offset*RegisterWordSize/8
def Read(self, register, Offset = 0):
result = self.module.read(register, start = Offset, to = Offset+1)[0]
......@@ -90,7 +95,7 @@ class WbOverlay(object):
RegNameVerbose = RegNameVerbose + " + 0x%x" % Offset
self.PrintDebug(ConColors.MAGENTA+"WB_READ:"+ConColors.NONE+" ["+RegNameVerbose+"] = "+hex(result))
if self.debugSv:
address = int(self.module[register]["offset"], 16) + Offset*self.offsetMult
address = self._GetRegisterByteAddress(register, Offset)
self.debugSvFp.write("WbRead(32'h%08x, dataOut, \"WB_READ: %s:\");\n" % (address, RegNameVerbose))
self.debugSvFp.write("assert (dataOut == 32'h%08x) else begin\n" % result)
self.debugSvFp.write(" $error(\"WB_READ different, result should be "+hex(int(result))+"!\");\n")
......@@ -104,7 +109,7 @@ class WbOverlay(object):
RegNameVerbose = RegNameVerbose + " + 0x%x" % Offset
self.PrintDebug(ConColors.CYAN+"WB_WRITE:"+ConColors.NONE+" ["+RegNameVerbose+"] <- "+hex(data))
if self.debugSv:
address = int(self.module[register]["offset"], 16) + Offset*self.offsetMult
address = self._GetRegisterByteAddress(register, Offset)
self.debugSvFp.write("WbWrite(32'h%08x, 32'h%08x, \"WB_WRITE: %s:\");\n" % (address, data, RegNameVerbose))
self.module.write(register, (data,), start = Offset, to = Offset+1)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment