-
Notifications
You must be signed in to change notification settings - Fork 902
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
abc9: Make the default a non-mapping mode #4282
base: main
Are you sure you want to change the base?
Conversation
Formerly when you didn't pass any options to `abc9` it would source a LUT library from the current design by considering any module with an `abc9_lut` attribute to be an available mapping primitive. Make the change to condition this behavior on a `-lutlib` option, and instead make `abc9` without any options perform a non-mapping mode in which the netlist is reimported back into Yosys as an and-inverter graph.
I would argue for making this change primarily for consistence, especially if we are starting to think of abc9 as a general mapper that's not limited to FPGA targets. The new non-mapping mode lowers the bar for experimentation, take e.g.
The output is then
|
Hmm. I'm not entirely sure about this; I think it's reasonable to require One of the nice things about |
|
log(" greater than this size (applicable when neither -lut nor -luts is\n"); | ||
log(" specified).\n"); | ||
log(" when sourcing the lut library from the current design (option -lutlib),\n"); | ||
log(" discard all lut primitives with greater than the specified width.\n"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Btw the old help text said -maxlut
means "discard greater than or equal", but as far as I can tell "discard greater than" is what's right
...or maybe it's not confusing, I am not sure anymore. If we made |
Gentle ping. What can I do to push this forward? |
My understanding was that this was a precursor to trying to perform ASIC mapping with ABC9, right? But as we've discussed, ASIC mapping with ABC9 is presently nonviable because the timing models between FPGAs and ASICs is very different. I'm also aware of #4283, but that's presented as an experiment. Is your intention there to use ABC9 to find choice nodes and then use a custom mapper? |
The interest here is to use ABC9 as a logic optimizer in ASIC flows.
Not sure that's right: All the issues are with boxes;
That's an option but not something that's planned right now. |
My memory is admittedly poor, but I don't know of any ABC9 commands that don't directly translate into "classic" ABC commands. The advantage of ABC9 in FPGA flows is box support, as I understand it.
And one of the issues with boxes is that the timing models are different between FPGAs and ASICs. (I think I've explained that to you, but maybe I'm misremembering)
Noted. |
Yes, and you can make use of the box support in ASIC flows at least for the technology-independent optimization, if nothing else. This is what this PR would allow you to do.
I don't think you have, or at least I am not aware of any principal obstacles. Either way you are working with the abstraction of actual arrival and required arrival times, and you can incorporate boxes into this the same on FPGAs and ASICs, even if on ASICs the arrival estimates are poorer. |
So, here's my suggestion, after talking in private.
Then, somebody can achieve non-mapping by passing an |
Is there a command to clear the last LUT mapping? |
|
actually, |
Exactly like it |
Formerly when you didn't pass any options to
abc9
it would source a LUT library from the current design by considering any module with anabc9_lut
attribute to be an available mapping primitive.Make the change to condition this behavior on a
-lutlib
option, and instead makeabc9
without any options perform a non-mapping mode in which the netlist is reimported back into Yosys as an and-inverter graph.