Skip to content

Proposal - create a top level Python driver for the workflow #33

@oharboe

Description

@oharboe

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions