litex/litescope/host/dump/csv.py

53 lines
1.1 KiB
Python

from litescope.host.dump import *
class CSVDump(Dump):
def __init__(self, init_dump=None):
Dump.__init__(self)
if init_dump:
self.vars = init_dump.vars
def generate_vars(self):
r = ""
for var in self.vars:
r += var.name
r += ","
r += "\n"
for var in self.vars:
r += str(var.width)
r += ","
r += "\n"
return r
def generate_dumpvars(self):
r = ""
for i in range(len(self)):
for var in self.vars:
try:
var.val = var.values[i]
except:
pass
if var.val == "x":
r += "x"
else:
r += dec2bin(var.val, var.width)
r += ", "
r+= "\n"
return r
def write(self, filename):
f = open(filename, "w")
f.write(self.generate_vars())
f.write(self.generate_dumpvars())
f.close()
def read(self, filename):
raise NotImplementedError("CSV files can not (yet) be read, please contribute!")
if __name__ == '__main__':
dump = CSVDump()
dump.add(Var("foo1", 1, [0,1,0,1,0,1]))
dump.add(Var("foo2", 2, [1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0]))
ramp = [i%128 for i in range(1024)]
dump.add(Var("ramp", 16, ramp))
dump.write("dump.csv")