summaryrefslogtreecommitdiff
path: root/chiselFrontend/src
diff options
context:
space:
mode:
authorJim Lawson2016-08-18 15:26:39 -0700
committerJim Lawson2016-08-18 15:26:39 -0700
commit471a9e2d15d4c968fc6eca9a86c232c6c9c9322d (patch)
treeb9c30d372884ab2e7c8f28bd9bde58443a1b2dd4 /chiselFrontend/src
parentbd6e69c19aef76b6e87f7e328e03d1b93f8a1472 (diff)
Add assumeNoDirectionIsOutput.
Diffstat (limited to 'chiselFrontend/src')
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/MonoConnect.scala16
-rw-r--r--chiselFrontend/src/main/scala/chisel3/internal/CompileOptions.scala1
2 files changed, 15 insertions, 2 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/core/MonoConnect.scala b/chiselFrontend/src/main/scala/chisel3/core/MonoConnect.scala
index 4ba921fa..74373e22 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/MonoConnect.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/MonoConnect.scala
@@ -133,7 +133,13 @@ object MonoConnect {
case (None, Some(Input)) => issueConnect(sink, source)
case (Some(Output), Some(Output)) => issueConnect(sink, source)
case (Some(Output), Some(Input)) => issueConnect(sink, source)
- case (_, None) => throw UnreadableSourceException
+ case (_, None) => {
+ if (compileOptions.assumeNoDirectionIsOutput) {
+ issueConnect(sink, source)
+ } else {
+ throw UnreadableSourceException
+ }
+ }
case (Some(Input), Some(Output)) if (compileOptions.tryConnectionsSwapped) => issueConnect(source, sink)
case (Some(Input), _) => throw UnwritableSinkException
}
@@ -165,7 +171,13 @@ object MonoConnect {
case (Some(Input), Some(Input)) => issueConnect(sink, source)
case (Some(Input), Some(Output)) => issueConnect(sink, source)
case (Some(Output), _) => throw UnwritableSinkException
- case (_, None) => throw UnreadableSourceException
+ case (_, None) => {
+ if (compileOptions.assumeNoDirectionIsOutput) {
+ issueConnect(sink, source)
+ } else {
+ throw UnreadableSourceException
+ }
+ }
case (None, _) => throw UnwritableSinkException
}
}
diff --git a/chiselFrontend/src/main/scala/chisel3/internal/CompileOptions.scala b/chiselFrontend/src/main/scala/chisel3/internal/CompileOptions.scala
index e040201b..912184fb 100644
--- a/chiselFrontend/src/main/scala/chisel3/internal/CompileOptions.scala
+++ b/chiselFrontend/src/main/scala/chisel3/internal/CompileOptions.scala
@@ -19,4 +19,5 @@ class CompileOptions(optionsMap: Map[String, String]) {
val portDeterminesDirection: Boolean = optionsMap.getOrElse("portDeterminesDirection", looseDefault).toBoolean
val tryConnectionsSwapped: Boolean = optionsMap.getOrElse("tryConnectionsSwapped", looseDefault).toBoolean
val assumeLHSIsOutput: Boolean = optionsMap.getOrElse("assumeLHSIsOutput", looseDefault).toBoolean
+ val assumeNoDirectionIsOutput: Boolean = optionsMap.getOrElse("assumeNoDirectionIsOutput", looseDefault).toBoolean
}