Catherine [Mon, 13 Dec 2021 09:03:22 +0000 (09:03 +0000)]
docs: simplify. NFC.
Irides [Mon, 13 Dec 2021 09:10:40 +0000 (03:10 -0600)]
docs: cover `nmigen.vendor`.
modwizcode [Mon, 13 Dec 2021 03:43:20 +0000 (21:43 -0600)]
sim: represent time internally as 1ps units
Using floats to represent simulation time internally isn't ideal
instead use 1ps internal units while continuing to use a floating
point based interface for compatibility.
Fixes #535.
modwizcode [Mon, 13 Dec 2021 06:38:30 +0000 (00:38 -0600)]
docs: cover `nmigen.lib.fifo`.
Catherine [Mon, 13 Dec 2021 06:33:36 +0000 (06:33 +0000)]
docs: formatting and readability improvements.
Luke Kenneth Casson Leighton [Fri, 31 Dec 2021 20:27:17 +0000 (20:27 +0000)]
update nmigen/lib/cdc.py docstrings
Catherine [Mon, 13 Dec 2021 06:23:12 +0000 (06:23 +0000)]
docs: cover `nmigen.lib.cdc`.
Catherine [Mon, 13 Dec 2021 05:48:31 +0000 (05:48 +0000)]
docs: cover `nmigen.lib.coding`.
Irides [Sat, 11 Dec 2021 16:27:12 +0000 (10:27 -0600)]
back.rtlil: support slicing on Parts
Fixes #605.
whitequark [Sat, 11 Dec 2021 13:37:15 +0000 (13:37 +0000)]
build.dsl: check type of resource number.
Fixes #599.
whitequark [Sat, 11 Dec 2021 13:22:24 +0000 (13:22 +0000)]
sim.core: warn when driving a clock domain not in the simulation.
Closes #566.
whitequark [Sat, 11 Dec 2021 12:39:34 +0000 (12:39 +0000)]
hdl.ir: reject elaboratables that elaborate to themselves.
Fixes #592.
whitequark [Sat, 11 Dec 2021 13:00:46 +0000 (13:00 +0000)]
sim._pyrtl: reject very large values.
A check that rejects very large wires already exists in back.rtlil
because they cause performance and correctness issues with Verilog
tooling. Similar performance issues exist with the Python simulator.
This commit also adjusts back.rtlil to use the OverflowError
exception, same as in sim._pyrtl.
Fixes #588.
Irides [Sat, 11 Dec 2021 12:02:39 +0000 (06:02 -0600)]
vendor.xilinx: support setting options on synth_design Closes #606.
whitequark [Sat, 11 Dec 2021 11:38:40 +0000 (11:38 +0000)]
back.rtlil,cli: allow suppressing generation of `src` attributes.
Fixes #572.
whitequark [Sat, 11 Dec 2021 11:12:25 +0000 (11:12 +0000)]
sim.pysim: refuse to write VCD files with whitespace in signal names.
Closes #595.
whitequark [Sat, 11 Dec 2021 08:52:14 +0000 (08:52 +0000)]
hdl.ast: support division and modulo with negative divisor.
Fixes #621.
This commit bumps the Yosys version requirement to >=0.10.
Luke Kenneth Casson Leighton [Fri, 31 Dec 2021 20:09:55 +0000 (20:09 +0000)]
update install.rst yosys version
whitequark [Sat, 11 Dec 2021 10:25:41 +0000 (10:25 +0000)]
back.rtlil: extend unsigned operand of binop if another is signed.
Fixes #580.
whitequark [Sat, 11 Dec 2021 08:18:33 +0000 (08:18 +0000)]
hdl.ast: warn on bare integer value used in Cat()/Repl().
Fixes #639.
whitequark [Sat, 11 Dec 2021 07:39:35 +0000 (07:39 +0000)]
_utils: don't crash trying to flatten() strings.
Fixes #614.
whitequark [Sat, 11 Dec 2021 06:32:32 +0000 (06:32 +0000)]
docs: fix download link in start.rst.
Fixes #647.
whitequark [Fri, 10 Dec 2021 10:48:14 +0000 (10:48 +0000)]
CI: fix test discovery command.
whitequark [Fri, 10 Dec 2021 10:45:05 +0000 (10:45 +0000)]
CI: only discover tests under tests/.
This avoids a crash importing the deprecated `nmigen` module with
PYTHONWARNINGS=error set.
whitequark [Fri, 8 Oct 2021 17:48:00 +0000 (17:48 +0000)]
CI: preserve YoWASP cache as well.
whitequark [Fri, 8 Oct 2021 17:48:00 +0000 (17:48 +0000)]
_toolchain.cxx: ignore another deprecation warning (on Python 3.10).
Sigh.
whitequark [Fri, 8 Oct 2021 17:48:00 +0000 (17:48 +0000)]
_toolchain.cxx: ignore deprecation warning (on Python 3.6).
This code really shouldn't be using distutils, but for now this will
have to do.
whitequark [Fri, 8 Oct 2021 17:48:00 +0000 (17:48 +0000)]
docs: update requirements.
Sphinx 4.2 or later is required for compatibility with Python 3.10.
A released version of Pygments can now be used for highlighting.
whitequark [Fri, 8 Oct 2021 17:48:00 +0000 (17:48 +0000)]
_toolchain.cxx: use distutils from setuptools.
The distutils module from the standard library is deprecated and will
be removed in Python 3.12, and PEP 632 recommends using
distutils.ccompiler from setuptools, instead.
This code should eventually be rewritten to use zig-pypi, but for now
this suffices.
whitequark [Fri, 8 Oct 2021 17:48:00 +0000 (17:48 +0000)]
vendor.xilinx_*: deprecate legacy Xilinx platform aliases.
whitequark [Fri, 8 Oct 2021 17:48:00 +0000 (17:48 +0000)]
Run tests on Python 3.10.
whitequark [Fri, 8 Oct 2021 17:48:00 +0000 (17:48 +0000)]
Simplify CI workflow.
Olivier Galibert [Thu, 14 Oct 2021 16:02:22 +0000 (18:02 +0200)]
vendor.intel: add Mistral toolchain support.
whitequark [Sun, 3 Oct 2021 20:28:07 +0000 (20:28 +0000)]
hdl.ast: improve interaction of ValueCastable with custom __getattr__.
Avoid calling `__getattr__("_ValueCastable__lowered_to")` when
a ValueCastable has custom `__getattr__` implementation; this avoids
the need for downstream code to be aware of this implementataion
detail.
Luke Kenneth Casson Leighton [Fri, 31 Dec 2021 16:11:29 +0000 (16:11 +0000)]
mention benefits of nmigen over MyHDL, ability to use full python OO
Luke Kenneth Casson Leighton [Fri, 31 Dec 2021 16:09:35 +0000 (16:09 +0000)]
mention MyHDL for compare/contrast to nmigen
Luke Kenneth Casson Leighton [Fri, 31 Dec 2021 16:06:22 +0000 (16:06 +0000)]
restore nmigen logos, update wording on git format-patch
Luke Kenneth Casson Leighton [Fri, 31 Dec 2021 15:59:30 +0000 (15:59 +0000)]
more README whitespace
Luke Kenneth Casson Leighton [Fri, 31 Dec 2021 15:58:54 +0000 (15:58 +0000)]
mention that git format-patch for contributions is perfectly fine
Luke Kenneth Casson Leighton [Fri, 31 Dec 2021 15:57:16 +0000 (15:57 +0000)]
whitespace update on README.md
luke leighton [Fri, 31 Dec 2021 15:54:49 +0000 (15:54 +0000)]
Merge branch 'update_to_2021oct08' into 'master'
sim._pyrtl: optimize uses of reflexive operators.
See merge request nmigen/nmigen!1
luke leighton [Fri, 31 Dec 2021 15:54:32 +0000 (15:54 +0000)]
Merge branch 'master' into 'update_to_2021oct08'
# Conflicts:
# LICENSE.txt
# README.md
# nmigen/test/utils.py
# nmigen/vendor/xilinx_7series.py
# setup.py
Luke Kenneth Casson Leighton [Fri, 31 Dec 2021 15:49:06 +0000 (15:49 +0000)]
correct IRC link
Luke Kenneth Casson Leighton [Fri, 31 Dec 2021 15:45:23 +0000 (15:45 +0000)]
replace github with gitlab
Luke Kenneth Casson Leighton [Fri, 31 Dec 2021 15:40:50 +0000 (15:40 +0000)]
add reference to nmigen Trademark
whitequark [Sat, 2 Oct 2021 14:18:02 +0000 (14:18 +0000)]
hdl.ast: simplify Mux implementation.
whitequark [Sat, 2 Oct 2021 13:18:11 +0000 (13:18 +0000)]
hdl.ast: add tests for casting bare integers in {Cat,Repl}.
Anton Blanchard [Mon, 27 Sep 2021 01:00:56 +0000 (11:00 +1000)]
hdl.ast: remove quadratic time complexity in Statement.cast().
Using `sum(lst, [])` to flatten a list of lists has quadratic time
complexity. Use `chain.from_iterable()` instead. While not strictly
necessary to improve performance, convert to `map()`.
A test case writing out verilog for a 512k entry FIFO is 120x faster
with this applied.
H-S-S-11 [Sat, 25 Sep 2021 10:41:23 +0000 (11:41 +0100)]
vendor.xilinx: avoid using `/` for hierarchy in ISE constraint files.
Marcelina Kościelnicka [Wed, 16 Dec 2020 15:35:57 +0000 (16:35 +0100)]
Unify Xilinx platforms into a single class, support more devices
This merges existing code, and also adds support for:
- Virtex, Virtex E (also known as Spartan 2, Spartan 2E)
- Virtex 2, Virtex 2 Pro
- Spartan 3, Spartan 3E (in addition to existing Spartan 3A, Spartan 3A
DSP support)
- Virtex 4
- Virtex 5
- Virtex 6
- ISE synthesis for Series 7
Fixes #552.
Adam Jeliński [Tue, 21 Sep 2021 08:33:26 +0000 (10:33 +0200)]
_toolchain: Properly set compiler/linker executables on Gentoo
The `test_toolchain_cxx.py` tests on Gentoo definitely use compiler and
linker set with `_so_cxx`-suffixed executables. Tests use a proper
executable instead of `c++` after this change.
Signed-off-by: Adam Jeliński <ajelinski@antmicro.com>
Robin Ole Heinemann [Mon, 16 Aug 2021 21:31:57 +0000 (23:31 +0200)]
vendor.xilinx_{7series,ultrascale}: hierachical -> hierarchical
Signed-off-by: Robin Ole Heinemann <robin.ole.heinemann@gmail.com>
Jean-François Nguyen [Fri, 16 Jul 2021 17:16:56 +0000 (19:16 +0200)]
_toolchain: substitute '+' with 'X' in tool_env_var().
whitequark [Thu, 20 May 2021 03:07:51 +0000 (03:07 +0000)]
README: update IRC channel.
Robin Ole Heinemann [Tue, 18 May 2021 18:43:16 +0000 (20:43 +0200)]
rpc: fix parsing of negative signed parameters
Robin Ole Heinemann [Tue, 18 May 2021 19:18:51 +0000 (21:18 +0200)]
test.test_hdl_ast.OperatorTestCase: remove duplicate test_bool
Robin Ole Heinemann [Tue, 18 May 2021 19:18:14 +0000 (21:18 +0200)]
tests: rename tests with duplicate names
Robin Ole Heinemann [Tue, 18 May 2021 19:15:02 +0000 (21:15 +0200)]
tests.test_hdl_cd.ClockDomainTestCase.test_name: actually test domain with cd_ prefix
Robin Ole Heinemann [Tue, 18 May 2021 19:10:47 +0000 (21:10 +0200)]
*: remove unused variables
Robin Ole Heinemann [Tue, 18 May 2021 18:39:57 +0000 (20:39 +0200)]
*: remove unused imports
Thomas Watson [Tue, 11 May 2021 02:02:29 +0000 (21:02 -0500)]
tests.hdl.dsl: add tests for mis-nested Switch/Case and FSM/State statements
Thomas Watson [Tue, 11 May 2021 01:59:34 +0000 (20:59 -0500)]
hdl.dsl: raise SyntaxError for mis-nested If/Elif/Else statements
Adam Greig [Mon, 12 Apr 2021 09:48:20 +0000 (10:48 +0100)]
vendor.lattice_{ecp5,machxo_2_3l}: remove -forceAll from Diamond scripts.
Fixes #604.
whitequark [Thu, 18 Mar 2021 23:56:52 +0000 (23:56 +0000)]
CI: fix sri-csl/formal-methods PPA series.
GHA's Ubuntu has been upgraded to Focal.
whitequark [Thu, 18 Mar 2021 23:52:23 +0000 (23:52 +0000)]
hdl.ast: handle int subclasses as slice start/stop values.
Fixes #601.
dx-mon [Thu, 4 Feb 2021 03:10:44 +0000 (03:10 +0000)]
compat.genlib.roundrobin: fix missing imports
nickoe [Sun, 31 Jan 2021 18:08:44 +0000 (19:08 +0100)]
vendor.xilinx_7series: fix tool names for symbiflow.
Prefix "tools" with symbiflow_ as is done for the QuickLogic Symbiflow
toolchain. Installing symbiflow gives me the tools with the preifx, so I
guess this is the correct way to move forward.
Katherine Temkin [Mon, 25 Jan 2021 15:41:45 +0000 (08:41 -0700)]
vendor.lattice_ecp5: correctly generate OE signaling when xdr=0
This fixes a logic bug introduced in
6ce2b21e196a0f93b82748ed046098331d20b3bf.
Adam Greig [Sat, 23 Jan 2021 18:06:52 +0000 (18:06 +0000)]
vendor.lattice_ecp5: replicate OE signal for each output bit.
nextpnr can only pack OE FFs into IOLOGIC when there's one OFS1P3DX per
output, rather than one shared instance.
Joel Stanley [Fri, 15 Jan 2021 02:58:21 +0000 (13:28 +1030)]
docs: Update up_counter to avoid deprecation warning
nmigen/docs/_code/up_counter.py:44: DeprecationWarning: instead of nmigen.back.pysim.*, use nmigen.sim.*
from nmigen.back.pysim import Simulator
Adam Greig [Thu, 14 Jan 2021 11:34:03 +0000 (11:34 +0000)]
vendor.lattice_ecp5: remove outdated comment in ECP5 platform.
Starting with nextpnr
c6401413a, nextpnr does pack *FS1P3DX
into IOLOGIC cells.
Robin Ole Heinemann [Sat, 2 Jan 2021 23:17:48 +0000 (00:17 +0100)]
lib.fifo.AsyncFIFOBuffered: fix output register accounting
Robin Ole Heinemann [Sat, 2 Jan 2021 23:14:26 +0000 (00:14 +0100)]
lib.fifo.AsyncFIFOBuffered: fix FFSynchronizer latency
Robin Ole Heinemann [Sat, 2 Jan 2021 23:13:46 +0000 (00:13 +0100)]
lib.fifo: use proper clock domains in AsyncFIFO tests
Robin Ole Heinemann [Sat, 2 Jan 2021 23:12:31 +0000 (00:12 +0100)]
lib.fifo.AsyncFIFOBuffered: use FFSynchronizer instead of AsyncFFsynchronizer
AsyncFFsynchronizer only synchronizes one edge
whitequark [Sat, 12 Dec 2020 22:08:57 +0000 (22:08 +0000)]
Revert "vendor.xilinx_7series: byte swap generated bitstream"
This reverts commit
14a5c42a8bd425a4882ba566b26e11bd6d1e1721.
whitequark [Sat, 12 Dec 2020 14:11:40 +0000 (14:11 +0000)]
hdl.ast: formatting. NFC.
whitequark [Sat, 12 Dec 2020 12:42:12 +0000 (12:42 +0000)]
hdl.ast: normalize case values to two's complement, not signed binary.
This was an especially insidious bug because the minus character is
valid in case values but has a completely different meaning (wildcard
rather than sign).
Fixes #559.
whitequark [Sat, 12 Dec 2020 12:18:59 +0000 (12:18 +0000)]
back.rtlil: give private items an appropriate name. NFCI.
whitequark [Tue, 24 Nov 2020 23:07:09 +0000 (23:07 +0000)]
build.plat: make `verbose` work like all other overrides.
Fixes #497.
whitequark [Tue, 24 Nov 2020 20:35:58 +0000 (20:35 +0000)]
vendor.intel: implement `add_settings` (QSF) and `add_constraints` (SDC) overrides.
whitequark [Sun, 22 Nov 2020 00:16:02 +0000 (00:16 +0000)]
vendor.xilinx_spartan_3_6: fix typo.
This was introduced in commit
2f8669ca.
Fixes #549.
whitequark [Sat, 21 Nov 2020 17:29:55 +0000 (17:29 +0000)]
hdl.ast: remove dead code. NFC.
See #548.
awygle [Tue, 17 Nov 2020 19:36:58 +0000 (11:36 -0800)]
nmigen.hdl.rec: restore Record.shape().
This method was lost in commit
abbebf8e.
Marcelina Kościelnicka [Sat, 14 Nov 2020 15:22:34 +0000 (16:22 +0100)]
sim._pyrtl: mask Mux selection operand.
Otherwise it behaves funny when it's eg. the result of operator ~.
Jan Kowalewski [Fri, 13 Nov 2020 12:58:11 +0000 (13:58 +0100)]
vendor.quicklogic: enable SoC clock configuration
Signed-off-by: Jan Kowalewski <jkowalewski@antmicro.com>
whitequark [Fri, 13 Nov 2020 05:44:16 +0000 (05:44 +0000)]
vendor.quicklogic: write OpenOCD scripts as part of build process.
The OpenOCD scripts for EOS-S3 are roughly equivalent to SVF files
for a more traditional FPGA, which we also produce, for some common
"default" configuration, as a part of the build process.
whitequark [Tue, 10 Nov 2020 05:30:21 +0000 (05:30 +0000)]
build.plat: TemplatedPlatform.iter_extra_files→Platform.iter_files.
This function was added in commit
20553b14 in the wrong place, with
the wrong name, and without tests. Fix all that.
awygle [Mon, 9 Nov 2020 20:20:25 +0000 (12:20 -0800)]
hdl.rec: proxy operators correctly.
Commit
abbebf8e used __getattr__ to proxy Value methods called on
Record. However, that did not proxy operators like __add__ because
Python looks up the special operator methods directly on the class
and does not run __getattr__ if they are missing.
Instead of using __getattr__, explicitly enumerate and wrap every
Value method that should be proxied. This also ensures backwards
compatibility if more methods are added to Value later.
Fixes #533.
Konrad Beckmann [Fri, 6 Nov 2020 11:35:18 +0000 (12:35 +0100)]
vendor.intel: add support for Cyclone V internal oscillator
When using the default clock "cyclonev_oscillator" on Cyclone V devices,
the internal oscillator will be used.
whitequark [Fri, 6 Nov 2020 02:21:53 +0000 (02:21 +0000)]
hdl.ast: deprecate UserValue in favor of ValueCastable.
Closes #527.
whitequark [Fri, 6 Nov 2020 02:05:35 +0000 (02:05 +0000)]
sim.pysim: avoid redundant VCD updates.
This commit properly addresses a bug introduced in
2efeb05c and then
temporarily fixed in
58f1d4bc.
Fixes #429.
whitequark [Fri, 6 Nov 2020 01:52:00 +0000 (01:52 +0000)]
examples: clean up oudated code.
whitequark [Fri, 6 Nov 2020 01:54:25 +0000 (01:54 +0000)]
whitequark [Fri, 6 Nov 2020 01:39:04 +0000 (01:39 +0000)]
cli: update deprecated import.
whitequark [Fri, 6 Nov 2020 01:41:35 +0000 (01:41 +0000)]
CI: add CPython 3.9 to test matrix.
whitequark [Fri, 6 Nov 2020 01:38:03 +0000 (01:38 +0000)]
CI: run testsuite with -Werror.
whitequark [Fri, 6 Nov 2020 01:31:14 +0000 (01:31 +0000)]
vendor.lattice_{ice40,ecp5}: clean up $verilog_initial_trigger wires.
These only matter in simulation and after conversion to Verilog.
During synthesis they cause Yosys to produce warnings:
Warning: Wire $verilog_initial_trigger has an unprocessed 'init' attribute.
awygle [Fri, 6 Nov 2020 01:10:39 +0000 (17:10 -0800)]
hdl.rec: migrate Record from UserValue to ValueCastable.
Closes #528.
awygle [Fri, 6 Nov 2020 00:20:54 +0000 (16:20 -0800)]
hdl.ast: implement ValueCastable.
Closes RFC issue #355.