17 #include <arrow/api.h>
18 #include <cerata/api.h>
19 #include <fletcher/common.h>
25 #include "fletchgen/schema.h"
26 #include "fletchgen/options.h"
27 #include "fletchgen/kernel.h"
28 #include "fletchgen/mantle.h"
29 #include "fletchgen/bus.h"
30 #include "fletchgen/recordbatch.h"
31 #include "fletchgen/mmio.h"
38 explicit Design(
const std::shared_ptr<Options> &opts);
70 std::vector<fletcher::RecordBatchDescription>
batch_desc;
94 static std::vector<MmioReg>
ParseCustomRegs(
const std::vector<std::string> ®s);
Contains all classes and functions related to Fletchgen.
AXI4-lite bus specification.
A structure for all components in a Fletcher design.
std::vector< MmioReg > profiling_regs
Profiling registers.
std::vector< MmioReg > kernel_regs
Custom registers.
std::vector< MmioReg > recordbatch_regs
RecordBatch registers.
void AnalyzeSchemas()
Analyze the supplied Schemas.
std::shared_ptr< Options > options
The program options.
std::shared_ptr< Mantle > mantle_comp
static std::vector< MmioReg > GetRecordBatchRegs(const std::vector< fletcher::RecordBatchDescription > &batch_desc)
Obtain requited mmio registers based on the RecordBatch descriptions.
std::shared_ptr< Kernel > kernel_comp
The Kernel component of this design.
std::shared_ptr< Component > mmio_comp
The Nucleus-level component generated by vhdmmio.
std::vector< std::shared_ptr< RecordBatch > > recordbatch_comps
The RecordBatch(Readers/Writers) in the design.
static std::vector< MmioReg > ParseCustomRegs(const std::vector< std::string > ®s)
Obtain required custom registers based on a vector of strings.
std::vector< MmioReg > default_regs
Default registers.
std::vector< cerata::OutputSpec > GetOutputSpec()
Obtain a Cerata OutputSpec from this design for Cerata back-ends to generate output.
static void RunVhdmmio(const std::vector< std::vector< MmioReg > * > ®s, Axi4LiteSpec axi_spec)
Generate vhdmmio yaml and run it.
std::vector< std::vector< MmioReg > * > all_regs
Pointers to all registers vectors.
std::shared_ptr< SchemaSet > schema_set
The SchemaSet to base the design on.
Design(const std::shared_ptr< Options > &opts)
Make a new Design structure based on program options.
void AnalyzeRecordBatches()
Analyze the supplied RecordBatches.
std::optional< std::shared_ptr< Type > > external
External signals type.
std::vector< fletcher::RecordBatchDescription > batch_desc
The RecordBatchDescriptions to use in SREC generation.
std::shared_ptr< Nucleus > nucleus_comp
The Nucleus component, that wraps the kernel and mmio.
void AnalyzeExternalIO()
Analyze custom IO.