Skip to content

Commit 977354d

Browse files
oharboeclaude
andcommitted
flow/docs/rcx: add GRT-vs-RCX parasitic divergence study
Synthetic left-to-right fan-out designs swept 1..128 across asap7, sky130hd, ihp-sg13g2 and gt2n, measuring WNS at every flow stage plus per-net GRT-estimated vs OpenRCX-extracted parasitics. Shows the global-route WNS estimate diverges from the RCX sign-off for long/high-fan-out nets on asap7 (closes at GRT, fails at finish), is negligible at 130nm, and unmeasurable on gt2n (no OpenRCX deck). Adds a fan-out column to write_net_rc.tcl (used by correlateRC.py), a normalized cross-PDK plotter (bazelisk run //flow/docs/rcx:update), an actionable per-net divergence report, and a README proposing global route flag out-of-envelope nets. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent c9c22ca commit 977354d

121 files changed

Lines changed: 2245 additions & 6 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Generated by docs/rcx/gen_study.py -- do not edit by hand.
2+
export PLATFORM = asap7
3+
export DESIGN_NAME = fanout_1
4+
export DESIGN_NICKNAME = rcx-fanout-1
5+
6+
export VERILOG_FILES = $(DESIGN_HOME)/src/rcx-fanout/fanout_1.v
7+
export SDC_FILE = $(DESIGN_HOME)/asap7/rcx-fanout-1/constraint.sdc
8+
export IO_CONSTRAINTS = $(DESIGN_HOME)/asap7/rcx-fanout-1/io.tcl
9+
10+
export DIE_AREA = 0 0 150.0 12.0
11+
export CORE_AREA = 1.0 1.0 149.0 11.0
12+
export PLACE_DENSITY = 0.10
13+
14+
# Tiny design: keep the run fast.
15+
export SKIP_LAST_GASP ?= 1
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Generated by docs/rcx/gen_study.py -- do not edit by hand.
2+
current_design fanout_1
3+
4+
set clk_period 250
5+
create_clock -name clock -period 250 -waveform [list 0 [expr 250 / 2]] [get_ports clock]
6+
7+
if {[llength [get_ports -quiet reset]] == 1} {
8+
set_false_path -from [get_ports reset]
9+
}
10+
11+
set non_clk_inputs [all_inputs -no_clocks]
12+
set_max_delay -ignore_clock_latency 200 -from $non_clk_inputs -to [all_registers]
13+
set_max_delay -ignore_clock_latency 200 -from [all_registers] -to [all_outputs]
14+
set_max_delay 200 -from $non_clk_inputs -to [all_outputs]
15+
group_path -name reg2reg -from [all_registers] -to [all_registers]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Generated by docs/rcx/gen_study.py -- do not edit by hand.
2+
# Inputs on the WEST (left) edge, outputs on the EAST (right) edge, so the
3+
# fan-out net spans the die from west to east.
4+
set_io_pin_constraint -direction INPUT -region left:*
5+
set_io_pin_constraint -direction OUTPUT -region right:*
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Generated by docs/rcx/gen_study.py -- do not edit by hand.
2+
export PLATFORM = asap7
3+
export DESIGN_NAME = fanout_128
4+
export DESIGN_NICKNAME = rcx-fanout-128
5+
6+
export VERILOG_FILES = $(DESIGN_HOME)/src/rcx-fanout/fanout_128.v
7+
export SDC_FILE = $(DESIGN_HOME)/asap7/rcx-fanout-128/constraint.sdc
8+
export IO_CONSTRAINTS = $(DESIGN_HOME)/asap7/rcx-fanout-128/io.tcl
9+
10+
export DIE_AREA = 0 0 264.0 19.8
11+
export CORE_AREA = 1.0 1.0 263.0 18.8
12+
export PLACE_DENSITY = 0.10
13+
14+
# Tiny design: keep the run fast.
15+
export SKIP_LAST_GASP ?= 1
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Generated by docs/rcx/gen_study.py -- do not edit by hand.
2+
current_design fanout_128
3+
4+
set clk_period 250
5+
create_clock -name clock -period 250 -waveform [list 0 [expr 250 / 2]] [get_ports clock]
6+
7+
if {[llength [get_ports -quiet reset]] == 1} {
8+
set_false_path -from [get_ports reset]
9+
}
10+
11+
set non_clk_inputs [all_inputs -no_clocks]
12+
set_max_delay -ignore_clock_latency 200 -from $non_clk_inputs -to [all_registers]
13+
set_max_delay -ignore_clock_latency 200 -from [all_registers] -to [all_outputs]
14+
set_max_delay 200 -from $non_clk_inputs -to [all_outputs]
15+
group_path -name reg2reg -from [all_registers] -to [all_registers]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Generated by docs/rcx/gen_study.py -- do not edit by hand.
2+
# Inputs on the WEST (left) edge, outputs on the EAST (right) edge, so the
3+
# fan-out net spans the die from west to east.
4+
set_io_pin_constraint -direction INPUT -region left:*
5+
set_io_pin_constraint -direction OUTPUT -region right:*
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Generated by docs/rcx/gen_study.py -- do not edit by hand.
2+
export PLATFORM = asap7
3+
export DESIGN_NAME = fanout_16
4+
export DESIGN_NICKNAME = rcx-fanout-16
5+
6+
export VERILOG_FILES = $(DESIGN_HOME)/src/rcx-fanout/fanout_16.v
7+
export SDC_FILE = $(DESIGN_HOME)/asap7/rcx-fanout-16/constraint.sdc
8+
export IO_CONSTRAINTS = $(DESIGN_HOME)/asap7/rcx-fanout-16/io.tcl
9+
10+
export DIE_AREA = 0 0 150.0 12.0
11+
export CORE_AREA = 1.0 1.0 149.0 11.0
12+
export PLACE_DENSITY = 0.10
13+
14+
# Tiny design: keep the run fast.
15+
export SKIP_LAST_GASP ?= 1
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Generated by docs/rcx/gen_study.py -- do not edit by hand.
2+
current_design fanout_16
3+
4+
set clk_period 250
5+
create_clock -name clock -period 250 -waveform [list 0 [expr 250 / 2]] [get_ports clock]
6+
7+
if {[llength [get_ports -quiet reset]] == 1} {
8+
set_false_path -from [get_ports reset]
9+
}
10+
11+
set non_clk_inputs [all_inputs -no_clocks]
12+
set_max_delay -ignore_clock_latency 200 -from $non_clk_inputs -to [all_registers]
13+
set_max_delay -ignore_clock_latency 200 -from [all_registers] -to [all_outputs]
14+
set_max_delay 200 -from $non_clk_inputs -to [all_outputs]
15+
group_path -name reg2reg -from [all_registers] -to [all_registers]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Generated by docs/rcx/gen_study.py -- do not edit by hand.
2+
# Inputs on the WEST (left) edge, outputs on the EAST (right) edge, so the
3+
# fan-out net spans the die from west to east.
4+
set_io_pin_constraint -direction INPUT -region left:*
5+
set_io_pin_constraint -direction OUTPUT -region right:*
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Generated by docs/rcx/gen_study.py -- do not edit by hand.
2+
export PLATFORM = asap7
3+
export DESIGN_NAME = fanout_2
4+
export DESIGN_NICKNAME = rcx-fanout-2
5+
6+
export VERILOG_FILES = $(DESIGN_HOME)/src/rcx-fanout/fanout_2.v
7+
export SDC_FILE = $(DESIGN_HOME)/asap7/rcx-fanout-2/constraint.sdc
8+
export IO_CONSTRAINTS = $(DESIGN_HOME)/asap7/rcx-fanout-2/io.tcl
9+
10+
export DIE_AREA = 0 0 150.0 12.0
11+
export CORE_AREA = 1.0 1.0 149.0 11.0
12+
export PLACE_DENSITY = 0.10
13+
14+
# Tiny design: keep the run fast.
15+
export SKIP_LAST_GASP ?= 1

0 commit comments

Comments
 (0)