whitequark
f6f0a7b692
lib.fifo: simplify. NFC.
2019-09-21 06:15:11 +00:00
whitequark
a1bc2bbeb0
lib.fifo: fix doc typo. NFC.
2019-09-20 19:54:27 +00:00
whitequark
f9b9c17a16
lib.fifo: work around Yosys issue with handling of \TRANSPARENT.
...
Because of YosysHQ/yosys#1390, using a transparent port in AsyncFIFO,
instead of being a no-op (as the semantics of \TRANSPARENT would
require it to be in this case), results in a failure to infer BRAM.
This can be easily avoided by using a non-transparent port instead,
which produces the desirable result with Yosys. It does not affect
the semantics on Xilinx platforms, since the interaction between
the two ports in case of address collision is undefined in either
transparent (WRITE_FIRST) or non-transparent (READ_FIRST) case, and
the data out of the write port is not used at all.
Fixes #172 .
2019-09-20 19:54:27 +00:00
whitequark
4b3a068b15
hdl.mem: use 1 as reset value for ReadPort.en.
...
This is necessary for consistency, since for transparent read ports,
we currently do not support .en at all (it is fixed at 1) due to
YosysHQ/yosys#760 . Before this commit, changing port transparency
would require adding or removing an assignment to .en, which is
confusing and error-prone.
Also, most read ports are always enabled, so this behavior is also
convenient.
2019-09-20 19:51:13 +00:00
whitequark
91ef2f58e3
vendor.lattice_{ecp5,ice40}: allow clock constraints on arbitrary signals.
...
Fixes #88 .
2019-09-20 16:26:27 +00:00
whitequark
378e924280
hdl.ast: rename nbits
to width
.
...
Also, replace `bits, sign = x.shape()` with more idiomatic
`width, signed = x.shape()`.
This unifies all properties corresponding to `len(x)` to `x.width`.
(Not all values have a `width` property.)
Fixes #210 .
2019-09-20 15:36:25 +00:00
Darrell Harmon
af7224de5d
vendor.xilinx_{7series,spartan3_6}: specialize MultiReg.
...
Vivado/ISE would otherwise infer an SRL16 from a MultiReg in some cases.
2019-09-20 15:13:27 +00:00
Emily
f2550021c3
setup: improve repository detection.
2019-09-20 14:01:18 +00:00
Emily
6f12272533
setup: add setuptools dependency.
2019-09-20 14:01:18 +00:00
whitequark
276e9c2fad
test.test_lib_fifo: fix typo.
2019-09-20 11:53:05 +00:00
whitequark
7f6b3f93f5
back.pysim: fix simulation of Value.xor().
2019-09-20 10:12:59 +00:00
whitequark
4777a7b3a2
hdl.{ast,dsl}: add Signal.enum; coerce Enum to Value; accept Enum patterns.
...
Fixes #207 .
2019-09-16 19:22:12 +00:00
whitequark
e8f79c5539
hdl.ast: add Value.matches(), accepting same language as Case().
...
Fixes #202 .
2019-09-14 21:06:12 +00:00
whitequark
f292a1977c
hdl.dsl: improve error messages for Case().
2019-09-14 20:58:19 +00:00
whitequark
32310aecad
hdl.ast: add Value.xor, mapping to $reduce_xor.
...
Fixes #147 .
2019-09-13 14:29:46 +00:00
whitequark
b23a9794a4
hdl.ast: add Value.{any,all}, mapping to $reduce_{or,and}.
...
Refs #147 .
2019-09-13 13:14:52 +00:00
whitequark
bdb70ad45f
lib.fifo: adjust for new CDC primitive conventions.
...
Fixes #97 .
2019-09-13 12:36:51 +00:00
whitequark
da4b810fe1
lib.fifo: adjust properties to have consistent naming.
2019-09-13 12:33:41 +00:00
whitequark
9ea3ff7ae2
build.plat: bypass tool detection if NMIGEN_*_env is set.
...
It's not practical to detect tools within the toolchain environment
for various reasons, so just assume the tools are there if the user
says they are.
Before this commit, the tools would be searched outside the toolchain
environment, which of course would always fail for Vivado, ISE, etc.
2019-09-12 21:56:48 +00:00
whitequark
c8f8c09f29
vendor.xilinx_7series: Vivado requires bash on *nix as well.
2019-09-12 21:49:08 +00:00
whitequark
42805ad959
hdl.mem: use keyword-only arguments as appropriate.
2019-09-12 20:03:48 +00:00
whitequark
b92e967b78
lib.fifo: make fwft a keyword-only argument.
...
Because it accepts a boolean.
2019-09-12 19:38:18 +00:00
whitequark
1c091e67a4
lib.fifo: remove SyncFIFO.replace.
...
This obscure functionality was likely only ever used in old MiSoC
code, and doesn't justify the added complexity. It was also not
provided (and could not be reasonably provided) in SyncFIFOBuffered,
which made its utility extremely marginal.
2019-09-12 19:16:57 +00:00
whitequark
2c34b1f947
README: update Yosys version requirement.
2019-09-12 14:33:38 +00:00
whitequark
2d2ab6e09d
lib.cdc: make domain properties private.
...
It is not correct to access domain properties from user code, because
it will not match the reality if DomainRenamer has been applied to
the module.
2019-09-12 13:54:48 +00:00
whitequark
73244f2bd2
lib.io: style. NFC.
2019-09-12 13:51:18 +00:00
whitequark
9893e3c044
lib.cdc: adjust ResetSynchronizer for new CDC primitive conventions.
...
Refs #97 .
2019-09-12 13:48:45 +00:00
whitequark
8f659b6cd6
lib.cdc: adjust MultiReg for new CDC primitive conventions.
...
Refs #97 .
2019-09-12 13:48:24 +00:00
whitequark
8c30147e39
build.plat,vendor: allow clock constraints on arbitrary signals.
...
Currently only done for Synopsys based toolchains (i.e. not nextpnr).
Refs #88 .
2019-09-11 23:35:43 +00:00
whitequark
d1779bdb59
back: return name map from convert_fragment().
2019-09-11 23:22:12 +00:00
whitequark
7342662bee
hdl.ast: warn if reset value is truncated.
...
Fixes #183 .
2019-09-10 07:26:34 +00:00
Darrell Harmon
27cedf4302
vendor.lattice_ecp5: pass ecppack_opts to ecppack.
2019-09-10 03:32:36 +00:00
whitequark
9b398b502e
hdl.ast: check type of Sample(domain=...).
...
Fixes #199 .
2019-09-08 23:55:05 +00:00
whitequark
3f6abc0b7a
hdl.dsl: add Default(), an alias for Case() with no arguments.
...
Fixes #197 .
2019-09-08 12:24:18 +00:00
whitequark
eb04a2509e
hdl.mem,lib,examples: use Signal.range().
2019-09-08 12:19:13 +00:00
whitequark
ccfbccc044
hdl.ast: add Signal.range(...), to replace Signal(min=..., max=...).
...
Fixes #196 .
2019-09-08 12:10:31 +00:00
whitequark
5e9587bbbd
Remove nmigen.lib from prelude.
...
Currently it's just MultiReg, and there's no particularly good reason
to privilege this specific CDC primitive so much.
2019-09-06 06:53:06 +00:00
whitequark
38831abdb4
Fix .gitignore.
2019-09-06 05:30:22 +00:00
whitequark
284b533995
setup: replace versioneer with setuptools_scm.
...
Has the same problems with git-archive but is much less invasive.
2019-09-06 05:20:42 +00:00
whitequark
943ce317af
hdl.ast,back.rtlil: implement Cover.
...
Fixes #194 .
2019-09-03 01:32:24 +00:00
whitequark
2e20622046
hdl.cd: add negedge clock domains.
...
Fixes #185 .
2019-08-31 22:05:48 +00:00
Emily
c4e8ac734f
_toolchain,build.plat,vendor.*: add required_tools list and checks.
2019-08-31 00:05:47 +00:00
whitequark
4e91710933
vendor.lattice_ecp5: drive GSR synchronous to user clock by default.
...
Fixes #167 .
2019-08-30 14:26:49 +00:00
whitequark
a4b58cbf3a
build.dsl: allow both str and int resource attributes.
2019-08-30 08:35:52 +00:00
Emily
98278a044d
test.tools: use _toolchain.get_tool.
2019-08-28 11:52:16 +00:00
whitequark
b14f5572d8
_toolchain: new module, for injecting dependencies in e.g. Nix.
2019-08-28 11:32:18 +00:00
whitequark
2168ff512b
back.verilog: bump Yosys version requirement to 0.9.
...
Fixes #55 .
2019-08-26 09:59:40 +00:00
whitequark
b4b5d9e2ef
vendor.lattice_ecp5: revert default toolchain to Trellis.
...
This was unintentionally changed in 7fc1058e
.
2019-08-25 08:07:00 +00:00
whitequark
72cf4ca991
back.pysim: implement sim.add_clock(if_exists=True).
2019-08-23 08:53:48 +00:00
whitequark
906385c7f8
back.pysim: don't crash when trying to drive a nonexistent domain clock.
2019-08-23 08:37:59 +00:00