add a simulator #3
|
@ -1788,6 +1788,84 @@ impl_cast_bit_op!(CastClockToBool, Clock, Bool);
|
||||||
impl_cast_bit_op!(CastClockToUInt, Clock, UInt<1>, #[dyn] UInt);
|
impl_cast_bit_op!(CastClockToUInt, Clock, UInt<1>, #[dyn] UInt);
|
||||||
impl_cast_bit_op!(CastClockToSInt, Clock, SInt<1>, #[dyn] SInt);
|
impl_cast_bit_op!(CastClockToSInt, Clock, SInt<1>, #[dyn] SInt);
|
||||||
|
|
||||||
|
impl ExprCastTo<AsyncReset> for AsyncReset {
|
||||||
|
fn cast_to(src: Expr<Self>, _to_type: AsyncReset) -> Expr<AsyncReset> {
|
||||||
|
src
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ExprCastTo<SyncReset> for AsyncReset {
|
||||||
|
fn cast_to(src: Expr<Self>, to_type: SyncReset) -> Expr<SyncReset> {
|
||||||
|
src.cast_to(Bool).cast_to(to_type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ExprCastTo<Clock> for AsyncReset {
|
||||||
|
fn cast_to(src: Expr<Self>, to_type: Clock) -> Expr<Clock> {
|
||||||
|
src.cast_to(Bool).cast_to(to_type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ExprCastTo<AsyncReset> for SyncReset {
|
||||||
|
fn cast_to(src: Expr<Self>, to_type: AsyncReset) -> Expr<AsyncReset> {
|
||||||
|
src.cast_to(Bool).cast_to(to_type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ExprCastTo<SyncReset> for SyncReset {
|
||||||
|
fn cast_to(src: Expr<Self>, _to_type: SyncReset) -> Expr<SyncReset> {
|
||||||
|
src
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ExprCastTo<Clock> for SyncReset {
|
||||||
|
fn cast_to(src: Expr<Self>, to_type: Clock) -> Expr<Clock> {
|
||||||
|
src.cast_to(Bool).cast_to(to_type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ExprCastTo<AsyncReset> for Reset {
|
||||||
|
fn cast_to(src: Expr<Self>, to_type: AsyncReset) -> Expr<AsyncReset> {
|
||||||
|
src.cast_to(Bool).cast_to(to_type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ExprCastTo<SyncReset> for Reset {
|
||||||
|
fn cast_to(src: Expr<Self>, to_type: SyncReset) -> Expr<SyncReset> {
|
||||||
|
src.cast_to(Bool).cast_to(to_type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ExprCastTo<Reset> for Reset {
|
||||||
|
fn cast_to(src: Expr<Self>, _to_type: Reset) -> Expr<Reset> {
|
||||||
|
src
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ExprCastTo<Clock> for Reset {
|
||||||
|
fn cast_to(src: Expr<Self>, to_type: Clock) -> Expr<Clock> {
|
||||||
|
src.cast_to(Bool).cast_to(to_type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ExprCastTo<AsyncReset> for Clock {
|
||||||
|
fn cast_to(src: Expr<Self>, to_type: AsyncReset) -> Expr<AsyncReset> {
|
||||||
|
src.cast_to(Bool).cast_to(to_type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ExprCastTo<SyncReset> for Clock {
|
||||||
|
fn cast_to(src: Expr<Self>, to_type: SyncReset) -> Expr<SyncReset> {
|
||||||
|
src.cast_to(Bool).cast_to(to_type)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ExprCastTo<Clock> for Clock {
|
||||||
|
fn cast_to(src: Expr<Self>, _to_type: Clock) -> Expr<Clock> {
|
||||||
|
src
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone, PartialEq, Eq, Hash)]
|
#[derive(Copy, Clone, PartialEq, Eq, Hash)]
|
||||||
pub struct FieldAccess<FieldType: Type = CanonicalType> {
|
pub struct FieldAccess<FieldType: Type = CanonicalType> {
|
||||||
base: Expr<Bundle>,
|
base: Expr<Bundle>,
|
||||||
|
|
Loading…
Reference in a new issue