summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorJack Koenig2020-06-19 16:55:11 -0700
committerGitHub2020-06-19 23:55:11 +0000
commit9bda7a75686e075df038b2c24fbd30ad8ae0d941 (patch)
treeebf73bad70eaa2cebce94bd68bff7ec6769c99ff /src/main
parent8eaf10edff0a7f58cce214ad1f13ad7cdb682aef (diff)
Memoize the hashcode of the ChiselCircuitAnnotation (#1485)
Diffstat (limited to 'src/main')
-rw-r--r--src/main/scala/chisel3/stage/ChiselAnnotations.scala7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/main/scala/chisel3/stage/ChiselAnnotations.scala b/src/main/scala/chisel3/stage/ChiselAnnotations.scala
index 11697d7d..e4906456 100644
--- a/src/main/scala/chisel3/stage/ChiselAnnotations.scala
+++ b/src/main/scala/chisel3/stage/ChiselAnnotations.scala
@@ -90,7 +90,12 @@ object ChiselGeneratorAnnotation extends HasShellOptions {
/** Stores a Chisel Circuit
* @param circuit a Chisel Circuit
*/
-case class ChiselCircuitAnnotation(circuit: Circuit) extends NoTargetAnnotation with ChiselOption
+case class ChiselCircuitAnnotation(circuit: Circuit) extends NoTargetAnnotation with ChiselOption {
+ /* Caching the hashCode for a large circuit is necessary due to repeated queries.
+ * Not caching the hashCode will cause severe performance degredations for large [[Circuit]]s.
+ */
+ override lazy val hashCode: Int = circuit.hashCode
+}
case class ChiselOutputFileAnnotation(file: String) extends NoTargetAnnotation with ChiselOption