d609d34b465302d067df243d3e6665f41a91bf88
4 def axibase(self
, name
, ifacenum
):
6 return "%(name)s%(ifacenum)dBase" % locals()
8 def axiend(self
, name
, ifacenum
):
10 return "%(name)s%(ifacenum)dEnd" % locals()
12 def axi_reg_def(self
, start
, name
, ifacenum
):
14 offs
= self
.num_axi_regs32() * 4 * 16
15 end
= start
+ offs
- 1
16 bname
= self
.axibase(name
, ifacenum
)
17 bend
= self
.axiend(name
, ifacenum
)
18 comment
= "%d 32-bit regs" % self
.num_axi_regs32()
19 return (" `define%(bname)s 'h%(start)08X\n"
20 " `define%(bend)s 'h%(end)08X // %(comment)s" % locals(),
23 def axi_slave_idx(self
, idx
, name
, ifacenum
):
25 return ("typedef {0} {1}{2}_slave_num;".format(idx
, name
, ifacenum
), 1)
30 return " import Uart16550 :: *;"
33 return " interface RS232_PHY_Ifc uart{0}_coe;\n" + \
34 " method Bit#(1) uart{0}_intr;"
36 def num_axi_regs32(self
):
42 return " import Uart_bs::*;\n" + \
43 " import RS232_modified::*;"
46 return " interface RS232 uart{0}_coe;"
48 def num_axi_regs32(self
):
54 return " import I2C_top :: *;"
57 return " interface I2C_out i2c{0}_out;\n" + \
58 " method Bit#(1) i2c{0}_isint;"
60 def num_axi_regs32(self
):
66 return " import qspi :: *;"
69 return " interface QSPI_out qspi{0}_out;\n" + \
70 " method Bit#(1) qspi{0}_isint;"
72 def num_axi_regs32(self
):
78 return " import pwm::*;"
81 return " interface PWMIO pwm_o;"
83 def num_axi_regs32(self
):
89 return " import pinmux::*;\n" + \
90 " import mux::*;\n" + \
94 return " interface GPIO_config#({1}) pad_config{0};"
96 def num_axi_regs32(self
):
99 def axi_slave_idx(self
, idx
, name
, ifacenum
):
100 """ generates AXI slave number definition, except
101 GPIO also has a muxer per bank
104 (ret
, x
) = PBase
.axi_slave_idx(self
, idx
, name
, ifacenum
)
105 (ret2
, x
) = PBase
.axi_slave_idx(self
, idx
, "mux", ifacenum
)
106 return ("%s\n%s" % (ret
, ret2
), 2)
109 axi_slave_declarations
= """\
110 typedef 0 SlowMaster;
112 typedef TAdd#(LastGen_slave_num,`ifdef CLINT 1 `else 0 `endif )
114 typedef TAdd#(CLINT_slave_num ,`ifdef PLIC 1 `else 0 `endif )
116 typedef TAdd#(Plic_slave_num ,`ifdef AXIEXP 1 `else 0 `endif )
118 typedef TAdd#(AxiExp1_slave_num,1) Num_Slow_Slaves;
122 class PFactory(object):
123 def getcls(self
, name
):
124 return {'uart': uart
,