Skip to content

Commit 4e92f80

Browse files
committed
Document floorplanning methods and flow variables
Signed-off-by: kcaisley <[email protected]>
1 parent e79a174 commit 4e92f80

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

docs/user/FlowVariables.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,10 @@ configuration file.
134134
| <a name="FASTROUTE_TCL"></a>FASTROUTE_TCL| Specifies a Tcl script with commands to run before FastRoute.| |
135135
| <a name="FILL_CELLS"></a>FILL_CELLS| Fill cells are used to fill empty sites. If not set or empty, fill cell insertion is skipped.| |
136136
| <a name="FILL_CONFIG"></a>FILL_CONFIG| JSON rule file for metal fill during chip finishing.| |
137-
| <a name="FLOORPLAN_DEF"></a>FLOORPLAN_DEF| Use the DEF file to initialize floorplan.| |
137+
| <a name="FLOORPLAN_DEF"></a>FLOORPLAN_DEF| Use the DEF file to initialize floorplan. Mutually exclusive with FOOTPRINT or DIE_AREA/CORE_AREA or CORE_UTILIZATION.| |
138+
| <a name="FLOW_VARIANT"></a>FLOW_VARIANT| Flow variant to use, used in the flow variant directory name.| base|
139+
| <a name="FOOTPRINT"></a>FOOTPRINT| Custom footprint definition file for ICeWall-based floorplan initialization. Mutually exclusive with FLOORPLAN_DEF or DIE_AREA/CORE_AREA or CORE_UTILIZATION.| |
140+
| <a name="FOOTPRINT_TCL"></a>FOOTPRINT_TCL| Specifies a Tcl script with custom footprint-related commands for floorplan setup.| |
138141
| <a name="FLOW_VARIANT"></a>FLOW_VARIANT| Flow variant to use, used in the flow variant directory name.| base|
139142
| <a name="GDS_ALLOW_EMPTY"></a>GDS_ALLOW_EMPTY| Regular expression of module names of macros that have no .gds file| |
140143
| <a name="GDS_FILES"></a>GDS_FILES| Path to platform GDS files.| |
@@ -293,6 +296,8 @@ configuration file.
293296
- [CORE_UTILIZATION](#CORE_UTILIZATION)
294297
- [DIE_AREA](#DIE_AREA)
295298
- [FLOORPLAN_DEF](#FLOORPLAN_DEF)
299+
- [FOOTPRINT](#FOOTPRINT)
300+
- [FOOTPRINT_TCL](#FOOTPRINT_TCL)
296301
- [HOLD_SLACK_MARGIN](#HOLD_SLACK_MARGIN)
297302
- [IO_CONSTRAINTS](#IO_CONSTRAINTS)
298303
- [MACRO_BLOCKAGE_HALO](#MACRO_BLOCKAGE_HALO)

flow/scripts/floorplan.tcl

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,24 +43,26 @@ puts "number instances in verilog is $num_instances"
4343
set additional_args ""
4444
append_env_var additional_args ADDITIONAL_SITES -additional_sites 1
4545

46+
# Check which floorplan initialization method is specified (mutually exclusive)
4647
set use_floorplan_def [env_var_exists_and_non_empty FLOORPLAN_DEF]
4748
set use_footprint [env_var_exists_and_non_empty FOOTPRINT]
4849
set use_die_and_core_area \
4950
[expr { [env_var_exists_and_non_empty DIE_AREA] && [env_var_exists_and_non_empty CORE_AREA] }]
5051
set use_core_utilization [env_var_exists_and_non_empty CORE_UTILIZATION]
5152

53+
# Enforce mutual exclusion - exactly one method must be specified
5254
set methods_defined \
5355
[expr { $use_floorplan_def + $use_footprint + $use_die_and_core_area + $use_core_utilization }]
5456
if { $methods_defined > 1 } {
5557
puts "Error: Floorplan initialization methods are mutually exclusive, pick one."
5658
exit 1
5759
}
5860

61+
# Method 1: Use existing DEF file with floorplan data
5962
if { $use_floorplan_def } {
60-
# Initialize floorplan by reading in floorplan DEF
6163
log_cmd read_def -floorplan_initialize $env(FLOORPLAN_DEF)
64+
# Method 2: Use ICeWall footprint file (platform-specific extension)
6265
} elseif { $use_footprint } {
63-
# Initialize floorplan using ICeWall FOOTPRINT
6466
ICeWall load_footprint $env(FOOTPRINT)
6567

6668
initialize_floorplan \
@@ -69,11 +71,13 @@ if { $use_floorplan_def } {
6971
-site $::env(PLACE_SITE)
7072

7173
ICeWall init_footprint $env(SIG_MAP_FILE)
74+
# Method 3: Use explicit die and core area coordinates
7275
} elseif { $use_die_and_core_area } {
7376
initialize_floorplan -die_area $::env(DIE_AREA) \
7477
-core_area $::env(CORE_AREA) \
7578
-site $::env(PLACE_SITE) \
7679
{*}$additional_args
80+
# Method 4: Calculate core area from utilization, aspect ratio, and margins
7781
} elseif { $use_core_utilization } {
7882
initialize_floorplan -utilization $::env(CORE_UTILIZATION) \
7983
-aspect_ratio $::env(CORE_ASPECT_RATIO) \
@@ -85,6 +89,7 @@ if { $use_floorplan_def } {
8589
exit 1
8690
}
8791

92+
# Create routing tracks: MAKE_TRACKS script, platform make_tracks.tcl, or make_tracks command
8893
if { [env_var_exists_and_non_empty MAKE_TRACKS] } {
8994
log_cmd source $::env(MAKE_TRACKS)
9095
} elseif { [file exists $::env(PLATFORM_DIR)/make_tracks.tcl] } {
@@ -93,6 +98,7 @@ if { [env_var_exists_and_non_empty MAKE_TRACKS] } {
9398
make_tracks
9499
}
95100

101+
# Configure global routing: FASTROUTE_TCL script or set_global_routing_layer_adjustment/set_routing_layers
96102
if { [env_var_exists_and_non_empty FASTROUTE_TCL] } {
97103
log_cmd source $::env(FASTROUTE_TCL)
98104
} else {

0 commit comments

Comments
 (0)