integration/soc: review/simplify interconnect and add logger.info.

This commit is contained in:
Florent Kermarrec 2020-05-13 18:26:54 +02:00
parent 78413cc09e
commit 51742be2bb
1 changed files with 21 additions and 21 deletions

View File

@ -822,27 +822,27 @@ class SoC(Module):
self.logger.info(colorer("-"*80, color="bright")) self.logger.info(colorer("-"*80, color="bright"))
# SoC Bus Interconnect --------------------------------------------------------------------- # SoC Bus Interconnect ---------------------------------------------------------------------
bus_masters = self.bus.masters.values() if len(self.bus.masters) and len(self.bus.slaves):
bus_slaves = [(self.bus.regions[n].decoder(self.bus), s) for n, s in self.bus.slaves.items()] # If 1 bus_master, 1 bus_slave and no address translation, use InterconnectPointToPoint.
if ((len(self.bus.masters) == 1) and
use_p2p = False (len(self.bus.slaves) == 1) and
if len(bus_masters) == 1 and len(bus_slaves) == 1: (next(iter(self.bus.regions.values())).origin == 0)):
n = list(self.bus.slaves)[0]
if self.bus.regions[n].origin == 0:
use_p2p = True
if use_p2p:
self.submodules.bus_interconnect = wishbone.InterconnectPointToPoint( self.submodules.bus_interconnect = wishbone.InterconnectPointToPoint(
master = list(bus_masters)[0], master = next(iter(self.bus.masters.values())),
slave = list(self.bus.slaves.values())[0]) slave = next(iter(self.bus.slaves.values())))
elif len(bus_masters) and len(bus_slaves): # Otherwise, use InterconnectShared.
else:
self.submodules.bus_interconnect = wishbone.InterconnectShared( self.submodules.bus_interconnect = wishbone.InterconnectShared(
masters = bus_masters, masters = self.bus.masters.values(),
slaves = bus_slaves, slaves = [(self.bus.regions[n].decoder(self.bus), s) for n, s in self.bus.slaves.items()],
register = True, register = True,
timeout_cycles = self.bus.timeout) timeout_cycles = self.bus.timeout)
if hasattr(self, "ctrl") and self.bus.timeout is not None: if hasattr(self, "ctrl") and self.bus.timeout is not None:
self.comb += self.ctrl.bus_error.eq(self.bus_interconnect.timeout.error) self.comb += self.ctrl.bus_error.eq(self.bus_interconnect.timeout.error)
self.bus.logger.info("Interconnect: {} ({} <-> {}).".format(
colorer(self.bus_interconnect.__class__.__name__),
colorer(len(self.bus.masters)),
colorer(len(self.bus.slaves))))
# SoC CSR Interconnect --------------------------------------------------------------------- # SoC CSR Interconnect ---------------------------------------------------------------------
self.submodules.csr_bankarray = csr_bus.CSRBankArray(self, self.submodules.csr_bankarray = csr_bus.CSRBankArray(self,