diff --git a/build/openroad/config.mk b/build/openroad/config.mk new file mode 100644 index 0000000..9c4381c --- /dev/null +++ b/build/openroad/config.mk @@ -0,0 +1,53 @@ +# design and tech +export DESIGN_NICKNAME = a2p +export DESIGN_NAME = A2P_WB +export PLATFORM = sky130hd + +export VERILOG_FILES = $(sort $(wildcard ./designs/$(PLATFORM)/$(DESIGN_NICKNAME)/src/*.v)) +export SDC_FILE = ./designs/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.sdc + +$(info Source files:) +$(info $(VERILOG_FILES)) +$(info ..................................................) + +# design and tech +unit = a2p + +# 5% utilization +#[INFO PDN-0013] Inserting stdcell grid - grid +#Command terminated by signal 9 +#export DIE_AREA = 0 0 10000 10000 +#export CORE_AREA = 100 100 10000 10000 +# 21% utilization +#Error: resize.tcl, 88 invalid command name "sta::max_slew_violation_count" +export DIE_AREA = 0 0 5000 5000 +export CORE_AREA = 100 100 5000 5000 + +#export CORE_UTILIZATION = 100 +#export CORE_ASPECT_RATIO = 1 +#export CORE_MARGIN = 2 + +# a2o fu stuff +# keeps hierarchy of some cells even if flattening +#export PRESERVE_CELLS ?= tri_144x78_2r4w +# no flatten +#export SYNTH_NO_FLAT ?= 1 +# don't optimize tri_144x78_2r4w +#export SYNTH_OPT_SELECTION ?= fu + +#export PLACE_DENSITY ?= 0.80 +# also set cycle time in constraint.sdc! derive it there from this? +#export ABC_CLOCK_PERIOD_IN_PS ?= 10000 +#export ABC_DEFAULT_SCRIPT ?= 1 + +# fanout doesn't get adjusted to fix paths? or resizer not working +export SYNTH_MAX_FANOUT ?= 32 +export SYNTH_MAX_TRAN ?= 100 + +#wtf can't specify in resizer anymore? +#export RS_BUF_CELL ?= BUF_X4 +#export RS_MAX_FO ?= 20 + +export REPORT_SLACK_MAX_PATHS ?= 100 + + diff --git a/build/openroad/constraint.sdc b/build/openroad/constraint.sdc new file mode 100644 index 0000000..5b061c7 --- /dev/null +++ b/build/openroad/constraint.sdc @@ -0,0 +1,24 @@ +set clk_name clk +# make it easy +set clk_period 50.0 + +set input_delay_value 1 +set output_delay_value 1 + +# define clock +set clkPort [get_ports $clk_name] +create_clock $clkPort -name clk -period $clk_period + +# apply clock to ins and outs +set clk_index [lsearch [all_inputs] $clkPort] +set all_inputs_wo_clk [lreplace [all_inputs] $clk_index $clk_index] +set_input_delay $input_delay_value -clock [get_clocks clk] $all_inputs_wo_clk +set_output_delay $output_delay_value -clock [get_clocks clk] [all_outputs] + +# false paths +set_false_path -from [get_ports {reset}] -to [get_clocks clk] +#wtf - is this the dc write path? +set_false_path -from [get_nets {dBusWB_ACK}] +set_false_path -from [get_nets {a2p_wb/dbuswb_ack}] +set_false_path -from [get_nets {a2p_wb/dbuswb*}] + diff --git a/build/openroad/readme.md b/build/openroad/readme.md new file mode 100644 index 0000000..2b8fb2f --- /dev/null +++ b/build/openroad/readme.md @@ -0,0 +1,44 @@ + + +#### https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/tree/master/flow + +create dir and add sources + +``` +cd ../../.. +make DESIGN_CONFIG=./designs/sky130hd/a2p/config.mk +``` + + +## docs + +https://openroad.readthedocs.io/en/latest/user/UserGuide.html#option-1-rtl-to-gds-flow + +http://www.clifford.at/yosys/files/yosys_manual.pdf + +https://people.eecs.berkeley.edu/~alanmi/abc/ + +https://github.com/The-OpenROAD-Project/OpenSTA/blob/35a3f1e4e3f148b30678f9455e64d220c6758462/doc/OpenSTA.pdf + + +### steps + +1. initial synth/timing + +* initialize floorplan (initialize_floorplan) +* gate_resizer (multiple commands) + * can set estimated wire rc per layer + * can add buffers on I/O + * repairs fanouts/caps/etc. + * STA can run before and/or after this +* OpenSTA (sta) + +2. full PD + +* macro place (macro_placement) +* tapcell/endcap (tapcell) +* global placement (global_placement) +* detailed placement (legalize_placement) +* CTS (clock_tree_synthesis) +* global routing (fast_route) ***the unit hangs appear here in report_power*** +* detailed routing (detailed_route) diff --git a/build/openroad/src/A2P_WB.v b/build/openroad/src/A2P_WB.v new file mode 120000 index 0000000..268220b --- /dev/null +++ b/build/openroad/src/A2P_WB.v @@ -0,0 +1 @@ +/home/wtf/projects/a2p/core/A2P_WB.v \ No newline at end of file