The-OpenROAD-Project / alpha-release

Builds, flow and designs for the alpha release
Other
53 stars 17 forks source link

Separate out design configuration from platform configuration #10

Closed Colin-Holehouse closed 5 years ago

Colin-Holehouse commented 5 years ago

Currently in the flow/Makefile a DESIGN_CONFIG is specified which references a makefile fragment that sets variables for the design and library configuration

Separating these out into DESIGN only and PLATFORM only makefile fragments allows ALL the base platform information to be defined within the platform, reducing errors setting up to run with a new platform.

The resulting makefile could be as follows:

DESIGN_CONFIG ?= ./designs/gcd.mk PLATFORM ?= nangate45

include $(DESIGN_CONFIG) include ./platforms/$(PLATFORM)/config.mk

Need to think about how to deal with design specific generated library elements

tajayi commented 5 years ago

In the current incarnation, a "design" is intrinsically linked to a "platform" for a few reasons:

  1. The design may include additional lefs/lib/gds for macros specific to that design. Swapping out the platform underneath will make the macros incompatible.
  2. Floorplan variables are platform specific. Right now we also require them to be a a multiple of the core placement site
  3. It is possible for designs to instantiate a standard cell in the behavioral RTL (e.g buffers, clkgate). This would again break if platforms are arbitrarily swapped.

The current implementation is more akin to a whitelist of design-platform combinations. Allowing arbitrary combinations of design and platforms will inherently require some sort of blacklist on incompatible permutations

We will defer this for a future more robust "flow" infrastructure