Design Decisions

We collect some past and future design decisions here.

  • ORDeC is organized as a monorepo. Inside it, things should be as modular as possible.

  • Use ORDB for internal data as much as possible. Avoid YAML and flat string keys.

  • Support common exchange formats like Verilog, Spice netlists, DEF/LEF and GDS.

  • Design tasks should be pure functions.

  • The native design entry format (ORD/Python) is separate from the native exchange format (serialized ORDB). Foreign exchange formats can be used for both purposes, design entry and exchange.

  • Do not generate code for the user. Eliminate the need for boilerplate and overly verbose code.

  • The ORD or Python design input should act as single source of truth.

  • Try to minimize external dependencies, especially if they are large and at risk of becoming unmaintained. Currently, myst-nb seems like the largest dependency, but it is only relevant for the documentation and presentation, not for the core components themselves.