Software synthesis
- schedule each hierarchical node
- expand each hierarchical node according to
- update ordering to get flattened ordering
Generate code for flattened software graph
- add initialization code
- stitch codeblocks together according to ordering
Flattened software graph and its ordering