Description
This thesis classifies Chisel hardware construction into three levels. At the first level, users write Chisel code at the granularity of nodes. The second level of hardware construction uses functional abstraction to group nodes into subgraphs. To illustrate the differences between these levels, we show how someone would implement a new hardware facility at both levels of hardware construction. At the third level of hardware construction, users write elaboration time function that the Chisel compiler invokes on the user's behalf to construct hardware. We present three examples of writing elaboration time functions to build hardware.