whoops new node not to be calculated at end
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 11 Sep 2020 14:21:05 +0000 (15:21 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 11 Sep 2020 14:21:05 +0000 (15:21 +0100)
src/soc/experiment/plru.py

index 9699694f6e6ffdc5b694c5da5eb637224c2ff13a..3400f8cde2d83aa869b86b2903797b36d29de384 100644 (file)
@@ -30,11 +30,12 @@ class PLRU(Elaboratable):
                 comb += node2.eq(node << 1)
             else:
                 comb += node2.eq(node)
-            with m.If(tree[node]):
-                comb += node_next.eq(node2 + 2)
-            with m.Else():
-                comb += node_next.eq(node2 + 1)
-            node = node_next
+            if i != self.BITS-1:
+                with m.If(tree[node]):
+                    comb += node_next.eq(node2 + 2)
+                with m.Else():
+                    comb += node_next.eq(node2 + 1)
+                node = node_next
 
         with m.If(self.acc_en):
             node = Signal(self.BITS)
@@ -49,10 +50,11 @@ class PLRU(Elaboratable):
                     comb += node2.eq(node << 1)
                 else:
                     comb += node2.eq(node)
-                with m.If(abit):
-                    comb += node_next.eq(node2 + 2)
-                with m.Else():
-                    comb += node_next.eq(node2 + 1)
-                node = node_next
+                if i != self.BITS-1:
+                    with m.If(abit):
+                        comb += node_next.eq(node2 + 2)
+                    with m.Else():
+                        comb += node_next.eq(node2 + 1)
+                    node = node_next
 
         return m