summaryrefslogtreecommitdiff
path: root/chiselFrontend/src
diff options
context:
space:
mode:
Diffstat (limited to 'chiselFrontend/src')
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/BiConnect.scala28
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/Binding.scala4
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/Module.scala2
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/MonoConnect.scala6
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/Reg.scala2
-rw-r--r--chiselFrontend/src/main/scala/chisel3/internal/CompileOptions.scala9
6 files changed, 26 insertions, 25 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/core/BiConnect.scala b/chiselFrontend/src/main/scala/chisel3/core/BiConnect.scala
index c40b85ad..857b25aa 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/BiConnect.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/BiConnect.scala
@@ -167,32 +167,34 @@ object BiConnect {
case (None, Some(Input)) => issueConnectR2L(left, right)
case (Some(Input), Some(Input)) => {
- if (compileOptions.portDeterminesDirection)
- (left.binding, right.binding) match {
- case (PortBinding(_, _), PortBinding(_, _)) => throw BothDriversException
- case (PortBinding(_, _), _) => issueConnectL2R(left, right)
- case (_, PortBinding(_, _)) => issueConnectR2L(left, right)
- case _ => throw BothDriversException
- } else {
+ if (compileOptions.dontAssumeDirectionality) {
throw BothDriversException
+ } else {
+ (left.binding, right.binding) match {
+ case (PortBinding(_, _), PortBinding(_, _)) => throw BothDriversException
+ case (PortBinding(_, _), _) => issueConnectL2R(left, right)
+ case (_, PortBinding(_, _)) => issueConnectR2L(left, right)
+ case _ => throw BothDriversException
+ }
}
}
case (Some(Output), Some(Output)) => {
- if (compileOptions.portDeterminesDirection)
+ if (compileOptions.dontAssumeDirectionality) {
+ throw BothDriversException
+ } else {
(left.binding, right.binding) match {
case (PortBinding(_, _), PortBinding(_, _)) => throw BothDriversException
case (PortBinding(_, _), _) => issueConnectR2L(left, right)
case (_, PortBinding(_, _)) => issueConnectL2R(left, right)
case _ => throw BothDriversException
- } else {
- throw BothDriversException
+ }
}
}
case (None, None) => {
- if (compileOptions.assumeLHSIsOutput) {
- issueConnectR2L(left, right)
- } else {
+ if (compileOptions.dontAssumeDirectionality) {
throw UnknownDriverException
+ } else {
+ issueConnectR2L(left, right)
}
}
}
diff --git a/chiselFrontend/src/main/scala/chisel3/core/Binding.scala b/chiselFrontend/src/main/scala/chisel3/core/Binding.scala
index da678fed..a32d3ade 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/Binding.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/Binding.scala
@@ -91,7 +91,7 @@ object Binding {
element.binding = binder(unbound)
}
// If autoIOWrap is enabled and we're rebinding a PortBinding, just ignore the rebinding.
- case portBound @ PortBinding(_, _) if (compileOptions.autoIOWrap && binder.isInstanceOf[PortBinder]) =>
+ case portBound @ PortBinding(_, _) if (!compileOptions.requireIOWrap && binder.isInstanceOf[PortBinder]) =>
case binding => throw AlreadyBoundException(binding.toString)
}
)
@@ -145,7 +145,7 @@ object Binding {
case binding =>
// The following kludge is an attempt to provide backward compatibility
// It should be done at at higher level.
- if (!(compileOptions.autoIOWrap && elementOfIO(element)))
+ if ((compileOptions.requireIOWrap || !elementOfIO(element)))
throw NotSynthesizableException
else
Binding.bind(element, PortBinder(element._parent.get), "Error: IO")
diff --git a/chiselFrontend/src/main/scala/chisel3/core/Module.scala b/chiselFrontend/src/main/scala/chisel3/core/Module.scala
index 19063664..b4659a52 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/Module.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/Module.scala
@@ -113,7 +113,7 @@ extends HasId {
private[core] def computePorts: Seq[firrtl.Port] = {
// If we're auto-wrapping IO definitions, do so now.
- if (compileOptions.autoIOWrap && !ioDefined) {
+ if (!(compileOptions.requireIOWrap || ioDefined)) {
IO(io)
}
for ((name, port) <- ports) yield {
diff --git a/chiselFrontend/src/main/scala/chisel3/core/MonoConnect.scala b/chiselFrontend/src/main/scala/chisel3/core/MonoConnect.scala
index e3ba4801..66729bac 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/MonoConnect.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/MonoConnect.scala
@@ -134,13 +134,13 @@ object MonoConnect {
case (Some(Output), Some(Output)) => issueConnect(sink, source)
case (Some(Output), Some(Input)) => issueConnect(sink, source)
case (_, None) => {
- if (compileOptions.assumeNoDirectionIsInput) {
+ if (!compileOptions.dontAssumeDirectionality) {
issueConnect(sink, source)
} else {
throw UnreadableSourceException
}
}
- case (Some(Input), Some(Output)) if (compileOptions.tryConnectionsSwapped) => issueConnect(source, sink)
+ case (Some(Input), Some(Output)) if (!compileOptions.dontTryConnectionsSwapped) => issueConnect(source, sink)
case (Some(Input), _) => throw UnwritableSinkException
}
}
@@ -172,7 +172,7 @@ object MonoConnect {
case (Some(Input), Some(Output)) => issueConnect(sink, source)
case (Some(Output), _) => throw UnwritableSinkException
case (_, None) => {
- if (compileOptions.assumeNoDirectionIsInput) {
+ if (!compileOptions.dontAssumeDirectionality) {
issueConnect(sink, source)
} else {
throw UnreadableSourceException
diff --git a/chiselFrontend/src/main/scala/chisel3/core/Reg.scala b/chiselFrontend/src/main/scala/chisel3/core/Reg.scala
index 6c357461..b77c9a31 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/Reg.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/Reg.scala
@@ -10,7 +10,7 @@ import chisel3.internal.sourceinfo.{SourceInfo, UnlocatableSourceInfo}
object Reg {
private[core] def makeType[T <: Data](t: T = null, next: T = null, init: T = null): T = {
if (t ne null) {
- if (Builder.compileOptions.regTypeMustBeUnbound) {
+ if (Builder.compileOptions.declaredTypeMustBeUnbound) {
Binding.checkUnbound(t, s"t ($t) must be unbound Type. Try using cloneType?")
}
t.chiselCloneType
diff --git a/chiselFrontend/src/main/scala/chisel3/internal/CompileOptions.scala b/chiselFrontend/src/main/scala/chisel3/internal/CompileOptions.scala
index a0a20020..31d441c1 100644
--- a/chiselFrontend/src/main/scala/chisel3/internal/CompileOptions.scala
+++ b/chiselFrontend/src/main/scala/chisel3/internal/CompileOptions.scala
@@ -15,9 +15,8 @@ class CompileOptions(optionsMap: Map[String, String]) {
// MissingLeftFieldException, or MissingRightFieldException will be thrown.
val connectFieldsMustMatch: Boolean = optionsMap.getOrElse("connectFieldsMustMatch", strictDefault).toBoolean
val regTypeMustBeUnbound: Boolean = optionsMap.getOrElse("regTypeMustBeUnbound", strictDefault).toBoolean
- val autoIOWrap: Boolean = optionsMap.getOrElse("autoIOWrap", looseDefault).toBoolean
- 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 assumeNoDirectionIsInput: Boolean = optionsMap.getOrElse("assumeNoDirectionIsInput", looseDefault).toBoolean
+ val declaredTypeMustBeUnbound: Boolean = optionsMap.getOrElse("declaredTypeMustBeUnbound", strictDefault).toBoolean
+ val requireIOWrap: Boolean = optionsMap.getOrElse("requireIOWrap", strictDefault).toBoolean
+ val dontTryConnectionsSwapped: Boolean = optionsMap.getOrElse("dontTryConnectionsSwapped", strictDefault).toBoolean
+ val dontAssumeDirectionality: Boolean = optionsMap.getOrElse("dontAssumeDirectionality", strictDefault).toBoolean
}