{"id":23451424,"url":"https://github.com/coloquinte/coloquinte_placement","last_synced_at":"2026-03-13T19:38:17.648Z","repository":{"id":23452892,"uuid":"26816724","full_name":"Coloquinte/Coloquinte_placement","owner":"Coloquinte","description":"An analytical VLSI placer","archived":false,"fork":false,"pushed_at":"2021-11-22T22:07:58.000Z","size":1053,"stargazers_count":30,"open_issues_count":2,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-02-01T13:55:07.335Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Coloquinte.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-11-18T15:51:57.000Z","updated_at":"2026-01-23T15:28:29.000Z","dependencies_parsed_at":"2022-07-13T23:50:31.954Z","dependency_job_id":null,"html_url":"https://github.com/Coloquinte/Coloquinte_placement","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Coloquinte/Coloquinte_placement","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coloquinte%2FColoquinte_placement","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coloquinte%2FColoquinte_placement/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coloquinte%2FColoquinte_placement/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coloquinte%2FColoquinte_placement/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Coloquinte","download_url":"https://codeload.github.com/Coloquinte/Coloquinte_placement/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Coloquinte%2FColoquinte_placement/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30473429,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T17:15:31.527Z","status":"ssl_error","status_checked_at":"2026-03-13T17:15:22.394Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-24T00:25:59.051Z","updated_at":"2026-03-13T19:38:17.607Z","avatar_url":"https://github.com/Coloquinte.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# [Coriolis](https://gitlab.lip6.fr/vlsi-eda/coriolis/) Etesian: an analytical VLSI placer\n\nEtesian (formerly Coloquinte) is a framework for placing VLSI circuit. Coloquinte is now part of the Coriolis toolchain. If you are looking for an up-to-date version, please visit [the official Coriolis repository](https://gitlab.lip6.fr/vlsi-eda/coriolis/).\n\n\nIt targets standard-cell digital circuits, optionally with pre-placed macroblocks.\nIt is now a complete tool, handling all steps of a placement flow. It features exact and approximate wirelength models, and should be updated to do timing- and routing-driven optimization.\n\nIt is not standalone: no parsers; currently, it interfaces with the Coriolis CAD toolchain, but you you can follow the example main and interface it with your own tool.\nIt is still a work in progress, and the optimization process could be significantly improved in the coming months. However, all tools are already competitive with other academic placers - and it is the only open source placer using analytical placement techniques.\n\n## Principle\n\nEtesian is based on analytical placement: it performs continuous optimization of the objective function with a penalty accounting for overlap. This penalty is currently calculated from a legalized or partially legalized placement.\nIt alternates between continuous optimization and legalization to reach a good solution, then perform local optimizations.\n\n## Tools\n\n### Global placement\n\nCurrently, the global placement is based on a common method: a quadratic local wirelength model that is optimized using conjugate gradient.\nIt is extremely flexible, with the exact Steiner model as well as the classical star and bounding-box models, and takes advantage of parallelism.\n\n### Legalization\n\nLegalization is performed in two steps: rough legalization, accounting for placement density, and exact legalization accounting for cell overlaps.\nBoth should be beyond industrial level, although exact legalization only handles standard cells yet.\n\nThe rough legalizer models a 2D transportation problem that is optimized using various locally optimal algorithms. They may be run in parallel.\nThe exact legalization places one cell at a time but is able to move previous cells to obtain better solution: it can handle extremely dense placements (\u003e99%) with fixed macroblocks.\n\n### Detailed placement\n\nThe detailed placement optimizations look for topology (i.e. cell ordering) modifications, and optimize the positions for a given topology.\nThey use specialized algorithms for position optimizations - most of them are not published yet -, and generally brute-force for topology modifications.\n\n## Runtime\n\nFor ~300,000 cells and a single core at 2 GHz, the runtimes are approximately (depending on solution quality):\n  * 10-30s per global placement iteration\n  * 10s for a rough legalization\n  * 3s to obtain a fully legal placement\n  * 400s to perform detailed placement\n\nA typical placement run will usually feature 50 to 200 global placement iterations. Note that global placement and rough legalization can use multiple cores.\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoloquinte%2Fcoloquinte_placement","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoloquinte%2Fcoloquinte_placement","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoloquinte%2Fcoloquinte_placement/lists"}