Skip to content

Commit

Permalink
lasmicon: better management of optional bandwidth module (automatical…
Browse files Browse the repository at this point in the history
…ly inserted by -Ot with_memtest True)
enjoy-digital committed Mar 3, 2015
1 parent ff29c86 commit 9df60bf
Showing 2 changed files with 17 additions and 7 deletions.
17 changes: 11 additions & 6 deletions misoclib/mem/sdram/core/lasmicon/multiplexer.py
Original file line number Diff line number Diff line change
@@ -90,13 +90,13 @@ def stb_and(cmd, attr):

class Multiplexer(Module, AutoCSR):
def __init__(self, phy, geom_settings, timing_settings, bank_machines, refresher, dfi, lasmic,
with_bandwidth_measurement=False):
with_bandwidth=False):
assert(phy.settings.nphases == len(dfi.phases))

# Command choosing
requests = [bm.cmd for bm in bank_machines]
choose_cmd = _CommandChooser(requests)
choose_req = _CommandChooser(requests)
self.submodules.choose_cmd = choose_cmd = _CommandChooser(requests)
self.submodules.choose_req = choose_req = _CommandChooser(requests)
self.comb += [
choose_cmd.want_reads.eq(0),
choose_cmd.want_writes.eq(0)
@@ -106,7 +106,6 @@ def __init__(self, phy, geom_settings, timing_settings, bank_machines, refresher
choose_cmd.want_cmds.eq(1),
choose_req.want_cmds.eq(1)
]
self.submodules += choose_cmd, choose_req

# Command steering
nop = CommandRequest(geom_settings.mux_a, geom_settings.bank_a)
@@ -212,5 +211,11 @@ def steerer_sel(steerer, phy, r_w_n):
fsm.finalize()
self.comb += refresher.ack.eq(fsm.state == fsm.encoding["REFRESH"])

if with_bandwidth_measurement:
self.submodules.bandwidth = Bandwidth(choose_req.cmd)
self.with_bandwidth = with_bandwidth

def add_bandwidth(self):
self.with_bandwidth = True

def do_finalize(self):
if self.with_bandwidth:
self.submodules.bandwidth = Bandwidth(self.choose_req.cmd)
7 changes: 6 additions & 1 deletion misoclib/soc/sdram.py
Original file line number Diff line number Diff line change
@@ -19,7 +19,8 @@ class SDRAMSoC(SoC):
def __init__(self, platform, clk_freq,
ramcon_type="lasmicon",
with_l2=True, l2_size=8192,
with_memtest=False,
with_bandwidth=False, # specific to LASMICON,
with_memtest=False, # ignored for MINICON
**kwargs):
SoC.__init__(self, platform, clk_freq, **kwargs)
self.ramcon_type = ramcon_type
@@ -28,6 +29,7 @@ def __init__(self, platform, clk_freq,
self.l2_size = l2_size

self.with_memtest = with_memtest
self.with_bandwidth = with_bandwidth or with_memtest

self._sdram_phy_registered = False

@@ -41,6 +43,9 @@ def register_sdram_phy(self, phy, sdram_geom, sdram_timing):

# LASMICON frontend
if self.ramcon_type == "lasmicon":
if self.with_bandwidth:
self.sdram.controller.multiplexer.add_bandwidth()

if self.with_memtest:
self.submodules.memtest_w = memtest.MemtestWriter(self.sdram.crossbar.get_master())
self.submodules.memtest_r = memtest.MemtestReader(self.sdram.crossbar.get_master())

0 comments on commit 9df60bf

Please sign in to comment.