Skip to content

Consistency check review #295

@d-m-bailey

Description

@d-m-bailey

This is the summary of the current active Consistency checks in precheck (latest version 0941bdc - disclaimer: actually checked version e143b32 from Apr 26, 2023 but the consistency check hasn’t been modified).

  • ports: Check that the user project netlist port names match the golden user project netlist port names.
  • layout: Check that the cells in the top hierarchy of the layout match the cells in the top hierarchy of the netlist, ignoring certain cells (doesn’t ignore Cadence via cells)
  • modeling: Checks that if a user netlist is a verilog file, then the the netlist must be a structural and not a behavioral model.
  • complexity: Checks that there is at least 1 cell in the netlist.

For digital designs, there are 2 additional checks.

  • power: For cells other than standard library cells, check that at least one of the vdda*, vssa*, vccd*, or vssd* nets is connected.
  • port_types: check that the port directions of the user netlist top cell matches the port directions of the golden netlist. (user netlist in and out ports also match golden inout ports).

These are the main problems that the users were seeing:

  • layout cell names not matching user netlist cell names in analog or cadence generated circuits. This was often due to layout cells that have no schematic correspondence such as via cells or analog routing. To “solve” this, some users totally flattened their submitted layout.
  • netlist parser not being able to handle spice format output from xschem (PININFO comment continuation lines I think).

There is no requirement that the submitted user netlist matches the actual layout. Without that condition, I think the port, layout, complexity, and power checks should not be required. To resolve any above issues, users often submitted modified user netlists that passed precheck, but did not match the layout. Maybe the consistency checks could be left as warnings.

Regarding the remaining modeling and port_type checks, the modeling check is only necessary to verify that the user netlist is suitable for the other consistency checks. If the user netlist matches the layout in a digital design, then the port_type check could be helpful to ensure that the intended port usage matches the specification.

There is a missing check. The layout XOR check verifies that the ports have not been moved. The consistency port check verifies that the same port names are both in the user netlist and the layout. What is not checked is whether or not the port names have been switched in the layout.

These are my suggestions:

  • Remove the layout cell check. It can’t handle some third party designs and is covered by LVS.
  • Remove all checks for analog designs.
    1. xschem spice output is not supported.
    2. netlist location is non-standard and undocumented (currently netgen/user_analog_project_wrapper.spice)
  • Add a new required check for port names and locations. This might be more appropriately implemented as part of the XOR check rather than a consistency check.

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