[libre-riscv-dev] TLB key for CAM
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Mon Apr 8 04:20:58 BST 2019
hi daniel,
i saw you added the SetAssociativeCache code last week, it looks really good.
you probably saw, i did a tidy-up on TLB, by adding a nmigen.main,
running it, and catching some syntax errors. where i couldn't
identify what to do, i added "XXX TODO" into the code as a comment.
one nice thing about using python, it's possible to use python
functions to split code up, reduce the indentation level
significantly, and give the function a meaningful name. that's what i
did in TLB.py, i split search and write_L1 into their own functions.
also, could you check: i believe nmigen will set a signal to the
"default (reset)" value if it is not explicitly set, and that the
default is "0" (zero).
so... what that would mean, in turn, is, that *all* of the code which
explicitly sets signals to zero is not necessary (see below).
of course, that *assumes* that, for example, that "cam_L1.enable" does
actually default to zero!
what do you think, better to leave the resets in explicitly, so that
it's clearer what's going on?
l.
diff --git a/TLB/src/TLB.py b/TLB/src/TLB.py
index 3538bdc..13cdb6f 100644
--- a/TLB/src/TLB.py
+++ b/TLB/src/TLB.py
@@ -54,8 +54,6 @@ class TLB():
""" searches the TLB
"""
m.d.comb += [
- write_L1.en.eq(0),
- self.cam_L1.write_enable.eq(0),
self.cam_L1.data_in.eq(self.vma)
]
# Match found in L1 CAM
@@ -92,17 +90,6 @@ class TLB():
m.d.comb += [
self.pte_out.eq(reg_data)
]
- with m.Else():
- m.d.comb += [
- self.pte_out.eq(0)
- ]
- # Miss Logic
- with m.Else():
- m.d.comb += [
- self.hit.eq(0),
- self.perm_valid.eq(0),
- self.pte_out.eq(0)
- ]
def write_l1(self, m, read_L1, write_L1):
""" writes to the L1 cache
@@ -152,15 +139,6 @@ class TLB():
# TODO
#with m.Case("11"):
- # When disabled
- with m.Else():
- m.d.comb += [
- self.cam_L1.enable.eq(0),
- # XXX TODO - self.reg_file.enable.eq(0),
- self.hit.eq(0),
- self.perm_valid.eq(0), # XXX TODO, check this
- self.pte_out.eq(0)
- ]
return m
More information about the libre-riscv-dev
mailing list