http://docs.myhdl.org/en/stable/manual/reference.html yield: Furthermore, MyHDL generators can be used as clauses in yield statements. Such a generator is forked, and starts operating immediately, while the original generator waits for it to complete. The original generator resumes when the forked generator returns. So it is possible to do arbitrary deep procedure calls inside a generator. Good thing.