diff options
| author | jackkoenig | 2016-04-28 16:43:25 -0700 |
|---|---|---|
| committer | jackkoenig | 2016-05-03 16:56:52 -0700 |
| commit | 72763a13141345aca79554d743cf3951e726d95f (patch) | |
| tree | a1f60fca431298c5c25e60d6fdf9d7438dfe83e3 /src | |
| parent | 41e0f6da3d60528241a46520b949c15bcbc29957 (diff) | |
Add Expand Whens test
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/resources/passes/ExpandWhens/ExpandWhens.fir | 47 | ||||
| -rw-r--r-- | src/test/scala/firrtlTests/ExpandWhensSpec.scala | 40 |
2 files changed, 87 insertions, 0 deletions
diff --git a/src/test/resources/passes/ExpandWhens/ExpandWhens.fir b/src/test/resources/passes/ExpandWhens/ExpandWhens.fir new file mode 100644 index 00000000..021533e0 --- /dev/null +++ b/src/test/resources/passes/ExpandWhens/ExpandWhens.fir @@ -0,0 +1,47 @@ + +circuit ExpandWhens : + module ExpandWhens : + input clk : Clock + input reset : UInt<1> + + node done = UInt(6) + + reg x : UInt<16>, clk with : + reset => (reset, UInt(0)) + x <= x + + x <= UInt(2) + + ; Tricky assignment only in else + when geq(x, UInt(1)) : + else : + x <= UInt(1) + + when geq(x, UInt(2)) : + when lt(x, UInt(3)) : + x <= UInt(3) + else : + x <= UInt(4) + + when reset : + else : + when geq(x, UInt(4)) : + x <= UInt(6) + when lt(x, UInt(5)) : + x <= UInt(5) + + reg count : UInt<16>, clk with : + reset => (reset, UInt(0)) + when neq(count, done) : + count <= add(count, UInt(1)) + + printf(clk, UInt(1), "count = %d, x = %d\n", count, x) + + when not(reset) : + when neq(x, count) : + printf(clk, UInt(1), "Assertion failed! x =/= count!\n") + stop(clk, UInt(1), 1) + when eq(x, done) : + stop(clk, UInt(1), 0) + + diff --git a/src/test/scala/firrtlTests/ExpandWhensSpec.scala b/src/test/scala/firrtlTests/ExpandWhensSpec.scala new file mode 100644 index 00000000..6219fd8c --- /dev/null +++ b/src/test/scala/firrtlTests/ExpandWhensSpec.scala @@ -0,0 +1,40 @@ +/* +Copyright (c) 2014 - 2016 The Regents of the University of +California (Regents). All Rights Reserved. Redistribution and use in +source and binary forms, with or without modification, are permitted +provided that the following conditions are met: + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + two paragraphs of disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + two paragraphs of disclaimer in the documentation and/or other materials + provided with the distribution. + * Neither the name of the Regents nor the names of its contributors + may be used to endorse or promote products derived from this + software without specific prior written permission. +IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, +SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF +REGENTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF +ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION +TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR +MODIFICATIONS. +*/ + +package firrtlTests + +import java.io._ +import org.scalatest._ +import org.scalatest.prop._ +import firrtl._ +import firrtl.passes._ + +class ExpandWhensSpec extends FirrtlFlatSpec { + "Expand Whens" should "compile and run" in { + runFirrtlTest("ExpandWhens", "/passes/ExpandWhens") + } +} |
