Adding New Designs to the ORFS#

This section explains how to add verilog designs to ORFS repository for a full RTL-GDS flow execution.

The following design example is based on the design spm that implements a Single-port memory using gf180 platform. This procedure applies to any design for a given platform you choose.

Note: The commands refer to the base directory as OpenROAD-flow-scripts/flow as the starting point for the flow.

Step 1: Create the Verilog source files directory based on the top module name.

cd designs/src
mkdir spm
cd spm
vi spm.v

Copy this verilog code into spm.v.

Step 2: Create config.mk to define design configuration.

cd designs/gf180
mkdir spm
cd spm
vi config.mk

Step 3: Define key design parameters in config.mk.

export PLATFORM         = gf180

export DESIGN_NAME      = spm

export VERILOG_FILES    = $(sort $(wildcard ./designs/src/$(DESIGN_NICKNAME)/*.v))
export SDC_FILE         = ./designs/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc

export CORE_UTILIZATION = 40
export PLACE_DENSITY    = 0.60

export TNS_END_PERCENT  = 100

To customize or add new variables to the config.mk refer to the other built-in design examples or the flow variables list here.

Step 4: Define SDC constraints.

cd designs/gf180/spm
vi constraint.sdc

Edit as required to define design constraints.

current_design spm

set clk_name  core_clock
set clk_port_name clk
set clk_period 10
set clk_io_pct 0.2

set clk_port [get_ports $clk_port_name]

create_clock -name $clk_name -period $clk_period  $clk_port

set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port]

set_input_delay  [expr $clk_period * $clk_io_pct] -clock $clk_name $non_clock_inputs
set_output_delay [expr $clk_period * $clk_io_pct] -clock $clk_name [all_outputs]

Update only current_design, clk_port_name and clk_period as per design requirements. Do not modify the remaining values for the default template.

Step 5: Add the design name to Makefile to run the flow with the make command.

vi Makefile

Comment (#) any DESIGN_CONFIG if already enabled.

Add the following lines to Makefile and save the changes.

DESIGN_CONFIG=./designs/gf180/spm/config.mk

Run make command to run the flow from RTL to GDSII generation.

make

If you do not want to change Makefile, you can simply run,

make DESIGN_CONFIG=./designs/gf180/spm/config.mk