Skip to content

Add parasitic extraction (PEX) using ORFS rule file #52

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
May 6, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
openroad: add initial parasitic extraction
  • Loading branch information
phsauter committed May 6, 2025
commit d675ee32e00991e586a28fd14896fc56de417e6e
9 changes: 8 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,18 @@ default: help
################
# Dependencies #
################
# Download RCX file used for parasitic extraction from ORFS (configuration got ok by IHP)
IHP_RCX_URL := "https://raw.githubusercontent.com/The-OpenROAD-Project/OpenROAD-flow-scripts/7747f88f70daaeb63f43ce36e71829707b7e3fa7/flow/platforms/ihp-sg13g2/IHP_rcx_patterns.rules"
IHP_RCX_FILE := $(PROJ_DIR)/openroad/IHP_rcx_patterns.rules

## Checkout/update dependencies using Bender
checkout:
checkout: $(IHP_RCX_FILE)
$(BENDER) checkout
git submodule update --init --recursive

$(IHP_RCX_FILE):
curl -L -o $@ $(IHP_RCX_URL)

## Reset dependencies (without updating Bender.lock)
clean-deps:
rm -rf .bender
Expand Down
3 changes: 2 additions & 1 deletion openroad/.gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
*.log
save
reports
out
out
IHP_rcx_patterns.rules
2 changes: 1 addition & 1 deletion openroad/openroad.mk
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ backend: $(OR_OUT)/$(PROJ_NAME).def
openroad: $(OR_OUT)/$(PROJ_NAME).def

## Place & Route flow using OpenROAD
$(OR_OUT_FILES): $(NETLIST) $(OR_DIR)/scripts/*.tcl $(OR_DIR)/src/*.tcl $(OR_DIR)/src/*.sdc
$(OR_OUT_FILES): $(NETLIST) $(OR_DIR)/scripts/*.tcl $(OR_DIR)/src/*.tcl $(OR_DIR)/src/*.sdc $(OR_DIR)/IHP_rcx_patterns.rules
mkdir -p $(SAVE)
mkdir -p $(REPORTS)
mkdir -p $(OR_OUT)
Expand Down
8 changes: 6 additions & 2 deletions openroad/scripts/chip.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ utl::report "Perform buffer insertion..."
repair_design -verbose
utl::report "Repair setup and hold violations..."
repair_timing -skip_pin_swap -setup -verbose -repair_tns 100
repair_timing -skip_pin_swap -hold -hold_margin 0.05 -verbose -repair_tns 100
repair_timing -skip_pin_swap -hold -hold_margin 0.1 -verbose -repair_tns 100

utl::report "GRT incremental..."
# Run to get modified net by DPL
Expand Down Expand Up @@ -334,8 +334,12 @@ filler_placement $stdfill
global_connect

save_checkpoint ${log_id_str}_${proj_name}.final
report_metrics "${log_id_str}_${proj_name}.final"
report_image "${log_id_str}_${proj_name}.final" true true false true
define_process_corner -ext_model_index 0 X
extract_parasitics -ext_model_file IHP_rcx_patterns.rules
write_spef out/${proj_name}.spef
read_spef out/${proj_name}.spef; # readback parasitics for OpenSTA
report_metrics "${log_id_str}_${proj_name}.final"

utl::report "Write output"
write_def out/${proj_name}.def
Expand Down