Skip to content

Conversation

@robluo
Copy link

@robluo robluo commented Jul 25, 2024

Increased the size of fixed block architecture description. Added profiling.

AlexandreSinger and others added 28 commits May 23, 2024 21:28
Got the clique net model working end to end. Have not tested for
legality. Need to compare it to the star and hybrid net models.
Added the star and hybrid formulations. Lots of duplicate code, but
things are working end 2 end.

The precision of the timer is annoyingly low, would like to get more
precision if possible.

Would also like to clean up this code into a class so things can be a
bit cleaner.
I have some concerns with this formulation since it is struggling to
converge. But this was expected based on the Python implementation.
Made the clique, star, and hybrid models directly sparse. They no longer
create a dense matrix before getting the sparse view; they directly
generate the sparse matrix. Not sure if this is the most efficient way
to do this, but it was simple to do and it did reduce the memory
footprint. Timing was not effected for execution.
Changed the B2B matrix representation from a dense matrix being viewed
as a sparse matrix to generating the sparse matrix on the fly.

This reduced the overall memory usage, but also reduce the runtime of
the B2B for the largest circuits by a small amount.
Added AnalyticalSolver and PartialPlacement classes.

Built the skeleton of the flow.
Lots of hard-coded parts that need to be resolved but works on simple
testcase.
Got stuck. Going to wait to get some advice on this.
Through suggestions from Vaughn, moved to molecules since they are a
good estimate for which blocks will go together and make full
legalization easier.
Emailed Kate to discuss how she solved these issues.
The AnalyticalSolver class should be easily extendable to allow for the
creation of new solvers in the future.
Known bug in the code is conjugate gradient would fail to to no
convergence
No more NaN from CG solver. Node does not go outside of the board for
mcnc first 200 iterations.
The main issue is including star nodes in solver after
initialization. PartialPlacement does not have locations for star
nodes.
a work in progress. Known issue is conjugate gradient does not converge.
Known issue is the outer loop does not converge.
However, it converges at a higher value than the clique/star formulation
converges better but worth than clique and star
Instead of just riding off of the old place flow, created a custom
argument for Analytical Placement (--analytical_place) which will only
run the analytical placement flow (skipping over pack and place).

Since the device sizing requires the clustered netlist in order to size
the grid, this adds a new requirement where the grid size must now be
fixed in the architecture file using tje FPGA Grid Layout.
Instead of iterating over the AtomNetlist, created our own netlist
object which is a vector of vectors. This can be made much more
efficient by using the Netlist class as a base class; however, doing
this now to make is easier.

In the process of implementing this feature, fixed a bug in the B2B
formulation which was causing it not to converge.
@AlexandreSinger
Copy link
Owner

Hi @robluo I like most of these changes! My concern is with the profiling code. Often it is good to only have the profiling code on when you want it. My worry is that the profiling code may slow things down. Can you please either add some IFDEFs to remove them when we are not profiling, or isolate these changes onto a profiling branch?

AlexandreSinger and others added 5 commits July 31, 2024 15:28
Added the ability to export PartialPlacements to the flat placement file
format defined by VIPER:
https://doi.org/10.1145/3665283.3665300
Abstracted the tile locations into a TileGraph class.

Abstracted the architecture information into an Architecture Model
class.

This creates an easier interface to extend on in the future, as we make
the legalizer heterogenous and more powerful.
@robluo robluo force-pushed the feature-analytical-placer-profiling branch from 3559f50 to 84d3b3c Compare August 13, 2024 16:35
@AlexandreSinger AlexandreSinger force-pushed the feature-analytical-placer branch from cd87540 to 294af6d Compare August 15, 2024 22:41
@AlexandreSinger AlexandreSinger force-pushed the feature-analytical-placer branch from 9f4abd1 to d5a2306 Compare September 8, 2024 14:42
@AlexandreSinger AlexandreSinger force-pushed the feature-analytical-placer branch 2 times, most recently from 907ae6e to a76313e Compare September 23, 2024 21:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants