aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorJack Koenig2018-05-23 11:54:50 -0700
committerGitHub2018-05-23 11:54:50 -0700
commit87fe48938a3ccc58b1945bae72f0e7305ac14b3b (patch)
tree8d809eac737083400ae72b9f11bb2eb3fd91aee1 /src/test
parentb1709242b5c7b60e21308642947d292545eb2e37 (diff)
Add Circuit as option to FirrtlOptions (#814)
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/firrtlTests/DriverSpec.scala43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/test/scala/firrtlTests/DriverSpec.scala b/src/test/scala/firrtlTests/DriverSpec.scala
index b0ce0af9..df49e2bb 100644
--- a/src/test/scala/firrtlTests/DriverSpec.scala
+++ b/src/test/scala/firrtlTests/DriverSpec.scala
@@ -17,6 +17,8 @@ import firrtl._
import firrtl.annotations._
import firrtl.util.BackendCompilationUtilities
+import scala.util.{Try, Success, Failure}
+
class ExceptingTransform extends Transform {
def inputForm = HighForm
def outputForm = HighForm
@@ -124,6 +126,47 @@ class DriverSpec extends FreeSpec with Matchers with BackendCompilationUtilities
val outputFileName = firrtlOptions.getTargetFile(optionsManager)
outputFileName should be ("carol.v")
}
+ val input = """
+ |circuit Top :
+ | module Top :
+ | input x : UInt<8>
+ | output y : UInt<8>
+ | y <= x""".stripMargin
+ val circuit = Parser.parse(input.split("\n").toIterator)
+ "firrtl source can be provided directly" in {
+ val manager = new ExecutionOptionsManager("test") with HasFirrtlOptions {
+ commonOptions = CommonOptions(topName = "Top")
+ firrtlOptions = FirrtlExecutionOptions(firrtlSource = Some(input))
+ }
+ assert(firrtl.Driver.getCircuit(manager).isSuccess)
+ }
+ "firrtl Circuits can be provided directly" in {
+ val manager = new ExecutionOptionsManager("test") with HasFirrtlOptions {
+ commonOptions = CommonOptions(topName = "Top")
+ firrtlOptions = FirrtlExecutionOptions(firrtlCircuit = Some(circuit))
+ }
+ firrtl.Driver.getCircuit(manager) shouldBe Success(circuit)
+ }
+ "Only one of inputFileNameOverride, firrtlSource, and firrtlCircuit can be used at a time" in {
+ val manager1 = new ExecutionOptionsManager("test") with HasFirrtlOptions {
+ commonOptions = CommonOptions(topName = "Top")
+ firrtlOptions = FirrtlExecutionOptions(firrtlCircuit = Some(circuit),
+ firrtlSource = Some(input))
+ }
+ val manager2 = new ExecutionOptionsManager("test") with HasFirrtlOptions {
+ commonOptions = CommonOptions(topName = "Top")
+ firrtlOptions = FirrtlExecutionOptions(inputFileNameOverride = "hi",
+ firrtlSource = Some(input))
+ }
+ val manager3 = new ExecutionOptionsManager("test") with HasFirrtlOptions {
+ commonOptions = CommonOptions(topName = "Top")
+ firrtlOptions = FirrtlExecutionOptions(inputFileNameOverride = "hi",
+ firrtlCircuit = Some(circuit))
+ }
+ assert(firrtl.Driver.getCircuit(manager1).isFailure)
+ assert(firrtl.Driver.getCircuit(manager2).isFailure)
+ assert(firrtl.Driver.getCircuit(manager3).isFailure)
+ }
"various annotations can be created from command line, currently:" - {
"inline annotation" in {
val optionsManager = new ExecutionOptionsManager("test") with HasFirrtlOptions