Skip to content

Commit

Permalink
Fix parsing of CSR files containing a header.
Browse files Browse the repository at this point in the history
68f1249 introduced a (generated) header when generating csr csv files. The
csr builder however did not know how to handle this header. This commit does a
little refactoring of the file and adds the ability to skip lines that start
with a comment when parsing csv files.
  • Loading branch information
Kees committed Apr 24, 2019
1 parent 0f60ec3 commit 0a34b3d
Showing 1 changed file with 7 additions and 8 deletions.
15 changes: 7 additions & 8 deletions litex/tools/remote/csr_builder.py
Expand Up @@ -74,19 +74,20 @@ def __init__(self, comm, csr_csv, csr_data_width=None):
self.regs = self.build_registers(csr_csv, comm.read, comm.write)
self.mems = self.build_memories(csr_csv)

def __get_reader(self, csr_csv):
return csv.reader(filter(lambda row: row[0]!='#',open(csr_csv)), delimiter=',', quotechar='#')

def build_bases(self, csr_csv):
csv_reader = csv.reader(open(csr_csv), delimiter=',', quotechar='#')
d = {}
for item in csv_reader:
for item in self.__get_reader(csr_csv):
group, name, addr, dummy0, dummy1 = item
if group == "csr_base":
d[name] = int(addr.replace("0x", ""), 16)
return CSRElements(d)

def build_registers(self, csr_csv, readfn, writefn):
csv_reader = csv.reader(open(csr_csv), delimiter=',', quotechar='#')
d = {}
for item in csv_reader:
for item in self.__get_reader(csr_csv):
group, name, addr, length, mode = item
if group == "csr_register":
addr = int(addr.replace("0x", ""), 16)
Expand All @@ -95,9 +96,8 @@ def build_registers(self, csr_csv, readfn, writefn):
return CSRElements(d)

def build_constants(self, csr_csv):
csv_reader = csv.reader(open(csr_csv), delimiter=',', quotechar='#')
d = {}
for item in csv_reader:
for item in self.__get_reader(csr_csv):
group, name, value, dummy0, dummy1 = item
if group == "constant":
try:
Expand All @@ -107,9 +107,8 @@ def build_constants(self, csr_csv):
return CSRElements(d)

def build_memories(self, csr_csv):
csv_reader = csv.reader(open(csr_csv), delimiter=',', quotechar='#')
d = {}
for item in csv_reader:
for item in self.__get_reader(csr_csv):
group, name, base, size, dummy1 = item
if group == "memory_region":
d[name] = CSRMemoryRegion(int(base, 16), int(size))
Expand Down

0 comments on commit 0a34b3d

Please sign in to comment.