Timeouts¶
SiDB timeouts use milliseconds: 2**64 - 1 (default) is unlimited; 0 expires immediately.
Nested calls and workers share the enclosing deadline without extending it.
The table names C++ parameter members. Python uses the keyword timeout for these bound applications;
circuit design also accepts design_gate_timeout for each gate search.
Application |
C++ budget member |
|---|---|
Gate design |
|
Circuit design, including defect-aware placement and routing |
|
Operational checks and input-pattern analysis |
|
Operational and critical-temperature domains, physical-validity sweeps |
|
Critical temperature, defect influence, displacement robustness and fabrication probability |
|
Operational-domain ratio |
|
Population stability and time-to-solution |
|
Band-bending resilience |
|
Expiration throws fiction::utils::timeout_error in C++ or TimeoutError in Python,
without publishing partial results or statistics. A completed result is returned even if the
last operation or callback overruns the deadline. Circuit design aborts on a gate timeout;
only a completed, unsuccessful gate search triggers defect-aware placement-and-routing retries.
Finite budgets support QuickExact, ExGS, and QuickSim. ClusterComplete rejects them with
std::invalid_argument (ValueError in Python). QuickSim’s quicksim_params.timeout in C++ and
quicksim_timeout in Python set a separate per-attempt limit in time-to-solution measurements.
Cancellation is cooperative: individual operations and callbacks can overrun the budget before the next check, and cleanup callbacks can run afterward. Use a separate process for a hard deadline.
fiction::sidb::simulation::logic::operational_domain_params params{};
params.operational_params.timeout = 5'000;
const auto domain = fiction::sidb::simulation::logic::operational_domain_grid_search(layout, spec, params);
from mnt.pyfiction.sidb.simulation.logic import operational_domain_grid_search
domain = operational_domain_grid_search(layout, spec, timeout=5_000)