diff options
Diffstat (limited to 'src/main/scala/firrtl/ir/Serializer.scala')
| -rw-r--r-- | src/main/scala/firrtl/ir/Serializer.scala | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/main/scala/firrtl/ir/Serializer.scala b/src/main/scala/firrtl/ir/Serializer.scala index f5457dea..0666a4b1 100644 --- a/src/main/scala/firrtl/ir/Serializer.scala +++ b/src/main/scala/firrtl/ir/Serializer.scala @@ -6,10 +6,19 @@ import firrtl.Utils import firrtl.backends.experimental.smt.random.DefRandom import firrtl.constraint.Constraint +case class Version(major: Int, minor: Int, patch: Int) { + def serialize: String = s"$major.$minor.$patch" + def incompatible(that: Version): Boolean = + this.major > that.major || (this.major == that.major && this.minor > that.minor) +} + object Serializer { val NewLine = '\n' val Indent = " " + // The version supported by the serializer. + val version = Version(1, 1, 0) + /** Converts a `FirrtlNode` into its string representation with * default indentation. */ @@ -254,6 +263,7 @@ object Serializer { private def s(node: Circuit)(implicit b: StringBuilder, indent: Int): Unit = node match { case Circuit(info, modules, main) => + b ++= s"FIRRTL version ${version.serialize}\n" b ++= "circuit "; b ++= main; b ++= " :"; s(info) if (modules.nonEmpty) { newLineNoIndent(); s(modules.head)(b, indent + 1) |
