This adds an additional layer (ChipTop) between the System module and the TestHarness. The IOBinder API is now changed to take only a single parameter (an Any) and return a 3 things: The IO port(s), the IO cell(s), and a function to call inside the test harness, which is analogous to the old IOBinder function, except that it takes a TestHarness object as an argument instead of (clock, reset, success).
* A new Top-level module, ChipTop, has been created. ChipTop instantiates a "system" module specified by BuildSystem.
* BuildTop now builds a ChipTop dut module in the TestHarness by default
* A new BuildSystem key has been added, which by default builds DigitalTop (previously just called Top)
* The IOBinders API has changed. IOBinders are now called inside of ChipTop and return a tuple3 of (IO ports, IO cells, harness functions). The harness functions are now called inside the TestHarness (this is analogous to the previous IOBinder functions).
* IO cell models have been included in ChipTop. These can be replaced with real IO cells for tapeout, or used as-is for simulation.
* The default for the TOP make variable is now ChipTop (was Top)
* [make] split up specific make vars/targets into frags
* [make] move dramsim and max-cycles into SIM_FLAGS
* [misc] move ariane configs to configs/ folder
* WIP; Add some information on building a chip [skip ci]
* [docs] [ci skip] re-org chip/barstools docs
Also add macrocompiler flag descriptions
* [docs] Add MDF description [ci-skip]
* [docs] Address some of Abe and Harrison's feedback [ci skip]
* [docs] Update hierarchy/transform section [ci skip]
* [docs] Address all feedback except cost function [ci skip]
* [docs] Describe macro compiler cost function [ci skip]
Co-authored-by: John Wright <johnwright@eecs.berkeley.edu>
On macOS, "gnumake" and "make" are both supplied by the OS, but are too
old to build glibc (both are version 3.81 as of this writing). Homebrew
provides the "gmake" executable, which is recent enough for glibc.
However, the existing logic in "scripts/build-util.sh" will always
prefer "gnumake" over "gmake".
The configure logic in the riscv-glibc library allows a user to override
the preference for "gnumake" by setting the MAKE environment variable.
This change makes "scripts/build-openocd.sh" and
"scripts/build-toolchains.sh" mimic that behavior. A user can now use
"gmake" instead of "gnumake" during the toolchain build like so:
MAKE=gmake ./scripts/build-toolchains.sh