@@ -457,7 +457,7 @@ $(RESULTS_DIR)/2_2_floorplan_io.odb: $(RESULTS_DIR)/2_1_floorplan.odb $(IO_CONST
457457ifndef IS_CHIP
458458 ($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/io_placement_random.tcl -metrics $(LOG_DIR)/2_2_floorplan_io.json) 2>&1 | tee $(LOG_DIR)/2_2_floorplan_io.log
459459else
460- ln -sf $(shell realpath --relative-to=$(dir $@) $<) $@
460+ cp $< $@
461461endif
462462
463463# STEP 3: Timing Driven Mixed Sized Placement
@@ -467,7 +467,7 @@ ifeq ($(MACRO_PLACEMENT),)
467467 ($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/tdms_place.tcl -metrics $(LOG_DIR)/2_3_tdms.json) 2>&1 | tee $(LOG_DIR)/2_3_tdms_place.log
468468else
469469 $(info [INFO][FLOW] Using manual macro placement file $(MACRO_PLACEMENT))
470- ln -sf $(shell realpath --relative-to=$(dir $@) $<) $@
470+ cp $< $@
471471endif
472472
473473# STEP 4: Macro Placement
@@ -487,7 +487,7 @@ $(RESULTS_DIR)/2_6_floorplan_pdn.odb: $(RESULTS_DIR)/2_5_floorplan_tapcell.odb $
487487 ($( TIME_CMD) $( OPENROAD_CMD) $( SCRIPTS_DIR) /pdn.tcl -metrics $( LOG_DIR) /2_6_pdn.json) 2>&1 | tee $(LOG_DIR ) /2_6_pdn.log
488488
489489$(RESULTS_DIR ) /2_floorplan.odb : $(RESULTS_DIR ) /2_6_floorplan_pdn.odb
490- ln -sf $( shell realpath --relative-to= $( dir $@ ) $< ) $@
490+ cp $< $@
491491
492492$(RESULTS_DIR ) /2_floorplan.sdc : $(RESULTS_DIR ) /2_1_floorplan.odb
493493
@@ -520,7 +520,7 @@ $(RESULTS_DIR)/3_2_place_iop.odb: $(RESULTS_DIR)/3_1_place_gp_skip_io.odb $(IO_C
520520ifndef IS_CHIP
521521 ($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/io_placement.tcl -metrics $(LOG_DIR)/3_2_place_iop.json) 2>&1 | tee $(LOG_DIR)/3_2_place_iop.log
522522else
523- ln -sf $(shell realpath --relative-to=$(dir $@) $<) $@
523+ cp $< $@
524524endif
525525
526526# STEP 3: Global placement with placed IOs, timing-driven, and routability-driven.
@@ -543,7 +543,7 @@ $(RESULTS_DIR)/3_5_place_dp.odb: $(RESULTS_DIR)/3_4_place_resized.odb
543543 ($( TIME_CMD) $( OPENROAD_CMD) $( SCRIPTS_DIR) /detail_place.tcl -metrics $( LOG_DIR) /3_5_opendp.json) 2>&1 | tee $(LOG_DIR ) /3_5_opendp.log
544544
545545$(RESULTS_DIR ) /3_place.odb : $(RESULTS_DIR ) /3_5_place_dp.odb
546- ln -sf $( shell realpath --relative-to= $( dir $@ ) $< ) $@
546+ cp $< $@
547547
548548$(RESULTS_DIR ) /3_place.sdc : $(RESULTS_DIR ) /2_floorplan.sdc
549549 cp $< $@
@@ -584,7 +584,7 @@ $(RESULTS_DIR)/4_2_cts_fillcell.odb: $(RESULTS_DIR)/4_1_cts.odb
584584$(RESULTS_DIR ) /4_cts.sdc : $(RESULTS_DIR ) /4_cts.odb
585585
586586$(RESULTS_DIR ) /4_cts.odb : $(RESULTS_DIR ) /4_2_cts_fillcell.odb
587- ln -sf $( shell realpath --relative-to= $( dir $@ ) $< ) $@
587+ cp $< $@
588588
589589.PHONY : clean_cts
590590clean_cts :
@@ -622,7 +622,7 @@ endif
622622 ($(TIME_CMD) $(OPENROAD_CMD) $(SCRIPTS_DIR)/detail_route.tcl -metrics $(LOG_DIR)/5_2_TritonRoute.json) 2>&1 | tee $(LOG_DIR)/5_2_TritonRoute.log
623623
624624$(RESULTS_DIR ) /5_route.odb : $(RESULTS_DIR ) /5_2_route.odb
625- ln -sf $( shell realpath --relative-to= $( dir $@ ) $< ) $@
625+ cp $< $@
626626
627627$(RESULTS_DIR ) /5_route.sdc : $(RESULTS_DIR ) /4_cts.sdc
628628 cp $< $@
@@ -683,7 +683,7 @@ $(RESULTS_DIR)/6_1_fill.odb: $(RESULTS_DIR)/5_route.odb $(FILL_CONFIG)
683683 ($( TIME_CMD) $( OPENROAD_CMD) $( SCRIPTS_DIR) /density_fill.tcl -metrics $( LOG_DIR) /6_density_fill.json) 2>&1 | tee $(LOG_DIR ) /6_density_fill.log
684684else
685685$(RESULTS_DIR ) /6_1_fill.odb : $(RESULTS_DIR ) /5_route.odb
686- ln -sf $( shell realpath --relative-to= $( dir $@ ) $< ) $@
686+ cp $< $@
687687endif
688688
689689$(RESULTS_DIR ) /6_1_fill.sdc : $(RESULTS_DIR ) /5_route.sdc
@@ -707,17 +707,17 @@ skip_resize: $(RESULTS_DIR)/3_3_place_gp.odb
707707.PHONY : skip_cts
708708skip_cts : $(RESULTS_DIR ) /3_place.odb $(RESULTS_DIR ) /3_place.sdc
709709 # mock all intermediate results
710- cd $(RESULTS_DIR ) && ln -sf 3_place.odb 4_1_cts.odb
711- cd $(RESULTS_DIR ) && ln -sf 3_place.odb 4_2_cts_fillcell.odb
712- cd $(RESULTS_DIR ) && ln -sf 3_place.sdc 4_cts.sdc
713- cd $(RESULTS_DIR ) && ln -sf 3_place.odb 4_cts.odb
710+ cp $(RESULTS_DIR ) / 3_place.odb $( RESULTS_DIR ) / 4_1_cts.odb
711+ cp $(RESULTS_DIR ) / 3_place.odb $( RESULTS_DIR ) / 4_2_cts_fillcell.odb
712+ cp $(RESULTS_DIR ) / 3_place.sdc $( RESULTS_DIR ) / 4_cts.sdc
713+ cp $(RESULTS_DIR ) / 3_place.odb $( RESULTS_DIR ) / 4_cts.odb
714714
715715# Skipping route can be useful to create a mock abstract
716716.PHONY : skip_route
717717skip_route : $(RESULTS_DIR ) /4_cts.odb $(RESULTS_DIR ) /4_cts.sdc
718- cd $(RESULTS_DIR ) && ln -sf 3_place.odb 5_1_grt.odb
719- cd $(RESULTS_DIR ) && ln -sf 3_place.odb 5_2_route.odb
720- cd $(RESULTS_DIR ) && ln -sf 3_place.odb 6_1_fill.odb
718+ cp $(RESULTS_DIR ) / 3_place.odb $( RESULTS_DIR ) / 5_1_grt.odb
719+ cp $(RESULTS_DIR ) / 3_place.odb $( RESULTS_DIR ) / 5_2_route.odb
720+ cp $(RESULTS_DIR ) / 3_place.odb $( RESULTS_DIR ) / 6_1_fill.odb
721721 touch $(RESULTS_DIR ) /6_final.spef
722722
723723# To create a mock abstract quickly, good enough to iterate quickly on
@@ -760,7 +760,7 @@ $(GDS_MERGED_FILE): $(RESULTS_DIR)/6_final.def $(OBJECTS_DIR)/klayout.lyt $(GDSO
760760$(RESULTS_DIR ) /6_final.v : $(LOG_DIR ) /6_report.log
761761
762762$(GDS_FINAL_FILE ) : $(GDS_MERGED_FILE )
763- ln -sf $( shell realpath --relative-to= $( dir $@ ) $< ) $@
763+ cp $< $@
764764
765765.PHONY : drc
766766drc : $(REPORTS_DIR ) /6_drc.lyrdb
0 commit comments