From 0749d094565b023af7fc7f5f7b75958f18aaaed1 Mon Sep 17 00:00:00 2001 From: Deborah Soung Date: Tue, 27 Feb 2024 15:02:33 -0800 Subject: [PATCH 1/4] add suggestName method to HasTarget --- core/src/main/scala/chisel3/package.scala | 4 +++ .../scala/chiselTests/util/SRAMSpec.scala | 28 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/core/src/main/scala/chisel3/package.scala b/core/src/main/scala/chisel3/package.scala index bb7e04a1831..e6520fc375e 100644 --- a/core/src/main/scala/chisel3/package.scala +++ b/core/src/main/scala/chisel3/package.scala @@ -420,6 +420,8 @@ package object chisel3 { def toTarget: ReferenceTarget def toAbsoluteTarget: ReferenceTarget def toRelativeTarget(root: Option[BaseModule]): ReferenceTarget + + def suggestName(name: String): Unit } object HasTarget { @@ -431,6 +433,8 @@ package object chisel3 { def toTarget = t.toTarget def toAbsoluteTarget = t.toAbsoluteTarget def toRelativeTarget(root: Option[BaseModule]) = t.toRelativeTarget(root) + + def suggestName(name: String): Unit = t.suggestName(name) } } diff --git a/src/test/scala/chiselTests/util/SRAMSpec.scala b/src/test/scala/chiselTests/util/SRAMSpec.scala index 79974e1d1ea..117356bf197 100644 --- a/src/test/scala/chiselTests/util/SRAMSpec.scala +++ b/src/test/scala/chiselTests/util/SRAMSpec.scala @@ -42,4 +42,32 @@ class SRAMSpec extends ChiselFlatSpec { dummyAnno should be(Some("~Top|Top>sram_mem")) } + it should "Get emitted with a custom name when one is suggested" in { + + class Top extends Module { + val sramInterface = SRAM( + size = 32, + tpe = UInt(8.W), + numReadPorts = 0, + numWritePorts = 0, + numReadwritePorts = 1 + ) + require(sramInterface.underlying.nonEmpty) + sramInterface.underlying.get.suggestName("carrot") + annotate(new ChiselAnnotation { + override def toFirrtl: Annotation = DummyAnno(sramInterface.underlying.get.toTarget) + }) + } + val (chirrtlCircuit, annos) = getFirrtlAndAnnos(new Top) + val chirrtl = chirrtlCircuit.serialize + chirrtl should include("module Top :") + chirrtl should include("smem carrot : UInt<8> [32]") + chirrtl should include( + "wire sramInterface : { readPorts : { flip address : UInt<5>, flip enable : UInt<1>, data : UInt<8>}[0], writePorts : { flip address : UInt<5>, flip enable : UInt<1>, flip data : UInt<8>}[0], readwritePorts : { flip address : UInt<5>, flip enable : UInt<1>, flip isWrite : UInt<1>, readData : UInt<8>, flip writeData : UInt<8>}[1]}" + ) + + val dummyAnno = annos.collectFirst { case DummyAnno(t) => (t.toString) } + dummyAnno should be(Some("~Top|Top>carrot")) + } + } From 60554b1bd646fb6d4045e83e54ff655e438cf65f Mon Sep 17 00:00:00 2001 From: Deborah Soung Date: Tue, 27 Feb 2024 15:48:01 -0800 Subject: [PATCH 2/4] add scalaDoc --- core/src/main/scala/chisel3/package.scala | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/src/main/scala/chisel3/package.scala b/core/src/main/scala/chisel3/package.scala index e6520fc375e..7fd40bed500 100644 --- a/core/src/main/scala/chisel3/package.scala +++ b/core/src/main/scala/chisel3/package.scala @@ -414,14 +414,20 @@ package object chisel3 { final val deprecatedPublicAPIMsg = "APIs in chisel3.internal are not intended to be public" - /** Contains universal methods for target accesses. + /** Exposes target information and [[suggestName]] functionality of a + * [[NamedComponent]]. */ sealed trait HasTarget { def toTarget: ReferenceTarget def toAbsoluteTarget: ReferenceTarget def toRelativeTarget(root: Option[BaseModule]): ReferenceTarget - def suggestName(name: String): Unit + /** Exposes the [[suggestName]] method of the [[NamedComponent]] so users + * may provide a seed to influence the name generation of this component. + * + * @param seed seed for the name of this component + */ + def suggestName(seed: String): Unit } object HasTarget { @@ -434,7 +440,7 @@ package object chisel3 { def toAbsoluteTarget = t.toAbsoluteTarget def toRelativeTarget(root: Option[BaseModule]) = t.toRelativeTarget(root) - def suggestName(name: String): Unit = t.suggestName(name) + def suggestName(seed: String): Unit = t.suggestName(seed) } } From 1a8e2d898ade7f0de7877cd5dd849b6e1268d5ad Mon Sep 17 00:00:00 2001 From: Deborah Soung Date: Tue, 27 Feb 2024 15:59:46 -0800 Subject: [PATCH 3/4] update scalaDoc --- core/src/main/scala/chisel3/package.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/scala/chisel3/package.scala b/core/src/main/scala/chisel3/package.scala index 7fd40bed500..183755e9283 100644 --- a/core/src/main/scala/chisel3/package.scala +++ b/core/src/main/scala/chisel3/package.scala @@ -422,8 +422,8 @@ package object chisel3 { def toAbsoluteTarget: ReferenceTarget def toRelativeTarget(root: Option[BaseModule]): ReferenceTarget - /** Exposes the [[suggestName]] method of the [[NamedComponent]] so users - * may provide a seed to influence the name generation of this component. + /** Exposes the suggestName method of the NamedComponent so users can + * provide a seed to influence the name generation of this component. * * @param seed seed for the name of this component */ From f5f54db6076b09f39e72883a745a7d22f82faa58 Mon Sep 17 00:00:00 2001 From: Deborah Soung Date: Tue, 27 Feb 2024 16:06:05 -0800 Subject: [PATCH 4/4] more scaladoc fixes --- core/src/main/scala/chisel3/package.scala | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/src/main/scala/chisel3/package.scala b/core/src/main/scala/chisel3/package.scala index 183755e9283..9485054ef49 100644 --- a/core/src/main/scala/chisel3/package.scala +++ b/core/src/main/scala/chisel3/package.scala @@ -414,8 +414,7 @@ package object chisel3 { final val deprecatedPublicAPIMsg = "APIs in chisel3.internal are not intended to be public" - /** Exposes target information and [[suggestName]] functionality of a - * [[NamedComponent]]. + /** Exposes target information and suggestName functionality of a NamedComponent. */ sealed trait HasTarget { def toTarget: ReferenceTarget