upgrade to Fayalite edcc5927a5f9ebca6
as part of this I switched to using Fayalite's UIntInRangeInclusive instead of using a custom Length struct
This commit is contained in:
parent
0e7a518bd0
commit
5e8bc3e580
6 changed files with 608 additions and 691 deletions
|
|
@ -5,6 +5,7 @@ use fayalite::{
|
|||
expr::ops::{ArrayLiteral, ExprPartialEq},
|
||||
intern::Interned,
|
||||
prelude::*,
|
||||
sim::value::SimValuePartialEq,
|
||||
};
|
||||
use std::{fmt, marker::PhantomData, ops::Range};
|
||||
|
||||
|
|
@ -181,6 +182,12 @@ impl ExprPartialEq<Self> for OutputIntegerMode {
|
|||
}
|
||||
}
|
||||
|
||||
impl SimValuePartialEq<Self> for OutputIntegerMode {
|
||||
fn sim_value_eq(this: &SimValue<Self>, other: &SimValue<Self>) -> bool {
|
||||
SimValue::opaque(this) == SimValue::opaque(other)
|
||||
}
|
||||
}
|
||||
|
||||
pub const MOP_IMM_WIDTH: usize = 34;
|
||||
pub const MOP_MIN_REG_WIDTH: usize = 8;
|
||||
pub const COMMON_MOP_SRC_LEN: usize = 3;
|
||||
|
|
|
|||
|
|
@ -120,10 +120,7 @@ pub fn unit_free_regs_tracker(
|
|||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use fayalite::{
|
||||
cli::FormalMode, firrtl::ExportOptions,
|
||||
module::transform::simplify_enums::SimplifyEnumsKind, testing::assert_formal,
|
||||
};
|
||||
use fayalite::{firrtl::ExportOptions, module::transform::simplify_enums::SimplifyEnumsKind};
|
||||
use std::num::NonZero;
|
||||
|
||||
fn test_unit_free_regs_tracker(
|
||||
|
|
|
|||
|
|
@ -1,147 +1,10 @@
|
|||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
// See Notices.txt for copyright information
|
||||
|
||||
use fayalite::{
|
||||
expr::ops::{ExprCastTo, ExprIndex, ExprPartialEq, ExprPartialOrd},
|
||||
int::SizeType,
|
||||
intern::{Intern, Interned},
|
||||
prelude::*,
|
||||
ty::{MatchVariantWithoutScope, StaticType, TypeProperties},
|
||||
};
|
||||
use std::{marker::PhantomData, ops::Index};
|
||||
use fayalite::{expr::ops::ExprIndex, int::UIntInRangeInclusiveType, prelude::*};
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug)]
|
||||
pub struct Length<Max: Size> {
|
||||
ty: UInt,
|
||||
_phantom: PhantomData<Max>,
|
||||
}
|
||||
|
||||
impl<Max: Size> Length<Max> {
|
||||
pub fn new(max: Max::SizeType) -> Self {
|
||||
Self {
|
||||
ty: UInt::range_inclusive(0..=Max::as_usize(max)),
|
||||
_phantom: PhantomData,
|
||||
}
|
||||
}
|
||||
pub fn ty(self) -> UInt {
|
||||
self.ty
|
||||
}
|
||||
pub fn zero(self) -> Expr<Self> {
|
||||
Self::from_uint_unchecked(self.ty.zero())
|
||||
}
|
||||
pub fn from_uint_unchecked(v: impl ToExpr<Type = UInt>) -> Expr<Self> {
|
||||
Expr::from_canonical(Expr::canonical(v.to_expr()))
|
||||
}
|
||||
pub fn cast_from_uint_unchecked<SrcWidth: Size>(
|
||||
self,
|
||||
v: impl ToExpr<Type = UIntType<SrcWidth>>,
|
||||
) -> Expr<Self> {
|
||||
Self::from_uint_unchecked(v.to_expr().cast_to(self.ty))
|
||||
}
|
||||
pub fn as_uint(this: impl ToExpr<Type = Self>) -> Expr<UInt> {
|
||||
let this = this.to_expr();
|
||||
this.cast_to(Expr::ty(this).ty)
|
||||
}
|
||||
}
|
||||
|
||||
impl<Max: Size, DestWidth: Size> ExprCastTo<UIntType<DestWidth>> for Length<Max> {
|
||||
fn cast_to(src: Expr<Self>, to_type: UIntType<DestWidth>) -> Expr<UIntType<DestWidth>> {
|
||||
Expr::<UInt>::from_canonical(Expr::canonical(src)).cast_to(to_type)
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(non_upper_case_globals)]
|
||||
pub const Length: __LengthWithoutGenerics = __LengthWithoutGenerics {};
|
||||
|
||||
#[non_exhaustive]
|
||||
pub struct __LengthWithoutGenerics {}
|
||||
|
||||
impl<M: SizeType> Index<M> for __LengthWithoutGenerics {
|
||||
type Output = Length<M::Size>;
|
||||
|
||||
fn index(&self, max: M) -> &Self::Output {
|
||||
Interned::into_inner(Length::new(max).intern_sized())
|
||||
}
|
||||
}
|
||||
|
||||
impl<Max: Size> Type for Length<Max> {
|
||||
type BaseType = UInt;
|
||||
type MaskType = Bool;
|
||||
type MatchVariant = Expr<Self>;
|
||||
type MatchActiveScope = ();
|
||||
type MatchVariantAndInactiveScope = MatchVariantWithoutScope<Self::MatchVariant>;
|
||||
type MatchVariantsIter = std::iter::Once<Self::MatchVariantAndInactiveScope>;
|
||||
fn match_variants(
|
||||
this: Expr<Self>,
|
||||
source_location: SourceLocation,
|
||||
) -> Self::MatchVariantsIter {
|
||||
let _ = source_location;
|
||||
std::iter::once(MatchVariantWithoutScope(this))
|
||||
}
|
||||
|
||||
fn mask_type(&self) -> Self::MaskType {
|
||||
Bool
|
||||
}
|
||||
|
||||
fn canonical(&self) -> CanonicalType {
|
||||
self.ty.canonical()
|
||||
}
|
||||
|
||||
fn from_canonical(canonical_type: CanonicalType) -> Self {
|
||||
let ty = <UInt>::from_canonical(canonical_type);
|
||||
if let Some(known_max) = Max::KNOWN_VALUE {
|
||||
assert_eq!(ty, UInt::range_inclusive(0..=known_max));
|
||||
}
|
||||
Self {
|
||||
ty,
|
||||
_phantom: PhantomData,
|
||||
}
|
||||
}
|
||||
|
||||
fn source_location() -> SourceLocation {
|
||||
SourceLocation::caller()
|
||||
}
|
||||
}
|
||||
|
||||
impl<Max: KnownSize> StaticType for Length<Max> {
|
||||
const TYPE: Self = Self {
|
||||
ty: UInt {
|
||||
width: Max::VALUE.next_power_of_two().ilog2() as usize,
|
||||
},
|
||||
_phantom: PhantomData,
|
||||
};
|
||||
const MASK_TYPE: Self::MaskType = Bool;
|
||||
const TYPE_PROPERTIES: TypeProperties = {
|
||||
let mut p = <UInt<1>>::TYPE_PROPERTIES;
|
||||
p.bit_width = Self::TYPE.ty.width;
|
||||
p
|
||||
};
|
||||
const MASK_TYPE_PROPERTIES: TypeProperties = Bool::TYPE_PROPERTIES;
|
||||
}
|
||||
|
||||
impl<Max: Size> ExprPartialEq<Self> for Length<Max> {
|
||||
fn cmp_eq(lhs: Expr<Self>, rhs: Expr<Self>) -> Expr<Bool> {
|
||||
Self::as_uint(lhs).cmp_eq(Self::as_uint(rhs))
|
||||
}
|
||||
fn cmp_ne(lhs: Expr<Self>, rhs: Expr<Self>) -> Expr<Bool> {
|
||||
Self::as_uint(lhs).cmp_ne(Self::as_uint(rhs))
|
||||
}
|
||||
}
|
||||
|
||||
impl<Max: Size> ExprPartialOrd<Self> for Length<Max> {
|
||||
fn cmp_lt(lhs: Expr<Self>, rhs: Expr<Self>) -> Expr<Bool> {
|
||||
Self::as_uint(lhs).cmp_lt(Self::as_uint(rhs))
|
||||
}
|
||||
fn cmp_le(lhs: Expr<Self>, rhs: Expr<Self>) -> Expr<Bool> {
|
||||
Self::as_uint(lhs).cmp_le(Self::as_uint(rhs))
|
||||
}
|
||||
fn cmp_gt(lhs: Expr<Self>, rhs: Expr<Self>) -> Expr<Bool> {
|
||||
Self::as_uint(lhs).cmp_gt(Self::as_uint(rhs))
|
||||
}
|
||||
fn cmp_ge(lhs: Expr<Self>, rhs: Expr<Self>) -> Expr<Bool> {
|
||||
Self::as_uint(lhs).cmp_ge(Self::as_uint(rhs))
|
||||
}
|
||||
}
|
||||
#[hdl]
|
||||
pub type Length<Max: Size> = UIntInRangeInclusiveType<ConstUsize<0>, Max>;
|
||||
|
||||
/// like [`std::vec::Vec`], except with a [`Expr`] for [`len()`][`Self::len()`] and a fixed capacity
|
||||
#[hdl]
|
||||
|
|
@ -156,7 +19,7 @@ impl<T: Type, N: Size> ArrayVec<T, N> {
|
|||
#[hdl]
|
||||
ArrayVec {
|
||||
elements: self.elements.uninit(),
|
||||
len: self.len.zero(),
|
||||
len: 0u8.cast_to(self.len),
|
||||
}
|
||||
}
|
||||
pub fn element(self) -> T {
|
||||
|
|
@ -176,7 +39,7 @@ impl<T: Type, N: Size> ArrayVec<T, N> {
|
|||
let elements = elements.to_expr();
|
||||
let len = len.to_expr();
|
||||
assert_eq!(
|
||||
Length::new(N::from_usize(Expr::ty(elements).len())),
|
||||
Length[N::from_usize(Expr::ty(elements).len())],
|
||||
Expr::ty(len),
|
||||
"len type mismatch",
|
||||
);
|
||||
|
|
@ -191,7 +54,7 @@ impl<T: Type, N: Size> ArrayVec<T, N> {
|
|||
}
|
||||
pub fn is_empty(this: impl ToExpr<Type = Self>) -> Expr<Bool> {
|
||||
let len = Self::len(this);
|
||||
len.cmp_eq(Expr::ty(len).zero())
|
||||
len.cmp_eq(0u8)
|
||||
}
|
||||
pub fn capacity(self) -> usize {
|
||||
self.elements.len()
|
||||
|
|
@ -207,7 +70,7 @@ impl<T: Type, N: Size> ArrayVec<T, N> {
|
|||
let this = this.to_expr();
|
||||
for (index, element) in this.elements.into_iter().enumerate() {
|
||||
#[hdl]
|
||||
if index.cmp_lt(Length::as_uint(this.len)) {
|
||||
if index.cmp_lt(this.len) {
|
||||
f(index, element);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16832,38 +16832,6 @@ $upscope $end
|
|||
$upscope $end
|
||||
$enddefinitions $end
|
||||
$dumpvars
|
||||
0vg
|
||||
0wg
|
||||
0xg
|
||||
0yg
|
||||
0zg
|
||||
0{g
|
||||
0|g
|
||||
0}g
|
||||
0~g
|
||||
0!h
|
||||
0"h
|
||||
0#h
|
||||
0$h
|
||||
0%h
|
||||
0&h
|
||||
0'h
|
||||
0(h
|
||||
0)h
|
||||
0*h
|
||||
0+h
|
||||
0,h
|
||||
0-h
|
||||
0.h
|
||||
0/h
|
||||
00h
|
||||
01h
|
||||
02h
|
||||
03h
|
||||
04h
|
||||
05h
|
||||
06h
|
||||
07h
|
||||
b0 (_
|
||||
b0 ia
|
||||
b0 )_
|
||||
|
|
@ -17370,6 +17338,26 @@ b0 ga
|
|||
b0 Jd
|
||||
b0 ha
|
||||
b0 Kd
|
||||
b0 Ld
|
||||
b0 Nd
|
||||
b0 Md
|
||||
b0 Od
|
||||
0Pd
|
||||
0Qd
|
||||
0Rd
|
||||
0Sd
|
||||
0Td
|
||||
0Ud
|
||||
0Vd
|
||||
0Wd
|
||||
0Xd
|
||||
0Yd
|
||||
0Zd
|
||||
0[d
|
||||
0\d
|
||||
0]d
|
||||
0^d
|
||||
0_d
|
||||
0`d
|
||||
0ad
|
||||
0bd
|
||||
|
|
@ -17386,438 +17374,6 @@ b0 Kd
|
|||
0md
|
||||
0nd
|
||||
0od
|
||||
b0 8h
|
||||
0Hh
|
||||
0Xh
|
||||
0hh
|
||||
0xh
|
||||
0*i
|
||||
0:i
|
||||
0Ji
|
||||
0Zi
|
||||
b0 9h
|
||||
0Ih
|
||||
0Yh
|
||||
0ih
|
||||
0yh
|
||||
0+i
|
||||
0;i
|
||||
0Ki
|
||||
0[i
|
||||
b0 :h
|
||||
0Jh
|
||||
0Zh
|
||||
0jh
|
||||
0zh
|
||||
0,i
|
||||
0<i
|
||||
0Li
|
||||
0\i
|
||||
b0 ;h
|
||||
0Kh
|
||||
0[h
|
||||
0kh
|
||||
0{h
|
||||
0-i
|
||||
0=i
|
||||
0Mi
|
||||
0]i
|
||||
b0 <h
|
||||
0Lh
|
||||
0\h
|
||||
0lh
|
||||
0|h
|
||||
0.i
|
||||
0>i
|
||||
0Ni
|
||||
0^i
|
||||
b0 =h
|
||||
0Mh
|
||||
0]h
|
||||
0mh
|
||||
0}h
|
||||
0/i
|
||||
0?i
|
||||
0Oi
|
||||
0_i
|
||||
b0 >h
|
||||
0Nh
|
||||
0^h
|
||||
0nh
|
||||
0~h
|
||||
00i
|
||||
0@i
|
||||
0Pi
|
||||
0`i
|
||||
b0 ?h
|
||||
0Oh
|
||||
0_h
|
||||
0oh
|
||||
0!i
|
||||
01i
|
||||
0Ai
|
||||
0Qi
|
||||
0ai
|
||||
b0 @h
|
||||
0Ph
|
||||
0`h
|
||||
0ph
|
||||
0"i
|
||||
02i
|
||||
0Bi
|
||||
0Ri
|
||||
0bi
|
||||
b0 Ah
|
||||
0Qh
|
||||
0ah
|
||||
0qh
|
||||
0#i
|
||||
03i
|
||||
0Ci
|
||||
0Si
|
||||
0ci
|
||||
b0 Bh
|
||||
0Rh
|
||||
0bh
|
||||
0rh
|
||||
0$i
|
||||
04i
|
||||
0Di
|
||||
0Ti
|
||||
0di
|
||||
b0 Ch
|
||||
0Sh
|
||||
0ch
|
||||
0sh
|
||||
0%i
|
||||
05i
|
||||
0Ei
|
||||
0Ui
|
||||
0ei
|
||||
b0 Dh
|
||||
0Th
|
||||
0dh
|
||||
0th
|
||||
0&i
|
||||
06i
|
||||
0Fi
|
||||
0Vi
|
||||
0fi
|
||||
b0 Eh
|
||||
0Uh
|
||||
0eh
|
||||
0uh
|
||||
0'i
|
||||
07i
|
||||
0Gi
|
||||
0Wi
|
||||
0gi
|
||||
b0 Fh
|
||||
0Vh
|
||||
0fh
|
||||
0vh
|
||||
0(i
|
||||
08i
|
||||
0Hi
|
||||
0Xi
|
||||
0hi
|
||||
b0 Gh
|
||||
0Wh
|
||||
0gh
|
||||
0wh
|
||||
0)i
|
||||
09i
|
||||
0Ii
|
||||
0Yi
|
||||
0ii
|
||||
b0 Df
|
||||
0Tf
|
||||
0df
|
||||
0tf
|
||||
0&g
|
||||
06g
|
||||
0Fg
|
||||
0Vg
|
||||
0fg
|
||||
b0 Ef
|
||||
0Uf
|
||||
0ef
|
||||
0uf
|
||||
0'g
|
||||
07g
|
||||
0Gg
|
||||
0Wg
|
||||
0gg
|
||||
b0 Ff
|
||||
0Vf
|
||||
0ff
|
||||
0vf
|
||||
0(g
|
||||
08g
|
||||
0Hg
|
||||
0Xg
|
||||
0hg
|
||||
b0 Gf
|
||||
0Wf
|
||||
0gf
|
||||
0wf
|
||||
0)g
|
||||
09g
|
||||
0Ig
|
||||
0Yg
|
||||
0ig
|
||||
b0 Hf
|
||||
0Xf
|
||||
0hf
|
||||
0xf
|
||||
0*g
|
||||
0:g
|
||||
0Jg
|
||||
0Zg
|
||||
0jg
|
||||
b0 If
|
||||
0Yf
|
||||
0if
|
||||
0yf
|
||||
0+g
|
||||
0;g
|
||||
0Kg
|
||||
0[g
|
||||
0kg
|
||||
b0 Jf
|
||||
0Zf
|
||||
0jf
|
||||
0zf
|
||||
0,g
|
||||
0<g
|
||||
0Lg
|
||||
0\g
|
||||
0lg
|
||||
b0 Kf
|
||||
0[f
|
||||
0kf
|
||||
0{f
|
||||
0-g
|
||||
0=g
|
||||
0Mg
|
||||
0]g
|
||||
0mg
|
||||
b0 Lf
|
||||
0\f
|
||||
0lf
|
||||
0|f
|
||||
0.g
|
||||
0>g
|
||||
0Ng
|
||||
0^g
|
||||
0ng
|
||||
b0 Mf
|
||||
0]f
|
||||
0mf
|
||||
0}f
|
||||
0/g
|
||||
0?g
|
||||
0Og
|
||||
0_g
|
||||
0og
|
||||
b0 Nf
|
||||
0^f
|
||||
0nf
|
||||
0~f
|
||||
00g
|
||||
0@g
|
||||
0Pg
|
||||
0`g
|
||||
0pg
|
||||
b0 Of
|
||||
0_f
|
||||
0of
|
||||
0!g
|
||||
01g
|
||||
0Ag
|
||||
0Qg
|
||||
0ag
|
||||
0qg
|
||||
b0 Pf
|
||||
0`f
|
||||
0pf
|
||||
0"g
|
||||
02g
|
||||
0Bg
|
||||
0Rg
|
||||
0bg
|
||||
0rg
|
||||
b0 Qf
|
||||
0af
|
||||
0qf
|
||||
0#g
|
||||
03g
|
||||
0Cg
|
||||
0Sg
|
||||
0cg
|
||||
0sg
|
||||
b0 Rf
|
||||
0bf
|
||||
0rf
|
||||
0$g
|
||||
04g
|
||||
0Dg
|
||||
0Tg
|
||||
0dg
|
||||
0tg
|
||||
b0 Sf
|
||||
0cf
|
||||
0sf
|
||||
0%g
|
||||
05g
|
||||
0Eg
|
||||
0Ug
|
||||
0eg
|
||||
0ug
|
||||
b0 ji
|
||||
0zi
|
||||
0,j
|
||||
0<j
|
||||
0Lj
|
||||
0\j
|
||||
0lj
|
||||
0|j
|
||||
0.k
|
||||
b0 ki
|
||||
0{i
|
||||
0-j
|
||||
0=j
|
||||
0Mj
|
||||
0]j
|
||||
0mj
|
||||
0}j
|
||||
0/k
|
||||
b0 li
|
||||
0|i
|
||||
0.j
|
||||
0>j
|
||||
0Nj
|
||||
0^j
|
||||
0nj
|
||||
0~j
|
||||
00k
|
||||
b0 mi
|
||||
0}i
|
||||
0/j
|
||||
0?j
|
||||
0Oj
|
||||
0_j
|
||||
0oj
|
||||
0!k
|
||||
01k
|
||||
b0 ni
|
||||
0~i
|
||||
00j
|
||||
0@j
|
||||
0Pj
|
||||
0`j
|
||||
0pj
|
||||
0"k
|
||||
02k
|
||||
b0 oi
|
||||
0!j
|
||||
01j
|
||||
0Aj
|
||||
0Qj
|
||||
0aj
|
||||
0qj
|
||||
0#k
|
||||
03k
|
||||
b0 pi
|
||||
0"j
|
||||
02j
|
||||
0Bj
|
||||
0Rj
|
||||
0bj
|
||||
0rj
|
||||
0$k
|
||||
04k
|
||||
b0 qi
|
||||
0#j
|
||||
03j
|
||||
0Cj
|
||||
0Sj
|
||||
0cj
|
||||
0sj
|
||||
0%k
|
||||
05k
|
||||
b0 ri
|
||||
0$j
|
||||
04j
|
||||
0Dj
|
||||
0Tj
|
||||
0dj
|
||||
0tj
|
||||
0&k
|
||||
06k
|
||||
b0 si
|
||||
0%j
|
||||
05j
|
||||
0Ej
|
||||
0Uj
|
||||
0ej
|
||||
0uj
|
||||
0'k
|
||||
07k
|
||||
b0 ti
|
||||
0&j
|
||||
06j
|
||||
0Fj
|
||||
0Vj
|
||||
0fj
|
||||
0vj
|
||||
0(k
|
||||
08k
|
||||
b0 ui
|
||||
0'j
|
||||
07j
|
||||
0Gj
|
||||
0Wj
|
||||
0gj
|
||||
0wj
|
||||
0)k
|
||||
09k
|
||||
b0 vi
|
||||
0(j
|
||||
08j
|
||||
0Hj
|
||||
0Xj
|
||||
0hj
|
||||
0xj
|
||||
0*k
|
||||
0:k
|
||||
b0 wi
|
||||
0)j
|
||||
09j
|
||||
0Ij
|
||||
0Yj
|
||||
0ij
|
||||
0yj
|
||||
0+k
|
||||
0;k
|
||||
b0 xi
|
||||
0*j
|
||||
0:j
|
||||
0Jj
|
||||
0Zj
|
||||
0jj
|
||||
0zj
|
||||
0,k
|
||||
0<k
|
||||
b0 yi
|
||||
0+j
|
||||
0;j
|
||||
0Kj
|
||||
0[j
|
||||
0kj
|
||||
0{j
|
||||
0-k
|
||||
0=k
|
||||
b0 pd
|
||||
0"e
|
||||
02e
|
||||
|
|
@ -17962,26 +17518,470 @@ b0 !e
|
|||
0#f
|
||||
03f
|
||||
0Cf
|
||||
0Pd
|
||||
0Qd
|
||||
0Rd
|
||||
0Sd
|
||||
0Td
|
||||
0Ud
|
||||
0Vd
|
||||
0Wd
|
||||
0Xd
|
||||
0Yd
|
||||
0Zd
|
||||
0[d
|
||||
0\d
|
||||
0]d
|
||||
0^d
|
||||
0_d
|
||||
b0 Ld
|
||||
b0 Nd
|
||||
b0 Md
|
||||
b0 Od
|
||||
b0 Df
|
||||
0Tf
|
||||
0df
|
||||
0tf
|
||||
0&g
|
||||
06g
|
||||
0Fg
|
||||
0Vg
|
||||
0fg
|
||||
b0 Ef
|
||||
0Uf
|
||||
0ef
|
||||
0uf
|
||||
0'g
|
||||
07g
|
||||
0Gg
|
||||
0Wg
|
||||
0gg
|
||||
b0 Ff
|
||||
0Vf
|
||||
0ff
|
||||
0vf
|
||||
0(g
|
||||
08g
|
||||
0Hg
|
||||
0Xg
|
||||
0hg
|
||||
b0 Gf
|
||||
0Wf
|
||||
0gf
|
||||
0wf
|
||||
0)g
|
||||
09g
|
||||
0Ig
|
||||
0Yg
|
||||
0ig
|
||||
b0 Hf
|
||||
0Xf
|
||||
0hf
|
||||
0xf
|
||||
0*g
|
||||
0:g
|
||||
0Jg
|
||||
0Zg
|
||||
0jg
|
||||
b0 If
|
||||
0Yf
|
||||
0if
|
||||
0yf
|
||||
0+g
|
||||
0;g
|
||||
0Kg
|
||||
0[g
|
||||
0kg
|
||||
b0 Jf
|
||||
0Zf
|
||||
0jf
|
||||
0zf
|
||||
0,g
|
||||
0<g
|
||||
0Lg
|
||||
0\g
|
||||
0lg
|
||||
b0 Kf
|
||||
0[f
|
||||
0kf
|
||||
0{f
|
||||
0-g
|
||||
0=g
|
||||
0Mg
|
||||
0]g
|
||||
0mg
|
||||
b0 Lf
|
||||
0\f
|
||||
0lf
|
||||
0|f
|
||||
0.g
|
||||
0>g
|
||||
0Ng
|
||||
0^g
|
||||
0ng
|
||||
b0 Mf
|
||||
0]f
|
||||
0mf
|
||||
0}f
|
||||
0/g
|
||||
0?g
|
||||
0Og
|
||||
0_g
|
||||
0og
|
||||
b0 Nf
|
||||
0^f
|
||||
0nf
|
||||
0~f
|
||||
00g
|
||||
0@g
|
||||
0Pg
|
||||
0`g
|
||||
0pg
|
||||
b0 Of
|
||||
0_f
|
||||
0of
|
||||
0!g
|
||||
01g
|
||||
0Ag
|
||||
0Qg
|
||||
0ag
|
||||
0qg
|
||||
b0 Pf
|
||||
0`f
|
||||
0pf
|
||||
0"g
|
||||
02g
|
||||
0Bg
|
||||
0Rg
|
||||
0bg
|
||||
0rg
|
||||
b0 Qf
|
||||
0af
|
||||
0qf
|
||||
0#g
|
||||
03g
|
||||
0Cg
|
||||
0Sg
|
||||
0cg
|
||||
0sg
|
||||
b0 Rf
|
||||
0bf
|
||||
0rf
|
||||
0$g
|
||||
04g
|
||||
0Dg
|
||||
0Tg
|
||||
0dg
|
||||
0tg
|
||||
b0 Sf
|
||||
0cf
|
||||
0sf
|
||||
0%g
|
||||
05g
|
||||
0Eg
|
||||
0Ug
|
||||
0eg
|
||||
0ug
|
||||
0vg
|
||||
0wg
|
||||
0xg
|
||||
0yg
|
||||
0zg
|
||||
0{g
|
||||
0|g
|
||||
0}g
|
||||
0~g
|
||||
0!h
|
||||
0"h
|
||||
0#h
|
||||
0$h
|
||||
0%h
|
||||
0&h
|
||||
0'h
|
||||
0(h
|
||||
0)h
|
||||
0*h
|
||||
0+h
|
||||
0,h
|
||||
0-h
|
||||
0.h
|
||||
0/h
|
||||
00h
|
||||
01h
|
||||
02h
|
||||
03h
|
||||
04h
|
||||
05h
|
||||
06h
|
||||
07h
|
||||
b0 8h
|
||||
0Hh
|
||||
0Xh
|
||||
0hh
|
||||
0xh
|
||||
0*i
|
||||
0:i
|
||||
0Ji
|
||||
0Zi
|
||||
b0 9h
|
||||
0Ih
|
||||
0Yh
|
||||
0ih
|
||||
0yh
|
||||
0+i
|
||||
0;i
|
||||
0Ki
|
||||
0[i
|
||||
b0 :h
|
||||
0Jh
|
||||
0Zh
|
||||
0jh
|
||||
0zh
|
||||
0,i
|
||||
0<i
|
||||
0Li
|
||||
0\i
|
||||
b0 ;h
|
||||
0Kh
|
||||
0[h
|
||||
0kh
|
||||
0{h
|
||||
0-i
|
||||
0=i
|
||||
0Mi
|
||||
0]i
|
||||
b0 <h
|
||||
0Lh
|
||||
0\h
|
||||
0lh
|
||||
0|h
|
||||
0.i
|
||||
0>i
|
||||
0Ni
|
||||
0^i
|
||||
b0 =h
|
||||
0Mh
|
||||
0]h
|
||||
0mh
|
||||
0}h
|
||||
0/i
|
||||
0?i
|
||||
0Oi
|
||||
0_i
|
||||
b0 >h
|
||||
0Nh
|
||||
0^h
|
||||
0nh
|
||||
0~h
|
||||
00i
|
||||
0@i
|
||||
0Pi
|
||||
0`i
|
||||
b0 ?h
|
||||
0Oh
|
||||
0_h
|
||||
0oh
|
||||
0!i
|
||||
01i
|
||||
0Ai
|
||||
0Qi
|
||||
0ai
|
||||
b0 @h
|
||||
0Ph
|
||||
0`h
|
||||
0ph
|
||||
0"i
|
||||
02i
|
||||
0Bi
|
||||
0Ri
|
||||
0bi
|
||||
b0 Ah
|
||||
0Qh
|
||||
0ah
|
||||
0qh
|
||||
0#i
|
||||
03i
|
||||
0Ci
|
||||
0Si
|
||||
0ci
|
||||
b0 Bh
|
||||
0Rh
|
||||
0bh
|
||||
0rh
|
||||
0$i
|
||||
04i
|
||||
0Di
|
||||
0Ti
|
||||
0di
|
||||
b0 Ch
|
||||
0Sh
|
||||
0ch
|
||||
0sh
|
||||
0%i
|
||||
05i
|
||||
0Ei
|
||||
0Ui
|
||||
0ei
|
||||
b0 Dh
|
||||
0Th
|
||||
0dh
|
||||
0th
|
||||
0&i
|
||||
06i
|
||||
0Fi
|
||||
0Vi
|
||||
0fi
|
||||
b0 Eh
|
||||
0Uh
|
||||
0eh
|
||||
0uh
|
||||
0'i
|
||||
07i
|
||||
0Gi
|
||||
0Wi
|
||||
0gi
|
||||
b0 Fh
|
||||
0Vh
|
||||
0fh
|
||||
0vh
|
||||
0(i
|
||||
08i
|
||||
0Hi
|
||||
0Xi
|
||||
0hi
|
||||
b0 Gh
|
||||
0Wh
|
||||
0gh
|
||||
0wh
|
||||
0)i
|
||||
09i
|
||||
0Ii
|
||||
0Yi
|
||||
0ii
|
||||
b0 ji
|
||||
0zi
|
||||
0,j
|
||||
0<j
|
||||
0Lj
|
||||
0\j
|
||||
0lj
|
||||
0|j
|
||||
0.k
|
||||
b0 ki
|
||||
0{i
|
||||
0-j
|
||||
0=j
|
||||
0Mj
|
||||
0]j
|
||||
0mj
|
||||
0}j
|
||||
0/k
|
||||
b0 li
|
||||
0|i
|
||||
0.j
|
||||
0>j
|
||||
0Nj
|
||||
0^j
|
||||
0nj
|
||||
0~j
|
||||
00k
|
||||
b0 mi
|
||||
0}i
|
||||
0/j
|
||||
0?j
|
||||
0Oj
|
||||
0_j
|
||||
0oj
|
||||
0!k
|
||||
01k
|
||||
b0 ni
|
||||
0~i
|
||||
00j
|
||||
0@j
|
||||
0Pj
|
||||
0`j
|
||||
0pj
|
||||
0"k
|
||||
02k
|
||||
b0 oi
|
||||
0!j
|
||||
01j
|
||||
0Aj
|
||||
0Qj
|
||||
0aj
|
||||
0qj
|
||||
0#k
|
||||
03k
|
||||
b0 pi
|
||||
0"j
|
||||
02j
|
||||
0Bj
|
||||
0Rj
|
||||
0bj
|
||||
0rj
|
||||
0$k
|
||||
04k
|
||||
b0 qi
|
||||
0#j
|
||||
03j
|
||||
0Cj
|
||||
0Sj
|
||||
0cj
|
||||
0sj
|
||||
0%k
|
||||
05k
|
||||
b0 ri
|
||||
0$j
|
||||
04j
|
||||
0Dj
|
||||
0Tj
|
||||
0dj
|
||||
0tj
|
||||
0&k
|
||||
06k
|
||||
b0 si
|
||||
0%j
|
||||
05j
|
||||
0Ej
|
||||
0Uj
|
||||
0ej
|
||||
0uj
|
||||
0'k
|
||||
07k
|
||||
b0 ti
|
||||
0&j
|
||||
06j
|
||||
0Fj
|
||||
0Vj
|
||||
0fj
|
||||
0vj
|
||||
0(k
|
||||
08k
|
||||
b0 ui
|
||||
0'j
|
||||
07j
|
||||
0Gj
|
||||
0Wj
|
||||
0gj
|
||||
0wj
|
||||
0)k
|
||||
09k
|
||||
b0 vi
|
||||
0(j
|
||||
08j
|
||||
0Hj
|
||||
0Xj
|
||||
0hj
|
||||
0xj
|
||||
0*k
|
||||
0:k
|
||||
b0 wi
|
||||
0)j
|
||||
09j
|
||||
0Ij
|
||||
0Yj
|
||||
0ij
|
||||
0yj
|
||||
0+k
|
||||
0;k
|
||||
b0 xi
|
||||
0*j
|
||||
0:j
|
||||
0Jj
|
||||
0Zj
|
||||
0jj
|
||||
0zj
|
||||
0,k
|
||||
0<k
|
||||
b0 yi
|
||||
0+j
|
||||
0;j
|
||||
0Kj
|
||||
0[j
|
||||
0kj
|
||||
0{j
|
||||
0-k
|
||||
0=k
|
||||
0!
|
||||
1"
|
||||
sHdlSome\x20(1) #
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@ use cpu::{
|
|||
unit::{GlobalState, UnitKind},
|
||||
};
|
||||
use fayalite::{
|
||||
assert_export_firrtl,
|
||||
firrtl::ExportOptions,
|
||||
prelude::*,
|
||||
sim::{Simulation, time::SimDuration, vcd::VcdWriterDecls},
|
||||
util::RcWriter,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue