llvm / circt

Circuit IR Compilers and Tools
https://circt.org
Other
1.67k stars 298 forks source link

[Tracker] Handshake-to-HW lowering #2704

Open mortbopet opened 2 years ago

mortbopet commented 2 years ago

This issue intends to track the progress on completing the handshake-to-hw lowering, and by doing so, transition off of our current FIRRTL-based lowering path.

The

mikeurbach commented 2 years ago

Regarding generate, I understand the desire to use this functionality, but it seems that will require more thinking. Is it possible to alleviate some of the pain with helpers in C++? Rather than defining generate features in the IR, how hard would it be to have builder methods for each Handshake component that are generic w.r.t. their input/output types at the C++ level?

I'm all for defining generate at the HW level, but this seems like it will require design discussions etc. to get right, and it might be quicker to make progress on Handshake to HW without it.

teqdruid commented 2 years ago

You could add it to the handshake dialect and see how it goes... That's the general recommendation for anything controversial.

On Thu, Mar 3, 2022, 6:08 PM Mike Urbach @.***> wrote:

Regarding generate, I understand the desire to use this functionality, but it seems that will require more thinking. Is it possible to alleviate some of the pain with helpers in C++? Rather than defining generate features in the IR, how hard would it be to have builder methods for each Handshake component that are generic w.r.t. their input/output types at the C++ level?

I'm all for defining generate at the HW level, but this seems like it will require design discussions etc. to get right, and it might be quicker to make progress on Handshake to HW without it.

— Reply to this email directly, view it on GitHub https://github.com/llvm/circt/issues/2704#issuecomment-1058270784, or unsubscribe https://github.com/notifications/unsubscribe-auth/AALNXYA27AWEZXOVCBP47SLU6DWXVANCNFSM5PUBS63Q . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you are subscribed to this thread.Message ID: @.***>

mortbopet commented 2 years ago

Regarding generate, I understand the desire to use this functionality, but it seems that will require more thinking. Is it possible to alleviate some of the pain with helpers in C++? Rather than defining generate features in the IR, how hard would it be to have builder methods for each Handshake component that are generic w.r.t. their input/output types at the C++ level?

Unless I'm misunderstanding your proposal, I don't think such a solution would look that much different than what we already have today in handshake-to-firrtl.

I'll be experimenting a bit with this generate concept locally and present my thoughts/findings at a later ODM. Alongside this, it's exposing quite a bit of missing stuff from the current state of parametric modules which nevertheless should be good contributions.

mikeurbach commented 2 years ago

I don't think such a solution would look that much different than what we already have today in handshake-to-firrtl

That is correct. I'm excited to see what you uncover by pushing on this.