mirror of https://github.com/efabless/caravel.git
update openlane configuration and dependencies for `caravan_core`
This commit is contained in:
parent
fbf53572e1
commit
d1713ec74c
3493
lef/caravan_core.lef
3493
lef/caravan_core.lef
File diff suppressed because it is too large
Load Diff
|
@ -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
|
||||
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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 ;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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}]
|
||||
|
|
|
@ -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}]
|
||||
|
|
|
@ -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)
|
Loading…
Reference in New Issue