Hi everyone. I'm working on structured (somewhat m...
# openroad
a
Hi everyone. I'm working on structured (somewhat manual) placement of cells to improve performance of well-known design components, in particular for FPGA components. While the ultimate goal might be an independent macro compiler, something like openram, the first step is to do this within a regular flow. I reverse engineered dffram to figure out how this can be done within openroad/openlane, and my scripts are here and here. I work with @User and he suggested that we could try to factor this into a feature of openroad/lane themselves, so that for example someone could mess with their design placement by simply defining a placement script which then has access to the flow database through opendb. Is anyone else interested in this? Are there plans to support this kind of option in the flow?
m
Do you have an example of what you are generating? It's not clear to me what is driving the need for manual placement
a
Yes. It makes sense for common structures that do not need much optionality to satisfy most common uses. Examples include blocks in FPGAs (CLBs, switch boxes) and things like adders, multipliers, etc.
e.g. i took such a piece, and by just automatically placing the standard cells as synthesised, i got 45% better density, 33% faster critical path, 8% lower power
more detail to come obviously but maybe people want to help build or use such a thing