The-OpenROAD-Project / OpenLane

OpenLane is an automated RTL to GDSII flow based on several components including OpenROAD, Yosys, Magic, Netgen and custom methodology scripts for design exploration and optimization.
https://openlane.readthedocs.io/
Apache License 2.0
1.32k stars 370 forks source link

Add OpenROAD remove_buffers to flow #1095

Open antonblanchard opened 2 years ago

antonblanchard commented 2 years ago

@jjcherry56 points out that we should have the option of calling remove_buffers before we call repair_design, to undo any buffer addition that yosys/abc does.

To complicate matters, Openlane currently has an internal command called remove_buffers. It's controlled by an undocumented environment variable DONT_BUFFER_PORTS. What is it used for? @donn any ideas?

I have a distant memory that it was to remove buffers inserted around tristates. I did find it a mention of it in caravel, but it's commented out:

# mgmt_gpio_in is driven by a tristate cell
# set ::env(DONT_BUFFER_PORTS) "mgmt_gpio_in"

If we are inserting buffers around tristates, I would think we should fix OpenROAD, and just remove this.

maliberty commented 2 years ago

There was a bug a while back where resizer but a buffer after a tristate but that was fixed.

antonblanchard commented 2 years ago

There was a bug a while back where resizer but a buffer after a tristate but that was fixed.

Thanks @maliberty, I created https://github.com/The-OpenROAD-Project/OpenLane/pull/1098