whitequark
b23a9794a4
hdl.ast: add Value.{any,all}, mapping to $reduce_{or,and}.
...
Refs #147 .
2019-09-13 13:14:52 +00:00
whitequark
da4b810fe1
lib.fifo: adjust properties to have consistent naming.
2019-09-13 12:33:41 +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
7342662bee
hdl.ast: warn if reset value is truncated.
...
Fixes #183 .
2019-09-10 07:26:34 +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
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
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
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
William D. Jones
c934fc66e9
test.test_examples: Convert pathlib-specific class to string.
...
subprocess.check_call iterates over its arguments to check for spaces
and tabs, and on Windows, the pathlib-specific WindowsPath is not
iterable.
2019-08-20 00:54:10 +00:00
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
whitequark
003ba3b45f
hdl.cd: implement local clock domains.
...
Closes #175 .
2019-08-19 21:44:33 +00:00
whitequark
69d36dc139
hdl.xfrm: lower resets in DomainLowerer as well.
...
Changed in preparation for introducing local clock domains.
Also makes elaboration about 15% faster.
2019-08-19 21:44:30 +00:00
whitequark
404f99f022
hdl.xfrm: consider fragment's own domains in DomainLowerer.
...
Changed in preparation for introducing local clock domains.
2019-08-19 21:07:02 +00:00
whitequark
32bfbb11cb
formal→asserts
...
Closes #171 .
2019-08-19 20:23:24 +00:00
Robin Heinemann
8e048c5a7c
build.dsl: add conn argument to Connector.
2019-08-18 19:56:25 +00:00
whitequark
ed7e07c6c1
hdl.ast: implement Initial.
...
This is the last remaining part for first-class formal support.
2019-08-15 02:53:07 +00:00
whitequark
fa0fa056ba
hdl.xfrm: CEInserter→EnableInserter.
...
Fixes #166 .
2019-08-12 13:39:26 +00:00
whitequark
99d205494a
hdl.dsl: reword m.If(~True) warning to be more clear.
...
Before this commit, it only suggested one thing (silencing it) and
that's wrong almost all of the time, so suggest the right thing
instead.
2019-08-03 18:52:24 +00:00
whitequark
e0b54b417e
hdl.ir: allow adding more than one domain in missing domain callback.
...
This is useful for injecting complex power-on reset logic.
2019-08-03 18:19:40 +00:00
whitequark
9c28b61d9f
hdl.ir: don't expose as ports missing domains added via elaboratables.
...
The elaboratable is already likely driving the clk/rst signals in
some way appropriate for the platform; if we expose them as ports
nevertheless it will cause problems downstream.
2019-08-03 16:39:21 +00:00
whitequark
cea92e9531
hdl.ir: allow returning elaboratables from missing domain callback.
...
This allows e.g. injecting a clock/reset generator in platform build
code on demand (i.e. if the domain is not instantiated manually).
See #57 .
2019-08-03 15:44:02 +00:00
whitequark
fc846532c7
hdl.ir: raise DomainError if a domain is used but not defined.
...
Before this commit, a KeyError would be raised elsewhere in guts of
hdl.ir, which is not helpful.
2019-08-03 15:31:24 +00:00
whitequark
fdb0c5a6bc
hdl.ir: call back from Fragment.prepare if a clock domain is missing.
...
See #57 .
2019-08-03 14:54:20 +00:00
whitequark
ace2b5ff0a
hdl.dsl: warn on suspicious statements like m.If(~True):
.
...
This pattern usually produces an extremely hard to notice bug that
will usually break a design when it is triggered, but will also be
hidden unless the pathological value of a boolean switch is used.
Fixes #159 .
2019-08-03 14:00:29 +00:00
whitequark
ab5426ce74
Improve test added in 29fee01f
to not leak warnings.
2019-08-03 13:44:44 +00:00
whitequark
94e13effad
hdl.ast: deprecate Value.part, add Value.{bit,word}_select.
...
Fixes #148 .
2019-08-03 13:07:06 +00:00
whitequark
29fee01f86
hdl.ir: warn if .elaborate() returns None.
...
Fixes #164 .
2019-08-03 12:30:39 +00:00
whitequark
995e4adb8c
hdl.xfrm: handle mem.{Read,Write}Port in CEInserter.
...
Fixes #154 .
2019-07-31 05:20:05 +00:00
N. Engelhardt
698b005182
hdl.dsl: add getters to m.submodules.
2019-07-19 12:39:47 +00:00
William D. Jones
6ee760e83f
build.dsl: Add optional name_suffix to Resource.family.
2019-07-10 15:41:23 +00:00
whitequark
367ad5aee7
build.dsl: add Resource.family abstraction.
2019-07-09 02:44:03 +00:00
whitequark
7b4fbf8e01
build.{dsl,res}: allow platform-dependent attributes using callables.
...
Fixes #132 .
2019-07-08 11:15:04 +00:00
whitequark
0ab0a74ec1
hdl.rec: respect modifications to signals in Record.like().
...
Fixes #126 .
2019-07-08 10:59:15 +00:00
whitequark
0b844da4cf
build.{dsl,res}: allow removing attributes from subsignals.
...
This is useful when most attributes in a large composite resource
are the same, but a few signals are different, and also when building
abstractions around resources.
Fixes #128 .
2019-07-08 10:42:10 +00:00
whitequark
f0c1c2cfeb
build.dsl: allow assertions on subsignal widths.
...
This is useful when building abstractions around resources where
the pin names are user-specified.
Fixes #129 .
2019-07-08 10:42:06 +00:00
whitequark
a7fbff94d8
hdl.{ast,cd,dsl,xfrm}: reject inappropriately used comb domain.
...
Fixes #125 .
2019-07-08 10:26:49 +00:00
whitequark
5c63177fc2
test: generate examples to verilog as part of unit tests.
...
This is to make sure 806a62c2 doesn't happen again.
2019-07-08 10:12:26 +00:00
whitequark
da1f58b7ae
hdl.dsl: further clarify error message for incorrect nesting.
...
Fixes #133 .
2019-07-07 01:03:59 +00:00
whitequark
cb8be4a1b0
hdl.dsl: clarify error message for incorrect nesting.
...
Refs #133 .
2019-07-07 00:59:57 +00:00
whitequark
3388b5b085
hdl.dsl: gracefully handle FSM with no states.
2019-07-07 00:59:34 +00:00
whitequark
b471e33d7f
build.res: detect physical conflicts earlier.
...
This is useful for two reasons:
1. nMigen can provide better error messages than the platform and
do it earlier in the build pipeline.
2. Many platforms handle diffpairs by only constraining the P pin;
the N pin is completely ignored. If this is undetected,
downstream users (human or software) can rely on this
information assuming it is correct and introduce more errors.
(Of course, this will not catch every mistake, but the most
common is a copy-paste issue, and that will handle it.)
Fixes #124 .
2019-07-03 15:07:44 +00:00
whitequark
0ab215e5ed
hdl.ast: recognize a Enum used as decoder and format it better.
2019-07-02 19:34:44 +00:00
whitequark
6b843b5be6
hdl.rec: implement slicing by component names.
...
Fixes #121 .
2019-07-02 17:46:53 +00:00
whitequark
34f110100a
hdl.rec: implement Record.like.
...
Fixes #120 .
2019-07-02 17:46:53 +00:00
whitequark
94e8f479a5
hdl.mem: use read_port(domain="comb") for asynchronous read ports.
...
This avoids the absurdity of the combination of arguments that is
read_port(domain="sync", synchronous=True).
Fixes #116 .
2019-07-01 19:56:49 +00:00
whitequark
32446831b4
hdl.{ast,dsl}, back.{pysim,rtlil}: allow multiple case values.
...
This means that instead of:
with m.Case(0b00):
<body>
with m.Case(0b01):
<body>
it is legal to write:
with m.Case(0b00, 0b01):
<body>
with no change in semantics, and slightly nicer RTLIL or Verilog
output.
Fixes #103 .
2019-06-28 04:37:08 +00:00
whitequark
48d4ee4031
hdl.ir, back.rtlil: allow specifying attributes on instances.
...
Fixes #107 .
2019-06-28 04:14:38 +00:00
whitequark
e5e23644a4
hdl.{ast,dst}: directly represent RTLIL default case.
...
This makes RTLIL mildly nicer:
casez ({ \$5 , \$3 , \$1 })
3'bzz1:
\$next\o = \$7 ;
3'bz1z:
\$next\o = \$9 ;
3'b1zz:
\$next\o = \$11 ;
- 3'bz:
+ default:
{ \$next\co , \$next\o } = \$13 ;
endcase
2019-06-25 22:01:14 +00:00
whitequark
e52b15d236
hdl.ast: add name_suffix=".." option to Signal.like().
...
This simplifies creation of related signals with nice names during
metaprogramming, e.g.
def make_ff(m, sig):
sig_ff = Signal.like(sig, name_suffix="_ff")
m.d.sync += sig_ff.eq(sig)
return sig_ff
2019-06-12 22:26:57 +00:00
whitequark
efb2d773c3
build.{dsl,res,plat}: add PinsN and DiffPairsN.
2019-06-12 14:42:39 +00:00
whitequark
ad1a40c934
hdl.ast: implement values with custom lowering.
2019-06-11 07:01:44 +00:00
whitequark
066dd799e8
back.pysim: check for a clock being added twice.
...
This commit adds a best-effort error for a common mistake of adding
a clock driving the same domain twice, such as a result of
a copy-paste error.
Fixes #27 .
2019-06-11 03:54:22 +00:00
whitequark
58e39f90ce
hdl.mem: coerce memory init values to integers.
...
The coercion is carefully chosen to accept (other than normal ints)
instances of e.g. np.int64, but reject instances of e.g. float.
See https://stackoverflow.com/a/48940855/254415 for details.
Fixes #93 .
2019-06-11 03:38:44 +00:00
whitequark
b45c5119f5
build.res: allow querying frequency of a previously constrained clock.
2019-06-05 12:51:53 +00:00
whitequark
c9879c795b
build.{dsl,res,plat}: apply clock constraints to signals, not resources.
...
This adds the Clock() build DSL element, and adds a resource manager
function add_clock_constraint() that takes a Pin or a Signal.
Note that not all platforms, in particular not any nextpnr platforms
at the moment, can add constraints on arbitrary signals.
Fixes #86 .
2019-06-05 08:52:30 +00:00
whitequark
ab3f103e5a
build.dsl: replace extras= with Attrs().
...
This change proved more tricky than expected due to downstream
dependencies, so it also includes some secondary refactoring.
2019-06-05 07:02:08 +00:00
whitequark
39ca0e6fa6
compat.fhdl.module: CompatModule should be elaboratable.
...
Fixes #83 .
2019-06-04 11:11:31 +00:00
whitequark
4310254103
build.res: use ConstraintError iff a constraint invariant is violated.
...
In particular don't use it for type errors.
2019-06-04 11:00:11 +00:00
whitequark
51c03ca391
hdl.xfrm: handle empty lhs in LHSGroup{Analyzer,Filter}.
2019-06-04 10:26:01 +00:00
whitequark
9f643ce005
Clean up imports.
...
This commit:
* moves lists of universally useful imports from `nmigen` to
`nmigen.hdl` and `nmigen.lib`, reimporting them in `nmigen`;
* replaces lots of imports from individual parts of `nmigen.hdl`
with a star import from `nmigen.hdl`;
* replaces imports in tests with what we expect downstream code
to use;
* adds some missing imports in `nmigen.formal`.
2019-06-04 08:18:50 +00:00
whitequark
ed64880cc4
build.{plat,res}: add support for connectors.
...
Fixes #77 .
2019-06-03 15:02:15 +00:00
whitequark
a013eb1f59
build.dsl: add support for connectors.
2019-06-03 13:47:00 +00:00
whitequark
41adcc3f97
vendor.fpga.lattice_ice40: implement differential input buffers.
2019-06-03 08:38:12 +00:00
whitequark
b42043f764
lib.io: add i_clk and o_clk to pin layout with xdr>=1.
2019-06-03 07:43:31 +00:00
whitequark
a1940c5528
hdl.rec: unbreak hasattr(rec, ...).
...
hasattr() requires that AttributeError be raised. Change __getitem__
to raise AttributeError, too, since it is fundamentally just sugar
for getattr().
2019-06-03 07:43:31 +00:00
whitequark
6fae06aea9
build.{dsl,plat,res}: allow dir="oe".
...
Although a dir="oe" pin is generally equivalent to dir="io" pin with
the i* signal(s) disconnected, they are not equivalent, because some
pins may not be able to support input buffers at all, either because
there are no input buffers, or because the input buffers are consumed
by some other resource.
E.g. this can happen on iCE40 when the input buffer is consumed by
a PLL.
2019-06-03 04:42:55 +00:00
whitequark
1eee7cd76f
lib.io: allow dir="oe".
...
Although a dir="oe" pin is generally equivalent to dir="io" pin with
the i* signal(s) disconnected, they are not equivalent, because some
pins may not be able to support input buffers at all, either because
there are no input buffers, or because the input buffers are consumed
by some other resource.
E.g. this can happen on iCE40 when the input buffer is consumed by
a PLL.
2019-06-03 04:28:53 +00:00
whitequark
9ba2efd86b
build.{res,plat}: use xdr=0 as default, not xdr=1.
...
The previous behavior was semantically incorrect.
2019-06-03 03:36:32 +00:00
whitequark
cd6488c782
build.res: allow requesting raw ports, with dir="-".
...
This provides an escape hatch for the case where the nMigen platform
code is not flexible enough, and a IO buffer primitive needs to be
instantiated directly.
2019-06-03 03:36:32 +00:00
whitequark
c30617fc05
lib.io: allow Pin(xdr=0), representing a combinatorial I/O buffer.
2019-06-03 03:36:32 +00:00
whitequark
dc17d06fe9
vendor.fpga.lattice_ice40: instantiate SB_IO and apply extras.
...
The PULLUP and PULLUP_RESISTOR extras are representable in the PCF
file. The IO_STANDARD extra, however, can only be an SB_IO parameter.
2019-06-03 02:51:59 +00:00
whitequark
c6a0761b3a
hdl.ir: accept LHS signals like slices as Instance io ports.
...
This is unlikely to work with anything except Slice and Cat, but
there's no especially good place to enforce it. (Maybe in Instance?)
2019-06-03 02:39:14 +00:00
whitequark
b8a61edc2f
hdl.dsl: allow adding submodules with computed name, like with domains.
2019-06-03 02:22:55 +00:00
whitequark
b64a31255c
hdl.ir: accept expanded (kind, name, value) tuples in Instance.
...
This is useful for e.g. programmatically generating parameters
without having to mess with kwargs dicts.
2019-06-03 02:12:01 +00:00
whitequark
fb01854372
build.{res,plat}: propagate extras to pin fragment factories.
...
This is necessary because on some platforms, like iCE40, extras
become parameters on an IO primitive, since the constraint file
format is not expressive enough for all of them.
2019-06-03 01:58:43 +00:00
whitequark
98497b2075
build.dsl: require a dict for extras instead of a stringly array.
...
Fixes #72 .
2019-06-02 23:36:21 +00:00
whitequark
53ddff9f33
build.res: always return a Pin record.
...
In the simple cases, a Pin record consisting of exactly one field
is equivalent in every way to this single field. In the more complex
case however, it can be used as a record, making the code more robust
such that it works with both bidirectional and unidirectional pins.
2019-06-01 16:41:30 +00:00
whitequark
8c1b5a26b3
build.res: accept a list of clocks in ConstraintManager constructor.
2019-06-01 15:41:41 +00:00
Jean-François Nguyen
d393c5ec64
build.res: add ConstraintManager.
2019-05-26 01:26:58 +00:00
whitequark
3a9fe31133
build.dsl: make Pins and DiffPairs iterable.
...
Returns pin names.
2019-05-25 22:43:48 +00:00
whitequark
48145cee02
build.dsl: improve repr of Pins() and DiffPairs().
2019-05-25 22:43:23 +00:00
whitequark
2b7dc37ffe
hdl.rec: allow providing fields during construction.
...
This allows creating records populated with e.g. signals with custom
names, or sub-records that are instances of Record subclasses.
2019-05-25 22:06:56 +00:00
whitequark
3392708e2b
Consider Instances a part of containing fragment for use-def purposes.
...
Fixes #70 .
2019-05-25 20:13:43 +00:00
whitequark
c337246fc5
hdl.ir: when adding sync domain to a design, also add it to ports.
...
Otherwise we end up in a situation where the examples don't have
clk and rst as ports, which is not nice.
Fixes #67 .
2019-05-15 06:44:50 +00:00
whitequark
39bc59c924
hdl.ir: during port propagation, defs should take priority over uses.
2019-05-13 15:34:13 +00:00
whitequark
958cb18b88
hdl.ir: only pull explicitly specified ports to toplevel, if any.
...
Fixes #30 .
2019-05-12 05:21:23 +00:00
Jean-François Nguyen
dd5bd1c88d
build: add DSL for defining platform resources.
2019-04-24 11:49:01 +00:00
whitequark
585514e6ed
hdl.ir: rework named port handling for Instances.
...
The main purpose of this rework is cleanup, to avoid specifying
the direction of input ports in an implicit, ad-hoc way using
the named ports and ports dictionaries.
While working on this I realized that output ports can be connected
to anything that is valid on LHS, so this is now supported too.
2019-04-22 07:46:47 +00:00
whitequark
44711b7d08
hdl.ir: detect elaboratables that are created but not used.
...
Requres every elaboratable to inherit from Elaboratable, but still
accepts ones that do not, with a warning.
Fixes #3 .
2019-04-21 08:52:57 +00:00
whitequark
360bc9b5b4
hdl.ast: improve tests for exceptional conditions.
2019-04-21 07:20:00 +00:00
whitequark
33f9bd2a1d
hdl.ast: accept Signals with identical min/max bounds.
...
And produce a 0-bit signal.
Fixes #58 .
2019-04-21 07:16:59 +00:00
whitequark
ce1eff5464
hdl.rec: implement Record.connect.
...
Fixes #31 .
2019-04-21 06:37:08 +00:00
whitequark
611c25f909
hdl.rec: fix slicing of records.
2019-04-19 19:55:39 +00:00
whitequark
287a0531b3
lib.io: rework TSTriple/Tristate interface to use pin_layout/Pin.
2019-04-15 16:27:23 +00:00
whitequark
0a2a7025a6
hdl.xfrm: allow using FragmentTransformer on any elaboratable.
...
Fixes #29 .
2019-04-10 00:23:11 +00:00
whitequark
a74cacdc69
hdl.ast: handle a common typo, such as Signal(1, True).
2019-04-03 14:59:01 +00:00
whitequark
c9c9307a5e
test_sim: add missing add_process().
...
Fixes #43 .
2019-03-28 17:50:14 +00:00
anuejn
3c95299c4e
hdl.rec: separate record and signal name with __, not _.
...
This makes names of signals within records less ambiguous, in case
they themselves have underscores within them.
2019-03-25 14:26:00 +00:00
whitequark
8ee6bd80ff
hdl.ir: raise a more descriptive error on non-elaboratable object.
2019-02-14 20:52:42 +00:00
whitequark
f44ca291c1
lib.cdc: add ResetSynchronizer.
2019-01-26 18:07:59 +00:00
whitequark
4bf80a6e33
compat: suppress deprecation warnings that are internal or during test.
2019-01-26 15:43:00 +00:00
whitequark
7890c0adc8
test.compat: reenable tests converting to Verilog.
2019-01-26 15:29:09 +00:00
whitequark
4948162f33
hdl.ir: rename .get_fragment() to .elaborate().
...
Closes #9 .
2019-01-26 02:31:12 +00:00
whitequark
4922a73c5d
test.compat: import tests from Migen as appropriate.
...
test_signed and test_coding are adjusted slightly to account for
differences in comb propagation between the simulators; we might want
to revert that eventually.
2019-01-26 01:01:03 +00:00
whitequark
f71e0fffbb
hdl.ast: fix shape calculation for *.
...
This was carried over from Migen, and is wrong there too.
Counterexample: 1'sd-1 * 4'sd-4 = 4'sd-4 (but should be 5'sd4).
2019-01-26 00:56:40 +00:00
whitequark
7b25665fde
back.pysim: fix behavior of initial cycle for sync processes.
...
The current behavior was introduced in 65702719
, which was a wrong
fix for an issue that was actually fixed in 12e04e4e
. This commit
effectively reverts 65702719
and 1782b841
.
2019-01-25 20:37:56 +00:00
whitequark
e33580cf4c
lib.fifo: add AsyncFIFO and AsyncFIFOBuffered.
2019-01-21 16:02:46 +00:00
whitequark
12e04e4ee5
back.pysim: wake up processes before ever committing any values.
...
Otherwise, the contract of the simulator to sync processes is not
always fulfilled.
2019-01-21 16:00:25 +00:00
whitequark
b6cff2c098
lib.coding: add GrayEncoder and GrayDecoder.
...
Unlike the Migen ones, these are purely combinatorial.
2019-01-20 02:20:34 +00:00
whitequark
9de9272709
lib.fifo: use memory in the FIFO model.
...
This is unfortunately more complicated, but results in a much faster
proof.
2019-01-19 09:27:56 +00:00
whitequark
6ea0a12dd4
lib.fifo: use model equivalence to simplify formal specification.
...
This is unfortunately slow, and should probably be using theory
of arrays.
2019-01-19 09:27:56 +00:00
whitequark
c5d67b0461
hdl.xfrm: mark internal registers used in lowering Sample().
2019-01-19 07:27:32 +00:00
whitequark
97b990272e
lib.fifo: formally verify FIFO contract.
2019-01-19 00:52:56 +00:00
whitequark
5a831ce31c
lib.fifo: add basic formal specification.
2019-01-17 05:40:25 +00:00
whitequark
fa8e876356
hdl.ast: allow sampling ClockSignal, ResetSignal.
2019-01-17 05:23:06 +00:00
whitequark
8c96675580
hdl.ast: add Past, Stable, Rose, Fell.
2019-01-17 04:31:27 +00:00
whitequark
198efcad31
hdl.xfrm: add SampleLowerer.
2019-01-17 01:41:02 +00:00
whitequark
b3de114d67
hdl.ast: add Sample.
2019-01-17 01:36:27 +00:00
whitequark
b78a2be9f6
lib.fifo: port sync FIFO queues from Migen.
2019-01-16 17:20:38 +00:00
whitequark
cb2f18ee37
hdl.ast: fix naming of Signal.like() signals when tracer fails.
2019-01-16 17:20:38 +00:00
whitequark
b534e92dd5
hdl.ir: allow explicitly requesting flattening.
2019-01-14 17:04:23 +00:00
whitequark
011bf2258e
hdl: make ClockSignal and ResetSignal usable on LHS.
...
Fixes #8 .
2019-01-14 15:38:16 +00:00
whitequark
664b4bcb3a
hdl.dsl: cases wider than switch test value are unreachable.
...
In 3083c1d6
they were erroneously fixed via truncation.
2019-01-13 08:51:49 +00:00
whitequark
3083c1d6dd
hdl.dsl: accept (but warn on) cases wider than switch test value.
...
Fixes #13 .
2019-01-13 08:46:28 +00:00
whitequark
cbf7bd6e31
back.pysim: handle non-driven, non-port signals.
...
Fixes #20 .
2019-01-13 08:31:38 +00:00
William D. Jones
2412650f56
hdl.dsl: Support Assert and Assume where an Assign can occur.
2019-01-02 11:17:39 +00:00
whitequark
3c07d8d52c
hdl.rec: include record name in error message.
2019-01-01 03:39:12 +00:00
whitequark
031a9e2616
hdl.rec: use a helpful error on unknown field reference.
2019-01-01 03:35:34 +00:00
whitequark
d78e6c155b
hdl.mem: add DummyPort, for testing and verification.
2019-01-01 03:08:10 +00:00
whitequark
39eb2e8fa7
lib.cdc: fix tests to actually run.
2018-12-29 15:02:44 +00:00
whitequark
849c649259
back.pysim: warn if simulation is not run.
...
This would have prevented 3ea35b85
.
2018-12-29 15:02:04 +00:00
whitequark
92a96e1644
hdl.rec: add basic record support.
2018-12-28 13:22:10 +00:00
whitequark
3ea35b8566
lib.coding: fix tests to actually run, and fix code to fix tests.
2018-12-27 21:45:55 +00:00
whitequark
470d66934f
hdl.dsl: add support for fsm.ongoing().
2018-12-27 16:19:01 +00:00
whitequark
528747703d
lib.coding: port from Migen.
2018-12-26 13:19:34 +00:00
whitequark
fe8cb55204
lib.cdc: add tests for MultiReg.
2018-12-26 12:58:30 +00:00
whitequark
35a44f017f
hdl.dsl: forbid m.next= inside of FSM but outside of FSM state, too.
2018-12-26 12:42:43 +00:00
whitequark
934546e633
hdl.dsl: provide generated values for FSMs.
2018-12-26 12:39:05 +00:00
whitequark
040811c2e5
hdl.ir: add an API for retrieving generated values, like FSM signal.
...
This is useful for tests.
2018-12-26 12:35:35 +00:00
whitequark
54e3195dcb
hdl.dsl: implement FSM.
2018-12-26 08:55:04 +00:00
whitequark
98f554aa08
hdl.xfrm, back.rtlil: implement and use LHSGroupFilter.
...
This is a refactoring to simplify reusing the filtering code in
simulation, and separate that concern from backends in general.
2018-12-24 02:17:28 +00:00
whitequark
1c7c75a254
hdl.xfrm: implement SwitchCleaner, for pruning empty switches.
2018-12-24 02:02:59 +00:00