amaranth/nmigen/hdl
whitequark 13316053e3 build.plat, hdl.ir: coordinate missing domain creation.
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.
2019-08-19 22:52:01 +00:00
..
__init__.py hdl.xfrm: CEInserter→EnableInserter. 2019-08-12 13:39:26 +00:00
ast.py formal→asserts 2019-08-19 20:23:24 +00:00
cd.py hdl.cd: implement local clock domains. 2019-08-19 21:44:33 +00:00
dsl.py hdl.dsl: reword m.If(~True) warning to be more clear. 2019-08-03 18:52:24 +00:00
ir.py build.plat, hdl.ir: coordinate missing domain creation. 2019-08-19 22:52:01 +00:00
mem.py hdl.{dsl,mem,xfrm}: inject appropriate source locations. 2019-07-08 09:58:12 +00:00
rec.py hdl.rec: respect modifications to signals in Record.like(). 2019-07-08 10:59:15 +00:00
xfrm.py build.plat, hdl.ir: coordinate missing domain creation. 2019-08-19 22:52:01 +00:00