ADG File Format¶
ADG Files contain two parts:
ADG Module Declaration
ADG Link Declaration
ADG Module Declaration¶
The ADG is composed of different hardware modules, or nodes, with each containing their own attributes. Broadly, the ADG demarcates three different node types (spatial, sync, and data nodes) based on their typical placement and function within the adg.
Spatial Nodes¶
Spatial Nodes perform the computation and routing network inside the ADG. Consisting of processing elements and switches, these nodes are interlinked, performing computation and recieving inputs/outputs from the sync nodes.
Processing Elements¶
Processing Elements are the basic computational unit of the ADG. They are the nodes that perform the actual computation. Each processing element has a set of defined operations, taking inputs and then performing the operation upon it.
Passthroughs
Processing Elements can act as passthroughs, or perform the copy operation, during scheduling. This is useful to allow generality in scheduling.
Switches¶
Switches perform routing within the ADG, allowing greater generality in designs. In hardware, switches act as a series of muxes allowing data to move from any input to any output.
Broadcast
Switches are also helpful as they have the capability to broadcast, or one input go to two different outputs. This functionality is required for several schedules where broadcasting is needed. Processing elements are not able to broadcast data.
Spatial Node Properties¶
Fifo Depths
Each spatial node has a fifo, allowing it to balance delays and hopefully remove pipeline stalls. These fifos can be set by the fifo_depth property. Currently, the fifo can’t be eliminated without potentially hurting the frequency, thus the fifo depth must be set to at least 1.
Sync Nodes¶
Sync Nodes bring data into the spatial architecture from the data. It consists of input vector ports and output vector ports.
Input Vector Ports¶
Input vector ports act as the input. They generate the data requests and stream data into the spatial part of the ADG.
Output Vector Ports¶
Output vector ports act as the output. These hardware modules take data produced from the spatial architecture and then feed them into different data nodes.
Sync Node Properties¶
Stated
Both Input and Output Vector ports can be stated, meaning the first link is reserved for the stated control inputs from the DFG.
Data Nodes¶
Data nodes interact with memory, and deal with streaming requests and different levels of the memory heirarchy. Currently, there are 5 different data node types, DMA, Scratchpad, Recurrance, Generate, and Register. Each node performs different types of data movement, and has its own associated functionality.
DMA¶
DMA nodes stream data from the DRAM and L2 cache.
Scratchpad¶
Scratchpad nodes act as a private cache for each accelerator tile. The scratchpad has an associated size and is replicated within each tile.
Recurrance¶
Recurrance Nodes directly stream data from the output back into the input vector port.
Generate¶
Register¶
Data Node Properties¶
Data Nodes all interconnect on a bus. Thus, the bandwidth mechanism works similarly for all data nodes, depending on their replication across cores.