Skip to content

[mpw5a] OpenLane global router segfaults #909

@armleo

Description

@armleo

Description

I don't really know why but Global Router is crashing if there is a pin in top level verilog that has the same name as the pin in .def.

Logically if the pin does not exist in .def then it has to be placed, and if it exists in .def but not on top level, it should issue a warning. However in this edge case, we specify in .def and in top level a pin that matches power/ground. Generated sdc contains get_ports VPWR, which I assume crashes the global router?

Pay close attention to VPWR/VGND in top level:

module inverter (

	inout wire VPWR,  <- INTENTIONALLY DECLARED

	inout wire VGND,  <- INTENTIONALLY DECLARED

    input wire in,

    output out );

And in DEF:

    - VPWR + NET VPWR + DIRECTION INOUT + USE SIGNAL  <- INTENTIONALLY DECLARED

      + PORT

        + LAYER met2 ( -3200 -1000 ) ( 3200 1000 )

        + FIXED ( 10000 1000 ) N ;

    - VGND + NET VGND + DIRECTION INOUT + USE SIGNAL <- INTENTIONALLY DECLARED

      + PORT

        + LAYER met2 ( -3200 -1000 ) ( 3200 1000 )

        + FIXED ( 20000 1000 ) N ;

    - in + NET in + DIRECTION INPUT + USE SIGNAL

      + PORT

        + LAYER met2 ( -3200 -1000 ) ( 3200 1000 )

        + FIXED ( 30000 1000 ) N ;

    - out + NET out + DIRECTION OUTPUT + USE SIGNAL

      + PORT

        + LAYER met2 ( -3200 -1000 ) ( 3200 1000 )

        + FIXED ( 40000 1000 ) N ;

Environment

Python: v3.9.5

Kernel: Linux v5.11.0-49-generic

Distribution: ubuntu 21.04

Container Engine: docker v20.10.10

OpenLane Git Version: 2021.11.23_01.42.34

---

PDK Version Verification Status: OK

---

Git Log (Last 3 Commits)



commit e1883edfbcc8c7e96491158521522b7a66541745

Author: Manar <manarabdelatty@aucegypt.edu>

Date:   Mon Nov 22 07:59:18 2021 -0600



    Update resizer (#726)



commit 6245b0e675d0e6751bdfc5362c545efe29d1077c

Author: Manar <manarabdelatty@aucegypt.edu>

Date:   Fri Nov 19 13:38:50 2021 -0600



    Fix sram install (#724)

    

    Also disable by default



commit e0e6fbc1bd90d1c73aae19769d997da8c3c47512

Author: Manar <manarabdelatty@aucegypt.edu>

Date:   Fri Nov 19 12:30:08 2021 -0600



    Add option for enabling/disabling repair_tie_fanout (#722)

    

    * Add option for enabling/disabling repair_tie_fanout

    

    * add escape characters

    

    * Add option for enabling sta report power




Reproduction Material

inverter_def_power_pin_segfault.zip

Expected behavior

Not segfaulting.

Logs

###############################################################################

# Environment

###############################################################################

set_load -pin_load 0.0334 [get_ports {VGND}]
[ERROR]: during executing: "openroad -exit /openlane/scripts/openroad/groute.tcl |& tee >&@stdout /openlane/designs/inverter_def_power_pin_segfault/runs/RUN_2022.02.09_04.44.48/logs/routing/15-fastroute.log"

[ERROR]: Exit code: 1

[ERROR]: Last 10 lines:

child killed: segmentation violation



[ERROR]: Please check openroad  log file

[ERROR]: Dumping to /openlane/designs/inverter_def_power_pin_segfault/runs/RUN_2022.02.09_04.44.48/error.log

[INFO]: Calculating Runtime From the Start...

[INFO]: flow failed for inverter/2022.02.09_04.44.48 in 0h0m49s

[INFO]: Generating Final Summary Report...

[INFO]: Design Name: inverter

Run Directory: /openlane/designs/inverter_def_power_pin_segfault/runs/RUN_2022.02.09_04.44.48

Source not found.

----------------------------------------



LVS Summary:

Source: /openlane/designs/inverter_def_power_pin_segfault/runs/RUN_2022.02.09_04.44.48/results/lvs/inverter.lvs_parsed.gds.log

Source not found.

----------------------------------------



Antenna Summary:

No antenna report found.

[INFO]: check full report here: /openlane/designs/inverter_def_power_pin_segfault/runs/RUN_2022.02.09_04.44.48/reports/final_summary_report.csv

[INFO]: Saving Runtime Environment

[ERROR]: Flow Failed.



    while executing

"try_catch $::env(OPENROAD_BIN) -exit $::env(SCRIPTS_DIR)/openroad/groute.tcl |& tee $::env(TERMINAL_OUTPUT) $saveLOG"

    (procedure "global_routing_fastroute" line 5)

    invoked from within

"global_routing_fastroute"

    (procedure "global_routing" line 10)

    invoked from within

"global_routing"

    (procedure "run_routing" line 35)

    invoked from within

"run_routing"

    (procedure "run_routing_step" line 10)

    invoked from within

"[lindex $step_exe 0] [lindex $step_exe 1] "

    (procedure "run_non_interactive_mode" line 43)

    invoked from within

"run_non_interactive_mode {*}$argv"

    invoked from within

"if { [info exists flags_map(-interactive)] || [info exists flags_map(-it)] } {

	puts_info "Running interactively"

	if { [info exists arg_values(-file)..."

    (file "./flow.tcl" line 356)

I recommend including this design in designs/. I will add it to issue_regression testing once #881 is implemented.

Names of pins are case sensetive apparently.

I was able to crash gucr with the same config. Not sure if this particular design crashes under gucr too.

Metadata

Metadata

Assignees

No one assigned

    Labels

    OpenROADAn issue with an OpenROAD componentbugSomething isn't workingworkaroundA workaround exists for this issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions