New classes for architectures
I think the following may make sense.
New classes:
-
ProcessingElement
: accepts aProcessCollection
. Can generate HDL and provide input to which memories are connected etc. -
Memory
: accepts aProcessCollection
. Can generate HDL and provide input to which PEs are connected etc. -
Architecture
: accepts a number ofProcessingElement
andMemory
. Can generate HDL and provide info about which blocks are connected to which.
The Architecture
class will generate HDL for the controller (basically a counter) that is connected to all Memory
and ProcessingElement
blocks. It will also have inputs and outputs (although we may also want to have Input
and Output
ProcessingElements
to deal with e.g. sign-extension etc, so connect those).
ProcessingElement
will be subclassed and/or we will somehow patch additional methods in that can generate HDL for a particular Operation
. If it is not given for an Operation
, at least generate an entity
for the PE.