pub enum PipeError {
Sequential,
EdgeTooDeep {
edge: usize,
delay: i64,
},
LatencyTooShort {
minimum: i64,
},
Uncuttable {
through: Vec<String>,
},
NegativeLatency,
CombinationalLoop,
Unbalanced {
node: String,
},
Held {
register: String,
},
Boxed {
cell: String,
},
Flow(FlowError),
}Expand description
Why logic was not pipelined.
Variants§
Sequential
The graph holds registers already: it is pipelined from combinational logic.
EdgeTooDeep
An edge is deeper than the period by itself, and no register splits an edge.
LatencyTooShort
The latency is too short for the period: the least that is enough.
Uncuttable
Logic deeper than the period with nowhere the policy allows a register, at any latency: the nets around the loop of constraints that says so.
NegativeLatency
The latency is negative.
CombinationalLoop
The logic loops through no register.
Unbalanced
The paths into a node hold different numbers of registers: not a pipeline, whose every path from its inputs to a node holds as many.
Held
A register with more than its data in (an enable, a reset, a memory’s port): state, not a pipeline’s stage.
Boxed
An instance of a module timed apart: its logic, and any loop through it, is not the graph’s.
Flow(FlowError)
Trait Implementations§
Source§impl Error for PipeError
impl Error for PipeError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
impl Eq for PipeError
impl StructuralPartialEq for PipeError
Auto Trait Implementations§
impl Freeze for PipeError
impl RefUnwindSafe for PipeError
impl Send for PipeError
impl Sync for PipeError
impl Unpin for PipeError
impl UnsafeUnpin for PipeError
impl UnwindSafe for PipeError
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,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.