summaryrefslogtreecommitdiff
path: root/chiselFrontend/src/main/scala/chisel3/core/Binding.scala
diff options
context:
space:
mode:
authorducky2018-05-02 11:45:22 -0700
committerRichard Lin2018-07-04 18:39:28 -0500
commitb74034446223db6731c7e4f2eb362b3349efc8be (patch)
tree317b55c2c2a11217dc452addb427e57bdac3a2c5 /chiselFrontend/src/main/scala/chisel3/core/Binding.scala
parent3d8064a9f2fd49bffb402b91131087c19ca7d6fc (diff)
Infrastructure for bundle literals
Diffstat (limited to 'chiselFrontend/src/main/scala/chisel3/core/Binding.scala')
-rw-r--r--chiselFrontend/src/main/scala/chisel3/core/Binding.scala9
1 files changed, 7 insertions, 2 deletions
diff --git a/chiselFrontend/src/main/scala/chisel3/core/Binding.scala b/chiselFrontend/src/main/scala/chisel3/core/Binding.scala
index d60fb723..ecec3676 100644
--- a/chiselFrontend/src/main/scala/chisel3/core/Binding.scala
+++ b/chiselFrontend/src/main/scala/chisel3/core/Binding.scala
@@ -1,6 +1,7 @@
package chisel3.core
import chisel3.internal.Builder.{forcedModule}
+import chisel3.internal.firrtl.LitArg
object Binding {
class BindingException(message: String) extends Exception(message)
@@ -92,8 +93,6 @@ sealed trait ConstrainedBinding extends TopBinding {
// A binding representing a data that cannot be (re)assigned to.
sealed trait ReadOnlyBinding extends TopBinding
-// TODO literal info here
-case class LitBinding() extends UnconstrainedBinding with ReadOnlyBinding
// TODO(twigg): Ops between unenclosed nodes can also be unenclosed
// However, Chisel currently binds all op results to a module
case class OpBinding(enclosure: UserModule) extends ConstrainedBinding with ReadOnlyBinding
@@ -108,3 +107,9 @@ case class ChildBinding(parent: Data) extends Binding {
// A DontCare element has a specific Binding, somewhat like a literal.
// It is a source (RHS). It may only be connected/applied to sinks.
case class DontCareBinding() extends UnconstrainedBinding
+
+sealed trait LitBinding extends UnconstrainedBinding with ReadOnlyBinding
+// Literal binding attached to a element that is not part of a Bundle.
+case class ElementLitBinding(litArg: LitArg) extends LitBinding
+// Literal binding attached to the root of a Bundle, containing literal values of its children.
+case class BundleLitBinding(litMap: Map[Data, LitArg]) extends LitBinding