The-OpenROAD-Project / OpenROAD

OpenROAD's unified application implementing an RTL-to-GDS Flow. Documentation at https://openroad.readthedocs.io/en/latest/
https://theopenroadproject.org/
BSD 3-Clause "New" or "Revised" License
1.5k stars 527 forks source link

Add library of useful functions for doing manual placement of cells #4041

Open mithro opened 11 months ago

mithro commented 11 months ago

Description

It would be nice if the OpenROAD tool provides a set of functions to the TCL & Python scripting interface which made it quick and easy to do manual placement of a certain sets of cells.

Some ideas include;

Some related functions could include;

This are likely to be very useful in things like;

Suggested Solution

No response

Additional Context

No response

Dolu1990 commented 8 months ago

Hi,

I think I hit the same issue. I have congestions problems on a register-file using sky130 (doesn't pass at 20% density), and wanted to try helping the place and route by providing "fixed location" in column for the register-file latches.

mithro commented 8 months ago

@Dolu1990 - You might find using DFFRAM as an alternative solution.

maliberty commented 8 months ago

Note that DFFRAM is rather skywater specific and some layouts are far from optimal.

Dolu1990 commented 8 months ago

@mithro Thanks ^^ It seems like DFFRAM won't work for my usecase (i would need 4R 2W and more)

mithro commented 8 months ago

@Dolu1990 - You should know how to build a 4R 2W out of DFFRAM blocks, same thing we do as in FPGAs -- https://tomverbeure.github.io/2019/08/03/Multiport-Memories.html :-)

mithro commented 8 months ago

@Dolu1990 - You should also log a feature request on the DFFRAM repository. BTW If you are doing this as part of funded research, funding AUC is extremely cheap.

Dolu1990 commented 8 months ago

@mithro

You should know how to build a 4R 2W out of DFFRAM blocks, same thing we do as in FPGAs

Yes right ^^

You should also log a feature request on the DFFRAM repository

Done : https://github.com/AUCOHL/DFFRAM/issues/192

If you are doing this as part of funded research, funding AUC is extremely cheap.

It is part of a small exploratory project (~100h work) to see where are the bottleneck in porting NaxRiscv to asic, not enough left for it, but thanks for the tips, i keep it in mind :)

maliberty commented 8 months ago

Fwiw I did start a rewrite of DFFRAM in OR as a spare time project. If someone has interest in picking it up I would be glad to share the in progress code.

rovinski commented 8 months ago

@maliberty that might be a good student project? If you share the code I can determine further.

maliberty commented 8 months ago

fwiw I put the code at https://github.com/The-OpenROAD-Project/OpenROAD/pull/4496 - this is not complete and is not proposed a solution to anything in its current form. If someone wants to pick it up and complete it that would be great.

QuantamHD commented 8 months ago

We should take a page from CSS Grid https://css-tricks.com/snippets/css/complete-guide-grid/ if we're looking for more generic layout primitives.