aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/Emitter.scala
diff options
context:
space:
mode:
authorAdam Izraelevitz2017-03-09 12:39:04 -0800
committerGitHub2017-03-09 12:39:04 -0800
commit664d5b33094b7158bb6f8a583a89d83ac69be83e (patch)
tree7a037c49ca64773430afdf2cdf264b8e5c40f1de /src/main/scala/firrtl/Emitter.scala
parent132d7baa991501e8c07cac7f6f4efc52905a89e7 (diff)
Sint tests and change in serialization (#456)
SInt representation is no longer 2's complement, but instead a positive number (hex or base 10) that is optionally preceded by a sign (-+).
Diffstat (limited to 'src/main/scala/firrtl/Emitter.scala')
-rw-r--r--src/main/scala/firrtl/Emitter.scala7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/main/scala/firrtl/Emitter.scala b/src/main/scala/firrtl/Emitter.scala
index b1c318fa..1153b1e6 100644
--- a/src/main/scala/firrtl/Emitter.scala
+++ b/src/main/scala/firrtl/Emitter.scala
@@ -248,8 +248,11 @@ class VerilogEmitter extends Transform with PassBased with Emitter {
case UIntLiteral(value, IntWidth(width)) =>
w write s"$width'h${value.toString(16)}"
case SIntLiteral(value, IntWidth(width)) =>
- val unsignedValue = value + (if (value < 0) BigInt(1) << width.toInt else 0)
- w write s"$width'sh${unsignedValue.toString(16)}"
+ val stringLiteral = value.toString(16)
+ w write (stringLiteral.head match {
+ case '-' => s"-$width'sh${stringLiteral.tail}"
+ case _ => s"$width'sh${stringLiteral}"
+ })
}
def op_stream(doprim: DoPrim): Seq[Any] = {