amaranth/nmigen
whitequark b9e57fd67b build.plat,vendor: always synchronize reset in default sync domain.
This change achieves two related goals.

First, default_rst is no longer assumed to be synchronous to
default_clk, which is  the safer option, since it can be connected to
e.g. buttons on some evaluation boards.

Second, since the power-on / configuration reset is inherently
asynchronous to any user clock, the default create_missing_domain()
behavior is to use a reset synchronizer with `0` as input. Since,
like all reset synchronizers, it uses Signal(reset=1) for its
synchronization stages, after power-on reset it keeps its subordinate
clock domain in reset, and releases it after fabric flops start
toggling.

The latter change is helpful to architectures that lack an end-of-
configuration signal, i.e. most of them. ECP5 was already using
a similar scheme (and is not changed here). Xilinx devices with EOS
use EOS to drive a BUFGMUX, which is more efficient than using
a global reset when the design does not need one; Xilinx devices
without EOS use the new scheme. iCE40 requires a post-configuration
timer because of BRAM silicon bug, and was changed to add a reset
synchronizer if user clock is provided.
2019-10-09 20:02:33 +00:00
..
back back.rtlil: don't crash legalizing values with no branches. 2019-10-06 08:52:49 +00:00
build build.plat,vendor: always synchronize reset in default sync domain. 2019-10-09 20:02:33 +00:00
compat lib.cdc: MultiReg→FFSynchronizer. 2019-09-23 14:18:45 +00:00
hdl hdl.ast: prohibit signed divisors. 2019-10-04 07:49:24 +00:00
lib build.plat,lib.cdc,vendor: unify platform related diagnostics. NFC. 2019-09-24 14:14:45 +00:00
test hdl.ast: prohibit signed divisors. 2019-10-04 07:49:24 +00:00
vendor build.plat,vendor: always synchronize reset in default sync domain. 2019-10-09 20:02:33 +00:00
__init__.py Remove nmigen.lib from prelude. 2019-09-06 06:53:06 +00:00
_toolchain.py _toolchain,build.plat,vendor.*: add required_tools list and checks. 2019-08-31 00:05:47 +00:00
asserts.py hdl.ast,back.rtlil: implement Cover. 2019-09-03 01:32:24 +00:00
cli.py hdl.ir: rename .get_fragment() to .elaborate(). 2019-01-26 02:31:12 +00:00
rpc.py rpc: add public Records as module ports. 2019-09-30 18:28:21 +00:00
tools.py hdl: make all public Value classes other than Record final. 2019-05-12 05:40:17 +00:00
tracer.py tracer: fix typo. 2019-08-19 20:20:18 +00:00