Key parameters

Most designs only need a handful of settings to go from RTL to GDS. These are the fields you'll set on almost every project, and the ones worth understanding first.

Design & sources#

  • DESIGN_NAME— your top-level module name. It must match the module in your Verilog exactly, or synthesis can't find an entry point.
  • VERILOG_FILES — the synthesizable sources to build. List files individually or use the dir::src/ prefix to include every .v in a folder.

Testbenches don’t belong here

Only list synthesizable RTL in VERILOG_FILES. Your testbench under tb/ is for simulation and should never be added — including it will break synthesis.

Clock & timing#

  • CLOCK_PORT — the name of your clock input. LibreLane uses it to drive timing analysis and clock-tree synthesis.
  • CLOCK_PERIOD — the target clock period in nanoseconds. It sets the timing goal the flow tries to meet: 10.0 targets 100 MHz, 5.0 targets 200 MHz.

A shorter period asks for a faster chip and is harder to close. If you see negative slack in the timing results, relaxing CLOCK_PERIOD is the first thing to try.

PDK & standard cells#

Template projects target the open-source sky130 process. Two settings select it:

config.json
{
  "PDK": "sky130A",
  "STD_CELL_LIBRARY": "sky130_fd_sc_hd"
}

sky130_fd_sc_hdis the high-density standard-cell library — a good default for most designs. You rarely need to change these unless you're deliberately targeting a different library.

Common tuning knobs#

Floorplan utilisation

FP_CORE_UTIL sets how densely cells are packed (as a percentage). Lower values give the router more room and can fix congestion; higher values produce a smaller die.

Synthesis effort

Synthesis strategy options trade run time against area and timing. The defaults are a sound starting point — reach for these only once a design builds cleanly and you want to optimise.

Let the assistant draft it

Not sure what to set? Ask the built-in assistant to generate a config for your design — it produces a complete, valid starting point you can then edit. See Generating a LibreLane config.