diff options
| author | Adam Izraelevitz | 2017-03-09 12:39:04 -0800 |
|---|---|---|
| committer | GitHub | 2017-03-09 12:39:04 -0800 |
| commit | 664d5b33094b7158bb6f8a583a89d83ac69be83e (patch) | |
| tree | 7a037c49ca64773430afdf2cdf264b8e5c40f1de /src/main/scala/firrtl/Emitter.scala | |
| parent | 132d7baa991501e8c07cac7f6f4efc52905a89e7 (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.scala | 7 |
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] = { |
