Skip to content

Support workflow for early exploration of designs with alpha-release flow #44

@oharboe

Description

@oharboe

I believe it would be useful to be able to run designs through the alpha-release flow while setting an enumerated list of modules to black boxes to get statistics on the design as early feedback to the design process.

To set modules to black boxes is useful in the case where the current implementation is not yet ready or is impossible to realize in the alpha-release flow automatically: multipliers, RAM, too complex modules, etc.

I naively expect black boxes to be moduled as zero size, infinitely fast modules when there's no other information. This is course unrealistic, but as long as the interesting areas of the design to study are not involved in these parts of the design(for instance that the fMax problems are elsewhere), then zero size, infinitely fast black boxes is a perfectly good way to model parts of the design. Another advantage of of setting modules to such black boxes is to simply to speed up turnaround times for builds.

I'd be happy to provide a pull-request that demonstrates this workflow and demonstrates the failure belwo, but first it would be good to hear that there's agreement that this is a useful use-case for alpha-release.

To reproduce

When I try to modify synth.tcl to do a less agressive optimization and set certain modules to black boxes, the workflow fails in the floorplan with the error message below.

Modification to synth.tcl:

+blackbox ThingAMaBobUnit
+
 # generic synthesis
-synth -top $::env(DESIGN_NAME) -flatten
+synth -noshare -noalumacc -top $::env(DESIGN_NAME) 

Error message:

# make DESIGN_CONFIG=`pwd`/designs/harness.mk DESIGN_NAME=MyTopLevelModule
[deleted]
Mon Nov  4 08:17:24 UTC 2019
        ____      _____ _     ___   ___  ____  ____  _        _    _   _ 
       |___ \    |  ___| |   / _ \ / _ \|  _ \|  _ \| |      / \  | \ | |
         __) |   | |_  | |  | | | | | | | |_) | |_) | |     / _ \ |  \| |
        / __/ _  |  _| | |__| |_| | |_| |  _ <|  __/| |___ / ___ \| |\  |
       |_____(_) |_|   |_____\___/ \___/|_| \_\_|   |_____/_/   \_\_| \_|
                                                                         
verilog2def \
[deleted]
Tcl_SetObjLength: negative length requested: -2147483644 (integer overflow?)

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