pub struct Plan {
pub cost: Cost,
pub rate: f64,
pub unit: &'static str,
pub limit: String,
pub detail: String,
pub demands: Vec<Flow>,
pub supplies: Vec<Flow>,
pub measured: bool,
pub latency_cycles: f64,
pub in_flight: f64,
pub batch: Option<f64>,
pub covers: Vec<Role>,
}Expand description
The best build of a component within its share.
Fields§
§cost: CostResources.
rate: f64Capacity: operations per second at full use.
unit: &'static strWhat an operation is ("sign").
limit: StringThe resource that stops the next larger build.
detail: StringOne line describing the build.
demands: Vec<Flow>Services this build consumes at full capacity.
supplies: Vec<Flow>Services this build provides.
measured: boolCosts come from Vivado (synthesis or route), not a model.
latency_cycles: f64Cycles from request to result with nothing else in flight.
in_flight: f64Requests in flight at full capacity (sets the loaded latency).
batch: Option<f64>DSig’s batch size K for this build (DSig modules only; None
means DSIG_BATCH).
covers: Vec<Role>Roles this build does itself, so the chip needs no separate module
for them (DSig with its own Ed25519 certificate core covers
Role::Ed25519Sign). Their need drops to zero.
Implementations§
Source§impl Plan
Latency views of a plan.
impl Plan
Latency views of a plan.
Sourcepub fn idle_latency_us(&self, mhz: f64) -> f64
pub fn idle_latency_us(&self, mhz: f64) -> f64
Idle latency in microseconds at mhz.
Sourcepub fn loaded_latency_us(&self, mhz: f64) -> f64
pub fn loaded_latency_us(&self, mhz: f64) -> f64
Latency at full load in microseconds: by Little’s law, requests in flight divided by capacity, never below the idle latency.
Trait Implementations§
impl StructuralPartialEq for Plan
Auto Trait Implementations§
impl Freeze for Plan
impl RefUnwindSafe for Plan
impl Send for Plan
impl Sync for Plan
impl Unpin for Plan
impl UnsafeUnpin for Plan
impl UnwindSafe for Plan
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more