-
Notifications
You must be signed in to change notification settings - Fork 397
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
Enabled BLIF buffer elimination in preparation for InOuts #1520
base: master
Are you sure you want to change the base?
Enabled BLIF buffer elimination in preparation for InOuts #1520
Conversation
9a5d35c
to
01c8756
Compare
@kmurray This changes Odin II's BLIF output slightly which seems to have had some QoR changes for VPR. The issues on Travis appear to be improvements. What do I need to do to regenerate the golden results to make this pass? |
01c8756
to
58d57ce
Compare
56059e7
to
57a4a57
Compare
Running the regression tests (with -create_golden to regenerate golden) for basic, strong and nightly I get this error:
I assume this means ABC somehow broke with these changes? My concern here is that I believe this modification must definitionally be identical behaviour, since the driving net can only have a fanout of one (otherwise I do not do this optimisation) so the drivers of this net must necessarily assign directly to the output wire. The only thing I can think is that somehow there is a combinational loop formed somewhere, but I dont see how this could be possible since fanout = 1 and we dont have InOuts yet (and if we did it would be a bug in stereovision not Odin II) @jeanlego Thoughts? |
if (net->num_fanout_pins <= 1) { | ||
for (int i = 0; i < net->num_driver_pins; i++) { | ||
npin_t* driver = net->driver_pins[i]; | ||
if (driver->name != NULL && ((driver->node->type == MULTIPLY) || (driver->node->type == HARD_IP) || (driver->node->type == MEMORY) || (driver->node->type == ADD) || (driver->node->type == MINUS))) { |
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.
I don't forsee this being used for anything else but output. can you assert that node->type is OUTPUT_NODE
I would rather not see this used anywhere else in the future unless theres a good reason for it, so guarding it should make that clear
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.
I assume you mean the input node? The driver can be anything that drives an output yeah?
Does @jeanlego's suggested code change above fix the logical equivalence failure or is there still an issue with that? |
Sadly no but I'm out for the week so I can't pull the code to diff the resulting blif |
fc252f3
to
d313bb7
Compare
d313bb7
to
be50572
Compare
Assigning this to @sdamghan to see if he wants to finish this PR, or abandon it. |
@vaughnbetz not sure why this is left, I was not aware of the progress of this PR. Will investigate more in the future |
Description
Enables the logic for eliminating the redundant final buffer in the BLIF output. This is a necessary precursor to InOuts as the extra buffer is not driven by the input correctly
Types of changes
Checklist: