-
Notifications
You must be signed in to change notification settings - Fork 51
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
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
Make PipelineC LUT aware #45
Comments
Related paper: https://www.icsi.berkeley.edu/~nweaver/papers/2003-cslow.pdf |
Good idea for next stages of the project aka ultra fine tuning. BTW. synth tools should infer regs automatically. |
Yeah I think suggesting something like some basic FPGA arch modeling as part of pyrtl - to accompany their asic modeling - makes alot of sense (like you said pick a LUT-N arch of some sort) |
In context there is the lowest level of feedback (which pyrtl recently newly can provide) which is Then there is slightly better There is next a currently-broken And then how fun to think about this |
Or well I suppose for LUT level you dont need to know what part of the HDL it maps from if you know the delays across LUTs, etc - are modeling those paths - can probably just start turning on regs in the comb. path based on delay alone. |
To me initially it shouldn't support all kinds of chips, only the ones
supported by open source tools (yosys and nextpnr).
Having all the data at hand, a better tool can be designed. Then, when it
works, it could be ported to commercially supported chips.
…On Fri, Nov 19, 2021 at 11:33 AM Julian Kemmerer ***@***.***> wrote:
Or well I suppose for LUT level you dont *need* to know what part of the
HDL it maps from if you know the delays across LUTs, etc - are modeling
those paths - can probably just start turning on regs in the comb. path
based on delay alone.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#45 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACBHVWKM6ITCP4JAFIXBFDLUMZN4TANCNFSM5ILGJJ4Q>
.
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>.
|
I think if we took every PipelineC 'raw VHDL' pipelineable primitive, for ex. simple add operator (can divide up an N bit add into however many stages you want*). What I would want to know is something like Maybe could start at the maximum and reverse - what is the upper limit of pipelining a ex. 64b adder - ex. how many bits per stage maps to the highest fmax pipeline I did some experimenting once and there are defintely things like idk a Blah blah let me know if this rant makes sense |
Remembered this issue why not call it the -O3 flag and say 'now your rendered HDL is unreadable/a netlist of LUTs'? So the PipelineC HDL gets synthesized to LUTs first -> re imported as a PipelineC Dataflow to be pipelined= each LUT/~prim is a C func kinda thinking |
To be clear it is possible today to write C functions wrapping raw VHDL that instantiated LUTs |
Thanks Bartus: |
This Bartus' paper is so good |
Likely part of #46 and #48 too Once dealing with device specific netlists, might as well also see if tools provide .sdf output which should detail timing of each LUT IIUC Thanks @suarezvictor for bringing up |
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
A whole world of optimizations exists at the LUT level. Especially post PNR.
@suarezvictor was quick to point out that FPGAs have essentially 'free' registers that make pipelining easy. You could even turn on the registers between every single LUT for maximum FMAX.
The text was updated successfully, but these errors were encountered: