Fletchgen
The Fletcher Design Generator
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
fletchgen::Design Struct Reference

A structure for all components in a Fletcher design. More...

#include <design.h>

Collaboration diagram for fletchgen::Design:
Collaboration graph
[legend]

Public Member Functions

 Design (const std::shared_ptr< Options > &opts)
 Make a new Design structure based on program options.
 
void AnalyzeSchemas ()
 Analyze the supplied Schemas.
 
void AnalyzeRecordBatches ()
 Analyze the supplied RecordBatches.
 
void AnalyzeExternalIO ()
 Analyze custom IO.
 
std::vector< cerata::OutputSpec > GetOutputSpec ()
 Obtain a Cerata OutputSpec from this design for Cerata back-ends to generate output.
 

Static Public Member Functions

static std::vector< MmioRegGetRecordBatchRegs (const std::vector< fletcher::RecordBatchDescription > &batch_desc)
 Obtain requited mmio registers based on the RecordBatch descriptions. More...
 
static std::vector< MmioRegParseCustomRegs (const std::vector< std::string > &regs)
 Obtain required custom registers based on a vector of strings.
 
static void RunVhdmmio (const std::vector< std::vector< MmioReg > * > &regs, Axi4LiteSpec axi_spec)
 Generate vhdmmio yaml and run it.
 

Public Attributes

std::shared_ptr< Optionsoptions
 The program options.
 
std::shared_ptr< SchemaSetschema_set
 The SchemaSet to base the design on.
 
std::vector< MmioRegdefault_regs
 Default registers.
 
std::vector< MmioRegrecordbatch_regs
 RecordBatch registers.
 
std::vector< MmioRegkernel_regs
 Custom registers.
 
std::vector< MmioRegprofiling_regs
 Profiling registers.
 
std::vector< std::vector< MmioReg > * > all_regs = {&default_regs, &recordbatch_regs, &kernel_regs, &profiling_regs}
 Pointers to all registers vectors.
 
Axi4LiteSpec mmio_spec
 
std::optional< std::shared_ptr< Type > > external
 External signals type.
 
std::vector< fletcher::RecordBatchDescription > batch_desc
 The RecordBatchDescriptions to use in SREC generation.
 
std::vector< std::shared_ptr< RecordBatch > > recordbatch_comps
 The RecordBatch(Readers/Writers) in the design.
 
std::shared_ptr< Kernelkernel_comp
 The Kernel component of this design.
 
std::shared_ptr< Mantlemantle_comp
 
std::shared_ptr< Nucleusnucleus_comp
 The Nucleus component, that wraps the kernel and mmio.
 
std::shared_ptr< Component > mmio_comp
 The Nucleus-level component generated by vhdmmio.
 

Detailed Description

A structure for all components in a Fletcher design.

Definition at line 36 of file design.h.

Member Function Documentation

◆ GetRecordBatchRegs()

std::vector< MmioReg > fletchgen::Design::GetRecordBatchRegs ( const std::vector< fletcher::RecordBatchDescription > &  batch_desc)
static

Obtain requited mmio registers based on the RecordBatch descriptions.

Generate mmio registers from properly ordered RecordBatchDescriptions.

Definition at line 125 of file design.cc.

Member Data Documentation

◆ mantle_comp

std::shared_ptr<Mantle> fletchgen::Design::mantle_comp

The top-level wrapper (mantle) of the design. This is not called wrapper because this is reserved for future top levels that instantiate multiple mantles to operate in parallel.

Definition at line 79 of file design.h.


The documentation for this struct was generated from the following files: