1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//! The emulation core: the generic machinery every machine is built from.
//!
//! This module is **never feature-gated** and is `no_std + alloc`. Nothing here
//! may name `std::thread`, `std::sync`, or the host clock directly
//! (`ROADMAP.md` §15, invariant 4).
//!
//! # What belongs here
//!
//! Per `ROADMAP.md` §4, in roughly the order it will be built:
//!
//! | Module | Covers |
//! | --- | --- |
//! | [`error`] | crate-wide error and result types |
//! | [`exec`] | the execution seam: how a core stops, and why (§4.6, §2.1) |
//! | [`hosts`] | build-scoped host objects: ports, pads, signals, capture (§4.4) |
//! | [`value`] | access widths, endianness, typed conversions |
//! | `space` | address spaces, regions, flat views, dispatch (§4.1) |
//! | `clock` | the oscillator forest and virtual time (§4.2) |
//! | `sched` | event queue, execution budgets, threading modes (§4.2) |
//! | `wire` | interrupt and GPIO lines (§4.3) |
//! | `device` | the device trait, lifecycle, composition (§4.4) |
//! | `props` | dynamic property values and typed extraction (§4.4) |
//! | [`record`] | the record/replay seam: non-deterministic input, timestamped (§4.5) |
//! | `registry` | by-name device construction (§4.4) |
//! | `state` | versioned snapshots (§4.5) |
//! | `sync` | the concurrency portability seam (§4.7) |
//!
//! Every module listed above now exists, and [`machine`](crate::machine)
//! assembles them into a running [`Machine`](crate::machine::Machine). The
//! seam still open is [`device::RealizeCtx`]: it carries a path, a requester id
//! and a deferred queue, but not the address spaces, clock domains and wires a
//! device needs, so the machine layer hands those over afterwards through its
//! own `Instance::bind`.
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use Registry;
pub use ;