3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2026-08-08 15:12:21 +00:00
yosys/techlibs
Emil J. Tywoniak f42923d896 mul2dsp: declare $__mul and $__soft_mul so their ports have directions
Neither is a cell anything implements. They exist so a mapping rule can
re-emit a multiplier without matching itself, and a later techmap or
`chtype` consumes them. Nothing ever declared them, so
`Cell::port_dir()` fell through to PD_UNKNOWN for every port, and
anything that has to tell a cell's inputs from its outputs had to guess.

signorm guesses "output": setup_driven_wires() skips only PD_INPUT, so
\A and \B of a $__mul are read as drivers. \B is the enclosing module's
own input, already driven by its $input_port cell, and \A is a slice, so
both take the fallback -- interpose a helper wire and connect it -- and
both sides then look driven, which is what a $connect means. _80_mul's
wide branch has two $__mul instances, and it runs `proc; clean` through
_TECHMAP_DO_, whose closing opt_expr normalizes the map design. Result:
four helper wires and four $connect cells manufactured out of a design
that has no multi-driver net in it anywhere.

Declaring them as blackboxes gives the interface a definition without
making them mappable: techmap skips blackbox templates outright
(`tpl->get_blackbox_attribute(ignore_wb)`), and every rule that emits
these types carries an explicit techmap_celltype, so nothing was relying
on matching them by module name.

96deee136 stopped the $connect cells escaping the index, which is right
regardless; this stops them being created. `make -C tests` is unchanged
at 7 failures.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MQU5XCqDYY8MbivGkNRrDo
2026-07-21 17:45:02 +02:00
..
achronix End of file fix 2026-06-23 07:23:41 +02:00
analogdevices Remove trailing whitespaces 2026-06-23 07:24:59 +02:00
anlogic WIP migration to twine 2026-07-20 12:27:18 +02:00
common mul2dsp: declare $__mul and $__soft_mul so their ports have directions 2026-07-21 17:45:02 +02:00
coolrunner2 coolrunner2: twines 2026-07-20 15:01:30 +02:00
easic Migrate build system to CMake 2026-06-03 08:58:10 +00:00
efinix WIP migration to twine 2026-07-20 12:27:18 +02:00
fabulous Remove old techmap. 2026-07-08 12:07:58 +02:00
gatemate WIP migration to twine 2026-07-20 12:27:18 +02:00
gowin gowin: replace positional arguments in cells_sim.v with named 2026-07-17 23:33:02 +02:00
greenpak4 WIP migration to twine 2026-07-20 12:27:18 +02:00
ice40 ice40_opt: retire the wrapper's ports before reinterpreting it as $lut 2026-07-21 16:52:31 +02:00
intel Revert "intel: register bram celltypes" 2026-07-17 23:38:01 +02:00
intel_alm Revert "intel: register bram celltypes" 2026-07-17 23:38:01 +02:00
lattice twines phase-3 build fix: post-fork main files broken by twine migration 2026-07-20 15:01:30 +02:00
microchip WIP migration to twine 2026-07-20 12:27:18 +02:00
nanoxplore techlibs: fix twines 2026-07-20 13:57:10 +02:00
quicklogic techlibs: fix twines 2026-07-20 13:57:10 +02:00
sf2 Remove trailing whitespaces 2026-06-23 07:24:59 +02:00
xilinx WIP migration to twine 2026-07-20 12:27:18 +02:00
CMakeLists.txt Migrate build system to CMake 2026-06-03 08:58:10 +00:00
fix_mod.py Remove trailing whitespaces 2026-06-23 07:24:59 +02:00