code-shuffle to use axi slave fast bus
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 25 Jul 2018 08:18:51 +0000 (09:18 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 25 Jul 2018 08:18:51 +0000 (09:18 +0100)
src/bsv/peripheral_gen/base.py
src/bsv/peripheral_gen/eint.py
src/bsv/peripheral_gen/gpio.py
src/bsv/peripheral_gen/jtag.py

index 4e17b4b97f0bd1e9b8dade2862bc63d95dbd7909..0ef4cd27be63247560532b959f73efa33725db33 100644 (file)
@@ -45,12 +45,16 @@ class PBase(object):
                 "    `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()
-        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):
@@ -262,10 +266,10 @@ class PeripheralIface(object):
             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)
-        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:
@@ -333,13 +337,13 @@ class PeripheralInterfaces(object):
                 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
-                (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
@@ -349,7 +353,11 @@ class PeripheralInterfaces(object):
 
     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 = []
index 825f3eb24ce3db9db39ef2b941f165990794aec2..e67aa8e559d92f9cddcacc7475e48b45742d564e 100644 (file)
@@ -14,7 +14,7 @@ class eint(PBase):
     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):
index 418454ba8eadb62d58e6f62638b5cd6645fc5891..90671a569a0ec586cb639526f066be117565af6e 100644 (file)
@@ -16,7 +16,7 @@ class gpio(PBase):
     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
         """
@@ -24,8 +24,8 @@ class gpio(PBase):
         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):
index 3ccf6adc2001221e7ae11141146077bb80c0e1cf..45025c61bc878336d325c9dcdf62ee5aac4e9d67 100644 (file)
@@ -17,10 +17,10 @@ class jtag(PBase):
             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 ''
 
-    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):