- m.d.comb += [
- self.single_match.eq(1),
- self.match_address.eq(self.encoder.o)
- ]
-
+ # Multiple Match if encoder n is invalid
+ with m.If(self.encoder.n):
+ m.d.comb += [
+ self.single_match.eq(0),
+ self.multiple_match.eq(1)
+ ]
+ # Single Match if encoder n is valid
+ with m.Else():
+ m.d.comb += [
+ self.single_match.eq(1),
+ self.multiple_match.eq(0)
+ ]
+ # Always set output based on priority encoder output
+ m.d.comb += self.match_address.eq(self.p_encoder.o)
+
+ # If the CAM is not enabled set all outputs to 0