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.