hi, for example I got an error in routing phase, I...
# openlane
b
hi, for example I got an error in routing phase, I did change Macro placement file (macro.cfg). I don't want to rerun stages up to placement. What is the proper way of doing this in caravel_user_project mpw repo? Rewrite make script? Running openlane interactively? regards,
in Makefile under openlane folder of caravel_user_project repo: @if [ -f ./$*/interactive.tcl ]; then\ docker run --rm -v $(OPENLANE_ROOT):/openlane \ -v $(PDK_ROOT):$(PDK_ROOT) \ -v $(PWD)/..:$(PWD)/.. \ -v $(MCW_ROOT):$(MCW_ROOT) \ -v $(CARAVEL_ROOT):$(CARAVEL_ROOT) \ -e MCW_ROOT=$(MCW_ROOT) \ -e PDK_ROOT=$(PDK_ROOT) \ -e CARAVEL_ROOT=$(CARAVEL_ROOT) \ -e PDK=$(PDK) \ -e TEST_MISMATCHES=tools \ -e MISMATCHES_OK=1 \ -u $(shell id -u $(USER)):$(shell id -g $(USER)) \ $(OPENLANE_IMAGE_NAME) sh -c $(OPENLANE_INTERACTIVE_COMMAND);\ else\ docker run --rm -v $(OPENLANE_ROOT):/openlane \ -v $(PDK_ROOT):$(PDK_ROOT) \ -v $(PWD)/..:$(PWD)/.. \ -v $(CARAVEL_ROOT):$(CARAVEL_ROOT) \ -v $(MCW_ROOT):$(MCW_ROOT) \ -e MCW_ROOT=$(MCW_ROOT) \ -e PDK=$(PDK) \ -e PDK_ROOT=$(PDK_ROOT) \ -e CARAVEL_ROOT=$(CARAVEL_ROOT) \ -e TEST_MISMATCHES=tools \ -e MISMATCHES_OK=1 \ -u $(shell id -u $(USER)):$(shell id -g $(USER)) \ $(OPENLANE_IMAGE_NAME) sh -c $(OPENLANE_BASIC_COMMAND);\ I want to run openlane -from placement -to ... for example, so i think i need to change OPENLANE_BASIC_COMMAND by adding -from placement
I changed "OPENLANE_BASIC_COMMAND = "cd $(PWD)/../openlane && flow.tcl -from placement -design ./$* -save_path .. -save -tag $* -overwrite" " but it gives error [INFO ODB-0222] Reading LEF file: /home/mbaykenar/Desktop/first_asic/openlane/pulpino_top_wrapper/runs/pulpino_top_wrapper/tmp/merged_unpadded.lef [INFO ODB-0223] Created 13 technology layers [INFO ODB-0224] Created 25 technology vias [INFO ODB-0225] Created 442 library cells [INFO ODB-0226] Finished LEF file: /home/mbaykenar/Desktop/first_asic/openlane/pulpino_top_wrapper/runs/pulpino_top_wrapper/tmp/merged_unpadded.lef [ERROR ORD-0003] 0 does not exist. ORD-0003 [ERROR]: during executing openroad script /openlane/scripts/openroad/replace.tcl [ERROR]: Exit code: 1 [ERROR]: Last 10 lines: child process exited abnormally
himmmm, i think i got errors since the run simply clean out everything in results folder :l
in openlane scripts/tcl_commands/all.tcl set flags { -init_design_config -overwrite -last_run } first i will do synthesis and then call openlane with -last_run option
m
I almost never try to continue a run, but it is possible
usually it's easier to just restart the run
m
You can use -from to control flow.tcl
b
ok this is the command when you run "make ..." inside the openlane/Makefile file: OPENLANE_BASIC_COMMAND = "cd $(PWD)/../openlane && flow.tcl -design ./$* -save_path .. -save -tag $* -overwrite"
i changed it to: OPENLANE_BASIC_COMMAND = "cd $(PWD)/../openlane && flow.tcl -from synthesis -to synthesis -design ./$* -save_path .. -save -tag $* -overwrite"
then i wanted to continue from floorplan and do placement, so i changed this again and run make ..., beware of clearing out -overwrite option: OPENLANE_BASIC_COMMAND = "cd $(PWD)/../openlane && flow.tcl -from floorplan -to placement -design ./$* -save_path .. -save -tag $*"
it works, but creating and "interactive.tcl" seems better option
@Matt Venn "usually it's easier to just restart the run" i have a huge design, i had congestion issues in routing, i am trying different placement and routing options in config.tcl and macro placements, synthesis takes too much time if i restart the flow each time, that is the reason i want to continue from a previous synth run
๐Ÿ‘ 1
m
Please let me know what works best for you
Also could be good to ask @donn or @Manar Abdelatty
d
./flow.tcl -design whatever -last_run -interactive
๐Ÿ‘ 1
Also, Manar left the team a while back.
โœ… 1
b
ok i still got problems in running openlane in "caravel_user_project" repo step by step the case is: i first synth the design with #OPENLANE_BASIC_COMMAND = "cd $(PWD)/../openlane && flow.tcl -from synthesis -to synthesis -design ./$* -save_path .. -save -tag $* -overwrite" then i want to do floorplan phase with: set ::env(DIE_AREA) "0 0 600 600" and in makefile OPENLANE_BASIC_COMMAND = "cd $(PWD)/../openlane && flow.tcl -from floorplan -to floorplan -design ./$* -save_path .. -save -tag $*" then i change set ::env(DIE_AREA) "0 0 800 800" and again run makefile with: OPENLANE_BASIC_COMMAND = "cd $(PWD)/../openlane && flow.tcl -from floorplan -to floorplan -design ./$* -save_path .. -save -tag $*" but i check def in floorplan and it is still 600x600. so if i don't write -overwrite, the design runs from previous configurations, if i write -overwrite flag and do -from floorplan -to floorplan, then the openlane removes synth result and give error in floorplan that there is no netlist
m
@donn @Kareem Farid this is surely worth looking at getting working. Is this a caravel bug or an openlane bug?
d
I'll take a look pending proper caffeination
๐Ÿ˜… 1
b
so i tried some other things like trying to run openlane interactively by changing OPENLANE_BASIC_COMMAND = "cd $(PWD)/../openlane && flow.tcl -interactive" it gives: [INFO]: Version: 2022.02.23_02.50.41 [INFO]: Running interactively [INFO]: Note, that post_run_hooks.tcl will not be sourced automatically mkdir -p ../signoff/zeroriscy_multdiv_fast/ cp zeroriscy_multdiv_fast/runs/zeroriscy_multdiv_fast/OPENLANE_VERSION ../signoff/zeroriscy_multdiv_fast/ cp zeroriscy_multdiv_fast/runs/zeroriscy_multdiv_fast/PDK_SOURCES ../signoff/zeroriscy_multdiv_fast/ cp zeroriscy_multdiv_fast/runs/zeroriscy_multdiv_fast/reports/final_summary_report.csv ../signoff/zeroriscy_multdiv_fast/ make[1]: Leaving directory '/home/mbaykenar/Desktop/first_asic/openlane' and quit so i couldn't find a way to run floorplan without running synthesis again -overwrite option removes everything in run folder by looking at all.tcl file: set ::env(RUN_TAG) "$tag" set ::env(RUN_DIR) "$run_path" set ::env(RESULTS_DIR) "$::env(RUN_DIR)/results" set ::env(TMP_DIR) "$::env(RUN_DIR)/tmp" set ::env(LOGS_DIR) "$::env(RUN_DIR)/logs" set ::env(REPORTS_DIR) "$::env(RUN_DIR)/reports" set ::env(GLB_CFG_FILE) "$::env(RUN_DIR)/config.tcl" puts_info "Run Directory: $::env(RUN_DIR)" if { [file exists $::env(GLB_CFG_FILE)] } { if { [info exists flags_map(-overwrite)] } { puts_info "Removing existing $::env(RUN_DIR)..." after 1000 file delete -force $::env(RUN_DIR) } else { if { ![info exists flags_map(-last_run)] } { puts_warn "A run for $::env(DESIGN_NAME) with tag '$tag' already exists. Pass the -overwrite option to overwrite it." after 1000 } puts_info "Sourcing $::env(GLB_CFG_FILE). Note that any changes to the DESIGN config file will NOT be applied." source $::env(GLB_CFG_FILE) if { [info exists ::env(CURRENT_DEF)] && $::env(CURRENT_DEF) != 0 } { puts_info "Current DEF: $::env(CURRENT_DEF)." puts_info "Use 'set_def file_name.def' if you'd like to change it." } after 1000 if { [info exists ::env(BASIC_PREP_COMPLETE)] && "$::env(BASIC_PREP_COMPLETE)" == "1"} { set skip_basic_prep 1 } } } but i want synth results to be kept. -from floorplan does not have an effect if you don't write -overwrite, and if you write you lost netlist and get an error
now i have an idea about what's happening, a new config.tcl file is generated after the run inside the run folder, and the new runs take this file into consideration, so if you change your config.tcl file it has no effect on the previous run
strangely some config variables are defined twice in this generated config.tcl file such as DIE_AREA