self.interrupt = Signal(BV(32))
self.ext_break = Signal()
self._inst = Instance("lm32_top",
- [("I_ADR_O", BV(32)),
- ("I_DAT_O", i.dat_w),
- ("I_SEL_O", i.sel),
- ("I_CYC_O", i.cyc),
- ("I_STB_O", i.stb),
- ("I_WE_O", i.we),
- ("I_CTI_O", i.cti),
- ("I_LOCK_O", BV(1)),
- ("I_BTE_O", i.bte),
- ("D_ADR_O", BV(32)),
- ("D_DAT_O", d.dat_w),
- ("D_SEL_O", d.sel),
- ("D_CYC_O", d.cyc),
- ("D_STB_O", d.stb),
- ("D_WE_O", d.we),
- ("D_CTI_O", d.cti),
- ("D_LOCK_O", BV(1)),
- ("D_BTE_O", d.bte)],
+ Instance.ClockPort("clk_i"),
+ Instance.ResetPort("rst_i"),
- [("interrupt", self.interrupt),
- #("ext_break", self.ext_break),
- ("I_DAT_I", i.dat_r),
- ("I_ACK_I", i.ack),
- ("I_ERR_I", i.err),
- ("I_RTY_I", BV(1)),
- ("D_DAT_I", d.dat_r),
- ("D_ACK_I", d.ack),
- ("D_ERR_I", d.err),
- ("D_RTY_I", BV(1))],
+ Instance.Input("interrupt", self.interrupt),
+ #Instance.Input("ext_break", self.ext_break),
+
+ Instance.Output("I_ADR_O", BV(32)),
+ Instance.Output("I_DAT_O", i.dat_w),
+ Instance.Output("I_SEL_O", i.sel),
+ Instance.Output("I_CYC_O", i.cyc),
+ Instance.Output("I_STB_O", i.stb),
+ Instance.Output("I_WE_O", i.we),
+ Instance.Output("I_CTI_O", i.cti),
+ Instance.Output("I_LOCK_O", BV(1)),
+ Instance.Output("I_BTE_O", i.bte),
+ Instance.Input("I_DAT_I", i.dat_r),
+ Instance.Input("I_ACK_I", i.ack),
+ Instance.Input("I_ERR_I", i.err),
+ Instance.Input("I_RTY_I", BV(1)),
- [],
-
- "clk_i",
- "rst_i",
- "lm32")
+ Instance.Output("D_ADR_O", BV(32)),
+ Instance.Output("D_DAT_O", d.dat_w),
+ Instance.Output("D_SEL_O", d.sel),
+ Instance.Output("D_CYC_O", d.cyc),
+ Instance.Output("D_STB_O", d.stb),
+ Instance.Output("D_WE_O", d.we),
+ Instance.Output("D_CTI_O", d.cti),
+ Instance.Output("D_LOCK_O", BV(1)),
+ Instance.Output("D_BTE_O", d.bte),
+ Instance.Input("D_DAT_I", d.dat_r),
+ Instance.Input("D_ACK_I", d.ack),
+ Instance.Input("D_ERR_I", d.err),
+ Instance.Input("D_RTY_I", BV(1)))
def get_fragment(self):
comb = [
- self._inst.ins["I_RTY_I"].eq(0),
- self._inst.ins["D_RTY_I"].eq(0),
- self.ibus.adr.eq(self._inst.outs["I_ADR_O"][2:]),
- self.dbus.adr.eq(self._inst.outs["D_ADR_O"][2:])
+ self._inst.get_io("I_RTY_I").eq(0),
+ self._inst.get_io("D_RTY_I").eq(0),
+ self.ibus.adr.eq(self._inst.get_io("I_ADR_O")[2:]),
+ self.dbus.adr.eq(self._inst.get_io("D_ADR_O")[2:])
]
return Fragment(comb=comb, instances=[self._inst])