blob: d2293b6851949307f3eb494d31278e61887f6a68 [file] [log] [blame]
###############################################################################
# Timing Constraints
###############################################################################
create_clock -name core_clk -period 20.0000 [get_ports {core_clk}]
create_clock -name core_clk_mclk -period 20.0000 [get_ports {core_clk_mclk}]
create_clock -name rtc_clk -period 40.0000 [get_ports {rtc_clk}]
create_clock -name wb_clk -period 10.0000 [get_ports {wb_clk}]
create_generated_clock -name tcm_dffram_clk0 -add -source [get_ports {core_clk_mclk}] -master_clock [get_clocks core_clk_mclk] -divide_by 1 -comment {tcm clock0} [get_ports tcm_dffram_clk0]
create_generated_clock -name tcm_dffram_clk1 -add -source [get_ports {core_clk_mclk}] -master_clock [get_clocks core_clk_mclk] -divide_by 1 -comment {tcm clock1} [get_ports tcm_dffram_clk1]
create_generated_clock -name icache_dffram_clk0 -add -source [get_ports {core_clk_mclk}] -master_clock [get_clocks core_clk_mclk] -divide_by 1 -comment {icache clock0} [get_ports icache_dffram_clk0]
create_generated_clock -name icache_dffram_clk1 -add -source [get_ports {core_clk_mclk}] -master_clock [get_clocks core_clk_mclk] -divide_by 1 -comment {icache clock1} [get_ports icache_dffram_clk1]
create_generated_clock -name dcache_dffram_clk0 -add -source [get_ports {core_clk_mclk}] -master_clock [get_clocks core_clk_mclk] -divide_by 1 -comment {dcache clock0} [get_ports dcache_dffram_clk0]
create_generated_clock -name dcache_dffram_clk1 -add -source [get_ports {core_clk_mclk}] -master_clock [get_clocks core_clk_mclk] -divide_by 1 -comment {dcache clock1} [get_ports dcache_dffram_clk1]
set_clock_transition 0.1500 [all_clocks]
set_clock_uncertainty -setup 0.2500 [all_clocks]
set_clock_uncertainty -hold 0.2500 [all_clocks]
set_propagated_clock [all_clocks]
set ::env(SYNTH_TIMING_DERATE) 0.05
puts "\[INFO\]: Setting timing derate to: [expr {$::env(SYNTH_TIMING_DERATE) * 10}] %"
set_timing_derate -early [expr {1-$::env(SYNTH_TIMING_DERATE)}]
set_timing_derate -late [expr {1+$::env(SYNTH_TIMING_DERATE)}]
set_clock_groups -name async_clock -asynchronous \
-group [get_clocks {core_clk core_clk_mclk tcm_dffram_clk0 tcm_dffram_clk1 icache_dffram_clk0 icache_dffram_clk1 dcache_dffram_clk0 dcache_dffram_clk1} ]\
-group [get_clocks {rtc_clk}]\
-group [get_clocks {wb_clk}] -comment {Async Clock group}
### ClkSkew Adjust
set_case_analysis 0 [get_ports {cfg_cska_riscv[0]}]
set_case_analysis 0 [get_ports {cfg_cska_riscv[1]}]
set_case_analysis 0 [get_ports {cfg_cska_riscv[2]}]
set_case_analysis 0 [get_ports {cfg_cska_riscv[3]}]
set_max_delay 3.5 -from [get_ports {wbd_clk_int}]
set_max_delay 2 -to [get_ports {wbd_clk_riscv}]
set_max_delay 3.5 -from wbd_clk_int -to wbd_clk_riscv
#TCM Memory
set_input_delay -max 6.0000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_dout0[*]}]
set_input_delay -min 3.0000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_dout0[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_cs0}]
set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_addr0[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_wmask0[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_din0[*]}]
set_output_delay -min -0.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_cs0}]
set_output_delay -min -0.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_addr0[*]}]
set_output_delay -min -0.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_wmask0[*]}]
set_output_delay -min -3.5000 -clock [get_clocks {tcm_dffram_clk0}] -add_delay [get_ports {tcm_dffram_din0[*]}]
# mem1
set_input_delay -max 6.0000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports {tcm_dffram_dout1[*]}]
set_input_delay -min 3.0000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports {tcm_dffram_dout1[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports {tcm_dffram_cs1}]
set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports {tcm_dffram_addr1[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports {tcm_dffram_wmask1[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports {tcm_dffram_din1[*]}]
set_output_delay -min -0.5000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports {tcm_dffram_cs1}]
set_output_delay -min -0.5000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports {tcm_dffram_addr1[*]}]
set_output_delay -min -1.0000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports {tcm_dffram_wmask1[*]}]
set_output_delay -min -3.5000 -clock [get_clocks {tcm_dffram_clk1}] -add_delay [get_ports {tcm_dffram_din1[*]}]
#icache memory
set_input_delay -max 6.0000 -clock [get_clocks {icache_dffram_clk0}] -add_delay [get_ports {icache_dffram_dout0[*]}]
set_input_delay -min 3.0000 -clock [get_clocks {icache_dffram_clk0}] -add_delay [get_ports {icache_dffram_dout0[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {icache_dffram_clk0}] -add_delay [get_ports {icache_dffram_cs0}]
set_output_delay -max 4.5000 -clock [get_clocks {icache_dffram_clk0}] -add_delay [get_ports {icache_dffram_addr0[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {icache_dffram_clk0}] -add_delay [get_ports {icache_dffram_wmask0[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {icache_dffram_clk0}] -add_delay [get_ports {icache_dffram_din0[*]}]
set_output_delay -min -0.5000 -clock [get_clocks {icache_dffram_clk0}] -add_delay [get_ports {icache_dffram_cs0}]
set_output_delay -min -0.5000 -clock [get_clocks {icache_dffram_clk0}] -add_delay [get_ports {icache_dffram_addr0[*]}]
set_output_delay -min -0.5000 -clock [get_clocks {icache_dffram_clk0}] -add_delay [get_ports {icache_dffram_wmask0[*]}]
set_output_delay -min -3.5000 -clock [get_clocks {icache_dffram_clk0}] -add_delay [get_ports {icache_dffram_din0[*]}]
# mem1
set_input_delay -max 6.0000 -clock [get_clocks {icache_dffram_clk1}] -add_delay [get_ports {icache_dffram_dout1[*]}]
set_input_delay -min 3.0000 -clock [get_clocks {icache_dffram_clk1}] -add_delay [get_ports {icache_dffram_dout1[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {icache_dffram_clk1}] -add_delay [get_ports {icache_dffram_cs1}]
set_output_delay -max 4.5000 -clock [get_clocks {icache_dffram_clk1}] -add_delay [get_ports {icache_dffram_addr1[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {icache_dffram_clk1}] -add_delay [get_ports {icache_dffram_wmask1[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {icache_dffram_clk1}] -add_delay [get_ports {icache_dffram_din1[*]}]
set_output_delay -min -0.5000 -clock [get_clocks {icache_dffram_clk1}] -add_delay [get_ports {icache_dffram_cs1}]
set_output_delay -min -0.5000 -clock [get_clocks {icache_dffram_clk1}] -add_delay [get_ports {icache_dffram_addr1[*]}]
set_output_delay -min -0.5000 -clock [get_clocks {icache_dffram_clk1}] -add_delay [get_ports {icache_dffram_wmask1[*]}]
set_output_delay -min -3.5000 -clock [get_clocks {icache_dffram_clk1}] -add_delay [get_ports {icache_dffram_din1[*]}]
#dcache memory
set_input_delay -max 6.0000 -clock [get_clocks {dcache_dffram_clk0}] -add_delay [get_ports {dcache_dffram_dout0[*]}]
set_input_delay -min 3.0000 -clock [get_clocks {dcache_dffram_clk0}] -add_delay [get_ports {dcache_dffram_dout0[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {dcache_dffram_clk0}] -add_delay [get_ports {dcache_dffram_cs0}]
set_output_delay -max 4.5000 -clock [get_clocks {dcache_dffram_clk0}] -add_delay [get_ports {dcache_dffram_addr0[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {dcache_dffram_clk0}] -add_delay [get_ports {dcache_dffram_wmask0[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {dcache_dffram_clk0}] -add_delay [get_ports {dcache_dffram_din0[*]}]
set_output_delay -min -0.5000 -clock [get_clocks {dcache_dffram_clk0}] -add_delay [get_ports {dcache_dffram_cs0}]
set_output_delay -min -0.5000 -clock [get_clocks {dcache_dffram_clk0}] -add_delay [get_ports {dcache_dffram_addr0[*]}]
set_output_delay -min -2.5000 -clock [get_clocks {dcache_dffram_clk0}] -add_delay [get_ports {dcache_dffram_wmask0[*]}]
set_output_delay -min -3.5000 -clock [get_clocks {dcache_dffram_clk0}] -add_delay [get_ports {dcache_dffram_din0[*]}]
# mem1
set_input_delay -max 6.0000 -clock [get_clocks {dcache_dffram_clk1}] -add_delay [get_ports {dcache_dffram_dout1[*]}]
set_input_delay -min 3.0000 -clock [get_clocks {dcache_dffram_clk1}] -add_delay [get_ports {dcache_dffram_dout1[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {dcache_dffram_clk1}] -add_delay [get_ports {dcache_dffram_cs1}]
set_output_delay -max 4.5000 -clock [get_clocks {dcache_dffram_clk1}] -add_delay [get_ports {dcache_dffram_addr1[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {dcache_dffram_clk1}] -add_delay [get_ports {dcache_dffram_wmask1[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {dcache_dffram_clk1}] -add_delay [get_ports {dcache_dffram_din1[*]}]
set_output_delay -min -0.5000 -clock [get_clocks {dcache_dffram_clk1}] -add_delay [get_ports {dcache_dffram_cs1}]
set_output_delay -min -0.5000 -clock [get_clocks {dcache_dffram_clk1}] -add_delay [get_ports {dcache_dffram_addr1[*]}]
set_output_delay -min -2.5000 -clock [get_clocks {dcache_dffram_clk1}] -add_delay [get_ports {dcache_dffram_wmask1[*]}]
set_output_delay -min -3.5000 -clock [get_clocks {dcache_dffram_clk1}] -add_delay [get_ports {dcache_dffram_din1[*]}]
set_input_delay -max 5.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_rst_n}]
#Wishbone DMEM
set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_ack_i}]
set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_dat_i[*]}]
set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_err_i}]
set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_ack_i}]
set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_dat_i[*]}]
set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_dat_i[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_adr_o[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_dat_o[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_sel_o[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_stb_o}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_we_o}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_adr_o[*]}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_dat_o[*]}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_sel_o[*]}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_stb_o}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wbd_dmem_we_o}]
#Wishbone icache
set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_lack_i}]
set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_ack_i}]
set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_dat_i[*]}]
set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_err_i}]
set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_lack_i}]
set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_ack_i}]
set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_dat_i[*]}]
set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_dat_i[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_adr_o[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_sel_o[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_bl_o[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_bry_o}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_stb_o}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_we_o}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_adr_o[*]}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_sel_o[*]}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_bl_o[*]}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_bry_o}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_stb_o}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_we_o}]
#Wishbone dcache
set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_lack_i}]
set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_ack_i}]
set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_dat_i[*]}]
set_input_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_err_i}]
set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_lack_i}]
set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_ack_i}]
set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_dat_i[*]}]
set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_dat_i[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_adr_o[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_dat_o[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_sel_o[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_bl_o[*]}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_bry_o}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_stb_o}]
set_output_delay -max 4.5000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_we_o}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_adr_o[*]}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_dat_o[*]}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_sel_o[*]}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_bl_o[*]}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_bry_o}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_stb_o}]
set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_we_o}]
set_false_path\
-from [get_ports {soft_irq}]
set_false_path\
-to [list [get_ports {riscv_debug[0]}]\
[get_ports {riscv_debug[10]}]\
[get_ports {riscv_debug[11]}]\
[get_ports {riscv_debug[12]}]\
[get_ports {riscv_debug[13]}]\
[get_ports {riscv_debug[14]}]\
[get_ports {riscv_debug[15]}]\
[get_ports {riscv_debug[16]}]\
[get_ports {riscv_debug[17]}]\
[get_ports {riscv_debug[18]}]\
[get_ports {riscv_debug[19]}]\
[get_ports {riscv_debug[1]}]\
[get_ports {riscv_debug[20]}]\
[get_ports {riscv_debug[21]}]\
[get_ports {riscv_debug[22]}]\
[get_ports {riscv_debug[23]}]\
[get_ports {riscv_debug[24]}]\
[get_ports {riscv_debug[25]}]\
[get_ports {riscv_debug[26]}]\
[get_ports {riscv_debug[27]}]\
[get_ports {riscv_debug[28]}]\
[get_ports {riscv_debug[29]}]\
[get_ports {riscv_debug[2]}]\
[get_ports {riscv_debug[30]}]\
[get_ports {riscv_debug[31]}]\
[get_ports {riscv_debug[32]}]\
[get_ports {riscv_debug[33]}]\
[get_ports {riscv_debug[34]}]\
[get_ports {riscv_debug[35]}]\
[get_ports {riscv_debug[36]}]\
[get_ports {riscv_debug[37]}]\
[get_ports {riscv_debug[38]}]\
[get_ports {riscv_debug[39]}]\
[get_ports {riscv_debug[3]}]\
[get_ports {riscv_debug[40]}]\
[get_ports {riscv_debug[41]}]\
[get_ports {riscv_debug[42]}]\
[get_ports {riscv_debug[43]}]\
[get_ports {riscv_debug[44]}]\
[get_ports {riscv_debug[45]}]\
[get_ports {riscv_debug[46]}]\
[get_ports {riscv_debug[47]}]\
[get_ports {riscv_debug[48]}]\
[get_ports {riscv_debug[49]}]\
[get_ports {riscv_debug[4]}]\
[get_ports {riscv_debug[50]}]\
[get_ports {riscv_debug[51]}]\
[get_ports {riscv_debug[52]}]\
[get_ports {riscv_debug[53]}]\
[get_ports {riscv_debug[54]}]\
[get_ports {riscv_debug[55]}]\
[get_ports {riscv_debug[56]}]\
[get_ports {riscv_debug[57]}]\
[get_ports {riscv_debug[58]}]\
[get_ports {riscv_debug[59]}]\
[get_ports {riscv_debug[5]}]\
[get_ports {riscv_debug[60]}]\
[get_ports {riscv_debug[61]}]\
[get_ports {riscv_debug[62]}]\
[get_ports {riscv_debug[63]}]\
[get_ports {riscv_debug[6]}]\
[get_ports {riscv_debug[7]}]\
[get_ports {riscv_debug[8]}]\
[get_ports {riscv_debug[9]}]]
set_false_path -from [get_ports {fuse_mhartid[0]}]
set_false_path -from [get_ports {fuse_mhartid[10]}]
set_false_path -from [get_ports {fuse_mhartid[11]}]
set_false_path -from [get_ports {fuse_mhartid[12]}]
set_false_path -from [get_ports {fuse_mhartid[13]}]
set_false_path -from [get_ports {fuse_mhartid[14]}]
set_false_path -from [get_ports {fuse_mhartid[15]}]
set_false_path -from [get_ports {fuse_mhartid[16]}]
set_false_path -from [get_ports {fuse_mhartid[17]}]
set_false_path -from [get_ports {fuse_mhartid[18]}]
set_false_path -from [get_ports {fuse_mhartid[19]}]
set_false_path -from [get_ports {fuse_mhartid[1]}]
set_false_path -from [get_ports {fuse_mhartid[20]}]
set_false_path -from [get_ports {fuse_mhartid[21]}]
set_false_path -from [get_ports {fuse_mhartid[22]}]
set_false_path -from [get_ports {fuse_mhartid[23]}]
set_false_path -from [get_ports {fuse_mhartid[24]}]
set_false_path -from [get_ports {fuse_mhartid[25]}]
set_false_path -from [get_ports {fuse_mhartid[26]}]
set_false_path -from [get_ports {fuse_mhartid[27]}]
set_false_path -from [get_ports {fuse_mhartid[28]}]
set_false_path -from [get_ports {fuse_mhartid[29]}]
set_false_path -from [get_ports {fuse_mhartid[2]}]
set_false_path -from [get_ports {fuse_mhartid[30]}]
set_false_path -from [get_ports {fuse_mhartid[31]}]
set_false_path -from [get_ports {fuse_mhartid[3]}]
set_false_path -from [get_ports {fuse_mhartid[4]}]
set_false_path -from [get_ports {fuse_mhartid[5]}]
set_false_path -from [get_ports {fuse_mhartid[6]}]
set_false_path -from [get_ports {fuse_mhartid[7]}]
set_false_path -from [get_ports {fuse_mhartid[8]}]
set_false_path -from [get_ports {fuse_mhartid[9]}]
set_false_path -from [get_ports {irq_lines[0]}]
set_false_path -from [get_ports {irq_lines[10]}]
set_false_path -from [get_ports {irq_lines[11]}]
set_false_path -from [get_ports {irq_lines[12]}]
set_false_path -from [get_ports {irq_lines[13]}]
set_false_path -from [get_ports {irq_lines[14]}]
set_false_path -from [get_ports {irq_lines[15]}]
set_false_path -from [get_ports {irq_lines[1]}]
set_false_path -from [get_ports {irq_lines[2]}]
set_false_path -from [get_ports {irq_lines[3]}]
set_false_path -from [get_ports {irq_lines[4]}]
set_false_path -from [get_ports {irq_lines[5]}]
set_false_path -from [get_ports {irq_lines[6]}]
set_false_path -from [get_ports {irq_lines[7]}]
set_false_path -from [get_ports {irq_lines[8]}]
set_false_path -from [get_ports {irq_lines[9]}]
set_false_path -from [get_ports {pwrup_rst_n}]
set_false_path -from [get_ports {rst_n}]
set_false_path -from [get_ports {soft_irq}]
###############################################################################
# Environment
###############################################################################
set_driving_cell -lib_cell sky130_fd_sc_hd__inv_8 -pin $::env(SYNTH_DRIVING_CELL_PIN) [all_inputs]
set cap_load [expr $::env(SYNTH_CAP_LOAD) / 1000.0]
puts "\[INFO\]: Setting load to: $cap_load"
set_load $cap_load [all_outputs]
###############################################################################
# Design Rules
###############################################################################