update openlane configuration and dependencies for `caravan_core`

This commit is contained in:
mo-hosni 2023-05-24 07:41:45 -07:00
parent fbf53572e1
commit d1713ec74c
12 changed files with 114 additions and 3525 deletions

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@ MACRO empty_macro
CLASS BLOCK ;
FOREIGN empty_macro ;
ORIGIN 0.000 0.000 ;
SIZE 2920.000 BY 25.000 ;
SIZE 3141.260 BY 572.000 ;
END empty_macro
END LIBRARY

View File

@ -6021,6 +6021,7 @@ MACRO user_analog_project_wrapper
PIN wbs_dat_o[9]
DIRECTION OUTPUT TRISTATE ;
USE SIGNAL ;
ANTENNADIFFAREA 0.340600 ;
PORT
LAYER met2 ;
RECT 233.110 -4.000 233.670 2.400 ;
@ -6029,6 +6030,7 @@ MACRO user_analog_project_wrapper
PIN wbs_sel_i[0]
DIRECTION INPUT ;
USE SIGNAL ;
ANTENNAGATEAREA 0.126000 ;
PORT
LAYER met2 ;
RECT 55.810 -4.000 56.370 2.400 ;
@ -6037,6 +6039,7 @@ MACRO user_analog_project_wrapper
PIN wbs_sel_i[1]
DIRECTION INPUT ;
USE SIGNAL ;
ANTENNAGATEAREA 0.126000 ;
PORT
LAYER met2 ;
RECT 79.450 -4.000 80.010 2.400 ;
@ -6045,6 +6048,7 @@ MACRO user_analog_project_wrapper
PIN wbs_sel_i[2]
DIRECTION INPUT ;
USE SIGNAL ;
ANTENNAGATEAREA 0.126000 ;
PORT
LAYER met2 ;
RECT 103.090 -4.000 103.650 2.400 ;
@ -6053,6 +6057,7 @@ MACRO user_analog_project_wrapper
PIN wbs_sel_i[3]
DIRECTION INPUT ;
USE SIGNAL ;
ANTENNAGATEAREA 0.126000 ;
PORT
LAYER met2 ;
RECT 126.730 -4.000 127.290 2.400 ;
@ -6061,6 +6066,7 @@ MACRO user_analog_project_wrapper
PIN wbs_stb_i
DIRECTION INPUT ;
USE SIGNAL ;
ANTENNAGATEAREA 0.126000 ;
PORT
LAYER met2 ;
RECT 26.260 -4.000 26.820 2.400 ;
@ -6069,6 +6075,7 @@ MACRO user_analog_project_wrapper
PIN wbs_we_i
DIRECTION INPUT ;
USE SIGNAL ;
ANTENNAGATEAREA 0.126000 ;
PORT
LAYER met2 ;
RECT 32.170 -4.000 32.730 2.400 ;

View File

@ -5991,6 +5991,7 @@ MACRO user_analog_project_wrapper
PIN wbs_sel_i[1]
DIRECTION INPUT ;
USE SIGNAL ;
ANTENNAGATEAREA 0.126000 ;
PORT
LAYER met2 ;
RECT 79.450 -4.000 80.010 2.400 ;
@ -5999,6 +6000,7 @@ MACRO user_analog_project_wrapper
PIN wbs_sel_i[2]
DIRECTION INPUT ;
USE SIGNAL ;
ANTENNAGATEAREA 0.126000 ;
PORT
LAYER met2 ;
RECT 103.090 -4.000 103.650 2.400 ;
@ -6007,6 +6009,7 @@ MACRO user_analog_project_wrapper
PIN wbs_sel_i[3]
DIRECTION INPUT ;
USE SIGNAL ;
ANTENNAGATEAREA 0.126000 ;
PORT
LAYER met2 ;
RECT 126.730 -4.000 127.290 2.400 ;
@ -6015,6 +6018,7 @@ MACRO user_analog_project_wrapper
PIN wbs_stb_i
DIRECTION INPUT ;
USE SIGNAL ;
ANTENNAGATEAREA 0.126000 ;
PORT
LAYER met2 ;
RECT 26.260 -4.000 26.820 2.400 ;
@ -6023,6 +6027,7 @@ MACRO user_analog_project_wrapper
PIN wbs_we_i
DIRECTION INPUT ;
USE SIGNAL ;
ANTENNAGATEAREA 0.126000 ;
PORT
LAYER met2 ;
RECT 32.170 -4.000 32.730 2.400 ;

View File

@ -14,9 +14,9 @@
# SPDX-License-Identifier: Apache-2.0
MAKEFLAGS+=--warn-undefined-variables
export OPENLANE_TAG=ed194238ac359aca044c54fa8cbbbd12280e1a8c
export OPENLANE_RUN_TAG ?= $(shell date '+%y_%m_%d_%H_%M')
OPENLANE_TAG ?= 2023.05.17
OPENLANE_TAG ?=ed194238ac359aca044c54fa8cbbbd12280e1a8c
OPENLANE_IMAGE_NAME ?= efabless/openlane:$(OPENLANE_TAG)
IT_SCRIPT ?= ./interactive.tcl
designs = $(shell find * -maxdepth 0 -type d)

View File

@ -74,14 +74,15 @@ set ::env(FP_IO_VEXTEND) 2
set ::env(FP_IO_HEXTEND) 2
set ::env(FP_TAPCELL_DIST) 10
set ::env(PL_MACRO_HALO) "-1 -3"
# set ::env(CELL_PAD) 0
set ::env(PL_MACRO_HALO) "1 1"
set ::env(GPL_CELL_PADDING) 0
set ::env(DPL_CELL_PADDING) 2
## PDN
set ::env(VSRC_LOC) $::env(DESIGN_DIR)/floorplan_configuration/Vsrc.loc
set ::env(FP_PDN_ENABLE_MACROS_GRID) 1
set ::env(FP_PDN_CFG) [glob $::env(DESIGN_DIR)/pdn_configuration/pdn.tcl]
set ::env(PDN_CFG) [glob $::env(DESIGN_DIR)/pdn_configuration/pdn.tcl]
set ::env(FP_PDN_CHECK_NODES) 0
set ::env(FP_PDN_CORE_RING) 1
@ -160,7 +161,7 @@ set ::env(FP_PDN_HOFFSET) 30.65
set ::env(FP_PDN_VOFFSET) 3.5
##CTS
set ::env(RUN_CTS) 1
set ::env(CLOCK_TREE_SYNTH) 1
set ::env(CTS_MAX_CAP) 0.25
set ::env(CTS_SINK_CLUSTERING_SIZE) 12
set ::env(CTS_SINK_CLUSTERING_MAX_DIAMETER) 30
@ -185,7 +186,7 @@ set ::env(PL_RESIZER_MAX_CAP_MARGIN) 50
##ROUTING
set ::env(GRT_ALLOW_CONGESTION) 1
set ::env(GRT_ADJUSTMENT) 0.12
set ::env(GRT_ADJUSTMENT) 0.08
## li1 ,met1,met2,met3,met4,met5
# set ::env(GRT_LAYER_ADJUSTMENTS) "0.99,0.10,0.05,0.10,0.05,0.00"
# set ::env(GRT_LAYER_ADJUSTMENTS) "0.99,0.20,0.10,0.20,0.05,0.00"
@ -275,23 +276,23 @@ set ::env(EXTRA_LIBS) "\
$::env(CARAVEL_ROOT)/lib/housekeeping_alt.lib \
$::env(CARAVEL_ROOT)/lib/gpio_defaults_block.lib \
$::env(CARAVEL_ROOT)/lib/gpio_logic_high.lib \
$::env(CARAVEL_ROOT)/lib/user_analog_project_wrapper.lib \
$::env(CARAVEL_ROOT)/lib/caravel_clocking.lib \
$::env(MCW_ROOT)/signoff/RAM128/primetime/lib/ff/RAM128.nom.lib \
"
# $::env(CARAVEL_ROOT)/lib/user_analog_project_wrapper.lib \
set ::env(EXTRA_SPEFS) "RAM128 \
$::env(MCW_ROOT)/signoff/RAM128/openlane-signoff/spef/RAM128.min.spef \
$::env(MCW_ROOT)/signoff/RAM128/openlane-signoff/spef/RAM128.nom.spef \
$::env(MCW_ROOT)/signoff/RAM128/openlane-signoff/spef/RAM128.max.spef \
housekeeping_alt \
$::env(CARAVEL_ROOT)/signoff/housekeeping_alt/openlane-signoff/spef/housekeeping_alt.min.spef \
$::env(CARAVEL_ROOT)/signoff/housekeeping_alt/openlane-signoff/spef/housekeeping_alt.nom.spef \
$::env(CARAVEL_ROOT)/signoff/housekeeping_alt/openlane-signoff/spef/housekeeping_alt.max.spef \
caravel_clocking \
$::env(CARAVEL_ROOT)/signoff/caravel_clocking/openlane-signoff/spef/caravel_clocking.min.spef \
$::env(CARAVEL_ROOT)/signoff/caravel_clocking/openlane-signoff/spef/caravel_clocking.nom.spef \
$::env(CARAVEL_ROOT)/signoff/caravel_clocking/openlane-signoff/spef/caravel_clocking.max.spef"
# set ::env(EXTRA_SPEFS) "RAM128 \
# $::env(MCW_ROOT)/signoff/RAM128/openlane-signoff/spef/RAM128.min.spef \
# $::env(MCW_ROOT)/signoff/RAM128/openlane-signoff/spef/RAM128.nom.spef \
# $::env(MCW_ROOT)/signoff/RAM128/openlane-signoff/spef/RAM128.max.spef \
# housekeeping_alt \
# $::env(CARAVEL_ROOT)/signoff/housekeeping_alt/openlane-signoff/spef/housekeeping_alt.min.spef \
# $::env(CARAVEL_ROOT)/signoff/housekeeping_alt/openlane-signoff/spef/housekeeping_alt.nom.spef \
# $::env(CARAVEL_ROOT)/signoff/housekeeping_alt/openlane-signoff/spef/housekeeping_alt.max.spef \
# caravel_clocking \
# $::env(CARAVEL_ROOT)/signoff/caravel_clocking/openlane-signoff/spef/caravel_clocking.min.spef \
# $::env(CARAVEL_ROOT)/signoff/caravel_clocking/openlane-signoff/spef/caravel_clocking.nom.spef \
# $::env(CARAVEL_ROOT)/signoff/caravel_clocking/openlane-signoff/spef/caravel_clocking.max.spef"
set ::env(STA_WRITE_LIB) 0

View File

@ -2,9 +2,9 @@ user_id_value 2962.655 129.19 N
soc.core.RAM256.BANK128\[0\].RAM128 90.09 175 N
soc.core.RAM256.BANK128\[1\].RAM128 581.97 175 FN
soc.core.RAM128 1800 125 FN
mgmt_buffers.mprj_logic_high_inst 1190.94 1020 N
mgmt_buffers.powergood_check 1794 1020 N
mgmt_buffers.mprj2_logic_high_inst 823 1020 FN
mgmt_buffers.mprj_logic_high_inst 1190.94 880 N
mgmt_buffers.powergood_check 1794 940 N
mgmt_buffers.mprj2_logic_high_inst 823 940 FN
por 1063.15 135 MX
mprj 115.04 1183.09 N
housekeeping_alt 2650 190 N
@ -77,7 +77,7 @@ empty_macro_4 3042 3773 N
empty_macro_5 0 1983 N
empty_macro_6 0 2146 N
empty_macro_7 0 3904 N
empty_macro_8 0 4066 N
empty_macro_8 0 4065 N
empty_macro_9 3042 4194.6 N
empty_macro_10 3042 4394.6 N
empty_macro_11 3042 4594.6 N

View File

@ -45,7 +45,7 @@ run_power_grid_generation
# save_final_views
# save_views -save_path .. -tag $::env(OPENLANE_RUN_TAG)
################ placement ################
set ::env(PL_TARGET_DENSITY) 0.20
set ::env(PL_TARGET_DENSITY) 0.19
run_placement
################ CTS ################
@ -57,7 +57,7 @@ run_resizer_design_routing
run_resizer_timing_routing
## Placement again ##
set ::env(PL_TARGET_DENSITY) 0.25
set ::env(PL_TARGET_DENSITY) 0.24
run_placement
run_cts
@ -68,7 +68,7 @@ run_resizer_design_routing
run_resizer_timing_routing
################ Place and route on the optmized netlist ################
set ::env(PL_TARGET_DENSITY) 0.27
set ::env(PL_TARGET_DENSITY) 0.26
set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 0
set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) 0
set ::env(GLB_RESIZER_DESIGN_OPTIMIZATIONS) 0

View File

@ -116,11 +116,11 @@ add_pdn_stripe \
add_pdn_stripe \
-grid stdcell_grid \
-layer met5 \
-width 14.4 \
-width 12.8 \
-pitch 120 \
-offset 239 \
-spacing 2.4 \
-number_of_straps 7 \
-number_of_straps 5 \
-nets "vccd vssd" \
-starts_with POWER

View File

@ -6,8 +6,8 @@
# create_clock -name clk -period 25 [get_ports {clock_core}]
create_clock -name clk -period 18 [get_pins {clock_ctrl/core_clk}]
create_clock -name hk_serial_clk -period 50 [get_pins {housekeeping/serial_clock}]
create_clock -name hk_serial_load -period 1000 [get_pins {housekeeping/serial_load}]
create_clock -name hk_serial_clk -period 50 [get_pins {housekeeping_alt/serial_clock}]
create_clock -name hk_serial_load -period 1000 [get_pins {housekeeping_alt/serial_load}]
# hk_serial_clk period is x2 core clock
set_clock_uncertainty 0.55 [get_clocks {clk}]

View File

@ -6,8 +6,8 @@
# create_clock -name clk -period 50 [get_ports {clock_core}]
create_clock -name clk -period 25 [get_pins {clock_ctrl/core_clk}]
create_clock -name hk_serial_clk -period 50 [get_pins {housekeeping/serial_clock}]
create_clock -name hk_serial_load -period 1000 [get_pins {housekeeping/serial_load}]
create_clock -name hk_serial_clk -period 50 [get_pins {housekeeping_alt/serial_clock}]
create_clock -name hk_serial_load -period 1000 [get_pins {housekeeping_alt/serial_load}]
# hk_serial_clk period is x2 core clock
set_clock_uncertainty 0.1 [get_clocks {clk}]

View File

@ -0,0 +1,65 @@
import os
import shutil
openlane_folder = './'
signoff_folder = '../signoff'
# macro_folders = os.listdir(openlane_folder)
macro_folders = ['housekeeping_alt']
# iterate over each macro folder
for macro_folder in macro_folders:
if os.path.isdir(macro_folder):
## deleting old openlane-signoff
openlane_signoff_folder = os.path.join(signoff_folder, macro_folder, 'openlane-signoff')
for the_file in os.listdir(openlane_signoff_folder):
file_path = os.path.join(openlane_signoff_folder, the_file)
try:
if os.path.isfile(file_path):
os.unlink(file_path)
elif os.path.isdir(file_path):
shutil.rmtree(file_path)
print("Deleting ", file_path)
except Exception as e:
print(e)
# os.remove(os.path.join(root, file))
last_run_folder = os.path.join(openlane_folder, macro_folder, 'runs', macro_folder)
files_in_last_run = os.listdir(last_run_folder)
## copying summary files
for file in files_in_last_run:
file_path = os.path.join(last_run_folder, file)
if os.path.isfile(file_path):
destination = os.path.join(signoff_folder, macro_folder, file)
print("Copying ", file_path, " into ", destination)
shutil.copyfile(file_path, destination)
reports_folder = os.path.join(last_run_folder, 'reports')
reports_folder_files = os.listdir(reports_folder)
for file in reports_folder_files:
file_path = os.path.join(reports_folder, file)
if os.path.isfile(file_path):
destination = os.path.join(signoff_folder, macro_folder, file)
print("Copying ", file_path, " into ", destination)
shutil.copyfile(file_path, destination)
## copying signoff reports
signoff_reports_folder = os.path.join(last_run_folder, 'reports', 'signoff')
signoff_reports_folder_files = os.listdir(signoff_reports_folder)
for file in signoff_reports_folder_files:
file_path = os.path.join(signoff_reports_folder, file)
if os.path.isfile(file_path):
destination = os.path.join(signoff_folder, macro_folder, 'openlane-signoff', file)
print("Copying ", file_path, " into ", destination)
shutil.copy(file_path, destination)
## copying spef and sdf
spef_folder = os.path.join(last_run_folder, 'results', 'routing', 'mca', 'spef')
destination = os.path.join(signoff_folder, macro_folder, 'openlane-signoff', 'spef')
print("Copying ", spef_folder, " into ", destination)
shutil.copytree(spef_folder, destination)
sdf_folder = os.path.join(last_run_folder, 'results', 'routing', 'mca', 'sdf')
destination = os.path.join(signoff_folder, macro_folder, 'openlane-signoff', 'sdf')
print("Copying ", sdf_folder, " into ", destination)
shutil.copytree(sdf_folder, destination)