Ensures a directory *dir* exists on the filesystem.
Ensures a directory *dir* exists on the filesystem.
Prints the call stack of Component as seen by the push/pop runtime.
Prints the call stack of Component as seen by the push/pop runtime.
Nodes which are created outside the execution trace from the toplevel component constructor (i.
Nodes which are created outside the execution trace from the toplevel component constructor (i.e. through the () => Module(new Top()) ChiselMain argument) will have a component field set to null. For example, genMuxes, forceMatchWidths and transforms (all called from Backend.elaborate) create such nodes.
This method walks all nodes from all component roots (outputs, debugs). and reassociates the component to the node both ways (i.e. in Driver.nodes and Node.component).
We assume here that all nodes at the components boundaries (io) have a non-null and correct node/component association. We further assume that nodes generated in elaborate are inputs to a node whose component field is set.
Implementation Node: At first we did implement *collectNodesIntoComp* to handle a single component at a time but that did not catch the cases where Regs are passed as input to sub-module without being tied to an output of *this.component*.
All classes inherited from Data are used to add type information and do not represent logic itself.
All classes inherited from Data are used to add type information and do not represent logic itself.
Ensures each node such that it has a unique name across the whole hierarchy by prefixing its name by a component path (except for "reset" and all nodes in *c*).
Ensures each node such that it has a unique name across the whole hierarchy by prefixing its name by a component path (except for "reset" and all nodes in *c*).