From ffdfed23dfdabd49c46eebda47eed2fe22e5a4ca Mon Sep 17 00:00:00 2001 From: Jeff Ng Date: Mon, 14 Jul 2025 17:25:00 +0000 Subject: [PATCH] Updated hercules_is_int for slang; Added initial I/O constraints for cva6 Signed-off-by: Jeff Ng --- .../rapidus2hp/cva6/io_constraints.tcl | 45 +++++++++++++++++++ .../rapidus2hp/hercules_is_int/config.mk | 4 +- 2 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 flow/designs/rapidus2hp/cva6/io_constraints.tcl diff --git a/flow/designs/rapidus2hp/cva6/io_constraints.tcl b/flow/designs/rapidus2hp/cva6/io_constraints.tcl new file mode 100644 index 0000000000..2409d99410 --- /dev/null +++ b/flow/designs/rapidus2hp/cva6/io_constraints.tcl @@ -0,0 +1,45 @@ +# left (bottom to top) +# cvxif_req_o +# axi_req_o - noc_req_o in ours +# scan_output - doesn't exist in ours +set_io_pin_constraint -group -order -region left:20-38.7 -pin_names {cvxif_req_o*} +set_io_pin_constraint -group -order -region left:38.8-90.2 -pin_names {noc_req_o*} + +# right (bottom to top) +# scan_input - doesn't exist in ours +# test_mode - doesn't exist in ours +# scan_enable - doesn't exist in ours +# axi_resp_i - noc_resp_i in ours +# cvxif_resp_i +# debug_req_i +# time_irq_i +# ipi_i +# irq_i +# hart_id_i +# boot_addr_i +# rst_ni +# clk_i +set_io_pin_constraint -group -order -region right:5-31.4 -pin_names {noc_resp_i*} +set_io_pin_constraint -group -order -region right:31.5-73.1 -pin_names {cvxif_resp_i*} +set_io_pin_constraint -group -order -region right:73.3-73.7 -pin_names {debug_req_i time_irq_i ipi_i} +set_io_pin_constraint -group -order -region right:74-74.3 -pin_names {irq_i*} +set_io_pin_constraint -group -order -region right:74.5-82 -pin_names {hart_id_i*} +set_io_pin_constraint -group -order -region right:82.2-89.8 -pin_names {boot_addr_i*} +set_io_pin_constraint -group -order -region right:89.9-90.3 -pin_names {rst_n_i clk_i} + +# don't exist in reference design implementation - does it make us I/O bound? +# put a third of them on the top, a third on the bottom, and let the placer +# decide where to put the remaining third +set num_rvfi_probes_ports 4295 +set third_rvfi_probes_ports [expr $num_rvfi_probes_ports / 3] +set top_group {} +for { set i 0 } { $i < $third_rvfi_probes_ports } { incr i } { + lappend top_group "rvfi_probes_o\[$i\]" +} +set bottom_group {} +for {} { $i < [expr $third_rvfi_probes_ports * 2]} { incr i } { + lappend bottom_group "rvfi_probes_o\[$i\]" +} + +set_io_pin_constraint -group -order -region bottom:* -pin_names $top_group +set_io_pin_constraint -group -order -region top:* -pin_names $bottom_group diff --git a/flow/designs/rapidus2hp/hercules_is_int/config.mk b/flow/designs/rapidus2hp/hercules_is_int/config.mk index 6ccb921da5..f41a96abf1 100644 --- a/flow/designs/rapidus2hp/hercules_is_int/config.mk +++ b/flow/designs/rapidus2hp/hercules_is_int/config.mk @@ -124,10 +124,10 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/prects export SYNTH_HDL_FRONTEND = slang export SYNTH_HIERARCHICAL ?= 0 -export CORE_UTILIZATION = 25 +export CORE_UTILIZATION = 35 export CORE_MARGIN = 2 -export MACRO_PLACE_HALO = 4 4 +export MACRO_PLACE_HALO = 2 2 export PLACE_DENSITY = 0.58