Commit graph

1071 commits

Author SHA1 Message Date
whitequark f1153352c0 docs: link to community tutorials until we have an official one. 2020-07-04 02:09:35 +00:00
whitequark f24f1b02e8 docs/lang: document constshifts. 2020-07-02 23:11:35 +00:00
whitequark 76b3ef4b13 docs/index: rename to "Language & toolchain". 2020-07-02 23:08:10 +00:00
whitequark fd5ee548b6 test: remove FHDLTestCase.assertRaisesRegex.
This method is only there because I misunderstood the documentation
of unittest.
2020-07-02 22:50:20 +00:00
whitequark 8dd28fecc6 compat.fhdl.specials: fix handling of tristate (i=None) pins.
Fixes #406.
2020-07-02 22:22:44 +00:00
whitequark 369bc3e307 _yosys→_toolchain.yosys 2020-07-02 18:26:08 +00:00
whitequark 6bfff25e76 vendor: yosys is not a required tool for proprietary toolchains.
Since commit b9799b4c, the discovery mechanism for the Yosys required
to produce Verilog is different from the usual require_tool(); namely
it is possible to produce Verilog without a `yosys` binary on PATH.

Fixes #419.
2020-07-02 18:13:54 +00:00
whitequark 14845af235 setup: add wheel as setup dependency.
See commit 416b2531ae.
See commit 7fca037f9c.
2020-07-01 21:05:57 +00:00
whitequark ba1b4c20c8 setup: gracefully recover from missing setuptools_scm. 2020-07-01 21:04:04 +00:00
whitequark d5d3bc4b1a setup: link to the right documentation version from pip metadata. 2020-07-01 20:49:41 +00:00
whitequark 102565f6de Update README. 2020-07-01 20:17:10 +00:00
whitequark 75a466537e Update README. 2020-07-01 19:16:01 +00:00
whitequark 7fa4b348a9 docs/install: use pip/pip3 more consistently. 2020-07-01 08:58:36 +00:00
whitequark 6c0530cf4e docs: clarify naming. 2020-07-01 08:53:52 +00:00
whitequark 416b2531ae Revert "Add PEP 518 pyproject.toml."
This reverts commit 7fca037f9c.

This broke editable installs and has to be reverted due to a number
of pip issues:
  * pypa/pip#6375
  * pypa/pip#6434
  * pypa/pip#6438

We can put this back once PEP 517/518 support editable installs.
Until then the legacy behavior will suffice, and we should just teach
people to install the dependencies in virtualenvs or something...
2020-07-01 08:24:47 +00:00
whitequark 76c7e70582 docs: add a crude approximation of intersphinx toctrees.
This is a pretty awful hack. We could do this properly after one of
the following issues is fixed:
  * sphinx-doc/sphinx#701
  * sphinx-doc/sphinx#1836
2020-07-01 08:03:57 +00:00
whitequark 126f0be731 Gracefully handle missing dependencies.
Some people's workflows involve not using `pip`. This is not
a recommended way to use nMigen, but is prevalent enough for good
enough reason that we try to keep them working anyway.
2020-07-01 07:00:02 +00:00
whitequark f5670a9b71 docs/install: fix dead link. 2020-07-01 06:33:03 +00:00
whitequark 43da4e3f0a docs/install: quote special chars to avoid issues with extended glob. 2020-07-01 06:32:15 +00:00
whitequark f50303ca7c docs/install: explain how to install non-editable snapshot from git. 2020-07-01 06:15:16 +00:00
whitequark 7fca037f9c Add PEP 518 pyproject.toml.
This is necessary to be able to install nMigen into a virtualenv that
does not have `wheel` installed in certain cases.

See #349.
2020-07-01 05:58:34 +00:00
whitequark adbc947274 docs/install: use pip install --user on *nix. 2020-07-01 05:06:20 +00:00
whitequark 78c027fb36 docs/install: reduce repetition. 2020-07-01 04:11:51 +00:00
whitequark 7d25bd50c7 README: update to refer to documentation where applicable. 2020-07-01 04:08:02 +00:00
whitequark 20baea401b docs: reword slightly. 2020-07-01 03:59:16 +00:00
whitequark 9f731d185d docs: explain how to install GTKWave on Windows. 2020-07-01 03:47:02 +00:00
whitequark b0dbbb6b2a CI: build docs on all pushes, update only on master. 2020-07-01 03:37:29 +00:00
whitequark c20266164d docs: rewrite install instructions to be easier to understand. 2020-07-01 03:32:17 +00:00
whitequark 39c3bacb79 setup: link to proper location for docs. 2020-06-30 23:13:44 +00:00
whitequark 5048c5efc7 docs: fix syntax. 2020-06-30 22:29:43 +00:00
whitequark d5c297aa94 docs: fix CI workflow. 2020-06-30 22:28:12 +00:00
whitequark 9928b6067d docs: explain that pip3 install -e should be run after pulling. 2020-06-30 22:26:54 +00:00
whitequark 399b8f9863 Add (heavily work in progress) documentation.
To render correctly, the docs require:
 * pygments/pygments#1441
2020-06-30 22:21:16 +00:00
whitequark 8dacbbb2b2 Don't use pkg_resources.
This package is deprecated and introduces a massive amount of startup
latency. On my machine with 264 installed Python packages, it reduces
the time required to `import nmigen` from ~100ms to ~200ms.
2020-06-30 22:11:47 +00:00
whitequark 25ce260207 lib.cdc: update PulseSynchronizer to follow conventions.
Fixes #370.
2020-06-28 05:17:33 +00:00
whitequark 2606ee33ad back.pysim: simplify.
Remove _EvalContext, which was a level of indirection serving almost
no purpose. (The only case where it would be useful is repeatedly
resetting a simulation that, each time it is reset, would create new
signals to communicate with between coroutine processes. In that case
the signal states would not be persisted in _SimulatorState, but
would be removed with the _EvalContext that is recreated each time
the simulation is reset. But this could be solved with a weak map
instead.)

This regresses simulator startup time by 10-15% for unknown reasons
but is necessary to align pysim and future cxxsim.
2020-06-28 05:04:16 +00:00
Alan Green 303ea18cb6
_yosys: handle unparseable versions
Do not use yosys binaries with unparseable version numbers. This ensures
that nmigen always knows what version of yosys it is generating RTLIL
for.

The effect of this change is that if the version number of the system
yosys is unparsable, nmigen will attempt to fallback to the builtin
Yosys.

Fixes #409.
2020-06-23 12:12:02 +00:00
whitequark 706eb03e6b vendor.lattice_machxo2: add back as a compatibility shim. 2020-06-21 17:28:01 +00:00
Gwenhael Goavec-Merou 0aef5f4d48
vendor.lattice_machxo*: add MachXO3L support. 2020-06-21 17:24:47 +00:00
whitequark 868d49eccd back.verilog: refactor Yosys script generation. NFCI.
In commit 5f30bcbb, back.cxxsim gained a nicer way to generate
a script; this commit brings it to back.verilog too.
2020-06-14 09:38:32 +00:00
whitequark 5f30bcbb14 back.cxxrtl: allow injecting black boxes. 2020-06-14 09:25:54 +00:00
whitequark eddc397509 _yosys: add a way to retrieve Yosys data directory.
This is important for CXXRTL, since that's where its include files
are located.
2020-06-14 00:31:34 +00:00
whitequark 45c61969fc _yosys: fix typo in error message. 2020-06-14 00:03:36 +00:00
whitequark ca360917ba test: fix example test after commit a7b8ced9. 2020-06-11 16:36:08 +00:00
whitequark 545e49c2ca back.cxxrtl: new backend. 2020-06-11 16:19:40 +00:00
whitequark bddec3741e _yosys: translate Yosys warnings to Python warnings.
This isn't used yet (the only Yosys warning we can get is useless),
but will be handy for CXXRTL.
2020-06-11 16:12:52 +00:00
whitequark a7b8ced92c nmigen.cli: fix file type autodetection code. 2020-06-11 15:36:43 +00:00
whitequark 133d4f47d1 back.verilog: remove unused imports. NFC. 2020-06-11 15:17:49 +00:00
Adam Greig 02e30b53cc
hdl.xfrm: preserve allow_reset_less when transforming ResetSignal.
Fixes #400.
2020-06-06 11:43:25 +00:00
Shawn Anastasio 2f7c3bf443
hdl.rec: preserve shapes when constructing a layout.
Preserve the original user-provided shape, while still checking 
its validity. This allows Enum decoders to work when specifying
record fields with Enums.

Fixes #393.
2020-06-05 03:19:46 +00:00