projects
/
pinmux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
ad9e7eb
)
code-shuffle to use axi slave fast bus
author
Luke Kenneth Casson Leighton
<lkcl@lkcl.net>
Wed, 25 Jul 2018 08:18:51 +0000
(09:18 +0100)
committer
Luke Kenneth Casson Leighton
<lkcl@lkcl.net>
Wed, 25 Jul 2018 08:18:51 +0000
(09:18 +0100)
src/bsv/peripheral_gen/base.py
patch
|
blob
|
history
src/bsv/peripheral_gen/eint.py
patch
|
blob
|
history
src/bsv/peripheral_gen/gpio.py
patch
|
blob
|
history
src/bsv/peripheral_gen/jtag.py
patch
|
blob
|
history
diff --git
a/src/bsv/peripheral_gen/base.py
b/src/bsv/peripheral_gen/base.py
index 4e17b4b97f0bd1e9b8dade2862bc63d95dbd7909..0ef4cd27be63247560532b959f73efa33725db33 100644
(file)
--- a/
src/bsv/peripheral_gen/base.py
+++ b/
src/bsv/peripheral_gen/base.py
@@
-45,12
+45,16
@@
class PBase(object):
" `define %(bend)s 'h%(end)08X // %(comment)s" % locals(),
offs)
" `define %(bend)s 'h%(end)08X // %(comment)s" % locals(),
offs)
- def axi_
slave
_name(self, name, ifacenum):
+ def axi_
master
_name(self, name, ifacenum):
name = name.upper()
name = name.upper()
- return "{0}{1}_
slave
_num".format(name, ifacenum)
+ return "{0}{1}_
laster
_num".format(name, ifacenum)
- def axi_slave_idx(self, idx, name, ifacenum):
- name = self.axi_slave_name(name, ifacenum)
+ def axi_slave_name(self, name, ifacenum, typ=''):
+ name = name.upper()
+ return "{0}{1}_{2}slave_num".format(name, ifacenum, typ)
+
+ def axi_slave_idx(self, idx, name, ifacenum, typ):
+ name = self.axi_slave_name(name, ifacenum, typ)
return ("typedef {0} {1};".format(idx, name), 1)
def axi_addr_map(self, name, ifacenum):
return ("typedef {0} {1};".format(idx, name), 1)
def axi_addr_map(self, name, ifacenum):
@@
-262,10
+266,10
@@
class PeripheralIface(object):
return ('', 0)
return self.slow.axi_reg_def(start, self.ifacename, count)
return ('', 0)
return self.slow.axi_reg_def(start, self.ifacename, count)
- def axi_slave_idx(self, start, count):
+ def axi_slave_idx(self, start, count
, typ
):
if not self.slow:
return ('', 0)
if not self.slow:
return ('', 0)
- return self.slow.axi_slave_idx(start, self.ifacename, count)
+ return self.slow.axi_slave_idx(start, self.ifacename, count
, typ
)
def axi_addr_map(self, count):
if not self.slow:
def axi_addr_map(self, count):
if not self.slow:
@@
-333,13
+337,13
@@
class PeripheralInterfaces(object):
start += offs
return '\n'.join(list(filter(None, ret)))
start += offs
return '\n'.join(list(filter(None, ret)))
- def _axi_num_idx(self, start, template, typ,
getfn
, *args):
+ def _axi_num_idx(self, start, template, typ,
idxtype
, *args):
ret = []
for (name, count) in self.ifacecount:
for i in range(count):
if self.is_on_fastbus(name, i):
continue
ret = []
for (name, count) in self.ifacecount:
for i in range(count):
if self.is_on_fastbus(name, i):
continue
- (rdef, offs) =
getattr(self.data[name], getfn)(start, i
)
+ (rdef, offs) =
self.data[name].axi_slave_idx(start, i, idxtype
)
#print ("ifc", name, rdef, offs)
ret.append(rdef)
start += offs
#print ("ifc", name, rdef, offs)
ret.append(rdef)
start += offs
@@
-349,7
+353,11
@@
class PeripheralInterfaces(object):
def axi_slave_idx(self, *args):
return self._axi_num_idx(0, axi_slave_declarations, 'slave',
def axi_slave_idx(self, *args):
return self._axi_num_idx(0, axi_slave_declarations, 'slave',
- 'axi_slave_idx', *args)
+ '', *args)
+
+ def axi_fastslave_idx(self, *args):
+ return self._axi_num_idx(0, axi_fastslave_declarations, 'fastslave',
+ 'fast', *args)
def axi_addr_map(self, *args):
ret = []
def axi_addr_map(self, *args):
ret = []
diff --git
a/src/bsv/peripheral_gen/eint.py
b/src/bsv/peripheral_gen/eint.py
index 825f3eb24ce3db9db39ef2b941f165990794aec2..e67aa8e559d92f9cddcacc7475e48b45742d564e 100644
(file)
--- a/
src/bsv/peripheral_gen/eint.py
+++ b/
src/bsv/peripheral_gen/eint.py
@@
-14,7
+14,7
@@
class eint(PBase):
def axi_slave_name(self, name, ifacenum):
return ''
def axi_slave_name(self, name, ifacenum):
return ''
- def axi_slave_idx(self, idx, name, ifacenum):
+ def axi_slave_idx(self, idx, name, ifacenum
, typ
):
return ('', 0)
def axi_addr_map(self, name, ifacenum):
return ('', 0)
def axi_addr_map(self, name, ifacenum):
diff --git
a/src/bsv/peripheral_gen/gpio.py
b/src/bsv/peripheral_gen/gpio.py
index 418454ba8eadb62d58e6f62638b5cd6645fc5891..90671a569a0ec586cb639526f066be117565af6e 100644
(file)
--- a/
src/bsv/peripheral_gen/gpio.py
+++ b/
src/bsv/peripheral_gen/gpio.py
@@
-16,7
+16,7
@@
class gpio(PBase):
def num_axi_regs32(self):
return 2
def num_axi_regs32(self):
return 2
- def axi_slave_idx(self, idx, name, ifacenum):
+ def axi_slave_idx(self, idx, name, ifacenum
, typ
):
""" generates AXI slave number definition, except
GPIO also has a muxer per bank
"""
""" generates AXI slave number definition, except
GPIO also has a muxer per bank
"""
@@
-24,8
+24,8
@@
class gpio(PBase):
mname = 'mux' + name[4:]
mname = mname.upper()
print "AXIslavenum", name, mname
mname = 'mux' + name[4:]
mname = mname.upper()
print "AXIslavenum", name, mname
- (ret, x) = PBase.axi_slave_idx(self, idx, name, ifacenum)
- (ret2, x) = PBase.axi_slave_idx(self, idx + 1, mname, ifacenum)
+ (ret, x) = PBase.axi_slave_idx(self, idx, name, ifacenum
, typ
)
+ (ret2, x) = PBase.axi_slave_idx(self, idx + 1, mname, ifacenum
, typ
)
return ("%s\n%s" % (ret, ret2), 2)
def mkslow_peripheral(self, size=0):
return ("%s\n%s" % (ret, ret2), 2)
def mkslow_peripheral(self, size=0):
diff --git
a/src/bsv/peripheral_gen/jtag.py
b/src/bsv/peripheral_gen/jtag.py
index 3ccf6adc2001221e7ae11141146077bb80c0e1cf..45025c61bc878336d325c9dcdf62ee5aac4e9d67 100644
(file)
--- a/
src/bsv/peripheral_gen/jtag.py
+++ b/
src/bsv/peripheral_gen/jtag.py
@@
-17,10
+17,10
@@
class jtag(PBase):
jtag{0}.scan_out_5_i(1'b0);
endrule
"""
jtag{0}.scan_out_5_i(1'b0);
endrule
"""
- def axi_slave_name(self, name, ifacenum):
+ def axi_slave_name(self, name, ifacenum
, typ=''
):
return ''
return ''
- def axi_slave_idx(self, idx, name, ifacenum):
+ def axi_slave_idx(self, idx, name, ifacenum
, typ
):
return ('', 0)
def axi_addr_map(self, name, ifacenum):
return ('', 0)
def axi_addr_map(self, name, ifacenum):