From 31a9d13f5a8e91935777277d8e6e7187722301cd Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Tue, 9 Apr 2024 14:49:23 -0700 Subject: [PATCH] Fix === for abstract Reset types (#3979) Previously, the function would infinitely recurse resulting in a stack overflow. (cherry picked from commit ea2d1036588ca63024085f5891cbcfdfc0faf7b0) --- core/src/main/scala/chisel3/Data.scala | 2 +- src/test/scala/chiselTests/DataEqualitySpec.scala | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/core/src/main/scala/chisel3/Data.scala b/core/src/main/scala/chisel3/Data.scala index d741f30ade3..e20aa40ba0b 100644 --- a/core/src/main/scala/chisel3/Data.scala +++ b/core/src/main/scala/chisel3/Data.scala @@ -915,7 +915,7 @@ object Data { case (thiz: UInt, that: UInt) => thiz === that case (thiz: SInt, that: SInt) => thiz === that case (thiz: AsyncReset, that: AsyncReset) => thiz.asBool === that.asBool - case (thiz: Reset, that: Reset) => thiz === that + case (thiz: Reset, that: Reset) => thiz.asBool === that.asBool case (thiz: EnumType, that: EnumType) => thiz === that case (thiz: Clock, that: Clock) => thiz.asUInt === that.asUInt case (thiz: Vec[_], that: Vec[_]) => diff --git a/src/test/scala/chiselTests/DataEqualitySpec.scala b/src/test/scala/chiselTests/DataEqualitySpec.scala index 34b14e3ca01..19ec437b2ef 100644 --- a/src/test/scala/chiselTests/DataEqualitySpec.scala +++ b/src/test/scala/chiselTests/DataEqualitySpec.scala @@ -109,6 +109,11 @@ class DataEqualitySpec extends ChiselFlatSpec with Utils { new EqualityTester(true.B, false.B) } } + it should "support abstract reset wires" in { + assertTesterPasses { + new EqualityTester(WireDefault(Reset(), true.B), WireDefault(Reset(), true.B)) + } + } behavior.of("AsyncReset === AsyncReset") it should "pass with equal values" in {