diff options
| author | Albert Magyar | 2019-10-21 12:10:51 -0700 |
|---|---|---|
| committer | GitHub | 2019-10-21 12:10:51 -0700 |
| commit | b43288d588d04775230456ca85fa231a8cf397fe (patch) | |
| tree | 0933b15baca7520faf5aae0f9e1fc60bb36390d4 /src/test/scala/firrtlTests/MemEnFeedbackSpec.scala | |
| parent | fd981848c7d2a800a15f9acfbf33b57dd1c6225b (diff) | |
| parent | 24f7d90b032f7058ae379ff3592c9d29c7f987e7 (diff) | |
Merge pull request #1202 from freechipsproject/fix-verilog-mem-delay-en
Fix handling of read enables for write-first (default) memories in VerilogMemDelays
Diffstat (limited to 'src/test/scala/firrtlTests/MemEnFeedbackSpec.scala')
| -rw-r--r-- | src/test/scala/firrtlTests/MemEnFeedbackSpec.scala | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/test/scala/firrtlTests/MemEnFeedbackSpec.scala b/src/test/scala/firrtlTests/MemEnFeedbackSpec.scala new file mode 100644 index 00000000..d94d199a --- /dev/null +++ b/src/test/scala/firrtlTests/MemEnFeedbackSpec.scala @@ -0,0 +1,41 @@ +// See LICENSE for license details. + +package firrtlTests + +import firrtl._ + +// Tests long-standing bug from #1179, VerilogMemDelays producing combinational loops in corner case +abstract class MemEnFeedbackSpec extends FirrtlFlatSpec { + val ruw: String + def input: String = + s"""circuit loop : + | module loop : + | input clk : Clock + | input raddr : UInt<5> + | mem m : + | data-type => UInt<1> + | depth => 32 + | reader => r + | read-latency => 1 + | write-latency => 1 + | read-under-write => ${ruw} + | m.r.clk <= clk + | m.r.addr <= raddr + | m.r.en <= m.r.data + |""".stripMargin + def compileInput(): Unit = (new VerilogCompiler).compileAndEmit(CircuitState(parse(input), ChirrtlForm), List.empty) +} + +class WriteFirstMemEnFeedbackSpec extends MemEnFeedbackSpec { + val ruw = "new" + "A write-first sync-read mem with feedback from data to enable" should "compile without errors" in { + compileInput() + } +} + +class ReadFirstMemEnFeedbackSpec extends MemEnFeedbackSpec { + val ruw = "old" + "A read-first sync-read mem with feedback from data to enable" should "compile without errors" in { + compileInput() + } +} |
