pub type Vr<P, const D: Dep = { Dep::Helpful }> = I<VrH<P>, D>;
Expand description

Valid-ready interface.

  • Interface::Fwd = HOption<P>
  • Interface::Bwd = Ready<()>

Aliased Type§

struct Vr<P, const D: Dep = { Dep::Helpful }> { /* private fields */ }

Implementations§

source§

impl<P: Copy, const N: usize> Vr<(P, BoundedU<N>)>

source

pub fn branch(self) -> [Vr<P>; N]

A variation of branch for a valid-ready interface, that has the correct resolver type.

  • Payload: Only the selected interface’s payload will be valid.
  • Resolvers: The ingress ready signal follows the selected interface’s ready signal. If the selector is not valid, the ingress ready signal is true.
InterfaceIngressEgress
FwdHOption<P>Array<HOption<P>, N>
BwdReady<()>Array<Ready<()>, N>
source§

impl<P: Copy, const D: Dep> Vr<P, D>

source

pub fn lfork(self) -> (Vr<P, D>, Vr<P, D>)

A variation of lfork for a valid-ready interface, that has the correct resolver type.

  • Payload: All the egress payloads become available at once when all the egress ready signals are true. The payload value P is duplicated to mulitple interfaces.
  • Resolvers: The ingress ready signal is true if all the egress ready signals are true.
InterfaceIngressEgress
FwdHOption<P>(HOption<P>, HOption<P>)
BwdReady<()>(Ready<()>, Ready<()>)
source§

impl<P: Copy, const D: Dep> Vr<P, D>

source

pub fn fork_some(self) -> (Vr<P, { Dep::Demanding }>, Vr<P, { Dep::Demanding }>)

A variation of fork_some for a valid-ready interface, that has the correct resolver type.

  • Payload: Each egress payload becomes available when its own egress ready signal is true. The payload value P is duplicated to multiple interfaces.
  • Resolvers: The ingress ready signal is true if any of the egress ready signals are true.
InterfaceIngressEgress
FwdHOption<P>(HOption<P>, HOption<P>)
BwdReady<()>(Ready<()>, Ready<()>)
source§

impl<P1: Copy, P2: Copy, const D: Dep> Vr<(P1, P2), D>

source

pub fn unzip(self) -> (Vr<P1, D>, Vr<P2, D>)

A variation of unzip for a valid-ready interface, that has the correct resolver type.

  • Payload: Unzipped to multiple interfaces, and all the egress payloads become available at once when all the egress ready signals are true.
  • Resolvers: The ingress ready signal is true if all the egress ready signals are true.
InterfaceIngressEgress
FwdHOption<(P1, P2)>(HOption<P1>, HOption<P2>)
BwdReady<()>(Ready<()>, Ready<()>)
source§

impl<P1: Copy, P2: Copy, P3: Copy, const D: Dep> Vr<(P1, P2, P3), D>

source

pub fn unzip( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>)

A variation of unzip to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, const D: Dep> Vr<(P1, P2, P3, P4), D>

source

pub fn unzip( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>)

A variation of unzip to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5), D>

source

pub fn unzip( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>)

A variation of unzip to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, P6: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5, P6), D>

source

pub fn unzip( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>, Vr<P6, { Dep::Demanding }>)

A variation of unzip to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, P6: Copy, P7: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5, P6, P7), D>

source

pub fn unzip( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>, Vr<P6, { Dep::Demanding }>, Vr<P7, { Dep::Demanding }>)

A variation of unzip to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, P6: Copy, P7: Copy, P8: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5, P6, P7, P8), D>

source

pub fn unzip( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>, Vr<P6, { Dep::Demanding }>, Vr<P7, { Dep::Demanding }>, Vr<P8, { Dep::Demanding }>)

A variation of unzip to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, P6: Copy, P7: Copy, P8: Copy, P9: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5, P6, P7, P8, P9), D>

source

pub fn unzip( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>, Vr<P6, { Dep::Demanding }>, Vr<P7, { Dep::Demanding }>, Vr<P8, { Dep::Demanding }>, Vr<P9, { Dep::Demanding }>)

A variation of unzip to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, P6: Copy, P7: Copy, P8: Copy, P9: Copy, P10: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10), D>

source

pub fn unzip( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>, Vr<P6, { Dep::Demanding }>, Vr<P7, { Dep::Demanding }>, Vr<P8, { Dep::Demanding }>, Vr<P9, { Dep::Demanding }>, Vr<P10, { Dep::Demanding }>)

A variation of unzip to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, P6: Copy, P7: Copy, P8: Copy, P9: Copy, P10: Copy, P11: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11), D>

source

pub fn unzip( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>, Vr<P6, { Dep::Demanding }>, Vr<P7, { Dep::Demanding }>, Vr<P8, { Dep::Demanding }>, Vr<P9, { Dep::Demanding }>, Vr<P10, { Dep::Demanding }>, Vr<P11, { Dep::Demanding }>)

A variation of unzip to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, P6: Copy, P7: Copy, P8: Copy, P9: Copy, P10: Copy, P11: Copy, P12: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12), D>

source

pub fn unzip( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>, Vr<P6, { Dep::Demanding }>, Vr<P7, { Dep::Demanding }>, Vr<P8, { Dep::Demanding }>, Vr<P9, { Dep::Demanding }>, Vr<P10, { Dep::Demanding }>, Vr<P11, { Dep::Demanding }>, Vr<P12, { Dep::Demanding }>)

A variation of unzip to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P: Copy, const N: usize, const D: Dep> Vr<Array<P, N>, D>

source

pub fn unzip(self) -> [Vr<P, { Dep::Demanding }>; N]

A variation of unzip for a valid-ready interface, that has the correct resolver type.

  • Payload: Unzipped to multiple interfaces, and all the egress payloads become available at once when all the egress ready signals are true.
  • Resolvers: The ingress ready signal is true if all the egress ready signals are true.
InterfaceIngressEgress
FwdHOption<Array<P, N>>Array<HOption<P>, N>
BwdReady<()>Array<Ready<()>, N>
source§

impl<P1: Copy, P2: Copy, const D: Dep> Vr<(P1, P2), D>

source

pub fn unzip_some( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>)

A variation of unzip_some for a valid-ready interface, that has the correct resolver type.

  • Payload: Unzipped to multiple interfaces, and each egress payload becomes available when its own egress ready signal is true.
  • Resolvers: The ingress ready signal is true if any of the egress ready signals are true.
InterfaceIngressEgress
FwdHOption<(P1, P2)>(HOption<P1>, HOption<P2>)
BwdReady<()>(Ready<()>, Ready<()>)
source§

impl<P1: Copy, P2: Copy, P3: Copy, const D: Dep> Vr<(P1, P2, P3), D>

source

pub fn unzip_some( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>)

A variation of unzip_some to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, const D: Dep> Vr<(P1, P2, P3, P4), D>

source

pub fn unzip_some( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>)

A variation of unzip_some to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5), D>

source

pub fn unzip_some( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>)

A variation of unzip_some to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, P6: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5, P6), D>

source

pub fn unzip_some( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>, Vr<P6, { Dep::Demanding }>)

A variation of unzip_some to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, P6: Copy, P7: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5, P6, P7), D>

source

pub fn unzip_some( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>, Vr<P6, { Dep::Demanding }>, Vr<P7, { Dep::Demanding }>)

A variation of unzip_some to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, P6: Copy, P7: Copy, P8: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5, P6, P7, P8), D>

source

pub fn unzip_some( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>, Vr<P6, { Dep::Demanding }>, Vr<P7, { Dep::Demanding }>, Vr<P8, { Dep::Demanding }>)

A variation of unzip_some to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, P6: Copy, P7: Copy, P8: Copy, P9: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5, P6, P7, P8, P9), D>

source

pub fn unzip_some( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>, Vr<P6, { Dep::Demanding }>, Vr<P7, { Dep::Demanding }>, Vr<P8, { Dep::Demanding }>, Vr<P9, { Dep::Demanding }>)

A variation of unzip_some to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, P6: Copy, P7: Copy, P8: Copy, P9: Copy, P10: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10), D>

source

pub fn unzip_some( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>, Vr<P6, { Dep::Demanding }>, Vr<P7, { Dep::Demanding }>, Vr<P8, { Dep::Demanding }>, Vr<P9, { Dep::Demanding }>, Vr<P10, { Dep::Demanding }>)

A variation of unzip_some to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, P6: Copy, P7: Copy, P8: Copy, P9: Copy, P10: Copy, P11: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11), D>

source

pub fn unzip_some( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>, Vr<P6, { Dep::Demanding }>, Vr<P7, { Dep::Demanding }>, Vr<P8, { Dep::Demanding }>, Vr<P9, { Dep::Demanding }>, Vr<P10, { Dep::Demanding }>, Vr<P11, { Dep::Demanding }>)

A variation of unzip_some to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P1: Copy, P2: Copy, P3: Copy, P4: Copy, P5: Copy, P6: Copy, P7: Copy, P8: Copy, P9: Copy, P10: Copy, P11: Copy, P12: Copy, const D: Dep> Vr<(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12), D>

source

pub fn unzip_some( self ) -> (Vr<P1, { Dep::Demanding }>, Vr<P2, { Dep::Demanding }>, Vr<P3, { Dep::Demanding }>, Vr<P4, { Dep::Demanding }>, Vr<P5, { Dep::Demanding }>, Vr<P6, { Dep::Demanding }>, Vr<P7, { Dep::Demanding }>, Vr<P8, { Dep::Demanding }>, Vr<P9, { Dep::Demanding }>, Vr<P10, { Dep::Demanding }>, Vr<P11, { Dep::Demanding }>, Vr<P12, { Dep::Demanding }>)

A variation of unzip_some to 3-12 valid-ready interfaces. See the 2-tuple version for more information.

source§

impl<P: Copy, const N: usize, const D: Dep> Vr<Array<P, N>, D>

source

pub fn unzip_some(self) -> [Vr<P, { Dep::Demanding }>; N]

A variation of unzip_some for a valid-ready interface, that has the correct resolver type.

  • Payload: Unzipped to multiple interfaces, and each egress payload becomes available when its own egress ready signal is true.
  • Resolvers: The ingress ready signal is true if any of the egress ready signals are true.
InterfaceIngressEgress
FwdHOption<Array<P, N>>Array<HOption<P>, N>
BwdReady<()>Array<Ready<()>, N>
source§

impl<P: Copy, const D: Dep> Vr<P, D>

source

pub fn reg_fwd_ready(self) -> Vr<P>

A register that is enabled only if the egress ready signal is true.

  • Payload: Outputs the stored payload.
  • Resolver: Preserved.
InterfaceIngressEgress
FwdHOption<P>HOption<P>
BwdReady<()>Ready<()>
source

pub fn reg_bwd(self) -> Vr<P>

A backward register for the resolver ready signal.

  • Payload: Preserved.
  • Resolver: The egress ready signal is stored, and outputted after 1 cycle.
InterfaceIngressEgress
FwdHOption<P>HOption<P>
BwdReady<()>Ready<()>
source

pub fn reg_bwd_drop(self) -> Vr<P>

A backward register for the resolver ready signal that drops the payload if the stored ready signal is false.

  • Payload: Dropped if the stored ready signal is false.
  • Resolver: The egress ready signal is stored, and outputted after 1 cycle.
InterfaceIngressEgress
FwdHOption<P>HOption<P>
BwdReady<()>Ready<()>
source§

impl<P: Copy, const D: Dep> Vr<P, D>

source

pub fn reg_skid(self) -> Vr<P>

A skid-buffer for a valid-ready interface.

InterfaceIngressEgress
FwdHOption<P>HOption<P>
BwdReady<()>Ready<()>
source§

impl<P: Copy> Vr<P>

source

pub fn constant(value: P) -> Vr<P>

A constant signal.

  • Payload: Always valid.
  • Resolver: Ignored.
InterfaceEgress
FwdHOption<P>
BwdReady<()>
source§

impl<P: Copy> Vr<P>

source

pub fn block_into_hazard_vr<EH: Hazard<P = P>>( self ) -> I<EH, { Dep::Demanding }>

A variation of I::block_into_hazard for a valid-ready interface that drops the resolver.

  • Payload: Preserved.
  • Resolver: The ingress ready signal will be turned off to block ingress transfers if the egress ready condition EH::ready is false. The egress resolver EH::R is dropped.
InterfaceIngressEgress
FwdHOption<P>HOption<P>
BwdReady<()>EH::R