aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorJack Koenig2019-05-24 14:37:52 -0700
committerGitHub2019-05-24 14:37:52 -0700
commit228c9a4b7432ac52178d63b8f27fe064aec71e9c (patch)
treefd131f6c97fbfb8aab722af34fc1d174bfd93dc4 /src/main
parent524b8957e36a7ac931ca0fe042a64fce80195057 (diff)
Emit legal Verilog literals for ExtModule IntParams > 32-bit (#1087)
Emit Verilog IntParams that fit in 32-bits as Integer literals
Diffstat (limited to 'src/main')
-rw-r--r--src/main/scala/firrtl/Emitter.scala10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/Emitter.scala b/src/main/scala/firrtl/Emitter.scala
index 3bbba289..27348c6a 100644
--- a/src/main/scala/firrtl/Emitter.scala
+++ b/src/main/scala/firrtl/Emitter.scala
@@ -204,7 +204,15 @@ class VerilogEmitter extends SeqTransform with Emitter {
}
/** Turn Params into Verilog Strings */
def stringify(param: Param): String = param match {
- case IntParam(name, value) => s".$name($value)"
+ case IntParam(name, value) =>
+ val lit =
+ if (value.isValidInt) {
+ s"$value"
+ } else {
+ val blen = value.bitLength
+ if (value > 0) s"$blen'd$value" else s"-${blen+1}'sd${value.abs}"
+ }
+ s".$name($lit)"
case DoubleParam(name, value) => s".$name($value)"
case StringParam(name, value) => s".${name}(${value.verilogEscape})"
case RawStringParam(name, value) => s".$name($value)"