doc: bring COMPAT_SUMMARY up to date.

Fixes #112.
This commit is contained in:
whitequark 2019-10-12 23:15:09 +00:00
parent 1387e2f9df
commit 1334bd6a8b

View file

@ -5,10 +5,10 @@ nMigen intends to provide as close to 100% compatibility to Migen as possible wi
API change legend: API change legend:
- *id*: identical - *id*: identical
- *obs*: removed or irreversibly changed with compatibility stub provided - *obs*: removed or incompatibly changed with compatibility stub provided
- *obs →n*: removed or irreversibly changed with compatibility stub provided, use *n* instead - *obs →n*: removed or incompatibly changed with compatibility stub provided, use *n* instead
- *brk*: removed or irreversibly changed with no replacement provided - *brk*: removed or incompatibly changed with no replacement provided
- *brk →n*: removed or irreversibly changed with no replacement provided, use *n* instead - *brk →n*: removed or incompatibly changed with no replacement provided, use *n* instead
- *→n*: renamed to *n* - *→n*: renamed to *n*
- *⇒m*: merged into *m* - *⇒m*: merged into *m*
- *a=→b=*: parameter *a* renamed to *b* - *a=→b=*: parameter *a* renamed to *b*
@ -29,101 +29,83 @@ Compatibility summary
--------------------- ---------------------
- () `fhdl``.hdl` - () `fhdl``.hdl`
- (+) `bitcontainer``.tools` - () `bitcontainer``.tools`
- (+) `log2_int` id - () `log2_int` id
- (+) `bits_for` id - () `bits_for` id
- (+) `value_bits_sign``Value.shape` - () `value_bits_sign``Value.shape`
- () `conv_output` ? - (⊕) `conv_output` **obs**
- (+) `decorators``.hdl.xfrm` - () `decorators``.hdl.xfrm`
<br>Note: `transform_*` methods not considered part of public API. <br>Note: `transform_*` methods not considered part of public API.
- (⊙) `ModuleTransformer` **brk** - (⊙) `ModuleTransformer` **brk**
- (⊙) `ControlInserter` **brk** - (⊙) `ControlInserter` **brk**
- (+) `CEInserter``EnableInserter` - () `CEInserter``EnableInserter`
- (+) `ResetInserter` id - () `ResetInserter` id
- (+) `ClockDomainsRenamer``DomainRenamer`, `cd_remapping=`→`domain_map=` - () `ClockDomainsRenamer``DomainRenamer`, `cd_remapping=`→`domain_map=`
- (⊙) `edif` **brk** - (⊙) `edif` **brk**
- (+) `module` **obs**`.hdl.dsl` - (⊕) `module` **obs**`.hdl.dsl`
- (+) `FinalizeError` **obs** <br>Note: any class inheriting from `Module` in oMigen should inherit from `Elaboratable` in nMigen and use an nMigen `Module` in its `.elaborate()` method.
- (+) `Module` **obs**`.hdl.dsl.Module` - (⊕) `FinalizeError` **obs**
- (⊕) `Module` **obs**`.hdl.dsl.Module`
- (⊙) `namer` **brk** - (⊙) `namer` **brk**
- () `simplify` ? - (⊙) `simplify` **brk**
- () `FullMemoryWE` ?
- () `MemoryToArray` ?
- () `SplitMemory` ?
- (⊕) `specials` **obs** - (⊕) `specials` **obs**
- (⊙) `Special` **brk** - (⊙) `Special` **brk**
- (⊕) `Tristate` `.lib.io.Tristate`, `target=`→`io=` - (⊕) `Tristate` **obs**
- (⊕) `TSTriple` `.lib.io.TSTriple`, `bits_sign=`→`shape=` - (⊕) `TSTriple` **obs**`.lib.io.Pin`
- (⊕) `Instance``.hdl.ir.Instance` - (⊕) `Instance``.hdl.ir.Instance`
- (⊕) `Memory` id - (⊕) `Memory` id
<br>Note: nMigen memories should not be added as submodules.
- (⊕) `.get_port` **obs**`.read_port()` + `.write_port()` - (⊕) `.get_port` **obs**`.read_port()` + `.write_port()`
- (⊕) `_MemoryPort` **obs** - (⊕) `_MemoryPort` **obs**`.hdl.mem.ReadPort` + `.hdl.mem.WritePort`
<br>Note: nMigen separates read and write ports.
- (⊕) `READ_FIRST`/`WRITE_FIRST` **obs** - (⊕) `READ_FIRST`/`WRITE_FIRST` **obs**
<br>Note: `READ_FIRST` corresponds to `mem.read_port(transparent=False)`, and `WRITE_FIRST` to `mem.read_port(transparent=True)`. <br>Note: `READ_FIRST` corresponds to `mem.read_port(transparent=False)`, and `WRITE_FIRST` to `mem.read_port(transparent=True)`.
- (⊙) `NO_CHANGE` **brk** - (⊙) `NO_CHANGE` **brk**
<br>Note: in designs using `NO_CHANGE`, repalce it with an asynchronous read port and logic implementing required semantics explicitly. <br>Note: in designs using `NO_CHANGE`, replace it with logic implementing required semantics explicitly, or with a different mode.
- () `structure``.hdl.ast` - () `structure``.hdl.ast`
- (+) `DUID` id - () `DUID` id
- (+) `_Value``Value` - () `_Value``Value`
<br>Note: values no longer valid as keys in `dict` and `set`; use `ValueDict` and `ValueSet` instead. <br>Note: values no longer valid as keys in `dict` and `set`; use `ValueDict` and `ValueSet` instead.
- (+) `wrap``Value.wrap` - (⊕) `wrap``Value.cast`
- (+) `_Operator``Operator` - (⊕) `_Operator``Operator`, `op=`→`operator=`, `.op`→`.operator`
- (+) `Mux` id - () `Mux` id
- (+) `_Slice``Slice`, `stop=`→`end=`, `.stop`→`.end` - (⊕) `_Slice``Slice` id
- (+) `_Part``Part` - (⊕) `_Part``Part` id
- (+) `Cat` id, `.l`→`.parts` - () `Cat` id, `.l`→`.parts`
- (+) `Replicate``Repl`, `v=`→`value=`, `n=`→`count=`, `.v`→`.value`, `.n`→`.count` - () `Replicate``Repl`, `v=`→`value=`, `n=`→`count=`, `.v`→`.value`, `.n`→`.count`
- (+) `Constant``Const`, `bits_sign=`→`shape=` - () `Constant``Const`, `bits_sign=`→`shape=`, `.nbits`→`.width`
- (+) `Signal` id, `bits_sign=`→`shape=`, `attr=`→`attrs=`, `name_override=`, `related=`, `variable=` - () `Signal` id, `bits_sign=`→`shape=`, `attr=`→`attrs=`, `name_override=`, `related=`, `variable=`, `.nbits`→`.width`
- (+) `ClockSignal` id, `cd=`→`domain=` - () `ClockSignal` id, `cd=`→`domain=`, `.cd`→`.domain`
- (+) `ResetSignal` id, `cd=`→`domain=` - () `ResetSignal` id, `cd=`→`domain=`, `.cd`→`.domain`
- (+) `_Statement``Statement` - () `_Statement``Statement`
- (+) `_Assign``Assign`, `l=`→`lhs=`, `r=`→`rhs=` - () `_Assign``Assign`, `l=`→`lhs=`, `r=`→`rhs=`
- (+) `_check_statement` **obs**`Statement.wrap` - (⊕) `_check_statement` **obs**`Statement.cast`
- (+) `If` **obs**`.hdl.dsl.Module.If` - () `If` **obs**`.hdl.dsl.Module.If`
- (+) `Case` **obs**`.hdl.dsl.Module.Switch` - () `Case` **obs**`.hdl.dsl.Module.Switch`
- (+) `_ArrayProxy``.hdl.ast.ArrayProxy`, `choices=`→`elems=`, `key=`→`index=` - () `_ArrayProxy``.hdl.ast.ArrayProxy`, `choices=`→`elems=`, `key=`→`index=`
- (+) `Array` id - () `Array` id
- (+) `ClockDomain``.hdl.cd.ClockDomain` - () `ClockDomain``.hdl.cd.ClockDomain`
- () `_ClockDomainList` ? - (⊙) `_ClockDomainList` **brk**
- () `SPECIAL_INPUT`/`SPECIAL_OUTPUT`/`SPECIAL_INOUT` ? - (⊙) `SPECIAL_INPUT`/`SPECIAL_OUTPUT`/`SPECIAL_INOUT` **brk**
- (⊙) `_Fragment` **brk**`.hdl.ir.Fragment` - (⊙) `_Fragment` **brk**`.hdl.ir.Fragment`
- () `tools` **brk** - (⊙) `tools` **brk**
- () `list_signals` ?
- () `list_targets` ?
- () `list_inputs` ?
- () `group_by_targets` ?
- (⊙) `list_special_ios` **brk**
- (⊙) `list_clock_domains_expr` **brk**
- () `list_clock_domains` ?
- () `is_variable` ?
- (⊙) `generate_reset` **brk**
- (⊙) `insert_reset` **brk**
- (⊙) `insert_resets` **brk**`.hdl.xfrm.ResetInserter` - (⊙) `insert_resets` **brk**`.hdl.xfrm.ResetInserter`
- (⊙) `lower_basics` **brk**
- (⊙) `lower_complex_slices` **brk**
- (⊙) `lower_complex_parts` **brk**
- (⊙) `rename_clock_domain_expr` **brk**
- (⊙) `rename_clock_domain` **brk**`.hdl.xfrm.DomainRenamer` - (⊙) `rename_clock_domain` **brk**`.hdl.xfrm.DomainRenamer`
- (⊙) `call_special_classmethod` **brk** - (⊙) `tracer` **brk**
- (⊙) `lower_specials` **brk** - (⊕) `get_var_name``.tracer.get_var_name`
- () `tracer` **brk** - (⊙) `remove_underscore` **brk**
- () `get_var_name` ? - (⊙) `get_obj_var_name` **brk**
- () `remove_underscore` ? - (⊙) `index_id` **brk**
- () `get_obj_var_name` ? - (⊙) `trace_back` **brk**
- () `index_id` ? - (⊙) `verilog`
- () `trace_back` ? - (⊙) `DummyAttrTranslate` ?
- () `verilog` - (⊕) `convert` **obs**`.back.verilog.convert`
- () `DummyAttrTranslate` ?
- () `convert` **obs**`.back.verilog.convert`
- (⊙) `visit` **brk**`.hdl.xfrm` - (⊙) `visit` **brk**`.hdl.xfrm`
- (⊙) `NodeVisitor` **brk** - (⊙) `NodeVisitor` **brk**
- (⊙) `NodeTransformer` **brk**`.hdl.xfrm.ValueTransformer`/`.hdl.xfrm.StatementTransformer` - (⊙) `NodeTransformer` **brk**`.hdl.xfrm.ValueTransformer`/`.hdl.xfrm.StatementTransformer`
- () `genlib``.lib` - () `genlib``.lib`
- () `cdc` ? - () `cdc` ?
- () `MultiRegImpl` ? - (⊙) `MultiRegImpl` **brk**
- (⊕) `MultiReg` id - (⊕) `MultiReg` `.lib.cdc.FFSynchronizer`
- () `PulseSynchronizer` ? - () `PulseSynchronizer` ?
- () `BusSynchronizer` ? - () `BusSynchronizer` ?
- (⊕) `GrayCounter` **obs**`.lib.coding.GrayEncoder` - (⊕) `GrayCounter` **obs**`.lib.coding.GrayEncoder`
@ -139,24 +121,16 @@ Compatibility summary
- (⊕) `PriorityDecoder` id - (⊕) `PriorityDecoder` id
- () `divider` ? - () `divider` ?
- () `Divider` ? - () `Divider` ?
- () `fifo` ? - (⊕) `fifo``.lib.fifo`
- (⊕) `_FIFOInterface``FIFOInterface` - (⊕) `_FIFOInterface``FIFOInterface`
- (⊕) `SyncFIFO` id, `.fifo=` - (⊕) `SyncFIFO` id, `.replace=`
- (⊕) `SyncFIFOBuffered` id, `.fifo=` - (⊕) `SyncFIFOBuffered` id, `.fifo=`
- () `AsyncFIFO` ? - (⊕) `AsyncFIFO` ?
- () `AsyncFIFOBuffered` ? - (⊕) `AsyncFIFOBuffered`, `.fifo=`
- (+) `fsm` **obs** - (⊕) `fsm` **obs**
- (+) `AnonymousState` **obs** <br>Note: FSMs are a part of core nMigen DSL; however, not all functionality is provided. The compatibility shim is a complete port of Migen FSM module.
- (+) `NextState` **obs** - (⊙) `io` **brk**
- (+) `NextValue` **obs** <br>Note: all functionality in this module is a part of nMigen platform system.
- (+) `_LowerNext` **obs**
- (+) `FSM` **obs**
- () `io` ?
- () `DifferentialInput` ?
- () `DifferentialOutput` ?
- () `CRG` ?
- () `DDRInput` ?
- () `DDROutput` ?
- () `misc` ? - () `misc` ?
- () `split` ? - () `split` ?
- () `displacer` ? - () `displacer` ?
@ -164,33 +138,30 @@ Compatibility summary
- () `timeline` ? - () `timeline` ?
- () `WaitTimer` ? - () `WaitTimer` ?
- () `BitSlip` ? - () `BitSlip` ?
- () `record` **obs**`.hdl.rec.Record` - (⊕) `record` **obs**`.hdl.rec.Record`
- () `DIR_NONE` id <br>Note: nMigen uses a `Layout` object to represent record layouts.
- () `DIR_M_TO_S``DIR_FANOUT` - (⊕) `DIR_NONE` id
- () `DIR_S_TO_M``DIR_FANIN` - (⊕) `DIR_M_TO_S``DIR_FANOUT`
- () `set_layout_parameters` **brk** - (⊕) `DIR_S_TO_M``DIR_FANIN`
- () `layout_len` **brk** - (⊕) `Record` id
- () `layout_get` **brk** - (⊙) `set_layout_parameters` **brk**
- () `layout_partial` **brk** - (⊙) `layout_len` **brk**
- () `Record` id - (⊙) `layout_get` **brk**
- (+) `resetsync` ? - (⊙) `layout_partial` **brk**
- (+) `AsyncResetSynchronizer` **obs**`.lib.cdc.ResetSynchronizer` - (⊕) `resetsync` **obs**
- (⊕) `AsyncResetSynchronizer` **obs**`.lib.cdc.ResetSynchronizer`
- () `roundrobin` ? - () `roundrobin` ?
- () `SP_WITHDRAW`/`SP_CE` ? - () `SP_WITHDRAW`/`SP_CE` ?
- () `RoundRobin` ? - () `RoundRobin` ?
- () `sort` ? - () `sort` ?
- () `BitonicSort` ? - () `BitonicSort` ?
- (-) `sim` **obs**`.back.pysim` - () `sim` **obs**`.back.pysim`
<br>Note: only items directly under `nmigen.compat.sim`, not submodules, are provided. <br>Note: only items directly under `nmigen.compat.sim`, not submodules, are provided.
- (⊙) `core` **brk** - (⊙) `core` **brk**
- (⊙) `vcd` **brk**`vcd` - (⊙) `vcd` **brk**`vcd`
- (⊙) `Simulator` **brk** - (⊙) `Simulator` **brk**
- (⊕) `run_simulation` **obs**`.back.pysim.Simulator` - (⊕) `run_simulation` **obs**`.back.pysim.Simulator`
- (⊕) `passive` **obs**`.hdl.ast.Passive` - (⊕) `passive` **obs**`.hdl.ast.Passive`
- () `build` ? - (⊙) `build` **brk**
- (+) `util` **obs** <br>Note: the build system has been completely redesigned in nMigen.
- (+) `misc``.tools` - (⊙) `util` **brk**
- (+) `flat_iteration``.flatten`
- (⊙) `xdir` **brk**
- (⊙) `gcd_multiple` **brk**
- (⊙) `treeviz` **brk**