Platform.prepare() was completely broken after addition of local clock domains, and only really worked before by a series of accidents because there was a circular dependency between creation of missing domains, fragment preparation, and insertion of pin subfragments. This commit untangles the dependency by adding a separate public method Fragment.create_missing_domains(), used in build.plat. It also makes DomainCollector consider both used and defined domains, such that it will work on fragments before domain propagation, since create_missing_domains() can be called by user code before prepare(). The fragment driving missing clock domain is not flattened anymore, because flattening does not work well combined with local domains. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| ast.py | ||
| cd.py | ||
| dsl.py | ||
| ir.py | ||
| mem.py | ||
| rec.py | ||
| xfrm.py | ||