Skip to content
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

[Feature] Implement Analytical Placement #13

Open
Sov-trotter opened this issue Nov 22, 2022 · 1 comment
Open

[Feature] Implement Analytical Placement #13

Sov-trotter opened this issue Nov 22, 2022 · 1 comment

Comments

@Sov-trotter
Copy link
Contributor

This is one of the rarest packages I came across in context of ASIC design flow within the julia ecosystem :)

I would be happy to contribute and work on this package and one starting point I can think of is Analytical Placement?

Also are there any legalisation steps in place after the SA steps?

@hildebrandmw
Copy link
Owner

Hi @Sov-trotter , thank you for your interest!

First, I will provide some context for this project. This project is not really targeting ASIC design flows and is more geared towards devices like heterogeneous coarse-grained reconfigurable arrays. Particularly, this was targeting KiloCore and related architectures (I spent some time in this group during graduate school). This project has some really neat features such as the ability to place and route in 3 dimensions, use arbitrary underlying connection topologies, arbitrary processor deletion, custom placement objective functions etc. etc., but it's definitely different from my understanding of what typical ASIC flows might look like.

Unfortunately, I ended moving out of this research group before publishing anything on this project and it's basically been in maintenance mode for the last 4 years. I believe that it is used occasionally within the group to place and route various applications, but active development and incorporation into research projects has for all intents and purposes stopped.

With that context, unless you had an immediate project or use case in mind for which this package would be useful (to that end, I'd be happy to supply what assistance I can), I sadly don't think that contributing to this project (welcome as it would be) would be an efficient use of your time.

Regarding post-placement steps, there is a validation step following placement

function verify_placement(m::Map, sa::SAStruct)
but this isn't a legalization step. Due to the nature of how heterogeneous tiles might be placed in a CGRA style architecture, it was easier to ensure that SA placement always generated legal moves rather than relying on post-placement legalization. A fun side-effect of that is the need to begin with a legal placement, which can be cast as an instance of bipartite graph matching.
function initial_placement!(placement_struct)

Please let me know if you have further questions 😄.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants