Annotation of multi-unit parts lead to weird behavior

I’m facing a weird behavior of the annotation function.
I created my own symbol for a dual op-amp. It has three units (the third for power). Here the schematic:

As you can see I’ve just place all the three units and I need to annotate them. After running the annotation function, this is its output:

Annotated MCP6002-I_SN (unit A) as U12A
Annotated MCP6002-I_SN (unit B) as U12B
Annotated MCP6002-I_SN (unit C) as U12C
Annotation complete.

but it makes a mess:

as you can see it misplaced the symbols and I cannot move them anymore! Any command, like edit, mirror, etc… does not work. I cannot delete them neither. The only way to recover the situation is to undo until the parts were added.

What mistake could I’ve done to create this behavior?

My kicad information:

Application: Eeschema
Version: 5.1.9-73d0e3b20d~88~ubuntu20.04.1, release build
Libraries:
    wxWidgets 3.0.4
    libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
Platform: Linux 5.4.0-70-generic x86_64, 64 bit, Little endian, wxGTK
Build Info:
    wxWidgets: 3.0.4 (wchar_t,wx containers,compatible with 2.8) GTK+ 3.24
    Boost: 1.71.0
    OpenCASCADE Community Edition: 6.9.1
    Curl: 7.68.0
    Compiler: GCC 9.3.0 with C++ ABI 1013

Build settings:
    USE_WX_GRAPHICS_CONTEXT=OFF
    USE_WX_OVERLAY=ON
    KICAD_SCRIPTING=ON
    KICAD_SCRIPTING_MODULES=ON
    KICAD_SCRIPTING_PYTHON3=ON
    KICAD_SCRIPTING_WXPYTHON=ON
    KICAD_SCRIPTING_WXPYTHON_PHOENIX=ON
    KICAD_SCRIPTING_ACTION_MENU=ON
    BUILD_GITHUB_PLUGIN=ON
    KICAD_USE_OCE=ON
    KICAD_USE_OCC=OFF
    KICAD_SPICE=ON

If your symbol has units with different meanings then you need to tell that to KiCad via the “all units are not interchangeable” flag in the symbols properties. See Tutorial: How to make a symbol (KiCad v5.1.x) section Splitting the power pins of an existing symbol into a separate unit

Super fast answer! Thank you.
I read your tutorial but I’m not sure to fully understand it.

If I check the “all items are not interchangeable” flag it means I cannot swap any unit, but the annotation feature works.

Anyway in both our examples the sections A and B are interchangeable, or at least should be.
I mean, I want to be able to swap the op-amp sections, even if I defined a different unit for the power pins.

mmm… perhaps the interchangeable property is related to the annotation feature only? And I still can change them manually from the edit dialog? If so, I think the description of the flag is a bit misleading.

KiCad currently can only allow either all units to be interchangeable or none. I think the new file format will offer more flexibility but until that point you need to choose your poison.


I think manual interchangeability is not affected by this but well you can easily test this.

1 Like

You can interchange units by editing each instance and selecting a different unit of the same type. That is to say if you change the op amp unit to a power input unit, you will get a different symbol and connections will be messed up. Naturally until the interchange is complete you will have a duplicate.

I do this all the time with multi-unit logic ICs where changing the unit can result in better routing.

Exactly. I tried and it works as expected.
Once understood is clear, but the description of the checkbox is a bit dramatic :slight_smile:

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.