Skip to content

Liberty parser error when bus has no bus-level direction attribute #99

@jhkim-pii

Description

@jhkim-pii

Summary

Kepler-formal issues an error Direction not found for bus <name> when parsing a Liberty file where a bus group does not have a bus-level direction attribute, even though all child pin entries have valid direction attributes.

I think this is valid Liberty syntax — many foundry-provided pad cell libraries (e.g., GPIO cells) define direction only on individual pins within a bus, not on the bus group itself.

Error Message

[critical] [KeplerFormal.cpp:382] Netlist loading failed: Direction not found for bus DRV

Reproduce

OK case (bus-level direction present)

bus (DRV) {
    bus_type : bus_DRV_1_0;
    direction : input;            /* ← present at bus level — OK */
    pin (DRV[1]) { direction : input; capacitance : 5.0; }
    pin (DRV[0]) { direction : input; capacitance : 5.0; }
}

Error case (direction only on pins)

bus (DRV) {
    bus_type : bus_DRV_1_0;
                                  /* ← no direction at bus level */
    pin (DRV[1]) { direction : input; capacitance : 5.0; }
    pin (DRV[0]) { direction : input; capacitance : 5.0; }
}

Standalone test case

A self-contained test case is available:

missing_bus_direction.zip

How to run: ./run.sh

This runs two tests:

  • bus_direction_ok/ — bus with bus-level direction (OK)
  • bus_direction_bug/ — bus with pin-level direction only (ERROR)

kepler-formal version: commit a18e4d9

Metadata

Metadata

Assignees

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