Skip to content

Conversation

@trmckay
Copy link
Contributor

@trmckay trmckay commented Jan 23, 2026

Adds an API for the requires keyword supported by CIRCT after llvm/circt#9496.


Contributor Checklist

  • Did you add Scaladoc to every public function/method?
  • Did you add at least one test demonstrating the PR?
  • Did you delete any extraneous printlns/debugging code?
  • Did you specify the type of improvement?
  • Did you add appropriate documentation in docs/src?
  • Did you request a desired merge strategy?
  • Did you add text to be included in the Release Notes for this change?

Type of Improvement

  • Feature (or new API)

Desired Merge Strategy

  • Squash: The PR will be squashed and merged (choose this if you have no preference).

Release Notes

  • Add a requirements parameter to ExtModule for tracking external build requirements.

Reviewer Checklist (only modified by reviewer)

  • Did you add the appropriate labels? (Select the most appropriate one based on the "Type of Improvement")
  • Did you mark the proper milestone (Bug fix: 3.6.x, 5.x, or 6.x depending on impact, API modification or big change: 7.0)?
  • Did you review?
  • Did you check whether all relevant Contributor checkboxes have been checked?
  • Did you do one of the following when ready to merge:
    • Squash: You/ the contributor Enable auto-merge (squash) and clean up the commit message.
    • Merge: Ensure that contributor has cleaned up their commit history, then merge with Create a merge commit.

@trmckay trmckay added the Feature New feature, will be included in release notes label Jan 23, 2026
@trmckay trmckay marked this pull request as draft January 24, 2026 00:01
@trmckay trmckay marked this pull request as ready for review January 24, 2026 01:49
Comment on lines 53 to 57
abstract class BlackBox(
val params: Map[String, Param] = Map.empty[String, Param],
override protected final val knownLayers: Seq[Layer] = Seq.empty[Layer]
val params: Map[String, Param] = Map.empty[String, Param],
override protected final val knownLayers: Seq[Layer] = Seq.empty[Layer],
override protected final val requirements: Seq[String] = Seq.empty[String]
) extends BaseBlackBox {
Copy link
Contributor

Choose a reason for hiding this comment

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

Blackbox is deprecated and we will remove it right before Chisel 8 release so I wouldn't bother.

Comment on lines +32 to +35
case x @ DefBlackBox(id, _, _, _, _, _, _) => !id._isImportedDefinition
case DefIntrinsicModule(_, _, _, _, _) => false
case DefClass(_, _, _, _) => false
case x => true
Copy link
Contributor

Choose a reason for hiding this comment

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

I'd just simplify this

Suggested change
case x @ DefBlackBox(id, _, _, _, _, _, _) => !id._isImportedDefinition
case DefIntrinsicModule(_, _, _, _, _) => false
case DefClass(_, _, _, _) => false
case x => true
case d: DefBlackBox => !d.id._isImportedDefinition
case _: DefIntrinsicModule => false
case _: DefClass => false
case _ => true

Copy link
Contributor

@jackkoenig jackkoenig left a comment

Choose a reason for hiding this comment

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

Generally LGTM, I think we should wait until a firtool release with requires support (and bump) before merging. I want to do a Chisel release soon and might do so before firtool supports this.

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

Labels

Feature New feature, will be included in release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants