Initial commit
This commit is contained in:
107
openlane/user_project_wrapper/config.json
Normal file
107
openlane/user_project_wrapper/config.json
Normal file
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"//": "Design files",
|
||||
"VERILOG_FILES": [
|
||||
"dir::../../verilog/rtl/defines.v",
|
||||
"dir::../../verilog/rtl/user_project_wrapper.v"
|
||||
],
|
||||
"PNR_SDC_FILE": "dir::signoff.sdc",
|
||||
|
||||
"//": "Hardening strategy variables (this is for 1-Macro-First Hardening). Visit https://docs.google.com/document/d/1pf-wbpgjeNEM-1TcvX2OJTkHjqH_C9p-LURCASS0Zo8 for more info",
|
||||
"SYNTH_ELABORATE_ONLY": true,
|
||||
"RUN_POST_GPL_DESIGN_REPAIR": false,
|
||||
"RUN_POST_CTS_RESIZER_TIMING": false,
|
||||
"DESIGN_REPAIR_BUFFER_INPUT_PORTS": false,
|
||||
"FP_PDN_ENABLE_RAILS": false,
|
||||
"RUN_ANTENNA_REPAIR": false,
|
||||
"RUN_FILL_INSERTION": false,
|
||||
"RUN_TAP_ENDCAP_INSERTION": false,
|
||||
"RUN_CTS": false,
|
||||
"RUN_IRDROP_REPORT": false,
|
||||
"ERROR_ON_SYNTH_CHECKS": false,
|
||||
|
||||
"//": "Macros configurations",
|
||||
"MACROS": {
|
||||
"user_proj_example": {
|
||||
"gds": [
|
||||
"dir::../../gds/user_proj_example.gds"
|
||||
],
|
||||
"lef": [
|
||||
"dir::../../lef/user_proj_example.lef"
|
||||
],
|
||||
"instances": {
|
||||
"mprj": {
|
||||
"location": [60, 15],
|
||||
"orientation": "N"
|
||||
}
|
||||
},
|
||||
"nl": [
|
||||
"dir::../../verilog/gl/user_proj_example.v"
|
||||
],
|
||||
"spef": {
|
||||
"min_*": [
|
||||
"dir::../../spef/multicorner/user_proj_example.min.spef"
|
||||
],
|
||||
"nom_*": [
|
||||
"dir::../../spef/multicorner/user_proj_example.nom.spef"
|
||||
],
|
||||
"max_*": [
|
||||
"dir::../../spef/multicorner/user_proj_example.max.spef"
|
||||
]
|
||||
},
|
||||
"lib": {
|
||||
"*": "dir::../../lib/user_proj_example.lib"
|
||||
}
|
||||
}
|
||||
},
|
||||
"PDN_MACRO_CONNECTIONS": ["mprj vccd2 vssd2 vccd1 vssd1"],
|
||||
|
||||
"//": "PDN configurations",
|
||||
"FP_PDN_VOFFSET": 5,
|
||||
"FP_PDN_HOFFSET": 5,
|
||||
"FP_PDN_VWIDTH": 3.1,
|
||||
"FP_PDN_HWIDTH": 3.1,
|
||||
"FP_PDN_VSPACING": 15.5,
|
||||
"FP_PDN_HSPACING": 15.5,
|
||||
"FP_PDN_VPITCH": 180,
|
||||
"FP_PDN_HPITCH": 180,
|
||||
"ERROR_ON_PDN_VIOLATIONS": false,
|
||||
|
||||
"//": "Magic variables",
|
||||
"MAGIC_DRC_USE_GDS": true,
|
||||
|
||||
"DRT_THREADS": 1,
|
||||
"MAX_TRANSITION_CONSTRAINT": 1.5,
|
||||
|
||||
"//": "Fixed configurations for caravel. You should NOT edit this section",
|
||||
"DESIGN_NAME": "user_project_wrapper",
|
||||
"FP_SIZING": "absolute",
|
||||
"DIE_AREA": [0, 0, 2920, 3520],
|
||||
"FP_DEF_TEMPLATE": "dir::fixed_dont_change/user_project_wrapper.def",
|
||||
"VDD_NETS": [
|
||||
"vccd1",
|
||||
"vccd2",
|
||||
"vdda1",
|
||||
"vdda2"
|
||||
],
|
||||
"GND_NETS": [
|
||||
"vssd1",
|
||||
"vssd2",
|
||||
"vssa1",
|
||||
"vssa2"
|
||||
],
|
||||
"FP_PDN_CORE_RING": true,
|
||||
"FP_PDN_CORE_RING_VWIDTH": 3.1,
|
||||
"FP_PDN_CORE_RING_HWIDTH": 3.1,
|
||||
"FP_PDN_CORE_RING_VOFFSET": 12.45,
|
||||
"FP_PDN_CORE_RING_HOFFSET": 12.45,
|
||||
"FP_PDN_CORE_RING_VSPACING": 1.7,
|
||||
"FP_PDN_CORE_RING_HSPACING": 1.7,
|
||||
"CLOCK_PORT": "wb_clk_i",
|
||||
"SIGNOFF_SDC_FILE": "dir::signoff.sdc",
|
||||
"MAGIC_DEF_LABELS": false,
|
||||
"CLOCK_PERIOD": 25,
|
||||
"MAGIC_ZEROIZE_ORIGIN": false,
|
||||
"meta": {
|
||||
"version": 2
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
145
openlane/user_project_wrapper/signoff.sdc
Normal file
145
openlane/user_project_wrapper/signoff.sdc
Normal file
@@ -0,0 +1,145 @@
|
||||
# generated by get_cup_sdc.py
|
||||
# Date: 2023/06/20
|
||||
|
||||
### Note:
|
||||
# - input clock transition and latency are set for wb_clk_i port.
|
||||
# If your design is using the user_clock2, update the clock constraints to reflect that and use usr_* variables.
|
||||
# - IO ports are assumed to be asynchronous. If they're synchronous to the clock, update the variable IO_SYNC to 1.
|
||||
# As well, update in_ext_delay and out_ext_delay with the required I/O external delays.
|
||||
|
||||
#------------------------------------------#
|
||||
# Pre-defined Constraints
|
||||
#------------------------------------------#
|
||||
|
||||
set ::env(IO_SYNC) 0
|
||||
# Clock network
|
||||
if {[info exists ::env(CLOCK_PORT)] && $::env(CLOCK_PORT) != ""} {
|
||||
set clk_input $::env(CLOCK_PORT)
|
||||
create_clock [get_ports $clk_input] -name clk -period $::env(CLOCK_PERIOD)
|
||||
puts "\[INFO\]: Creating clock {clk} for port $clk_input with period: $::env(CLOCK_PERIOD)"
|
||||
} else {
|
||||
set clk_input __VIRTUAL_CLK__
|
||||
create_clock -name clk -period $::env(CLOCK_PERIOD)
|
||||
puts "\[INFO\]: Creating virtual clock with period: $::env(CLOCK_PERIOD)"
|
||||
}
|
||||
if { ![info exists ::env(SYNTH_CLK_DRIVING_CELL)] } {
|
||||
set ::env(SYNTH_CLK_DRIVING_CELL) $::env(SYNTH_DRIVING_CELL)
|
||||
}
|
||||
if { ![info exists ::env(SYNTH_CLK_DRIVING_CELL_PIN)] } {
|
||||
set ::env(SYNTH_CLK_DRIVING_CELL_PIN) $::env(SYNTH_DRIVING_CELL_PIN)
|
||||
}
|
||||
|
||||
# Clock non-idealities
|
||||
set_propagated_clock [all_clocks]
|
||||
set_clock_uncertainty $::env(SYNTH_CLOCK_UNCERTAINTY) [get_clocks {clk}]
|
||||
puts "\[INFO\]: Setting clock uncertainity to: $::env(SYNTH_CLOCK_UNCERTAINTY)"
|
||||
set_clock_transition $::env(SYNTH_CLOCK_TRANSITION) [get_clocks {clk}]
|
||||
puts "\[INFO\]: Setting clock transition to: $::env(SYNTH_CLOCK_TRANSITION)"
|
||||
|
||||
# Maximum transition time for the design nets
|
||||
set_max_transition $::env(MAX_TRANSITION_CONSTRAINT) [current_design]
|
||||
puts "\[INFO\]: Setting maximum transition to: $::env(MAX_TRANSITION_CONSTRAINT)"
|
||||
|
||||
# Maximum fanout
|
||||
set_max_fanout $::env(MAX_FANOUT_CONSTRAINT) [current_design]
|
||||
puts "\[INFO\]: Setting maximum fanout to: $::env(MAX_FANOUT_CONSTRAINT)"
|
||||
|
||||
# Timing paths delays derate
|
||||
set_timing_derate -early [expr {1-$::env(SYNTH_TIMING_DERATE)}]
|
||||
set_timing_derate -late [expr {1+$::env(SYNTH_TIMING_DERATE)}]
|
||||
puts "\[INFO\]: Setting timing derate to: [expr {$::env(SYNTH_TIMING_DERATE) * 100}] %"
|
||||
|
||||
# Reset input delay
|
||||
set_input_delay [expr $::env(CLOCK_PERIOD) * 0.5] -clock [get_clocks {clk}] [get_ports {wb_rst_i}]
|
||||
|
||||
# Multicycle paths
|
||||
set_multicycle_path -setup 2 -through [get_ports {wbs_ack_o}]
|
||||
set_multicycle_path -hold 1 -through [get_ports {wbs_ack_o}]
|
||||
set_multicycle_path -setup 2 -through [get_ports {wbs_cyc_i}]
|
||||
set_multicycle_path -hold 1 -through [get_ports {wbs_cyc_i}]
|
||||
set_multicycle_path -setup 2 -through [get_ports {wbs_stb_i}]
|
||||
set_multicycle_path -hold 1 -through [get_ports {wbs_stb_i}]
|
||||
|
||||
#------------------------------------------#
|
||||
# Retrieved Constraints
|
||||
#------------------------------------------#
|
||||
|
||||
# Clock source latency
|
||||
set usr_clk_max_latency 4.57
|
||||
set usr_clk_min_latency 4.11
|
||||
set clk_max_latency 5.57
|
||||
set clk_min_latency 4.65
|
||||
set_clock_latency -source -max $clk_max_latency [get_clocks {clk}]
|
||||
set_clock_latency -source -min $clk_min_latency [get_clocks {clk}]
|
||||
puts "\[INFO\]: Setting clock latency range: $clk_min_latency : $clk_max_latency"
|
||||
|
||||
# Clock input Transition
|
||||
set usr_clk_tran 0.13
|
||||
set clk_tran 0.61
|
||||
set_input_transition $clk_tran [get_ports $clk_input]
|
||||
puts "\[INFO\]: Setting clock transition: $clk_tran"
|
||||
|
||||
# Input delays
|
||||
set_input_delay -max 1.87 -clock [get_clocks {clk}] [get_ports {la_data_in[*]}]
|
||||
set_input_delay -max 1.89 -clock [get_clocks {clk}] [get_ports {la_oenb[*]}]
|
||||
set_input_delay -max 3.17 -clock [get_clocks {clk}] [get_ports {wbs_sel_i[*]}]
|
||||
set_input_delay -max 3.74 -clock [get_clocks {clk}] [get_ports {wbs_we_i}]
|
||||
set_input_delay -max 3.89 -clock [get_clocks {clk}] [get_ports {wbs_adr_i[*]}]
|
||||
set_input_delay -max 4.13 -clock [get_clocks {clk}] [get_ports {wbs_stb_i}]
|
||||
set_input_delay -max 4.61 -clock [get_clocks {clk}] [get_ports {wbs_dat_i[*]}]
|
||||
set_input_delay -max 4.74 -clock [get_clocks {clk}] [get_ports {wbs_cyc_i}]
|
||||
set_input_delay -min 0.18 -clock [get_clocks {clk}] [get_ports {la_data_in[*]}]
|
||||
set_input_delay -min 0.3 -clock [get_clocks {clk}] [get_ports {la_oenb[*]}]
|
||||
set_input_delay -min 0.79 -clock [get_clocks {clk}] [get_ports {wbs_adr_i[*]}]
|
||||
set_input_delay -min 1.04 -clock [get_clocks {clk}] [get_ports {wbs_dat_i[*]}]
|
||||
set_input_delay -min 1.19 -clock [get_clocks {clk}] [get_ports {wbs_sel_i[*]}]
|
||||
set_input_delay -min 1.65 -clock [get_clocks {clk}] [get_ports {wbs_we_i}]
|
||||
set_input_delay -min 1.69 -clock [get_clocks {clk}] [get_ports {wbs_cyc_i}]
|
||||
set_input_delay -min 1.86 -clock [get_clocks {clk}] [get_ports {wbs_stb_i}]
|
||||
if { $::env(IO_SYNC) } {
|
||||
set in_ext_delay 4
|
||||
puts "\[INFO\]: Setting input ports external delay to: $in_ext_delay"
|
||||
set_input_delay -max [expr $in_ext_delay + 4.55] -clock [get_clocks {clk}] [get_ports {io_in[*]}]
|
||||
set_input_delay -min [expr $in_ext_delay + 1.26] -clock [get_clocks {clk}] [get_ports {io_in[*]}]
|
||||
}
|
||||
|
||||
# Input Transition
|
||||
set_input_transition -max 0.14 [get_ports {wbs_we_i}]
|
||||
set_input_transition -max 0.15 [get_ports {wbs_stb_i}]
|
||||
set_input_transition -max 0.17 [get_ports {wbs_cyc_i}]
|
||||
set_input_transition -max 0.18 [get_ports {wbs_sel_i[*]}]
|
||||
set_input_transition -max 0.38 [get_ports {io_in[*]}]
|
||||
set_input_transition -max 0.84 [get_ports {wbs_dat_i[*]}]
|
||||
set_input_transition -max 0.86 [get_ports {la_data_in[*]}]
|
||||
set_input_transition -max 0.92 [get_ports {wbs_adr_i[*]}]
|
||||
set_input_transition -max 0.97 [get_ports {la_oenb[*]}]
|
||||
set_input_transition -min 0.05 [get_ports {io_in[*]}]
|
||||
set_input_transition -min 0.06 [get_ports {la_oenb[*]}]
|
||||
set_input_transition -min 0.07 [get_ports {la_data_in[*]}]
|
||||
set_input_transition -min 0.07 [get_ports {wbs_adr_i[*]}]
|
||||
set_input_transition -min 0.07 [get_ports {wbs_dat_i[*]}]
|
||||
set_input_transition -min 0.09 [get_ports {wbs_cyc_i}]
|
||||
set_input_transition -min 0.09 [get_ports {wbs_sel_i[*]}]
|
||||
set_input_transition -min 0.09 [get_ports {wbs_we_i}]
|
||||
set_input_transition -min 0.15 [get_ports {wbs_stb_i}]
|
||||
|
||||
# Output delays
|
||||
set_output_delay -max 0.7 -clock [get_clocks {clk}] [get_ports {user_irq[*]}]
|
||||
set_output_delay -max 1.0 -clock [get_clocks {clk}] [get_ports {la_data_out[*]}]
|
||||
set_output_delay -max 3.62 -clock [get_clocks {clk}] [get_ports {wbs_dat_o[*]}]
|
||||
set_output_delay -max 8.41 -clock [get_clocks {clk}] [get_ports {wbs_ack_o}]
|
||||
set_output_delay -min 0 -clock [get_clocks {clk}] [get_ports {la_data_out[*]}]
|
||||
set_output_delay -min 0 -clock [get_clocks {clk}] [get_ports {user_irq[*]}]
|
||||
set_output_delay -min 1.13 -clock [get_clocks {clk}] [get_ports {wbs_dat_o[*]}]
|
||||
set_output_delay -min 1.37 -clock [get_clocks {clk}] [get_ports {wbs_ack_o}]
|
||||
if { $::env(IO_SYNC) } {
|
||||
set out_ext_delay 4
|
||||
puts "\[INFO\]: Setting output ports external delay to: $out_ext_delay"
|
||||
set_output_delay -max [expr $out_ext_delay + 9.12] -clock [get_clocks {clk}] [get_ports {io_out[*]}]
|
||||
set_output_delay -max [expr $out_ext_delay + 9.32] -clock [get_clocks {clk}] [get_ports {io_oeb[*]}]
|
||||
set_output_delay -min [expr $out_ext_delay + 2.34] -clock [get_clocks {clk}] [get_ports {io_oeb[*]}]
|
||||
set_output_delay -min [expr $out_ext_delay + 3.9] -clock [get_clocks {clk}] [get_ports {io_out[*]}]
|
||||
}
|
||||
|
||||
# Output loads
|
||||
set_load 0.19 [all_outputs]
|
||||
3
openlane/user_project_wrapper/vsrc/upw_vccd1_vsrc.loc
Normal file
3
openlane/user_project_wrapper/vsrc/upw_vccd1_vsrc.loc
Normal file
@@ -0,0 +1,3 @@
|
||||
2911.7,3148.92,24,1.8
|
||||
2911.7,3198.92,24,1.8
|
||||
2911.7,932.65,24,1.8
|
||||
3
openlane/user_project_wrapper/vsrc/upw_vccd2_vsrc.loc
Normal file
3
openlane/user_project_wrapper/vsrc/upw_vccd2_vsrc.loc
Normal file
@@ -0,0 +1,3 @@
|
||||
8.30,3169.21,24,1.8
|
||||
8.30,3219.21,24,1.8
|
||||
8.30,839.94,24,1.8
|
||||
4
openlane/user_project_wrapper/vsrc/upw_vdda1_vsrc.loc
Normal file
4
openlane/user_project_wrapper/vsrc/upw_vdda1_vsrc.loc
Normal file
@@ -0,0 +1,4 @@
|
||||
2911.70,1126.15,24,3.3
|
||||
2911.70,1176.15,24,3.3
|
||||
2911.70,2702.81,24,3.3
|
||||
2911.70,2752.81,24,3.3
|
||||
2
openlane/user_project_wrapper/vsrc/upw_vdda2_vsrc.loc
Normal file
2
openlane/user_project_wrapper/vsrc/upw_vdda2_vsrc.loc
Normal file
@@ -0,0 +1,2 @@
|
||||
8.30,1024.44,24,3.3
|
||||
8.30,1074.44,24,3.3
|
||||
4
openlane/user_project_wrapper/vsrc/upw_vssa1_vsrc.loc
Normal file
4
openlane/user_project_wrapper/vsrc/upw_vssa1_vsrc.loc
Normal file
@@ -0,0 +1,4 @@
|
||||
2911.7,684.15,24,0.0
|
||||
2911.7,734.15,24,0.0
|
||||
2552.97,3511.70,24,0.0
|
||||
2602.97,3511.70,24,0.0
|
||||
2
openlane/user_project_wrapper/vsrc/upw_vssa2_vsrc.loc
Normal file
2
openlane/user_project_wrapper/vsrc/upw_vssa2_vsrc.loc
Normal file
@@ -0,0 +1,2 @@
|
||||
8.30,2747.21,24,0.0
|
||||
8.30,2797.21,24,0.0
|
||||
3
openlane/user_project_wrapper/vsrc/upw_vssd1_vsrc.loc
Normal file
3
openlane/user_project_wrapper/vsrc/upw_vssd1_vsrc.loc
Normal file
@@ -0,0 +1,3 @@
|
||||
2911.7,907.15,24,0.0
|
||||
2911.7,957.15,24,0.0
|
||||
2911.7,3174.42,24,0.0
|
||||
3
openlane/user_project_wrapper/vsrc/upw_vssd2_vsrc.loc
Normal file
3
openlane/user_project_wrapper/vsrc/upw_vssd2_vsrc.loc
Normal file
@@ -0,0 +1,3 @@
|
||||
8.30,814.44,24,0.0
|
||||
8.30,864.44,24,0.0
|
||||
8.30,3194.71,24,0.0
|
||||
Reference in New Issue
Block a user