pub struct AfuConfig {Show 13 fields
pub name: &'static str,
pub uuid: u128,
pub build: u64,
pub line: LocalMemoryLine,
pub user_clock_mhz: u32,
pub compute_divide: u32,
pub max_burst: u32,
pub read_fifo_log2: u32,
pub write_fifo_log2: u32,
pub channel_model: ChannelModel,
pub engine: Option<EngineParams>,
pub floorplan: Option<String>,
pub flat: bool,
}Expand description
The accelerator a build makes.
Fields§
§name: &'static strThe accelerator’s name in the AFU JSON.
uuid: u128The accelerator-type-uuid a driver opens it by, and the AFU ID its feature header carries.
build: u64A build identity the BUILD register reads back.
line: LocalMemoryLine§user_clock_mhz: u32The user clock the AFU JSON asks for, MHz: the fitter’s target, the clock set from the timing it closes. A divided build asks for exactly this clock.
compute_divide: u32The compute clock the shell runs on: the user clock divided by this, an even number, or the user clock itself at
- A divided build closes timing at the divided period.
max_burst: u32Lines a burst, on every port.
read_fifo_log2: u32log2 of the lines a read-data FIFO holds, and a write-data FIFO.
write_fifo_log2: u32§channel_model: ChannelModelThe co-simulation’s memory channels.
engine: Option<EngineParams>The decode engine the core runs steps on (rtl::engine::engine_verilog, its memory on the channels through the
card port, physical::card_port_verilog), or none for the bring-up build.
floorplan: Option<String>Placement assignments for Quartus, as Tcl: the tree’s hw/rtl/logos_floorplan.tcl, named in sources.txt as
QI: so the build sources it; none when no floorplan is given.
flat: boolWhether the accelerator is compiled into the FIM itself (a flat image, scripts/d5005/build-afu.sh --flat)
rather than as a persona. The FIM’s static region instantiates its exercisers (he_lb_top, PF0 VF0) whatever
the port holds, but the Stratix 10 release’s afu_main.tcl loads their sources only when no PIM-wrapped AFU is
configured, so a flat build’s sources.txt names them: FIM_STATIC_EXERCISERS, from the FIM that builds it.
Implementations§
Source§impl AfuConfig
impl AfuConfig
Sourcepub fn engine(engine: EngineParams, line: LocalMemoryLine) -> AfuConfig
pub fn engine(engine: EngineParams, line: LocalMemoryLine) -> AfuConfig
The engine build for engine at line (data64 or SECDED lines): the bring-up build’s core and channels with
the engine and its card port behind them, its compute clock ENGINE_USER_CLOCK_MHZ divided by
ENGINE_COMPUTE_DIVIDE.
Sourcepub fn d5005() -> AfuConfig
pub fn d5005() -> AfuConfig
The bring-up build: the ECC lanes as data, the user clock at the engine plan’s 450 MHz, 64-line bursts, 512 lines of read FIFO a channel (a run of eight bursts in flight) and 64 of write FIFO.
Sourcepub fn hybrid(&self) -> bool
pub fn hybrid(&self) -> bool
Whether the build’s engine is a hybrid one: its matvec jobs on a streaming unit in the user clock.
Sourcepub fn pe_pairs(&self) -> bool
pub fn pe_pairs(&self) -> bool
Whether the engine’s streaming unit pairs its cores on processing elements in a clock of twice theirs
(super::rtl::column::ColumnSet::pe_pairs): the user side in the PIM’s uClk_usrDiv2, the pairs in uClk_usr.
Sourcepub fn token_pairs(&self) -> bool
pub fn token_pairs(&self) -> bool
Whether the engine’s array issues its held beat against two token-rows a clock
(super::rtl::column::ColumnSet::with_token_pairs).
Sourcepub fn fp_hard(&self) -> bool
pub fn fp_hard(&self) -> bool
Whether the engine’s f32 products are the card’s floating-point DSP blocks’ (super::numerics::FpUnit::Hard):
its programs are written at the card’s products.
Sourcepub fn contexts(&self) -> usize
pub fn contexts(&self) -> usize
The engine’s sequencer contexts (super::rtl::engine::Streaming::contexts): 1 for one sequencer or none.
Trait Implementations§
impl StructuralPartialEq for AfuConfig
Auto Trait Implementations§
impl Freeze for AfuConfig
impl RefUnwindSafe for AfuConfig
impl Send for AfuConfig
impl Sync for AfuConfig
impl Unpin for AfuConfig
impl UnsafeUnpin for AfuConfig
impl UnwindSafe for AfuConfig
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.