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.