6d73c896e459d9bd16a3b1af658fb4fb18e40d3d
1 from bsv
.peripheral_gen
.base
import PBase
7 return "import FlexBus_Types::*;"
9 def num_axi_regs32(self
):
10 return 0x4000000 # defines an entire memory range
12 def extfastifinstance(self
, name
, count
):
13 return self
._extifinstance
(name
, count
, "_out", "", True,
16 def fastifdecl(self
, name
, count
):
17 return "interface FlexBus_Master_IFC fb{0}_out;".format(count
)
19 def mkfast_peripheral(self
):
20 return "AXI4_Slave_to_FlexBus_Master_Xactor_IFC " + \
21 "#(`PADDR, `DATA, `USERSPACE)\n" + \
22 " fb{0} <- mkAXI4_Slave_to_FlexBus_Master_Xactor;"
24 def _mk_connection(self
, name
=None, count
=0):
25 return "fb{0}.axi_side"
27 def pinname_in(self
, pname
):
28 return {'ta': 'flexbus_side.m_tAn',
31 def pinname_out(self
, pname
):
32 return {'ale': 'flexbus_side.m_ALE',
33 'oe': 'flexbus_side.m_OEn',
34 'rw': 'flexbus_side.m_R_Wn',
37 def _mk_pincon(self
, name
, count
, typ
):
38 ret
= [PBase
._mk
_pincon
(self
, name
, count
, typ
)]
39 # special-case for gpio in, store in a temporary vector
40 plen
= len(self
.peripheral
.pinspecs
)
41 template
= "mkConnection({0}.{3},\n\t\t\t{2}.flexbus_side.{1});"
42 sname
= self
.get_iname(count
)
43 # SLOW -->sname = self.peripheral.iname().format(count)
44 name
= self
.get_iname(count
)
45 assert typ
== 'fast' # TODO slow?
46 ps
= "slow_peripherals.%s" % sname
47 n
= "{0}".format(name
)
55 ('ad_out_en', 'm_OE32n'),
57 ret
.append(template
.format(ps
, ptype
, n
, stype
))