Skip to content

Rename "inline test" to "auto-test" - #5514

Open
trmckay wants to merge 1 commit into
mainfrom
rename-auto-test
Open

trmckay wants to merge 1 commit into
mainfrom
rename-auto-test

Conversation

@trmckay

@trmckay trmckay commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Renames the inline test API to "auto-test", which more accurately describes its purpose: a feature which lets you automatically discover and run tests that come out of a generator. The "inline" naming comes from the fact that these are declared inline with the DUT generator. But, that's not really the most important part of this API, IMO and more of an implementation detail. Furthermore, there are other use-cases where you might want to elaborate an inline test(harness) that are not this "auto-test" use-case.

I'm also considering whether we should move this out of experimental. I originally put it there to avoid PRs like this. But, now that I understand that we still try to maintain binary compatibility even here, I don't see the point of keeping here.

I have more PRs incoming for API improvements and consolidation with chisel3.UnitTest and circt-test. So, I want to get this out of the way first.

This turned out a lot messier than I had hoped it would. So much so, it has me questioning whether it's worth it. But,a at the same time, I don't know if source code style is a good reason to not give this API a more appropriate name. So, consider this PR a RFC.

Release Notes

  • Deprecate chisel3.experimental.inlinetest and rename to chisel3.experimental.autotest.

Development notes

  • AI tool(s) used: pi + gpt-6-luna
  • Merge strategy (defaults to squash): squash

@trmckay
trmckay requested a review from jackkoenig October 13, 2026 00:13
@trmckay trmckay added API Modification Deprecation Deprecates an API, will be included in release notes and removed API Modification labels Oct 13, 2026
Comment thread release.mill Outdated
Comment on lines +68 to +71
// These internal inline-test APIs are renamed
ProblemFilter.exclude[MissingClassProblem]("chisel3.internal.InlineTestIncluder"),
ProblemFilter.exclude[MissingClassProblem]("chisel3.internal.InlineTestIncluder$"),
ProblemFilter.exclude[DirectMissingMethodProblem]("chisel3.stage.ChiselOptions.inlineTestIncluder"),

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These seemed fair to remove given they are internal or highly unlikely to be used externally.

@jackkoenig

Copy link
Copy Markdown
Contributor

Discussed offline but we should do the "Texas two-step"1:

  1. In this PR, just add aliases with the desired names and deprecate the implementations (pointing people to use the alias).
  2. When we actually break main for Chisel 8, then we actually do the move and add deprecated aliases under the old names.

Add a TODO for (2) to #5100.

Footnotes

  1. This doesn't work in Scala 3, I have no idea what we're gonna do in Scala 3 once we care about binary compatibility there. targetName can help with moves within a package like this one, but when we want to move between packages we might be hosed. ↩

@trmckay

trmckay commented Oct 16, 2026

Copy link
Copy Markdown
Contributor Author

I want to hold off for a bit on merging this on this so I can minimize API changes across other related PRs.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Deprecation Deprecates an API, will be included in release notes DO NOT MERGE

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants