aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #3630 from yrabbit/gw1n4c-pllMiodrag Milanović2023-01-181-0/+47
|\ | | | | gowin: add a new type of PLL - PLLVR
| * gowin: add a new type of PLL - PLLVRYRabbit2023-01-111-0/+47
| | | | | | | | | | | | | | This primitive is used in the GW1NS-4, GW1NS-4C, GW1NSR-4, GW1NSR-4C and GW1NSER-4C chips. Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
* | Merge pull request #3537 from jix/xpropJannis Harder2023-01-112-10/+60
|\ \ | |/ |/| New xprop pass
| * Add bitwise `$bweqx` and `$bwmux` cellsJannis Harder2022-11-302-1/+38
| | | | | | | | | | | | The new bitwise case equality (`$bweqx`) and bitwise mux (`$bwmux`) cells enable compact encoding and decoding of 3-valued logic signals using multiple 2-valued signals.
| * simlib: Use optional SIMLIB_GLOBAL_CLOCK to define a global clock signalJannis Harder2022-11-301-2/+8
| |
| * simlib: Silence iverilog warning for `$lut`Jannis Harder2022-11-301-1/+1
| | | | | | | | | | | | iverilog complains about implicitly truncating LUT when connecting it to the `$bmux` A input. This explicitly truncates it to avoid that warning without changing the behaviour otherwise.
| * simlib: Fix wide $bmux and avoid iverilog warningsJannis Harder2022-11-301-2/+2
| |
| * satgen, simlib: Consistent x-propagation for `$pmux` cellsJannis Harder2022-11-301-4/+11
| | | | | | | | | | This updates satgen and simlib to use a `$pmux` model where the output is fully X when the S input is not all zero or one-hot with no x bits.
* | nexus: Fix BRAM write enable in PDP modegatecat2023-01-041-2/+2
|/ | | | Signed-off-by: gatecat <gatecat@ds0.me>
* fabulous: Allow adding extra custom prims and map rulesgatecat2022-11-171-0/+32
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* fabulous: improvements to the passgatecat2022-11-176-139/+199
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* fabulous: Unify and update primitivesgatecat2022-11-173-852/+356
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Introduce RegFile mappingsTaoBi222022-11-174-2/+95
|
* Replace synth call with components, reintroduce flags and correct vpr flag ↵TaoBi222022-11-171-4/+76
| | | | implementation
* Reorder operations to load in primitive library before hierarchy passTaoBi222022-11-171-5/+6
|
* Add plib flag to specify custom primitive library pathTaoBi222022-11-171-2/+14
|
* Remove flattening from FABulous passTaoBi222022-11-171-11/+2
|
* Remove ALL currently unused flags (some to be reintroduced later and passed ↵TaoBi222022-11-171-82/+3
| | | | through to synth)
* Add synth_fabulous ScriptPassTaoBi222022-11-178-0/+1282
|
* simlib: Simplify recently changed $mux modelJannis Harder2022-10-281-4/+2
| | | | | | The use of a procedural continuous assignment introduced in #3526 was unintended and is completely unnecessary for the actual change of that PR.
* Merge pull request #3526 from jix/mux-simlib-evalJannis Harder2022-10-241-4/+1
|\ | | | | Consistent $mux undef handling
| * Consistent $mux undef handlingJannis Harder2022-10-241-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Change simlib's $mux cell to use the ternary operator as $_MUX_ already does * Stop opt_expr -keepdc from changing S=x to S=0 * Change const eval of $mux and $pmux to match the updated simlib (fixes sim) * The sat behavior of $mux already matches the updated simlib The verilog frontend uses $mux for the ternary operators and this changes all interpreations of the $mux cell (that I found) to match the verilog simulation behavior for the ternary operator. For 'if' and 'case' expressions the frontend may also use $mux but uses $eqx if the verilog simulation behavior is requested with the '-ifx' option. For $pmux there is a remaining mismatch between the sat behavior and the simlib behavior. Resolving this requires more discussion, as the $pmux cell does not directly correspond to a specific verilog construct.
* | Add smtmap.v describing the smt2 backend's behavior for undef bitsJannis Harder2022-10-202-0/+29
|/ | | | | | | | | Some builtin cells have an undefined (x) output even when all inputs are defined. This is not natively supported by the formal backends which will produce a fully defined value instead. This can lead to issues when combining different backends in a formal flow. To work around these, this adds a file containing verilog implementation of cells matching the fully defined behavior implemented by the smt2 backend.
* Test fixes for latest iverilogMiodrag Milanovic2022-09-212-3/+2
|
* sf2: add NOTES about using yosys for smartfusion2 and igloo2Tristan Gingold2022-08-311-0/+84
|
* sf2: add a test for $alu gateTristan Gingold2022-08-311-0/+22
|
* sf2: suport $alu gate and ARI1 implementationTristan Gingold2022-08-312-2/+65
|
* synth_sf2: purge on last cleanTristan Gingold2022-08-311-2/+2
| | | | LiberoSoc don't like unused nets.
* sf2/cells_sim.v: add XTLOSC, SYSRESET cellsTristan Gingold2022-08-311-1/+110
|
* sf2/cells_sim.v: add IOSTD parameter to I/O cellsTristan Gingold2022-08-311-0/+11
| | | | | This parameter is set by LiberoSoc IPs, so it is needed to avoid errors when using those IPs.
* synth_sf2: add -discard-ffinit option to discard ff initial valueTristan Gingold2022-08-311-1/+11
| | | | | | sf2 ff have no initial values, but some IP cores use initial values. In order to use those cores on sf2, it is required to discard the initial value (to be carefully used).
* Fitting help messages to 80 character widthKrystalDelusion2022-08-246-20/+25
| | | | | | | | | Uses the regex below to search (using vscode): ^\t\tlog\("(.{10,}(?<!\\n)|.{81,}\\n)"\); Finds any log messages double indented (which help messages are) and checks if *either* there are is no newline character at the end, *or* the number of characters before the newline is more than 80.
* Add the $anyinit cell and the formalff passJannis Harder2022-08-161-0/+17
| | | | | | | These can be used to protect undefined flip-flop initialization values from optimizations that are not sound for formal verification and can help mapping all solver-provided values in witness traces for flows that use different backends simultaneously.
* Order ports with default assignments firstSean Anderson2022-08-091-10/+38
| | | | | | | | | | | | | | Although the current style is allowed by the standard, Icarus verilog doesn't parse default assignments using an implicit net type: techlibs/ice40/cells_sim.v:305: syntax error techlibs/ice40/cells_sim.v:1: Errors in port declarations. Fix this by making sure that ports with default assignments first on their line. Fixes: 46d3f03d2 ("Add default assignments to other SB_* simulation models") Signed-off-by: Sean Anderson <seanga2@gmail.com>
* nexus: Fix BRAM mapping.Marcelina Kościelnicka2022-08-091-18/+56
|
* Merge pull request #3397 from pepijndevos/patch-2Miodrag Milanović2022-07-061-1/+0
|\ | | | | Apicula now supports lutram
| * Apicula now supports lutramPepijn de Vos2022-07-031-1/+0
| |
* | Fix static initialization, fixes mingw buildMiodrag Milanovic2022-07-041-20/+21
|/
* gatemate: Add LUT tree library scriptgatecat2022-06-276-6/+591
| | | | | Co-authored-by: Claire Xenia Wolf <claire@clairexen.net> Signed-off-by: gatecat <gatecat@ds0.me>
* gatemate: Add preliminary sim models for LUT tree structuresgatecat2022-06-271-0/+44
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Add -no-rw-check option to memory_dff + memory + synth_{ice40,ecp5,gowin}.Marcelina Kościelnicka2022-06-024-7/+64
|
* gatemate: Fix minor issues with `memory_libmap` (#3343)Patrick Urban2022-05-272-28/+39
|
* gatemate: Use `memory_libmap` pass.Marcelina Kościelnicka2022-05-183-781/+927
|
* machxo2: Use `memory_libmap` pass.Marcelina Kościelnicka2022-05-187-1/+578
|
* efinix: Use `memory_libmap` pass.Marcelina Kościelnicka2022-05-183-90/+163
|
* anlogic: Use `memory_libmap` pass.Marcelina Kościelnicka2022-05-189-303/+585
|
* ice40: Use `memory_libmap` pass.Marcelina Kościelnicka2022-05-188-458/+293
|
* xilinx: Use `memory_libmap` pass.Marcelina Kościelnicka2022-05-1837-2269/+4525
|
* gowin: Use `memory_libmap` pass.Marcelina Kościelnicka2022-05-189-266/+576
|
* nexus: Use `memory_libmap` pass.Marcelina Kościelnicka2022-05-1810-517/+677
|