Skip to content

Commit 55251b7

Browse files
authored
Merge pull request #3310 from The-OpenROAD-Project-staging/add-design-configs-rapidus
added design configs for rapidus2hp platform
2 parents 1025244 + 711ca20 commit 55251b7

File tree

16 files changed

+532
-0
lines changed

16 files changed

+532
-0
lines changed

flow/designs/rapidus2hp/README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Rapidus Environment Setup
2+
3+
## Clone Rapidus Repo from Private GH
4+
5+
The ORFS-specific files for the Rapidus platform are stored separately in the private rapidus repo. Clone out the repo into a separate directory and then set PLATFORM_HOME to point to it:
6+
7+
```
8+
cd rapidus_platform_dir_goes_here
9+
git clone http://github.com/The-OpenROAD-Project-private/rapidus
10+
export PLATFORM_HOME=`pwd`/rapidus_platform_dir_goes_here
11+
```
12+
13+
For more information, check out (http://github.com/The-OpenROAD-Project-private/rapidus)
14+
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
{
2+
"_SDC_FILE_PATH": "constraint.sdc",
3+
"_SDC_CLK_PERIOD": {
4+
"type": "float",
5+
"minmax": [
6+
990,
7+
1015
8+
],
9+
"step": 0
10+
},
11+
"CORE_UTILIZATION": {
12+
"type": "int",
13+
"minmax": [
14+
25,
15+
45
16+
],
17+
"step": 1
18+
},
19+
"CTS_CLUSTER_SIZE": {
20+
"type": "int",
21+
"minmax": [
22+
30,
23+
60
24+
],
25+
"step": 1
26+
},
27+
"CTS_CLUSTER_DIAMETER": {
28+
"type": "int",
29+
"minmax": [
30+
15,
31+
25
32+
],
33+
"step": 1
34+
},
35+
"CORE_MARGIN": {
36+
"type": "float",
37+
"minmax": [
38+
1.8,
39+
2.1
40+
],
41+
"step": 0
42+
}
43+
}
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
export PLATFORM = rapidus2hp
2+
3+
export DESIGN_NAME = cva6
4+
5+
# Some files are listed specifically vs. sorted wilcard to control the order (makes Verific happy)
6+
export SRC_HOME = $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)
7+
export VERILOG_FILES = $(sort $(wildcard $(SRC_HOME)/common/local/util/*.sv)) \
8+
$(SRC_HOME)/core/include/config_pkg.sv \
9+
$(SRC_HOME)/core/include/cv32a65x_config_pkg.sv \
10+
$(SRC_HOME)/core/include/riscv_pkg.sv \
11+
$(SRC_HOME)/core/include/ariane_pkg.sv \
12+
$(SRC_HOME)/core/include/build_config_pkg.sv \
13+
$(SRC_HOME)/core/include/std_cache_pkg.sv \
14+
$(SRC_HOME)/core/include/wt_cache_pkg.sv \
15+
$(sort $(wildcard $(SRC_HOME)/vendor/pulp-platform/common_cells/src/*.sv)) \
16+
$(SRC_HOME)/core/cvfpu/src/fpnew_pkg.sv \
17+
$(sort $(wildcard $(SRC_HOME)/vendor/pulp-platform/axi/src/*.sv)) \
18+
$(SRC_HOME)/core/cvfpu/src/fpnew_cast_multi.sv \
19+
$(SRC_HOME)/core/cvfpu/src/fpnew_classifier.sv \
20+
$(SRC_HOME)/core/cvfpu/src/fpnew_divsqrt_multi.sv \
21+
$(SRC_HOME)/core/cvfpu/src/fpnew_fma.sv \
22+
$(SRC_HOME)/core/cvfpu/src/fpnew_fma_multi.sv \
23+
$(SRC_HOME)/core/cvfpu/src/fpnew_noncomp.sv \
24+
$(SRC_HOME)/core/cvfpu/src/fpnew_opgroup_block.sv \
25+
$(SRC_HOME)/core/cvfpu/src/fpnew_opgroup_fmt_slice.sv \
26+
$(SRC_HOME)/core/cvfpu/src/fpnew_opgroup_multifmt_slice.sv \
27+
$(SRC_HOME)/core/cvfpu/src/fpnew_rounding.sv \
28+
$(SRC_HOME)/core/cvfpu/src/fpnew_top.sv \
29+
$(sort $(wildcard $(SRC_HOME)/core/*.sv)) \
30+
$(sort $(wildcard $(SRC_HOME)/core/pmp/src/*.sv)) \
31+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_pkg.sv \
32+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache.sv \
33+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_amo.sv \
34+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_cmo.sv \
35+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_core_arbiter.sv \
36+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_ctrl.sv \
37+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_ctrl_pe.sv \
38+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_flush.sv \
39+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_memctrl.sv \
40+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_miss_handler.sv \
41+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_mshr.sv \
42+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_rtab.sv \
43+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_uncached.sv \
44+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_victim_plru.sv \
45+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_victim_random.sv \
46+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_victim_sel.sv \
47+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hpdcache_wbuf.sv \
48+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hwpf_stride/hwpf_stride_pkg.sv \
49+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hwpf_stride/hwpf_stride.sv \
50+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hwpf_stride/hwpf_stride_arb.sv \
51+
$(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/hwpf_stride/hwpf_stride_wrapper.sv \
52+
$(sort $(wildcard $(SRC_HOME)/core/cache_subsystem/*.sv)) \
53+
$(sort $(wildcard $(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/common/*.sv)) \
54+
$(sort $(wildcard $(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/common/macros/blackbox/*.sv)) \
55+
$(sort $(wildcard $(SRC_HOME)/core/cache_subsystem/hpdcache/rtl/src/utils/*.sv)) \
56+
$(sort $(wildcard $(SRC_HOME)/core/cva6_mmu/*.sv)) \
57+
$(SRC_HOME)/core/cvfpu/src/fpu_div_sqrt_mvp/hdl/defs_div_sqrt_mvp.sv \
58+
$(SRC_HOME)/core/cvfpu/src/fpu_div_sqrt_mvp/hdl/control_mvp.sv \
59+
$(SRC_HOME)/core/cvfpu/src/fpu_div_sqrt_mvp/hdl/div_sqrt_top_mvp.sv \
60+
$(SRC_HOME)/core/cvfpu/src/fpu_div_sqrt_mvp/hdl/iteration_div_sqrt_mvp.sv \
61+
$(SRC_HOME)/core/cvfpu/src/fpu_div_sqrt_mvp/hdl/norm_div_sqrt_mvp.sv \
62+
$(SRC_HOME)/core/cvfpu/src/fpu_div_sqrt_mvp/hdl/nrbd_nrsc_mvp.sv \
63+
$(SRC_HOME)/core/cvfpu/src/fpu_div_sqrt_mvp/hdl/preprocess_mvp.sv \
64+
$(SRC_HOME)/core/cvxif_example/include/cvxif_instr_pkg.sv \
65+
$(sort $(wildcard $(SRC_HOME)/core/frontend/*.sv)) \
66+
$(SRC_HOME)/vendor/pulp-platform/tech_cells_generic/src/rtl/tc_sram.sv \
67+
$(PLATFORM_DIR)/ram/verilog/fakeram7_64x256_shim.sv \
68+
$(PLATFORM_DIR)/ram/verilog/sacrls0g0d1p64x256m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.sv \
69+
$(PLATFORM_DIR)/ram/verilog/fakeram7_128x64_shim.sv \
70+
$(PLATFORM_DIR)/ram/verilog/sacrls0g0d1p128x64m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.sv \
71+
$(PLATFORM_DIR)/ram/verilog/fakeram7_64x28_shim.sv \
72+
$(PLATFORM_DIR)/ram/verilog/sacrls0g0d1p64x28m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.sv \
73+
$(PLATFORM_DIR)/ram/verilog/fakeram7_64x25_shim.sv \
74+
$(PLATFORM_DIR)/ram/verilog/sacrls0g0d1p64x25m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.sv
75+
76+
export VERILOG_INCLUDE_DIRS = $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/core/include \
77+
$(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/core/cvfpu/src/common_cells/include \
78+
$(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/core/cache_subsystem/hpdcache/rtl/include
79+
80+
export VERILOG_DEFINES += -D HPDCACHE_ASSERT_OFF
81+
82+
export ADDITIONAL_LEFS = $(PLATFORM_DIR)/ram/lef/sacrls0g0d1p64x256m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.lef \
83+
$(PLATFORM_DIR)/ram/lef/sacrls0g0d1p128x64m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.lef \
84+
$(PLATFORM_DIR)/ram/lef/sacrls0g0d1p64x28m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.lef \
85+
$(PLATFORM_DIR)/ram/lef/sacrls0g0d1p64x25m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.lef
86+
87+
export ADDITIONAL_LIBS += $(PLATFORM_DIR)/ram/lib/sacrls0g0d1p64x256m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.lib \
88+
$(PLATFORM_DIR)/ram/lib/sacrls0g0d1p128x64m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.lib \
89+
$(PLATFORM_DIR)/ram/lib/sacrls0g0d1p64x28m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.lib \
90+
$(PLATFORM_DIR)/ram/lib/sacrls0g0d1p64x25m2b1w0c1p0d0i0s0cr0rr0rm4rw00ms0.lib
91+
92+
export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/constraint.sdc
93+
94+
# Must be defined before the ifeq's
95+
export SYNTH_HDL_FRONTEND = slang
96+
export SYNTH_HIERARCHICAL ?= 0
97+
98+
ifeq ($(SYNTH_HDL_FRONTEND),verific)
99+
# Reduce utilization for verific since it runs into issues with DPL not being
100+
# able to place instances or with one-site gap/overlap issues
101+
export CORE_UTILIZATION = 35
102+
else
103+
ifeq ($(SYNTH_HIERARCHICAL),1)
104+
# Reduce the amount of resizing done between GPL and DPL
105+
export EARLY_SIZING_CAP_RATIO = 6
106+
endif
107+
export CORE_UTILIZATION = 45
108+
endif
109+
110+
export CORE_MARGIN = 2
111+
export MACRO_PLACE_HALO = 2 2
112+
113+
export PLACE_DENSITY = 0.65
114+
115+
export ENABLE_DPO = 0
116+
117+
# a smoketest for this option, there are a
118+
# few last gasp iterations
119+
export SKIP_LAST_GASP ?= 1
120+
121+
# For use with SYNTH_HIERARCHICAL
122+
export SYNTH_MINIMUM_KEEP_SIZE ?= 40000
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Derived from cva6_synth.tcl and Makefiles
2+
3+
set clk_name main_clk
4+
set clk_port clk_i
5+
set clk_ports_list [list $clk_port]
6+
set clk_period 1000
7+
set input_delay 0.46
8+
set output_delay 0.11
9+
create_clock [get_ports $clk_port] -name $clk_name -period $clk_period
10+
11+
set_false_path -to [get_ports {rvfi_probes_o}]
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
export PLATFORM = rapidus2hp
2+
3+
export DESIGN_NAME = ethmac
4+
5+
export VERILOG_FILES = $(sort $(wildcard $(DESIGN_HOME)/src/$(DESIGN_NICKNAME)/*.v))
6+
export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc
7+
export ABC_AREA = 1
8+
9+
export CORE_UTILIZATION = 45
10+
export CORE_ASPECT_RATIO = 1
11+
export CORE_MARGIN = 0.75
12+
export PLACE_DENSITY = 0.70
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
set top_clk_name wb_clk_i
2+
set clk_period 875
3+
set clk_io_pct 0.2
4+
set clk_port [get_ports $top_clk_name]
5+
create_clock -name $top_clk_name -period $clk_period $clk_port
6+
set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port]
7+
set_input_delay [expr $clk_period * $clk_io_pct] -clock $top_clk_name $non_clock_inputs
8+
set_output_delay [expr $clk_period * $clk_io_pct] -clock $top_clk_name [all_outputs]
9+
10+
set tx_clk_name mtx_clk_pad_i
11+
set tx_clk_port [get_ports $tx_clk_name]
12+
set tx_clk_period 300
13+
create_clock -name $tx_clk_name -period $tx_clk_period $tx_clk_port
14+
set mtx_non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $tx_clk_port]
15+
set_input_delay [expr $tx_clk_period * $clk_io_pct] -clock $tx_clk_name $mtx_non_clock_inputs
16+
set_output_delay [expr $tx_clk_period * $clk_io_pct] -clock $tx_clk_name [all_outputs]
17+
18+
set rx_clk_name mrx_clk_pad_i
19+
set rx_clk_port [get_ports $rx_clk_name]
20+
set rx_clk_period 300
21+
create_clock -name $rx_clk_name -period $rx_clk_period $rx_clk_port
22+
set mrx_non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $rx_clk_port]
23+
set_input_delay [expr $rx_clk_period * $clk_io_pct] -clock $rx_clk_name $mrx_non_clock_inputs
24+
set_output_delay [expr $rx_clk_period * $clk_io_pct] -clock $rx_clk_name [all_outputs]
25+
26+
set_clock_groups -name core_clock -logically_exclusive \
27+
-group [get_clocks $top_clk_name] \
28+
-group [get_clocks $tx_clk_name] \
29+
-group [get_clocks $rx_clk_name]
30+
31+
set_max_fanout 10 [current_design]
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
{
2+
"_SDC_FILE_PATH": "constraint.sdc",
3+
"_SDC_CLK_PERIOD": {
4+
"type": "float",
5+
"minmax": [
6+
180,
7+
300
8+
],
9+
"step": 0
10+
},
11+
"CORE_UTILIZATION": {
12+
"type": "float",
13+
"minmax": [
14+
21,
15+
60
16+
],
17+
"step": 0
18+
},
19+
"CTS_CLUSTER_SIZE": {
20+
"type": "int",
21+
"minmax": [
22+
10,
23+
200
24+
],
25+
"step": 1
26+
},
27+
"CTS_CLUSTER_DIAMETER": {
28+
"type": "int",
29+
"minmax": [
30+
20,
31+
400
32+
],
33+
"step": 1
34+
}
35+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export DESIGN_NICKNAME = gcd
2+
export DESIGN_NAME = gcd
3+
export PLATFORM = rapidus2hp
4+
5+
export VERILOG_FILES = $(DESIGN_HOME)/src/$(DESIGN_NAME)/gcd.v
6+
export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/constraint.sdc
7+
8+
export CORE_UTILIZATION = 30
9+
export CORE_MARGIN = .75
10+
export PLACE_DENSITY = 0.42
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
current_design gcd
2+
3+
set clk_name core_clock
4+
set clk_port_name clk
5+
set clk_period 185
6+
set clk_io_pct 0.2
7+
8+
set clk_port [get_ports $clk_port_name]
9+
10+
create_clock -name $clk_name -period $clk_period $clk_port
11+
12+
set non_clock_inputs [lsearch -inline -all -not -exact [all_inputs] $clk_port]
13+
14+
set_input_delay [expr $clk_period * $clk_io_pct] -clock $clk_name $non_clock_inputs
15+
set_output_delay [expr $clk_period * $clk_io_pct] -clock $clk_name [all_outputs]

0 commit comments

Comments
 (0)