update
diff --git a/openlane/dg_pll/base.sdc b/openlane/dg_pll/base.sdc index 062e55d..b10a47b 100644 --- a/openlane/dg_pll/base.sdc +++ b/openlane/dg_pll/base.sdc
@@ -1,35 +1,27 @@ - - -current_design digital_pll +current_design dg_pll create_clock [get_pins {"ringosc.ibufp01/Y"} ] -name "pll_control_clock" -period 6.6666666666667 set_propagated_clock [get_clocks {pll_control_clock}] -set input_delay_value [expr $::env(CLOCK_PERIOD) * $::env(IO_PCT)] -set output_delay_value [expr $::env(CLOCK_PERIOD) * $::env(IO_PCT)] -puts "\[INFO\]: Setting output delay to: $output_delay_value" -puts "\[INFO\]: Setting input delay to: $input_delay_value" -set_input_delay $input_delay_value -clock [get_clocks $::env(CLOCK_PORT)] [all_inputs] -set_output_delay $output_delay_value -clock [get_clocks $::env(CLOCK_PORT)] [all_outputs] - -# TODO set this as parameter -set_driving_cell -lib_cell $::env(SYNTH_DRIVING_CELL) -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] - +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)}] -puts "\[INFO\]: Setting clock uncertainity to: $::env(SYNTH_CLOCK_UNCERTAINITY)" -set_clock_uncertainty $::env(SYNTH_CLOCK_UNCERTAINITY) [get_clocks {pll_control_clock}] +set_clock_transition 0.1500 [all_clocks] +set_clock_uncertainty -setup 0.5000 [all_clocks] +set_clock_uncertainty -hold 0.2500 [all_clocks] -puts "\[INFO\]: Setting clock transition to: $::env(SYNTH_CLOCK_TRANSITION)" -set_clock_transition $::env(SYNTH_CLOCK_TRANSITION) [get_clocks {pll_control_clock}] +############################################################################### +# 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] set_max_transition 1.00 [current_design] set_max_capacitance 0.2 [current_design]
diff --git a/openlane/dg_pll/config.tcl b/openlane/dg_pll/config.tcl index ab632d6..0a00de1 100644 --- a/openlane/dg_pll/config.tcl +++ b/openlane/dg_pll/config.tcl
@@ -48,7 +48,7 @@ #set ::env(BOTTOM_MARGIN_MULT) 2 #LVS Issue - DEF Base looks to having issue -set ::env(MAGIC_EXT_USE_GDS) {1} +set ::env(MAGIC_EXT_USE_GDS) {0} set ::env(CELL_PAD) 0
diff --git a/openlane/dg_pll/interactive.tcl b/openlane/dg_pll/interactive.tcl index 32e355e..5368378 100755 --- a/openlane/dg_pll/interactive.tcl +++ b/openlane/dg_pll/interactive.tcl
@@ -13,7 +13,6 @@ # See the License for the specific language governing permissions and # limitations under the License. package require openlane; # provides the utils as well - proc run_placement_step {args} { if { ! [ info exists ::env(PLACEMENT_CURRENT_DEF) ] } { set ::env(PLACEMENT_CURRENT_DEF) $::env(CURRENT_DEF) @@ -24,69 +23,6 @@ run_placement } -proc run_placement {args} { - # |----------------------------------------------------| - # |---------------- 3. PLACEMENT ------------------| - # |----------------------------------------------------| - set ::env(CURRENT_STAGE) placement - - if { [info exists ::env(PL_TARGET_DENSITY_CELLS)] } { - set old_pl_target_density $::env(PL_TARGET_DENSITY) - set ::env(PL_TARGET_DENSITY) $::env(PL_TARGET_DENSITY_CELLS) - } - - if { $::env(PL_RANDOM_GLB_PLACEMENT) } { - # useful for very tiny designs - random_global_placement - } else { - global_placement_or - } - - if { [info exists ::env(PL_TARGET_DENSITY_CELLS)] } { - set ::env(PL_TARGET_DENSITY) $old_pl_target_density - } - - run_resizer_design - remove_buffers_from_nets - - detailed_placement_or -def $::env(placement_results)/$::env(DESIGN_NAME).def -log $::env(placement_logs)/detailed.log - - scrot_klayout -layout $::env(CURRENT_DEF) -log $::env(placement_logs)/screenshot.log -} - - -proc global_placement_or {args} { - increment_index - TIMER::timer_start - set log [index_file $::env(placement_logs)/global.log] - puts_info "Running Global Placement (log: [relpath . $log])..." - - set ::env(SAVE_DEF) [index_file $::env(placement_tmpfiles)/global.def] - - # random initial placement - if { $::env(PL_RANDOM_INITIAL_PLACEMENT) } { - random_global_placement - set ::env(PL_SKIP_INITIAL_PLACEMENT) 1 - } - - run_openroad_script $::env(SCRIPTS_DIR)/openroad/gpl.tcl -indexed_log $log - - # sometimes replace fails with a ZERO exit code; the following is a workaround - # until the cause is found and fixed - if { ! [file exists $::env(SAVE_DEF)] } { - puts_err "Global placement has failed to produce a DEF file." - flow_fail - } - - check_replace_divergence - - TIMER::timer_stop - exec echo "[TIMER::get_runtime]" | python3 $::env(SCRIPTS_DIR)/write_runtime.py "global placement - openroad" - set_def $::env(SAVE_DEF) -} - - - proc run_cts_step {args} { if { ! [ info exists ::env(CTS_CURRENT_DEF) ] } { set ::env(CTS_CURRENT_DEF) $::env(CURRENT_DEF) @@ -96,6 +32,9 @@ run_cts run_resizer_timing + if { $::env(RSZ_USE_OLD_REMOVER) == 1} { + remove_buffers_from_nets + } } proc run_routing_step {args} { @@ -181,6 +120,12 @@ } } +proc run_erc_step {args} { + if { $::env(RUN_CVC) } { + run_erc + } +} + proc run_eco_step {args} { if { $::env(ECO_ENABLE) == 1 } { run_eco_flow @@ -205,90 +150,13 @@ proc run_post_run_hooks {} { if { [file exists $::env(DESIGN_DIR)/hooks/post_run.py]} { puts_info "Running post run hook" - set result [exec $::env(OPENROAD_BIN) -python $::env(DESIGN_DIR)/hooks/post_run.py] + set result [exec $::env(OPENROAD_BIN) -exit -no_init -python $::env(DESIGN_DIR)/hooks/post_run.py] puts_info "$result" } else { puts_info "hooks/post_run.py not found, skipping" } } -proc run_magic_drc_batch {args} { - set options { - {-magicrc optional} - {-tech optional} - {-report required} - {-design required} - {-gds required} - } - set flags {} - parse_key_args "run_magic_drc_batch" args arg_values $options flags_mag $flags - if { [info exists arg_values(-magicrc)] } { - set magicrc [file normalize $arg_values(-magicrc)] - } - if { [info exists arg_values(-tech)] } { - set ::env(TECH) [file normalize $arg_values(-tech)] - } - set ::env(GDS_INPUT) [file normalize $arg_values(-gds)] - set ::env(REPORT_OUTPUT) [file normalize $arg_values(-report)] - set ::env(DESIGN_NAME) $arg_values(-design) - - if { [info exists magicrc] } { - exec magic \ - -noconsole \ - -dnull \ - -rcfile $magicrc \ - $::env(OPENLANE_ROOT)/scripts/magic/drc_batch.tcl \ - </dev/null |& tee /dev/tty - } else { - exec magic \ - -noconsole \ - -dnull \ - $::env(OPENLANE_ROOT)/scripts/magic/drc_batch.tcl \ - </dev/null |& tee /dev/tty - } -} - -proc run_lvs_batch {args} { - # runs device level lvs on -gds/CURRENT_GDS and -net/CURRENT_NETLIST - # extracts gds only if EXT_NETLIST does not exist - set options { - {-design required} - {-gds optional} - {-net optional} - } - set flags {} - parse_key_args "run_lvs_batch" args arg_values $options flags_lvs $flags -no_consume - - prep {*}$args - - if { [info exists arg_values(-gds)] } { - set ::env(CURRENT_GDS) [file normalize $arg_values(-gds)] - } else { - set ::env(CURRENT_GDS) $::env(signoff_results)/$::env(DESIGN_NAME).gds - } - if { [info exists arg_values(-net)] } { - set ::env(CURRENT_NETLIST) [file normalize $arg_values(-net)] - } - - assert_files_exist "$::env(CURRENT_GDS) $::env(CURRENT_NETLIST)" - - set ::env(MAGIC_EXT_USE_GDS) 1 - set ::env(EXT_NETLIST) $::env(signoff_results)/$::env(DESIGN_NAME).gds.spice - if { [file exists $::env(EXT_NETLIST)] } { - puts_warn "The file $::env(EXT_NETLIST) will be used. If you would like the file re-exported, please delete it." - } else { - run_magic_spice_export - } - - run_lvs -} - - -proc run_file {args} { - set ::env(TCLLIBPATH) $::auto_path - exec tclsh {*}$args >&@stdout -} - proc run_floorplan {args} { # |----------------------------------------------------| # |---------------- 2. FLOORPLAN ------------------| @@ -330,17 +198,17 @@ apply_def_template - #if { [info exist ::env(EXTRA_LEFS)] } { - if { [info exist ::env(MACRO_PLACEMENT_CFG)] } { - file copy -force $::env(MACRO_PLACEMENT_CFG) $::env(placement_tmpfiles)/macro_placement.cfg - manual_macro_placement -f - } else { - # global_placement_or - # basic_macro_placement - } - #} + if { [info exist ::env(MACRO_PLACEMENT_CFG)] } { + file copy -force $::env(MACRO_PLACEMENT_CFG) $::env(placement_tmpfiles)/macro_placement.cfg + manual_macro_placement -f + } else { + #global_placement_or + #basic_macro_placement + } - tap_decap_or + if { $::env(RUN_TAP_DECAP_INSERTION) } { + tap_decap_or + } scrot_klayout -layout $::env(CURRENT_DEF) -log $::env(floorplan_logs)/screenshot.log @@ -349,7 +217,6 @@ - proc run_flow {args} { set options { {-design optional}
diff --git a/openlane/pinmux_top/config.tcl b/openlane/pinmux_top/config.tcl index 414f142..f30df93 100755 --- a/openlane/pinmux_top/config.tcl +++ b/openlane/pinmux_top/config.tcl
@@ -105,7 +105,7 @@ set ::env(PL_TIME_DRIVEN) 1 set ::env(PL_TARGET_DENSITY) "0.38" set ::env(CELL_PAD) "8" -#set ::env(GRT_ADJUSTMENT) {0.2} +set ::env(GRT_ADJUSTMENT) {0.2} ###################################################################################### @@ -141,7 +141,7 @@ #LVS Issue - DEF Base looks to having issue -set ::env(MAGIC_EXT_USE_GDS) {1} +set ::env(MAGIC_EXT_USE_GDS) {0} set ::env(GLB_RESIZER_MAX_SLEW_MARGIN) {1.5} set ::env(PL_RESIZER_MAX_SLEW_MARGIN) {1.5}
diff --git a/openlane/qspim_top/config.tcl b/openlane/qspim_top/config.tcl index 9c49d24..cd08560 100755 --- a/openlane/qspim_top/config.tcl +++ b/openlane/qspim_top/config.tcl
@@ -108,7 +108,7 @@ #LVS Issue - DEF Base looks to having issue -set ::env(MAGIC_EXT_USE_GDS) {1} +set ::env(MAGIC_EXT_USE_GDS) {0} set ::env(GLB_RESIZER_MAX_SLEW_MARGIN) {1.5} set ::env(PL_RESIZER_MAX_SLEW_MARGIN) {1.5}
diff --git a/openlane/sar_adc/config.tcl b/openlane/sar_adc/config.tcl index 7b6c845..8accbf0 100644 --- a/openlane/sar_adc/config.tcl +++ b/openlane/sar_adc/config.tcl
@@ -83,4 +83,4 @@ set ::env(SYNTH_USE_PG_PINS_DEFINES) "USE_POWER_PINS" ## LVS mismatch is to be solved manually by shorting VDD and VSS pins to the core ring -set ::env(QUIT_ON_LVS_ERROR) "0" +set ::env(QUIT_ON_LVS_ERROR) "1"
diff --git a/openlane/uart_i2cm_usb_spi_top/config.tcl b/openlane/uart_i2cm_usb_spi_top/config.tcl index 7576c81..5ee77d2 100644 --- a/openlane/uart_i2cm_usb_spi_top/config.tcl +++ b/openlane/uart_i2cm_usb_spi_top/config.tcl
@@ -131,7 +131,7 @@ set ::env(CELL_PAD) {8} #LVS Issue - DEF Base looks to having issue -set ::env(MAGIC_EXT_USE_GDS) {1} +set ::env(MAGIC_EXT_USE_GDS) {0} set ::env(GLB_RESIZER_MAX_SLEW_MARGIN) {1.5} set ::env(PL_RESIZER_MAX_SLEW_MARGIN) {1.5}
diff --git a/openlane/user_project_wrapper/config.tcl b/openlane/user_project_wrapper/config.tcl index dc103e6..8d822c9 100644 --- a/openlane/user_project_wrapper/config.tcl +++ b/openlane/user_project_wrapper/config.tcl
@@ -76,6 +76,8 @@ $::env(DESIGN_DIR)/../../verilog/gl/dg_pll.v \ $::env(PDK_ROOT)/sky130B/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v \ $::env(DESIGN_DIR)/../../verilog/gl/dac_top.v \ + $::env(DESIGN_DIR)/../../verilog/gl/aes_top.v \ + $::env(DESIGN_DIR)/../../verilog/gl/fpu_wrapper.v \ " set ::env(EXTRA_LEFS) "\ @@ -88,8 +90,10 @@ $lef_root/ycr_core_top.lef \ $lef_root/ycr2_iconnect.lef \ $lef_root/dg_pll.lef \ - $::env(PDK_ROOT)/sky130B/libs.ref/sky130_sram_macros/lef/sky130_sram_2kbyte_1rw1r_32x512_8.lef \ + $::env(PDK_ROOT)/$::env(PDK)/libs.ref/sky130_sram_macros/lef/sky130_sram_2kbyte_1rw1r_32x512_8.lef \ $lef_root/dac_top.lef \ + $lef_root/aes_top.lef \ + $lef_root/fpu_wrapper.lef \ " set ::env(EXTRA_GDS_FILES) "\ @@ -103,6 +107,8 @@ $gds_root/ycr2_iconnect.gds \ $gds_root/dg_pll.gds \ $gds_root/dac_top.gds \ + $gds_root/aes_top.gds \ + $gds_root/fpu_wrapper.gds \ " set ::env(SYNTH_DEFINES) [list SYNTHESIS ] @@ -168,11 +174,13 @@ u_dcache_2kb vccd1 vssd1 vccd1 vssd1,\ u_uart_i2c_usb_spi vccd1 vssd1 vccd1 vssd1,\ u_wb_host vccd1 vssd1 vccd1 vssd1,\ - u_riscv_top.i_core_top_0 vccd1 vssd1 vccd1 vssd1, \ - u_riscv_top.i_core_top_1 vccd1 vssd1 vccd1 vssd1, \ + u_riscv_top.i_core_top_0 vccd1 vssd1 vccd1 vssd1,\ + u_riscv_top.i_core_top_1 vccd1 vssd1 vccd1 vssd1,\ u_riscv_top.u_connect vccd1 vssd1 VPWR VGND, \ - u_riscv_top.u_intf vccd1 vssd1 vccd1 vssd1, \ - u_4x8bit_dac vdda1 vssa1 vccd1 vssd1 + u_riscv_top.u_intf vccd1 vssd1 vccd1 vssd1,\ + u_4x8bit_dac vdda1 vssa1 vccd1 vssd1,\ + u_aes vdda1 vssa1 vccd1 vssd1,\ + u_fpu vdda1 vssa1 vccd1 vssd1 "
diff --git a/openlane/user_project_wrapper/macro.cfg b/openlane/user_project_wrapper/macro.cfg index 47411c8..f120935 100644 --- a/openlane/user_project_wrapper/macro.cfg +++ b/openlane/user_project_wrapper/macro.cfg
@@ -4,15 +4,16 @@ u_pinmux 2250 2000 N u_pll 2500 3028 N -u_riscv_top.i_core_top_0 75 1400 N -u_riscv_top.i_core_top_1 1200 1400 FN -u_riscv_top.u_connect 733 1400 N -u_riscv_top.u_intf 950 650 N -u_dcache_2kb 150 130 N -u_icache_2kb 950 130 N -u_tsram0_2kb 150 750 N +u_fpu 1000 2600 N +u_aes 50 2600 N +u_riscv_top.i_core_top_0 75 1400 N +u_riscv_top.i_core_top_1 1200 1400 FN +u_riscv_top.u_connect 733 1400 N +u_riscv_top.u_intf 950 650 N +u_dcache_2kb 150 130 N +u_icache_2kb 950 130 N +u_tsram0_2kb 150 750 N u_intercon 1850 650 N u_wb_host 1750 100 N -
diff --git a/openlane/wb_host/config.tcl b/openlane/wb_host/config.tcl index 407a338..b4c0b35 100755 --- a/openlane/wb_host/config.tcl +++ b/openlane/wb_host/config.tcl
@@ -121,7 +121,7 @@ #LVS Issue - DEF Base looks to having issue -set ::env(MAGIC_EXT_USE_GDS) {1} +set ::env(MAGIC_EXT_USE_GDS) {0} set ::env(GLB_RESIZER_MAX_SLEW_MARGIN) {1.5} set ::env(PL_RESIZER_MAX_SLEW_MARGIN) {1.5}
diff --git a/openlane/wb_interconnect/config.tcl b/openlane/wb_interconnect/config.tcl index 8b7baf5..e83bae6 100755 --- a/openlane/wb_interconnect/config.tcl +++ b/openlane/wb_interconnect/config.tcl
@@ -52,7 +52,7 @@ set ::env(SYNTH_DEFINES) [list SYNTHESIS ] set ::env(SYNTH_PARAMETERS) "CH_CLK_WD=4\ - CH_DATA_WD=146 \ + CH_DATA_WD=154 \ " set ::env(SYNTH_READ_BLACKBOX_LIB) 1 @@ -71,7 +71,7 @@ set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg set ::env(FP_SIZING) absolute -set ::env(DIE_AREA) "0 0 300 1725" +set ::env(DIE_AREA) "0 0 300 1800" #set ::env(GRT_OBS) "met4 0 0 300 1725" @@ -101,25 +101,23 @@ ## Placement set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 1 set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) 1 - -set ::env(PL_RESIZER_MAX_SLEW_MARGIN) 2 set ::env(PL_RESIZER_MAX_CAP_MARGIN) 2 +set ::env(PL_RESIZER_MAX_WIRE_LENGTH) "2000" +set ::env(PL_RESIZER_MAX_SLEW_MARGIN) "2.0" +set ::env(PL_RESIZER_BUFFER_INPUT_PORTS) "0" +set ::env(PL_RESIZER_BUFFER_OUTPUT_PORTS) "1" ## Routing set ::env(GRT_ADJUSTMENT) 0.1 set ::env(DPL_CELL_PADDING) 1 +set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) "1" set ::env(GLB_RESIZER_MAX_SLEW_MARGIN) {1.5} -set ::env(PL_RESIZER_MAX_SLEW_MARGIN) {1.5} - set ::env(GLB_RESIZER_MAX_CAP_MARGIN) {0.25} -set ::env(PL_RESIZER_MAX_CAP_MARGIN) {0.25} - set ::env(GLB_RESIZER_MAX_WIRE_LENGTH) {500} -set ::env(PL_RESIZER_MAX_WIRE_LENGTH) {500} #LVS Issue - DEF Base looks to having issue -set ::env(MAGIC_EXT_USE_GDS) {1} +set ::env(MAGIC_EXT_USE_GDS) {0} #set ::env(GLB_RT_MAXLAYER) 5 set ::env(RT_MAX_LAYER) {met4} @@ -128,20 +126,16 @@ set ::env(MAGIC_GENERATE_LEF) {1} set ::env(MAGIC_WRITE_FULL_LEF) {0} +set ::env(FP_PDN_VPITCH) 100 +set ::env(FP_PDN_HPITCH) 100 +set ::env(FP_PDN_VWIDTH) 6.2 +set ::env(FP_PDN_HWIDTH) 6.2 + +set ::env(ECO_ENABLE) {0} +#set ::env(CURRENT_STEP) "synthesis" +#set ::env(LAST_STEP) "parasitics_sta" set ::env(QUIT_ON_TIMING_VIOLATIONS) "0" set ::env(QUIT_ON_MAGIC_DRC) "1" set ::env(QUIT_ON_LVS_ERROR) "1" set ::env(QUIT_ON_SLEW_VIOLATIONS) "0" - -set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) "0" -set ::env(PL_RESIZER_BUFFER_INPUT_PORTS) "0" -set ::env(PL_RESIZER_BUFFER_OUTPUT_PORTS) "1" -set ::env(PL_RESIZER_MAX_WIRE_LENGTH) "2000" -set ::env(PL_RESIZER_MAX_SLEW_MARGIN) "2.0" -set ::env(PL_RESIZER_MAX_CAP_MARGIN) "5" - -set ::env(FP_PDN_VPITCH) 100 -set ::env(FP_PDN_HPITCH) 100 -set ::env(FP_PDN_VWIDTH) 6.2 -set ::env(FP_PDN_HWIDTH) 6.2
diff --git a/openlane/wb_interconnect/pin_order.cfg b/openlane/wb_interconnect/pin_order.cfg index 46750ad..7038097 100644 --- a/openlane/wb_interconnect/pin_order.cfg +++ b/openlane/wb_interconnect/pin_order.cfg
@@ -170,7 +170,17 @@ m0_wbd_err_o m0_wbd_cyc_i -ch_data_out\[145\] 225 0 2 +ch_data_in\[153\] 225 0 2 +ch_data_in\[152\] +ch_data_in\[151\] +ch_data_in\[150\] + +ch_data_in\[149\] +ch_data_in\[148\] +ch_data_in\[147\] +ch_data_in\[146\] + +ch_data_out\[145\] ch_data_out\[144\] ch_data_out\[143\] ch_data_out\[142\] @@ -629,6 +639,16 @@ ch_data_out\[25\] ch_data_out\[24\] +ch_data_out\[153\] 1700 0 2 +ch_data_out\[152\] +ch_data_out\[151\] +ch_data_out\[150\] + +ch_data_out\[149\] +ch_data_out\[148\] +ch_data_out\[147\] +ch_data_out\[146\] + #E ch_data_out\[19\] 0000 0 2 ch_data_out\[18\]
diff --git a/openlane/ycr2_iconnect/base.sdc b/openlane/ycr2_iconnect/base.sdc index 2c9946e..fbe6f17 100644 --- a/openlane/ycr2_iconnect/base.sdc +++ b/openlane/ycr2_iconnect/base.sdc
@@ -3,6 +3,9 @@ ############################################################################### create_clock -name core_clk -period 10.0000 [get_ports {core_clk}] +create_generated_clock -name sram0_clk0 -add -source [get_ports {core_clk}] -master_clock [get_clocks core_clk] -divide_by 1 -comment {tcm clock0} [get_ports sram0_clk0] +create_generated_clock -name sram0_clk1 -add -source [get_ports {core_clk}] -master_clock [get_clocks core_clk] -divide_by 1 -comment {tcm clock1} [get_ports sram0_clk1] + set_clock_transition 0.1500 [all_clocks] set_clock_uncertainty -setup 0.5000 [all_clocks] set_clock_uncertainty -hold 0.2500 [all_clocks] @@ -12,11 +15,14 @@ set_timing_derate -early [expr {1-$::env(SYNTH_TIMING_DERATE)}] set_timing_derate -late [expr {1+$::env(SYNTH_TIMING_DERATE)}] +set_case_analysis 0 [get_ports {cfg_sram_lphase[0]}] +set_case_analysis 0 [get_ports {cfg_sram_lphase[1]}] + #CORE-0 IMEM Constraints -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_cmd}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_req}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_addr[*]}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_bl[*]}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_cmd}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_req}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_addr[*]}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_bl[*]}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_cmd}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_req}] @@ -30,11 +36,11 @@ set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_imem_rdata[*]}] #CORE-0 DMEM Constraints -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_cmd}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_req}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_addr[*]}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_wdata[*]}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_width[*]}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_cmd}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_req}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_addr[*]}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_wdata[*]}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_width[*]}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_cmd}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_req}] @@ -49,10 +55,10 @@ set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core0_dmem_rdata[*]}] #CORE-1 IMEM Constraints -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_cmd}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_req}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_addr[*]}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_bl[*]}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_cmd}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_req}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_addr[*]}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_bl[*]}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_cmd}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_req}] @@ -66,11 +72,11 @@ set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_imem_rdata[*]}] #CORE-1 DMEM Constraints -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_cmd}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_req}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_addr[*]}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_wdata[*]}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_width[*]}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_cmd}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_req}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_addr[*]}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_wdata[*]}] +set_input_delay -max 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_width[*]}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_cmd}] set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_req}] @@ -84,6 +90,33 @@ set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_req_ack}] set_output_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core1_dmem_rdata[*]}] +## PORT-0 TCM I/F +set_output_delay -min -1.0000 -clock [get_clocks {sram0_clk0}] -add_delay [get_ports {sram0_csb0}] +set_output_delay -min -1.0000 -clock [get_clocks {sram0_clk0}] -add_delay [get_ports {sram0_web0}] +set_output_delay -min -1.0000 -clock [get_clocks {sram0_clk0}] -add_delay [get_ports {sram0_addr0[*]}] +set_output_delay -min -1.0000 -clock [get_clocks {sram0_clk0}] -add_delay [get_ports {sram0_wmask0[*]}] +set_output_delay -min -1.0000 -clock [get_clocks {sram0_clk0}] -add_delay [get_ports {sram0_din0[*]}] + +set_output_delay -max 1.0000 -clock [get_clocks {sram0_clk0}] -add_delay [get_ports {sram0_csb0}] +set_output_delay -max 1.0000 -clock [get_clocks {sram0_clk0}] -add_delay [get_ports {sram0_web0}] +set_output_delay -max 1.0000 -clock [get_clocks {sram0_clk0}] -add_delay [get_ports {sram0_addr0[*]}] +set_output_delay -max 1.0000 -clock [get_clocks {sram0_clk0}] -add_delay [get_ports {sram0_wmask0[*]}] +set_output_delay -max 1.0000 -clock [get_clocks {sram0_clk0}] -add_delay [get_ports {sram0_din0[*]}] + +set_input_delay -min 2.0000 -clock [get_clocks {sram0_clk0}] -add_delay [get_ports {sram0_dout0[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {sram0_clk0}] -add_delay [get_ports {sram0_dout0[*]}] + + +## PORT-1 TCM1 I/F +set_output_delay -min -1.0000 -clock [get_clocks {sram0_clk1}] -add_delay [get_ports {sram0_csb1}] +set_output_delay -min -1.0000 -clock [get_clocks {sram0_clk1}] -add_delay [get_ports {sram0_addr1[*]}] + +set_output_delay -max 1.000 -clock [get_clocks {sram0_clk1}] -add_delay [get_ports {sram0_csb1}] +set_output_delay -max 1.000 -clock [get_clocks {sram0_clk1}] -add_delay [get_ports {sram0_addr1[*]}] + +set_input_delay -min 2.0000 -clock [get_clocks {sram0_clk1}] -add_delay [get_ports {sram0_dout1[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {sram0_clk1}] -add_delay [get_ports {sram0_dout1[*]}] + ############################################################################### # Environment ###############################################################################
diff --git a/openlane/ycr2_iconnect/config.tcl b/openlane/ycr2_iconnect/config.tcl index 57a5277..f7e8019 100644 --- a/openlane/ycr2_iconnect/config.tcl +++ b/openlane/ycr2_iconnect/config.tcl
@@ -64,22 +64,25 @@ set ::env(DIE_AREA) "0 0 390 1200" set ::env(PL_TARGET_DENSITY) 0.20 -#set ::env(CELL_PAD) 2 -#set ::env(GRT_ADJUSTMENT) {0.2} +set ::env(CELL_PAD) 8 +set ::env(GRT_ADJUSTMENT) {0.2} -#set ::env(GLB_RT_ADJUSTMENT) {0.2} #set ::env(PL_ROUTABILITY_DRIVEN) "1" set ::env(PL_TIME_DRIVEN) "1" #set ::env(GLB_RT_MAXLAYER) 5 set ::env(RT_MAX_LAYER) {met4} -#set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 10 -set ::env(DIODE_INSERTION_STRATEGY) 4 +#Lef +set ::env(MAGIC_GENERATE_LEF) {1} +set ::env(MAGIC_WRITE_FULL_LEF) {0} + +#set ::env(GLB_RT_MAX_DIODE_INS_ITERS) 20 +set ::env(DIODE_INSERTION_STRATEGY) 3 #LVS Issue - DEF Base looks to having issue -set ::env(MAGIC_EXT_USE_GDS) {1} +set ::env(MAGIC_EXT_USE_GDS) {0} set ::env(GLB_RESIZER_MAX_SLEW_MARGIN) {1.5} set ::env(PL_RESIZER_MAX_SLEW_MARGIN) {1.5}
diff --git a/openlane/ycr2_iconnect/pin_order.cfg b/openlane/ycr2_iconnect/pin_order.cfg index 83e0e23..7c607cd 100644 --- a/openlane/ycr2_iconnect/pin_order.cfg +++ b/openlane/ycr2_iconnect/pin_order.cfg
@@ -1194,3 +1194,166 @@ cpu_intf_rst_n cfg_bypass_icache cfg_bypass_dcache + + +#N +aes_dmem_req_ack +aes_dmem_req +aes_dmem_cmd +aes_dmem_width\[1\] +aes_dmem_width\[0\] +aes_dmem_addr\[6\] +aes_dmem_addr\[5\] +aes_dmem_addr\[4\] +aes_dmem_addr\[3\] +aes_dmem_addr\[2\] +aes_dmem_addr\[1\] +aes_dmem_addr\[0\] +aes_dmem_wdata\[31\] +aes_dmem_wdata\[30\] +aes_dmem_wdata\[29\] +aes_dmem_wdata\[28\] +aes_dmem_wdata\[27\] +aes_dmem_wdata\[26\] +aes_dmem_wdata\[25\] +aes_dmem_wdata\[24\] +aes_dmem_wdata\[23\] +aes_dmem_wdata\[22\] +aes_dmem_wdata\[21\] +aes_dmem_wdata\[20\] +aes_dmem_wdata\[19\] +aes_dmem_wdata\[18\] +aes_dmem_wdata\[17\] +aes_dmem_wdata\[16\] +aes_dmem_wdata\[15\] +aes_dmem_wdata\[14\] +aes_dmem_wdata\[13\] +aes_dmem_wdata\[12\] +aes_dmem_wdata\[11\] +aes_dmem_wdata\[10\] +aes_dmem_wdata\[9\] +aes_dmem_wdata\[8\] +aes_dmem_wdata\[7\] +aes_dmem_wdata\[6\] +aes_dmem_wdata\[5\] +aes_dmem_wdata\[4\] +aes_dmem_wdata\[3\] +aes_dmem_wdata\[2\] +aes_dmem_wdata\[1\] +aes_dmem_wdata\[0\] +aes_dmem_rdata\[31\] +aes_dmem_rdata\[30\] +aes_dmem_rdata\[29\] +aes_dmem_rdata\[28\] +aes_dmem_rdata\[27\] +aes_dmem_rdata\[26\] +aes_dmem_rdata\[25\] +aes_dmem_rdata\[24\] +aes_dmem_rdata\[23\] +aes_dmem_rdata\[22\] +aes_dmem_rdata\[21\] +aes_dmem_rdata\[20\] +aes_dmem_rdata\[19\] +aes_dmem_rdata\[18\] +aes_dmem_rdata\[17\] +aes_dmem_rdata\[16\] +aes_dmem_rdata\[15\] +aes_dmem_rdata\[14\] +aes_dmem_rdata\[13\] +aes_dmem_rdata\[12\] +aes_dmem_rdata\[11\] +aes_dmem_rdata\[10\] +aes_dmem_rdata\[9\] +aes_dmem_rdata\[8\] +aes_dmem_rdata\[7\] +aes_dmem_rdata\[6\] +aes_dmem_rdata\[5\] +aes_dmem_rdata\[4\] +aes_dmem_rdata\[3\] +aes_dmem_rdata\[2\] +aes_dmem_rdata\[1\] +aes_dmem_rdata\[0\] +aes_dmem_resp\[1\] +aes_dmem_resp\[0\] + + + +fpu_dmem_req_ack 0200 0 2 +fpu_dmem_req +fpu_dmem_cmd +fpu_dmem_width\[1\] +fpu_dmem_width\[0\] +fpu_dmem_addr\[4\] +fpu_dmem_addr\[3\] +fpu_dmem_addr\[2\] +fpu_dmem_addr\[1\] +fpu_dmem_addr\[0\] +fpu_dmem_wdata\[31\] +fpu_dmem_wdata\[30\] +fpu_dmem_wdata\[29\] +fpu_dmem_wdata\[28\] +fpu_dmem_wdata\[27\] +fpu_dmem_wdata\[26\] +fpu_dmem_wdata\[25\] +fpu_dmem_wdata\[24\] +fpu_dmem_wdata\[23\] +fpu_dmem_wdata\[22\] +fpu_dmem_wdata\[21\] +fpu_dmem_wdata\[20\] +fpu_dmem_wdata\[19\] +fpu_dmem_wdata\[18\] +fpu_dmem_wdata\[17\] +fpu_dmem_wdata\[16\] +fpu_dmem_wdata\[15\] +fpu_dmem_wdata\[14\] +fpu_dmem_wdata\[13\] +fpu_dmem_wdata\[12\] +fpu_dmem_wdata\[11\] +fpu_dmem_wdata\[10\] +fpu_dmem_wdata\[9\] +fpu_dmem_wdata\[8\] +fpu_dmem_wdata\[7\] +fpu_dmem_wdata\[6\] +fpu_dmem_wdata\[5\] +fpu_dmem_wdata\[4\] +fpu_dmem_wdata\[3\] +fpu_dmem_wdata\[2\] +fpu_dmem_wdata\[1\] +fpu_dmem_wdata\[0\] +fpu_dmem_rdata\[31\] +fpu_dmem_rdata\[30\] +fpu_dmem_rdata\[29\] +fpu_dmem_rdata\[28\] +fpu_dmem_rdata\[27\] +fpu_dmem_rdata\[26\] +fpu_dmem_rdata\[25\] +fpu_dmem_rdata\[24\] +fpu_dmem_rdata\[23\] +fpu_dmem_rdata\[22\] +fpu_dmem_rdata\[21\] +fpu_dmem_rdata\[20\] +fpu_dmem_rdata\[19\] +fpu_dmem_rdata\[18\] +fpu_dmem_rdata\[17\] +fpu_dmem_rdata\[16\] +fpu_dmem_rdata\[15\] +fpu_dmem_rdata\[14\] +fpu_dmem_rdata\[13\] +fpu_dmem_rdata\[12\] +fpu_dmem_rdata\[11\] +fpu_dmem_rdata\[10\] +fpu_dmem_rdata\[9\] +fpu_dmem_rdata\[8\] +fpu_dmem_rdata\[7\] +fpu_dmem_rdata\[6\] +fpu_dmem_rdata\[5\] +fpu_dmem_rdata\[4\] +fpu_dmem_rdata\[3\] +fpu_dmem_rdata\[2\] +fpu_dmem_rdata\[1\] +fpu_dmem_rdata\[0\] +fpu_dmem_resp\[1\] +fpu_dmem_resp\[0\] + + +
diff --git a/openlane/ycr_core_top/base.sdc b/openlane/ycr_core_top/base.sdc index 873ac0a..679443f 100644 --- a/openlane/ycr_core_top/base.sdc +++ b/openlane/ycr_core_top/base.sdc
@@ -34,7 +34,7 @@ #DMEM Constraints set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_cmd_o}] set_output_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_req_o}] -set_output_delay -max 2.5000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_addr_o[*]}] +set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_addr_o[*]}] set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_wdata_o[*]}] set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core2dmem_width_o[*]}]
diff --git a/openlane/ycr_core_top/config.tcl b/openlane/ycr_core_top/config.tcl index 4056ea0..406c103 100644 --- a/openlane/ycr_core_top/config.tcl +++ b/openlane/ycr_core_top/config.tcl
@@ -79,7 +79,7 @@ set ::env(DIE_AREA) "0 0 540 950 " set ::env(PL_TARGET_DENSITY) 0.45 -set ::env(CELL_PAD) "8" +#set ::env(CELL_PAD) "8" ## Routing set ::env(GRT_ADJUSTMENT) 0.2 @@ -92,7 +92,7 @@ set ::env(DIODE_INSERTION_STRATEGY) 3 #LVS Issue - DEF Base looks to having issue -set ::env(MAGIC_EXT_USE_GDS) {1} +set ::env(MAGIC_EXT_USE_GDS) {0} set ::env(GLB_RESIZER_MAX_SLEW_MARGIN) {1.5} set ::env(PL_RESIZER_MAX_SLEW_MARGIN) {1.5} @@ -110,6 +110,10 @@ #Need to cross-check why global timing opimization creating setup vio with hugh hold fix set ::env(GLB_RESIZER_TIMING_OPTIMIZATIONS) "1" +set ::env(GLB_OPTIMIZE_MIRRORING) {1} +set ::env(PL_OPTIMIZE_MIRRORING) {1} +set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) {1} +set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) {0} #PDN set ::env(FP_PDN_VPITCH) 100
diff --git a/openlane/ycr_intf/base.sdc b/openlane/ycr_intf/base.sdc index f8eb2c5..b03c508 100644 --- a/openlane/ycr_intf/base.sdc +++ b/openlane/ycr_intf/base.sdc
@@ -2,7 +2,6 @@ # Timing Constraints ############################################################################### create_clock -name core_clk -period 10.0000 [get_ports {core_clk}] -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 dcache_mem_clk0 -add -source [get_ports {core_clk}] -master_clock [get_clocks core_clk] -divide_by 1 -comment {dcache mem clock0} [get_ports dcache_mem_clk0] @@ -21,18 +20,26 @@ set_clock_groups -name async_clock -asynchronous \ -group [get_clocks {core_clk dcache_mem_clk0 dcache_mem_clk1 icache_mem_clk0 icache_mem_clk1}]\ - -group [get_clocks {rtc_clk}]\ -group [get_clocks {wb_clk}] -comment {Async Clock group} +# Set case analysis +set_case_analysis 0 [get_ports {cfg_ccska[3]}] +set_case_analysis 0 [get_ports {cfg_ccska[2]}] +set_case_analysis 0 [get_ports {cfg_ccska[1]}] +set_case_analysis 0 [get_ports {cfg_ccska[0]}] + +set_case_analysis 0 [get_ports {cfg_wcska[3]}] +set_case_analysis 0 [get_ports {cfg_wcska[2]}] +set_case_analysis 0 [get_ports {cfg_wcska[1]}] +set_case_analysis 0 [get_ports {cfg_wcska[0]}] + #Assumed config are static set_false_path -from [get_ports {cfg_dcache_force_flush}] set_false_path -from [get_ports {cfg_dcache_pfet_dis}] set_false_path -from [get_ports {cfg_icache_ntag_pfet_dis}] set_false_path -from [get_ports {cfg_icache_pfet_dis}] -set_false_path -from [get_ports {cfg_cska_riscv[3]}] -set_false_path -from [get_ports {cfg_cska_riscv[2]}] -set_false_path -from [get_ports {cfg_cska_riscv[1]}] -set_false_path -from [get_ports {cfg_cska_riscv[0]}] + + set_false_path -from [get_ports {cfg_sram_lphase[1]}] set_false_path -from [get_ports {cfg_sram_lphase[0]}] @@ -51,19 +58,19 @@ set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_resp[*]}] -set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_req}] -set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_cmd}] -set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_req}] -set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_addr[*]}] -set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_bl[*]}] -set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_width[*]}] +set_input_delay -min 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_req}] +set_input_delay -min 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_cmd}] +set_input_delay -min 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_req}] +set_input_delay -min 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_addr[*]}] +set_input_delay -min 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_bl[*]}] +set_input_delay -min 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_width[*]}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_req}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_cmd}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_req}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_addr[*]}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_bl[*]}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_width[*]}] +set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_req}] +set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_cmd}] +set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_req}] +set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_addr[*]}] +set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_bl[*]}] +set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_icache_width[*]}] #Wishbone ICACHE I/F set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_icache_stb_o}] @@ -102,17 +109,17 @@ set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_rdata[*]}] set_output_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_resp[*]}] -set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_req}] -set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_cmd}] -set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_width[*]}] -set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_addr[*]}] -set_input_delay -min 2.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_wdata[*]}] +set_input_delay -min 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_req}] +set_input_delay -min 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_cmd}] +set_input_delay -min 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_width[*]}] +set_input_delay -min 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_addr[*]}] +set_input_delay -min 4.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_wdata[*]}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_req}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_cmd}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_width[*]}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_addr[*]}] -set_input_delay -max 6.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_wdata[*]}] +set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_req}] +set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_cmd}] +set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_width[*]}] +set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_addr[*]}] +set_input_delay -max 8.0000 -clock [get_clocks {core_clk}] -add_delay [get_ports {core_dcache_wdata[*]}] # Data memory interface from router to WB bridge @@ -160,21 +167,21 @@ ## ICACHE PORT-0 SRAM Memory I/F -set_output_delay -min 2.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_csb0}] -set_output_delay -min 2.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_web0}] -set_output_delay -min 2.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_addr0[*]}] -set_output_delay -min 2.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_wmask0[*]}] -set_output_delay -min 2.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_din0[*]}] +set_output_delay -min -1.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_csb0}] +set_output_delay -min -1.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_web0}] +set_output_delay -min -1.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_addr0[*]}] +set_output_delay -min -1.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_wmask0[*]}] +set_output_delay -min -1.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_din0[*]}] -set_output_delay -max 3.5000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_csb0}] -set_output_delay -max 3.5000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_web0}] -set_output_delay -max 3.5000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_addr0[*]}] -set_output_delay -max 3.5000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_wmask0[*]}] -set_output_delay -max 3.5000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_din0[*]}] +set_output_delay -max 1.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_csb0}] +set_output_delay -max 1.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_web0}] +set_output_delay -max 1.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_addr0[*]}] +set_output_delay -max 1.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_wmask0[*]}] +set_output_delay -max 1.0000 -clock [get_clocks {icache_mem_clk0}] -add_delay [get_ports {icache_mem_din0[*]}] ## ICACHE PORT-1 SRAM Memory I/F -set_output_delay -min 2.0000 -clock [get_clocks {icache_mem_clk1}] -add_delay [get_ports {icache_mem_csb1}] -set_output_delay -min 2.0000 -clock [get_clocks {icache_mem_clk1}] -add_delay [get_ports {icache_mem_addr1[*]}] +set_output_delay -min -1.0000 -clock [get_clocks {icache_mem_clk1}] -add_delay [get_ports {icache_mem_csb1}] +set_output_delay -min -1.0000 -clock [get_clocks {icache_mem_clk1}] -add_delay [get_ports {icache_mem_addr1[*]}] set_output_delay -max 3.5000 -clock [get_clocks {icache_mem_clk1}] -add_delay [get_ports {icache_mem_csb1}] set_output_delay -max 3.5000 -clock [get_clocks {icache_mem_clk1}] -add_delay [get_ports {icache_mem_addr1[*]}] @@ -199,39 +206,39 @@ set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_bl_o[*]}] set_output_delay -max 5.5000 -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_dat_i[*]}] -set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_ack_i}] -set_output_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_lack_i}] -set_output_delay -min 2.0000 -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_dat_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_lack_i}] +set_input_delay -min 2.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_err_i}] -set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_dat_i[*]}] -set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_ack_i}] -set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_lack_i}] -set_output_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_err_i}] +set_input_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_dat_i[*]}] +set_input_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_ack_i}] +set_input_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_lack_i}] +set_input_delay -max 6.0000 -clock [get_clocks {wb_clk}] -add_delay [get_ports {wb_dcache_err_i}] ## DCACHE PORT-0 SRAM I/F -set_output_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_csb0}] -set_output_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_web0}] -set_output_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_addr0[*]}] -set_output_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_wmask0[*]}] -set_output_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_din0[*]}] +set_output_delay -min -1.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_csb0}] +set_output_delay -min -1.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_web0}] +set_output_delay -min -1.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_addr0[*]}] +set_output_delay -min -1.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_wmask0[*]}] +set_output_delay -min -1.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_din0[*]}] -set_output_delay -max 3.5000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_csb0}] -set_output_delay -max 3.5000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_web0}] -set_output_delay -max 3.5000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_addr0[*]}] -set_output_delay -max 3.5000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_wmask0[*]}] -set_output_delay -max 3.5000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_din0[*]}] +set_output_delay -max 1.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_csb0}] +set_output_delay -max 1.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_web0}] +set_output_delay -max 1.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_addr0[*]}] +set_output_delay -max 1.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_wmask0[*]}] +set_output_delay -max 1.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_din0[*]}] set_input_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_dout0[*]}] set_input_delay -max 6.0000 -clock [get_clocks {dcache_mem_clk0}] -add_delay [get_ports {dcache_mem_dout0[*]}] ## DCACHE PORT-1 SRAM I/F -set_output_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk1}] -add_delay [get_ports {dcache_mem_csb1}] -set_output_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk1}] -add_delay [get_ports {dcache_mem_addr1[*]}] +set_output_delay -min -1.0000 -clock [get_clocks {dcache_mem_clk1}] -add_delay [get_ports {dcache_mem_csb1}] +set_output_delay -min -1.0000 -clock [get_clocks {dcache_mem_clk1}] -add_delay [get_ports {dcache_mem_addr1[*]}] -set_output_delay -max 3.5000 -clock [get_clocks {dcache_mem_clk1}] -add_delay [get_ports {dcache_mem_csb1}] -set_output_delay -max 3.5000 -clock [get_clocks {dcache_mem_clk1}] -add_delay [get_ports {dcache_mem_addr1[*]}] +set_output_delay -max 1.000 -clock [get_clocks {dcache_mem_clk1}] -add_delay [get_ports {dcache_mem_csb1}] +set_output_delay -max 1.000 -clock [get_clocks {dcache_mem_clk1}] -add_delay [get_ports {dcache_mem_addr1[*]}] set_input_delay -min 2.0000 -clock [get_clocks {dcache_mem_clk1}] -add_delay [get_ports {dcache_mem_dout1[*]}] set_input_delay -max 6.0000 -clock [get_clocks {dcache_mem_clk1}] -add_delay [get_ports {dcache_mem_dout1[*]}]
diff --git a/openlane/ycr_intf/config.tcl b/openlane/ycr_intf/config.tcl index 2d2308c..dad9eb7 100644 --- a/openlane/ycr_intf/config.tcl +++ b/openlane/ycr_intf/config.tcl
@@ -65,7 +65,8 @@ set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg set ::env(FP_SIZING) absolute set ::env(DIE_AREA) "0 0 810 640 " -set ::env(CELL_PAD) "6" +set ::env(CELL_PAD) "8" +set ::env(GRT_ADJUSTMENT) {0.2} set ::env(PL_TARGET_DENSITY) 0.37 @@ -78,7 +79,7 @@ set ::env(DIODE_INSERTION_STRATEGY) 3 #LVS Issue - DEF Base looks to having issue -set ::env(MAGIC_EXT_USE_GDS) {1} +set ::env(MAGIC_EXT_USE_GDS) {0} set ::env(GLB_RESIZER_MAX_SLEW_MARGIN) {1.5} set ::env(PL_RESIZER_MAX_SLEW_MARGIN) {1.5}
diff --git a/verilog/rtl/pinmux/src/1 b/verilog/rtl/pinmux/src/1 deleted file mode 100644 index e69de29..0000000 --- a/verilog/rtl/pinmux/src/1 +++ /dev/null