return '\n'.join(ret)
+ def num_irqs(self):
+ return 1
+
+ def plic_object(self, pname, idx):
+ return "{0}_interrupt.read".format(pname)
+
+ def mk_plic(self, inum, irq_offs):
+ name = "{0}{1}".format(self.name, self.mksuffix(self.name, inum))
+ ret = [uart_plic_template.format(name, irq_offs)]
+ (ret2, irq_offs) = PBase.mk_plic(self, inum, irq_offs)
+ ret.append(ret2)
+ return ('\n'.join(ret), irq_offs)
+
+uart_plic_template = """\
+ // PLIC {0} synchronisation with irq {1}
+ SyncBitIfc#(Bit#(1)) {0}_interrupt <-
+ mkSyncBitToCC(sp_clock, uart_reset);
+ rule plic_synchronize_{0}_interrupt_{1};
+ {0}_interrupt.send({0}.irq);
+ endrule
+"""
class rs232(PBase):