Update timing targets to run at the three corners

This commit is contained in:
manarabdelaty 2021-12-29 19:11:13 +02:00
parent 7a45a096a5
commit 7880a52d13
5 changed files with 125821 additions and 23918 deletions

330
Makefile
View File

@ -620,7 +620,7 @@ $(RCX_BLOCKS): rcx-% : ./def/%.def
sh -c "cd /caravel; openroad -exit ./def/tmp/sta_$*.tcl |& tee ./def/tmp/sta_$*.log" sh -c "cd /caravel; openroad -exit ./def/tmp/sta_$*.tcl |& tee ./def/tmp/sta_$*.log"
caravel_timing: ./def/caravel.def ./sdc/caravel.sdc ./verilog/gl/caravel.v check-mcw caravel_timing_typ: ./def/caravel.def ./sdc/caravel.sdc ./verilog/gl/caravel.v check-mcw
mkdir -p ./def/tmp mkdir -p ./def/tmp
## Run OpenSTA ## Run OpenSTA
echo "\ echo "\
@ -748,15 +748,337 @@ caravel_timing: ./def/caravel.def ./sdc/caravel.sdc ./verilog/gl/caravel.v check
read_spef -path gpio_defaults_block_35 ./spef/gpio_defaults_block.spef;\ read_spef -path gpio_defaults_block_35 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_36 ./spef/gpio_defaults_block.spef;\ read_spef -path gpio_defaults_block_36 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_37 ./spef/gpio_defaults_block.spef;\ read_spef -path gpio_defaults_block_37 ./spef/gpio_defaults_block.spef;\
read_spef ./spef/caravel.spef;\
read_sdc -echo ./sdc/caravel.sdc;\ read_sdc -echo ./sdc/caravel.sdc;\
report_checks -path_delay min -fields {slew cap input nets fanout} -format full_clock_expanded -group_count 50;\ report_checks -path_delay min -fields {slew cap input nets fanout} -format full_clock_expanded -group_count 50;\
report_checks -path_delay max -fields {slew cap input nets fanout} -format full_clock_expanded -group_count 50;\ report_checks -path_delay max -fields {slew cap input nets fanout} -format full_clock_expanded -group_count 50;\
report_worst_slack -max ;\ report_worst_slack -max ;\
report_worst_slack -min ;\ report_worst_slack -min ;\
report_checks -path_delay min -fields {slew cap input nets fanout} -format full_clock_expanded -slack_max 0.18 -group_count 10;\ echo \" Management Area Interface \";\
" > ./def/tmp/caravel_timing.tcl report_checks -to soc/core_clk -unconstrained -group_count 1;\
sta -exit ./def/tmp/caravel_timing.tcl | tee ./signoff/caravel/caravel_timing.log echo \" User project Interface \";\
report_checks -to mprj/wb_clk_i -unconstrained -group_count 1;\
report_checks -to mprj/wb_rst_i -unconstrained -group_count 1;\
report_checks -to mprj/wbs_cyc_i -unconstrained -group_count 1;\
report_checks -to mprj/wbs_stb_i -unconstrained -group_count 1;\
report_checks -to mprj/wbs_we_i -unconstrained -group_count 1;\
report_checks -to mprj/wbs_sel_i[*] -unconstrained -group_count 4;\
report_checks -to mprj/wbs_adr_i[*] -unconstrained -group_count 32;\
report_checks -to mprj/io_in[*] -unconstrained -group_count 32;\
report_checks -to mprj/user_clock2 -unconstrained -group_count 32;\
report_checks -to mprj/user_irq[*] -unconstrained -group_count 32;\
report_checks -to mprj/la_data_in[*] -unconstrained -group_count 128;\
report_checks -to mprj/la_oenb[*] -unconstrained -group_count 128;\
echo \" Flash output Interface \";\
report_checks -to flash_clk -group_count 1;\
report_checks -to flash_csb -group_count 1;\
report_checks -to flash_io0 -group_count 1;\
" > ./def/tmp/caravel_timing_typ.tcl
sta -exit ./def/tmp/caravel_timing_typ.tcl | tee ./signoff/caravel/caravel_timing_typ.log
caravel_timing_slow: ./def/caravel.def ./sdc/caravel.sdc ./verilog/gl/caravel.v check-mcw
mkdir -p ./def/tmp
## Run OpenSTA
echo "\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(STD_CELL_LIBRARY)/lib/$(STD_CELL_LIBRARY)__ss_100C_1v60.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lib/sky130_sram_2kbyte_1rw1r_32x512_8_TT_1p8V_25C.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(SPECIAL_VOLTAGE_LIBRARY)/lib/$(SPECIAL_VOLTAGE_LIBRARY)__ss_100C_1v65.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(SPECIAL_VOLTAGE_LIBRARY)/lib/$(SPECIAL_VOLTAGE_LIBRARY)__ss_100C_1v65_lv1v40.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_fd_io__top_gpiov2_ss_ss_100C_1v40_1v65.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_fd_io__top_ground_hvc_wpad_ss_100C_1v60_3v00_3v00.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_fd_io__top_ground_lvc_wpad_ss_100C_1v40_1v65.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_fd_io__top_power_lvc_wpad_ss_100C_1v60_3v00_3v00.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_fd_io__top_xres4v2_ss_ss_100C_1v40_1v65.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_ef_io__gpiov2_pad_wrapped_ss_ss_100C_1v60_3v00.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_ef_io__vccd_lvc_clamped_pad_ss_100C_1v60_3v00_3v00.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_ef_io__vdda_hvc_clamped_pad_ss_100C_1v60_3v00_3v00.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_ef_io__vdda_hvc_clamped_pad_ss_100C_1v60_3v00_3v00.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_ef_io__vssd_lvc_clamped3_pad_ss_100C_1v40_1v65.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_ef_io__vccd_lvc_clamped3_pad_ss_100C_1v60_3v00_3v00.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_ef_io__vssd_lvc_clamped_pad_ss_100C_1v60_3v00.lib;\
read_verilog $(MCW_ROOT)/verilog/gl/mgmt_core.v;\
read_verilog $(MCW_ROOT)/verilog/gl/DFFRAM.v;\
read_verilog $(MCW_ROOT)/verilog/gl/mgmt_core_wrapper.v;\
read_verilog ./verilog/gl/caravel_clocking.v;\
read_verilog ./verilog/gl/digital_pll.v;\
read_verilog ./verilog/gl/housekeeping.v;\
read_verilog ./verilog/gl/gpio_logic_high.v;\
read_verilog ./verilog/gl/gpio_control_block.v;\
read_verilog ./verilog/gl/gpio_defaults_block.v;\
read_verilog ./verilog/gl/gpio_defaults_block_0403.v;\
read_verilog ./verilog/gl/gpio_defaults_block_1803.v;\
read_verilog ./verilog/gl/mgmt_protect_hv.v;\
read_verilog ./verilog/gl/mprj_logic_high.v;\
read_verilog ./verilog/gl/mprj2_logic_high.v;\
read_verilog ./verilog/gl/mgmt_protect.v;\
read_verilog ./verilog/gl/user_id_programming.v;\
read_verilog ./verilog/gl/xres_buf.v;\
read_verilog ./verilog/gl/spare_logic_block.v;\
read_verilog ./verilog/gl/chip_io.v;\
read_verilog ./verilog/gl/caravel.v;\
link_design caravel;\
read_spef -path soc/DFFRAM_0 $(MCW_ROOT)/spef/DFFRAM.spef;\
read_spef -path soc/core $(MCW_ROOT)/spef/mgmt_core.spef;\
read_spef -path soc $(MCW_ROOT)/spef/mgmt_core_wrapper.spef;\
read_spef -path padframe ./spef/chip_io.spef;\
read_spef -path rstb_level ./spef/xres_buf.spef;\
read_spef -path pll ./spef/digital_pll.spef;\
read_spef -path housekeeping ./spef/housekeeping.spef;\
read_spef -path mgmt_buffers/powergood_check ./spef/mgmt_protect_hv.spef;\
read_spef -path mgmt_buffers/mprj_logic_high_inst ./spef/mprj_logic_high.spef;\
read_spef -path mgmt_buffers/mprj2_logic_high_inst ./spef/mprj2_logic_high.spef;\
read_spef -path mgmt_buffers ./spef/mgmt_protect.spef;\
read_spef -path \gpio_control_bidir_1[0] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_bidir_1[1] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_bidir_2[1] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_bidir_2[2] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[0] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[10] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[1] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[2] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[3] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[4] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[5] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[6] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[7] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[8] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[9] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1a[0] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1a[1] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1a[2] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1a[3] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1a[4] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1a[5] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[0] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[10] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[11] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[12] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[13] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[14] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[15] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[1] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[2] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[3] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[4] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[5] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[6] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[7] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[8] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[9] ./spef/gpio_control_block.spef;\
read_spef -path gpio_defaults_block_0 ./spef/gpio_defaults_block_1803.spef;\
read_spef -path gpio_defaults_block_1 ./spef/gpio_defaults_block_1803.spef;\
read_spef -path gpio_defaults_block_2 ./spef/gpio_defaults_block_0403.spef;\
read_spef -path gpio_defaults_block_3 ./spef/gpio_defaults_block_0403.spef;\
read_spef -path gpio_defaults_block_4 ./spef/gpio_defaults_block_0403.spef;\
read_spef -path gpio_defaults_block_5 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_6 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_7 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_8 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_9 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_10 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_11 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_12 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_13 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_14 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_15 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_16 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_17 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_18 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_19 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_20 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_21 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_22 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_23 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_24 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_25 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_26 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_27 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_28 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_29 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_30 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_31 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_32 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_33 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_34 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_35 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_36 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_37 ./spef/gpio_defaults_block.spef;\
read_spef ./spef/caravel.spef;\
read_sdc -echo ./sdc/caravel.sdc;\
report_checks -path_delay min -fields {slew cap input nets fanout} -format full_clock_expanded -group_count 50;\
report_checks -path_delay max -fields {slew cap input nets fanout} -format full_clock_expanded -group_count 50;\
report_worst_slack -max ;\
report_worst_slack -min ;\
echo \" Management Area Interface \";\
report_checks -to soc/core_clk -unconstrained -group_count 1;\
echo \" User project Interface \";\
report_checks -to mprj/wb_clk_i -unconstrained -group_count 1;\
report_checks -to mprj/wb_rst_i -unconstrained -group_count 1;\
report_checks -to mprj/wbs_cyc_i -unconstrained -group_count 1;\
report_checks -to mprj/wbs_stb_i -unconstrained -group_count 1;\
report_checks -to mprj/wbs_we_i -unconstrained -group_count 1;\
report_checks -to mprj/wbs_sel_i[*] -unconstrained -group_count 4;\
report_checks -to mprj/wbs_adr_i[*] -unconstrained -group_count 32;\
report_checks -to mprj/io_in[*] -unconstrained -group_count 32;\
report_checks -to mprj/user_clock2 -unconstrained -group_count 32;\
report_checks -to mprj/user_irq[*] -unconstrained -group_count 32;\
report_checks -to mprj/la_data_in[*] -unconstrained -group_count 128;\
report_checks -to mprj/la_oenb[*] -unconstrained -group_count 128;\
" > ./def/tmp/caravel_timing_slow.tcl
sta -exit ./def/tmp/caravel_timing_slow.tcl | tee ./signoff/caravel/caravel_timing_slow.log
caravel_timing_fast: ./def/caravel.def ./sdc/caravel.sdc ./verilog/gl/caravel.v check-mcw
mkdir -p ./def/tmp
## Run OpenSTA
echo "\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(STD_CELL_LIBRARY)/lib/$(STD_CELL_LIBRARY)__ff_n40C_1v95.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lib/sky130_sram_2kbyte_1rw1r_32x512_8_TT_1p8V_25C.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(SPECIAL_VOLTAGE_LIBRARY)/lib/$(SPECIAL_VOLTAGE_LIBRARY)__ff_n40C_5v50.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(SPECIAL_VOLTAGE_LIBRARY)/lib/$(SPECIAL_VOLTAGE_LIBRARY)__ff_n40C_4v40_lv1v95.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_fd_io__top_gpiov2_ff_ff_n40C_1v95_5v50.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_fd_io__top_ground_hvc_wpad_ff_n40C_1v95_5v50_5v50.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_fd_io__top_ground_lvc_wpad_ff_n40C_1v95_5v50.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_fd_io__top_ground_lvc_wpad_ff_n40C_1v95_5v50.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_fd_io__top_power_lvc_wpad_ff_n40C_1v95_5v50_5v50.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_fd_io__top_xres4v2_ff_ff_n40C_1v95_5v50.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_ef_io__gpiov2_pad_wrapped_ff_ff_n40C_1v95_5v50.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_ef_io__vccd_lvc_clamped_pad_ff_n40C_1v95_5v50_5v50.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_ef_io__vdda_hvc_clamped_pad_ff_n40C_1v95_5v50_5v50.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_ef_io__vssa_hvc_clamped_pad_ff_n40C_1v95_5v50_5v50.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_ef_io__vssd_lvc_clamped3_pad_ff_n40C_1v95_5v50.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_ef_io__vccd_lvc_clamped3_pad_ff_n40C_1v95_5v50_5v50.lib;\
read_liberty $(PDK_ROOT)/sky130A/libs.ref/$(IO_LIBRARY)/lib/sky130_ef_io__vssd_lvc_clamped_pad_ff_n40C_1v95_5v50.lib;\
read_verilog $(MCW_ROOT)/verilog/gl/mgmt_core.v;\
read_verilog $(MCW_ROOT)/verilog/gl/DFFRAM.v;\
read_verilog $(MCW_ROOT)/verilog/gl/mgmt_core_wrapper.v;\
read_verilog ./verilog/gl/caravel_clocking.v;\
read_verilog ./verilog/gl/digital_pll.v;\
read_verilog ./verilog/gl/housekeeping.v;\
read_verilog ./verilog/gl/gpio_logic_high.v;\
read_verilog ./verilog/gl/gpio_control_block.v;\
read_verilog ./verilog/gl/gpio_defaults_block.v;\
read_verilog ./verilog/gl/gpio_defaults_block_0403.v;\
read_verilog ./verilog/gl/gpio_defaults_block_1803.v;\
read_verilog ./verilog/gl/mgmt_protect_hv.v;\
read_verilog ./verilog/gl/mprj_logic_high.v;\
read_verilog ./verilog/gl/mprj2_logic_high.v;\
read_verilog ./verilog/gl/mgmt_protect.v;\
read_verilog ./verilog/gl/user_id_programming.v;\
read_verilog ./verilog/gl/xres_buf.v;\
read_verilog ./verilog/gl/spare_logic_block.v;\
read_verilog ./verilog/gl/chip_io.v;\
read_verilog ./verilog/gl/caravel.v;\
link_design caravel;\
read_spef -path soc/DFFRAM_0 $(MCW_ROOT)/spef/DFFRAM.spef;\
read_spef -path soc/core $(MCW_ROOT)/spef/mgmt_core.spef;\
read_spef -path soc $(MCW_ROOT)/spef/mgmt_core_wrapper.spef;\
read_spef -path padframe ./spef/chip_io.spef;\
read_spef -path rstb_level ./spef/xres_buf.spef;\
read_spef -path pll ./spef/digital_pll.spef;\
read_spef -path housekeeping ./spef/housekeeping.spef;\
read_spef -path mgmt_buffers/powergood_check ./spef/mgmt_protect_hv.spef;\
read_spef -path mgmt_buffers/mprj_logic_high_inst ./spef/mprj_logic_high.spef;\
read_spef -path mgmt_buffers/mprj2_logic_high_inst ./spef/mprj2_logic_high.spef;\
read_spef -path mgmt_buffers ./spef/mgmt_protect.spef;\
read_spef -path \gpio_control_bidir_1[0] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_bidir_1[1] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_bidir_2[1] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_bidir_2[2] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[0] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[10] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[1] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[2] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[3] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[4] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[5] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[6] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[7] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[8] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1[9] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1a[0] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1a[1] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1a[2] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1a[3] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1a[4] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_1a[5] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[0] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[10] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[11] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[12] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[13] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[14] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[15] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[1] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[2] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[3] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[4] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[5] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[6] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[7] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[8] ./spef/gpio_control_block.spef;\
read_spef -path \gpio_control_in_2[9] ./spef/gpio_control_block.spef;\
read_spef -path gpio_defaults_block_0 ./spef/gpio_defaults_block_1803.spef;\
read_spef -path gpio_defaults_block_1 ./spef/gpio_defaults_block_1803.spef;\
read_spef -path gpio_defaults_block_2 ./spef/gpio_defaults_block_0403.spef;\
read_spef -path gpio_defaults_block_3 ./spef/gpio_defaults_block_0403.spef;\
read_spef -path gpio_defaults_block_4 ./spef/gpio_defaults_block_0403.spef;\
read_spef -path gpio_defaults_block_5 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_6 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_7 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_8 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_9 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_10 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_11 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_12 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_13 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_14 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_15 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_16 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_17 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_18 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_19 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_20 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_21 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_22 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_23 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_24 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_25 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_26 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_27 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_28 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_29 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_30 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_31 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_32 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_33 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_34 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_35 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_36 ./spef/gpio_defaults_block.spef;\
read_spef -path gpio_defaults_block_37 ./spef/gpio_defaults_block.spef;\
read_spef ./spef/caravel.spef;\
read_sdc -echo ./sdc/caravel.sdc;\
report_checks -path_delay min -fields {slew cap input nets fanout} -format full_clock_expanded -group_count 50;\
report_checks -path_delay max -fields {slew cap input nets fanout} -format full_clock_expanded -group_count 50;\
report_worst_slack -max ;\
report_worst_slack -min ;\
echo \" Management Area Interface \";\
report_checks -to soc/core_clk -unconstrained -group_count 1;\
echo \" User project Interface \";\
report_checks -to mprj/wb_clk_i -unconstrained -group_count 1;\
report_checks -to mprj/wb_rst_i -unconstrained -group_count 1;\
report_checks -to mprj/wbs_cyc_i -unconstrained -group_count 1;\
report_checks -to mprj/wbs_stb_i -unconstrained -group_count 1;\
report_checks -to mprj/wbs_we_i -unconstrained -group_count 1;\
report_checks -to mprj/wbs_sel_i[*] -unconstrained -group_count 4;\
report_checks -to mprj/wbs_adr_i[*] -unconstrained -group_count 32;\
report_checks -to mprj/io_in[*] -unconstrained -group_count 32;\
report_checks -to mprj/user_clock2 -unconstrained -group_count 32;\
report_checks -to mprj/user_irq[*] -unconstrained -group_count 32;\
report_checks -to mprj/la_data_in[*] -unconstrained -group_count 128;\
report_checks -to mprj/la_oenb[*] -unconstrained -group_count 128;\
" > ./def/tmp/caravel_timing_fast.tcl
sta -exit ./def/tmp/caravel_timing_fast.tcl | tee ./signoff/caravel/caravel_timing_fast.log
########################################################################### ###########################################################################
.PHONY: generate_fill .PHONY: generate_fill

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff