Module libreda_db::netlist[][src]

Data structures for representation of circuit-level netlists.

A netlist represents the connections of electrical components (here called 'circuits') such as standard-cells or macro blocks. Each of the circuits can be composed of instances of other circuits (recursion is not allowed). A circuit serves as a template for circuit instances. The circuit defines 'pins' which represent the electrical connectors to the circuit. Pins can be connected electrically by 'nets' which represent an electrical potential like a metal wire. Nets are local to a circuit.

Netlists can be implemented in different ways. This module provides RcNetlist and HashMapNetlist. RcNetlist emulates an object oriented approach, where circuits, instances, pins, nets, etc., are represented as a resource counted struct. This is convenient in certain cases but is a complicated pattern in respect of mutability. HashMapNetlist is a simpler structure without any interior mutability patterns.

Some traits are used to create abstractions over the different netlist implementations:

  • NetlistBase defines basic functions for accessing and traversing a netlist.
  • NetlistEdit defines basic functions for building and modifying a netlist.

Modules

direction

The type of a pin is specified by a signal direction.

hashmap_netlist

Alternative netlist implementation. Not currently used, nor complete.

io

Input and output interface definitions for netlists.

prelude

The prelude helps to import most commonly used modules.

rc_netlist

Data structures for representation of circuit-level netlists.

traits

Traits for netlist data types.