Design and platform
Each card shows a command to explain. A missed card returns later in the round and starts the schedule over. A card answered correctly moves up the schedule and next appears after 1, 3, 7, then 21 days. Keys 1 to 4 choose an option, h shows a hint, and Enter moves on. A hint keeps the card where it is on the schedule. An ordering card is answered by clicking its items in order, and one wrong click ends it. Time values are in nanoseconds. Progress is stored in this browser.
All 10 cards in this section, with answers
-
export DESIGN_NAME = gcdNames the top-level module that the flow builds.
Hint: The flow has to know which module is the design, out of everything it reads.
Every stage works on this module, and it must match a module in the Verilog that is read.
DESIGN_NICKNAMEis the separate variable that renames the output directory. OpenROAD-flow-scripts reference -
export DESIGN_NICKNAME = riscv32iChanges the output directory name without changing the module built.
Hint: Compare it with DESIGN_NAME: only one of the two has to match the Verilog.
Results go to
results/<platform>/<nickname>/. It exists for designs whose top module name is unwieldy or collides with another design's. OpenROAD-flow-scripts reference -
export PLATFORM = nangate45Selects the process design kit the design is built with.
Hint: One word pulls in a whole directory of technology files.
The platform directory supplies the technology and cell files, the site, the power grid script, and its own default variables. Changing this one line rebuilds the same design on a different technology. OpenROAD-flow-scripts reference
-
export VERILOG_FILES = $(sort $(wildcard ./designs/src/gcd/*.v))Lists the design's source files for synthesis to read.
Hint: Ask what synthesis is given to read.
The list is read by synthesis, in order.
sortaround a wildcard keeps the order stable so a build is repeatable. Header directories are given separately withVERILOG_INCLUDE_DIRS. OpenROAD-flow-scripts reference -
export SDC_FILE = ./designs/nangate45/gcd/constraint.sdcGives the timing constraints, starting with the clock definition.
Hint: It is read early and then used by every stage that thinks about timing.
The file holds the SDC (Synopsys Design Constraints) commands: clock definitions, input and output delays, and any exceptions. Synthesis, placement, clock tree synthesis, and routing all read it, and later stages read the version each earlier stage wrote. OpenROAD-flow-scripts reference
-
export ADDITIONAL_LEFS = ./designs/src/tiny/sram.lefAdds hard macro geometry: outline, pins, and blockages.
Hint: A hardened macro is not in the standard cell library. Ask what its shape comes from.
A macro needs three things in the flow: its shape from a LEF (Library Exchange Format) file here, its timing from
ADDITIONAL_LIBS, and its layout fromADDITIONAL_GDSat the end. The shape is stored in the design database; the timing is not. OpenROAD-flow-scripts reference -
export ADDITIONAL_LIBS = ./designs/src/tiny/sram.libAdds hard macro timing and power data for analysis.
Hint: The counterpart of the macro's shape.
The library is read in each session that times the design, because it is not stored in the database, unlike the geometry. A macro missing from here times as if it had no delay at all. OpenROAD-flow-scripts reference
-
export ADDITIONAL_GDS = ./designs/src/tiny/sram.gdsAdds the macro's real layout for the final merged layout file.
Hint: It matters only at the very end, when one file has to contain everything.
Through the flow a macro is only an outline with pins. The finishing stage merges the real layout of each macro into the design's own layout, which is what goes to the foundry. OpenROAD-flow-scripts reference
-
export BLOCKS = aes_cipher_topNames sub-blocks that are hardened first and used as macros above.
Hint: It turns part of your own design into something the top level treats as a macro.
In a hierarchical run each named block goes through the flow on its own and produces an abstract and a timing model. The top level then places it as a macro, which is how a design too big for one flat run is built. OpenROAD-flow-scripts reference
-
export TECH_LEF = $(PLATFORM_DIR)/lef/NangateOpenCellLibrary.tech.lef export SC_LEF = $(PLATFORM_DIR)/lef/NangateOpenCellLibrary_macro.lefGives the technology layers in one file and the cell shapes in the other.
Hint: Two files in the same format, describing two different things.
The technology file carries the metal layers, vias, sites, and spacing rules; the cell file carries each standard cell's outline, pins, and blockages. Both are LEF (Library Exchange Format), and both come from the platform. OpenROAD-flow-scripts reference