Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement typeName API for stable Module names #3130

Merged
merged 27 commits into from
Apr 5, 2023
Merged
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
85cbc2e
Implement `typeName` API for a few `Data` types
jared-barocsi Feb 2, 2023
b935729
Fix silly compilation error
jared-barocsi Feb 23, 2023
6a2bf4f
Implement typeName API further for most data types and modules which …
jared-barocsi Mar 22, 2023
be8f5cf
Compilation error fixes
jared-barocsi Mar 22, 2023
aab6117
Remove width parameter from Bool
jared-barocsi Mar 22, 2023
8703204
Test for Queue naming using typeNames
jared-barocsi Mar 22, 2023
6dfb9cf
Remove width-sensitive override for AsyncReset as it is irrelevant
jared-barocsi Mar 23, 2023
cbbb8cf
Add typeName for Analogs
jared-barocsi Mar 27, 2023
a048eb8
Add additional types to be tested
jared-barocsi Mar 27, 2023
3d8fc0c
Scalafmt
jared-barocsi Mar 27, 2023
b7c6f2b
Merge branch 'main' into typename-api
jared-barocsi Mar 27, 2023
97f2b5c
Use circt ChiselStage
jared-barocsi Mar 27, 2023
6dd31f1
Update queue naming of existing tests
jared-barocsi Mar 28, 2023
c531172
Scalafmt
jared-barocsi Mar 28, 2023
a4d00ba
Change pipe desiredName to be consistent with other modules
jared-barocsi Mar 29, 2023
139e5d9
Update naming cookbook
jared-barocsi Mar 29, 2023
9f597b3
Update docs/src/cookbooks/naming.md
jared-barocsi Mar 29, 2023
acec8ed
Update docs/src/cookbooks/naming.md
jared-barocsi Mar 29, 2023
b0172cf
Add SInt to TypenameSpec
jared-barocsi Mar 30, 2023
d96670d
Fix cookbook mdoc errors
jared-barocsi Apr 3, 2023
80c1218
compileOnly tag on scala code
jared-barocsi Apr 3, 2023
401435b
Merge branch 'main' into typename-api
jared-barocsi Apr 3, 2023
3556190
More improvements of mdoc
jared-barocsi Apr 3, 2023
5e6bca7
compileOnly -> compile-only
jared-barocsi Apr 3, 2023
091ab72
Final mdoc review and fixes
jared-barocsi Apr 3, 2023
a48a6b9
Add inferred UInt to test
jared-barocsi Apr 4, 2023
5699a8a
Merge branch 'main' into typename-api
jared-barocsi Apr 5, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add additional types to be tested
  • Loading branch information
jared-barocsi committed Mar 27, 2023
commit a048eb806d5940140f8a35f74b7ce2d47a50c3e6
60 changes: 45 additions & 15 deletions src/test/scala/chiselTests/naming/TypenameSpec.scala
Original file line number Diff line number Diff line change
@@ -1,35 +1,65 @@
package chiselTests.naming

import chisel3._
import chisel3.experimental.Analog
import chisel3.stage.ChiselStage
import chisel3.util.{Decoupled, Queue}
import chiselTests.ChiselFlatSpec

class TypenameSpec extends ChiselFlatSpec {
class TypenameSpec extends ChiselFlatSpec {
"Queues" should "have stable, type-parameterized default names" in {
class Test extends Module {
class AnalogTest[T <: Analog](gen: T) extends Module {
val bus = IO(gen)

override def desiredName = s"AnalogTest_${gen.typeName}"
}

val io = IO(new Bundle {
val foo = Decoupled(UInt(4.W))
val bar = Decoupled(Bool())
val fizzbuzz = Decoupled(Vec(3, UInt(8.W)))
val uint = Decoupled(UInt(4.W))
val bool = Decoupled(Bool())
val vec = Decoupled(Vec(3, UInt(8.W)))
val asyncReset = Decoupled(AsyncReset())
val reset = Decoupled(Reset())
val clock = Decoupled(Clock())
val analog = Analog(32.W)
})

val fooEnq = Wire(Decoupled(UInt(4.W)))
val fooDeq = Queue(fooEnq, 16) // Queue16_UInt4
fooEnq <> io.foo

val barEnq = Wire(Decoupled(Bool()))
val barDeq = Queue(barEnq, 5) // Queue5_Bool
barEnq <> io.bar

val fizzbuzzEnq = Wire(Decoupled(Vec(3, UInt(8.W))))
val fizzbuzzDeq = Queue(fizzbuzzEnq, 32) // Queue32_Vec3_UInt8
fizzbuzzEnq <> io.fizzbuzz
val uintEnq = Wire(Decoupled(UInt(4.W)))
val uintDeq = Queue(uintEnq, 16) // Queue16_UInt4
uintEnq <> io.uint

val boolEnq = Wire(Decoupled(Bool()))
val boolDeq = Queue(boolEnq, 5) // Queue5_Bool
boolEnq <> io.bool

val vecEnq = Wire(Decoupled(Vec(3, UInt(8.W))))
val vecDeq = Queue(vecEnq, 32) // Queue32_Vec3_UInt8
vecEnq <> io.vec

val asyncResetEnq = Wire(Decoupled(AsyncReset()))
val asyncResetDeq = Queue(asyncResetEnq, 17) // Queue17_AsyncReset
asyncResetEnq <> io.asyncReset

val resetEnq = Wire(Decoupled(Reset()))
val resetDeq = Queue(resetEnq, 3) // Queue3_Reset
resetEnq <> io.reset

val clockEnq = Wire(Decoupled(Clock()))
val clockDeq = Queue(clockEnq, 20) // Queue20_Clock
clockEnq <> io.clock

val analogTest = Module(new AnalogTest(Analog(32.W)))
analogTest.bus <> io.analog
}

jared-barocsi marked this conversation as resolved.
Show resolved Hide resolved
val chirrtl = ChiselStage.emitChirrtl(new Test)
chirrtl should include("module Queue16_UInt4")
jared-barocsi marked this conversation as resolved.
Show resolved Hide resolved
chirrtl should include("module Queue5_Bool")
chirrtl should include("module Queue32_Vec3_UInt8")
chirrtl should include("module Queue17_AsyncReset")
chirrtl should include("module Queue3_Reset")
chirrtl should include("module Queue20_Clock")
chirrtl should include("module AnalogTest_Analog32")
jared-barocsi marked this conversation as resolved.
Show resolved Hide resolved
}
}