Skip to content

Wrapper hardening fails with 'NoneType' AttributeError and analog power net routing errors when user project fills full user area #389

Description

@RakshithSuresh2001

When hardening the user_project_wrapper with a user project macro that fills the full user area (2860x3505 um on sky130A), the OpenLane 2 flow fails at multiple stages. Two distinct issues encountered.

The wrapper hardening flow should complete for user projects that fill the full Caravel user area. The flow should handle analog power nets (vccd2, vdda1, vdda2, vssa1, vssa2, vssd2) that are outside the user project die boundary without treating them as routable signal nets.

The Environment is,
OpenLane: 2.3.10
PDK: sky130A
OS: Ubuntu 24.04 WSL2
Caravel user project template: latest main

Issue 1 - defutil.py crash:
Odb.ApplyDEFTemplate crashes with:
AttributeError: 'NoneType' object has no attribute 'setSigType'
File "defutil.py", line 257, in relocate_pins
pin_bterm.setSigType(bterm.getSigType())

Fix: add None check before setSigType call
Also filter None values from output_bterms list before iteration
Filed as bug in openlane2: [link to your first issue]

Issue 2 - Analog power net routing:
GlobalRouting fails with:
[GRT-0209] Pin vccd2 is completely outside the die area and cannot be routed

Root cause: vccd2, vdda1, vdda2, vssa1, vssa2, vssd2 are Caravel IO ring
power nets that sit outside the user project area. The global router
treats them as signal nets and tries to route them.

Workaround: Mark these nets as SPECIAL in the PDN TCL before routing.
Workaround applied:

In pdn.tcl, after set_global_connections:

foreach net_name {vccd2 vdda1 vdda2 vssd2 vssa1 vssa2} {
set net [[ord::get_db_block] findNet $net_name]
if {$net != "NULL"} {
$net setSpecial 1
$net setSigType POWER
}
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions