-
Notifications
You must be signed in to change notification settings - Fork 17
Open
Description
I'm sure this has been discussed, but I thought I'd write down my thoughts on a top-level driver.
Today there's a number of siloed tools that have been stitched together with the alpha-release/flow/Makefile. That's great to get things going, but it was never intended to be the ultimate solution.
I would propose that a Python high level flow driver is implemented.
I would argue that Python is the correct choice:
- it is a modern widely used scripting language frequently used in continuous integration
- it has a vast library and infrastructure available to it
- it has excellent development tools: IDE, debugger, etc.
- it has a continuous development infrastructure and reporting(e.g. pytest, mocking, etc.)
This driver should have two APIs:
- the command line. Much along the line of "git" with two levels of arguments "openroad stage
- a Python module that can be imported and then the tools can be accessed
Some example use-cases:
- "openroad synthesize TopLevel" => synthesizes TopLevel.v
- "openroad back-annotate TopLevel" => runs all steps up to back-annotated timing after detailed routing, skips steps alread completed
Some features that become easy and natural to implement:
- reporting. Static HTML pages w/limited interactivity(friendly towards continuous integration servers) with images, etc. There's plenty of Python template libraries to support this, PDF reports.
- a feature to adjust size of die area or timing closure frequence until the required area and timing frequency is found. Requires looping through the tools a number of times, possibly with a binary search.
Metadata
Metadata
Assignees
Labels
No labels