| package require openlane |
| prep -design striVe_flat -tag toplevel_mod_diearea -config config_mod_diearea -overwrite |
| |
| set padframe_cfg $::env(DESIGN_DIR)/src/padframe.cfg |
| set padframe_def $::env(DESIGN_DIR)/src/def/padframe.def |
| set padframe_area [padframe_extract_area -cfg $padframe_cfg] |
| set lefs [glob $::env(DESIGN_DIR)/src/lef/*.lef] |
| set margin $::env(FP_CORE_MARGIN) |
| #set core_margin_x [expr $::env(PLACE_SITE_WIDTH)*70] |
| #set core_margin_y [expr $::env(PLACE_SITE_HEIGHT)*14] |
| set core_margin_x 30 |
| set core_margin_y 30 |
| set diearea "[expr $margin + [lindex $padframe_area 0]] [expr $margin + [lindex $padframe_area 1]] [expr [lindex $padframe_area 2] - $margin] [expr [lindex $padframe_area 3] - $margin]" |
| set corearea "[expr $core_margin_x + [lindex $diearea 0]] [expr $core_margin_y + [lindex $diearea 1]] [expr [lindex $diearea 2] - $core_margin_x] [expr [lindex $diearea 3] - $core_margin_y]" |
| set ::env(DIE_AREA) $diearea |
| set ::env(CORE_AREA) $corearea |
| set ::env(FP_SIZING) absolute |
| |
| #config |
| # netlist verification |
| add_lefs -src $lefs |
| verilog_elaborate |
| init_floorplan |
| exec cp $::env(CURRENT_DEF) $::env(CURRENT_DEF).old |
| exec $::env(SCRIPTS_DIR)/remove_empty_nets.sh $::env(CURRENT_DEF) |
| exec python3 $::env(SCRIPTS_DIR)/padframe2fp.py -id $padframe_def -idn $::env(CURRENT_DEF) -il $::env(MERGED_LEF) |& tee $::env(TERMINAL_OUTPUT) $::env(CURRENT_DEF).pinsonly |
| set pinsonly $::env(CURRENT_DEF).pinsonly |
| set ::env(DESIGN_NAME) striVe_ChipCore |
| exec cp $::env(yosys_result_file_tag).v $::env(yosys_result_file_tag).v.old |
| run_synthesis |
| init_floorplan |
| place_io |
| #tap_decap |
| run_placement |
| gen_pdn |
| move_pins -from $pinsonly -to $::env(CURRENT_DEF) |
| exec python3 $::env(SCRIPTS_DIR)/zeroize_origin_def.py < $::env(CURRENT_DEF) > $::env(CURRENT_DEF).zeroized |
| exec mv $::env(CURRENT_DEF).zeroized $::env(CURRENT_DEF) |
| run_routing |
| #run_magic |