From 55f22c526ae81580607b13c9dfc36c9f502994ed Mon Sep 17 00:00:00 2001 From: Roberto Fernandez Bautista Date: Sun, 17 Apr 2022 23:23:22 +0200 Subject: [PATCH] Fix annotation of incomplete multi-unit symbols and re-annotation of duplicates Fixes https://gitlab.com/kicad/code/kicad/-/issues/11496 --- eeschema/annotate.cpp | 12 +- eeschema/component_references_lister.cpp | 219 +++++---- eeschema/sch_reference_list.h | 45 +- include/core/kicad_algo.h | 8 + .../test_multiunit_reannotate.kicad_pro | 326 +++++++++++++ .../test_multiunit_reannotate.kicad_sch | 357 ++++++++++++++ .../test_multiunit_reannotate_2.kicad_pro | 326 +++++++++++++ .../test_multiunit_reannotate_2.kicad_sch | 445 ++++++++++++++++++ .../test_multiunit_reannotate_3.kicad_pro | 326 +++++++++++++ .../test_multiunit_reannotate_3.kicad_sch | 361 ++++++++++++++ .../test_multiunit_reannotate_4.kicad_pro | 326 +++++++++++++ .../test_multiunit_reannotate_4.kicad_sch | 277 +++++++++++ .../test_multiunit_reannotate_5.kicad_pro | 326 +++++++++++++ .../test_multiunit_reannotate_5.kicad_sch | 381 +++++++++++++++ qa/unittests/eeschema/CMakeLists.txt | 2 + qa/unittests/eeschema/eeschema_test_utils.h | 4 +- .../eeschema/test_sch_reference_list.cpp | 299 ++++++++++++ 17 files changed, 3930 insertions(+), 110 deletions(-) create mode 100644 qa/data/eeschema/netlists/test_multiunit_reannotate/test_multiunit_reannotate.kicad_pro create mode 100644 qa/data/eeschema/netlists/test_multiunit_reannotate/test_multiunit_reannotate.kicad_sch create mode 100644 qa/data/eeschema/netlists/test_multiunit_reannotate_2/test_multiunit_reannotate_2.kicad_pro create mode 100644 qa/data/eeschema/netlists/test_multiunit_reannotate_2/test_multiunit_reannotate_2.kicad_sch create mode 100644 qa/data/eeschema/netlists/test_multiunit_reannotate_3/test_multiunit_reannotate_3.kicad_pro create mode 100644 qa/data/eeschema/netlists/test_multiunit_reannotate_3/test_multiunit_reannotate_3.kicad_sch create mode 100644 qa/data/eeschema/netlists/test_multiunit_reannotate_4/test_multiunit_reannotate_4.kicad_pro create mode 100644 qa/data/eeschema/netlists/test_multiunit_reannotate_4/test_multiunit_reannotate_4.kicad_sch create mode 100644 qa/data/eeschema/netlists/test_multiunit_reannotate_5/test_multiunit_reannotate_5.kicad_pro create mode 100644 qa/data/eeschema/netlists/test_multiunit_reannotate_5/test_multiunit_reannotate_5.kicad_sch create mode 100644 qa/unittests/eeschema/test_sch_reference_list.cpp diff --git a/eeschema/annotate.cpp b/eeschema/annotate.cpp index 5388adf37e..18e00a2a43 100644 --- a/eeschema/annotate.cpp +++ b/eeschema/annotate.cpp @@ -1,7 +1,7 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 2004-2021 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2004-2022 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -185,10 +185,6 @@ void SCH_EDIT_FRAME::AnnotateSymbols( ANNOTATE_SCOPE_T aAnnotateScope, // Store previous annotations for building info messages mapExistingAnnotation( previousAnnotation ); - // If it is an annotation for all the symbols, reset previous annotation. - if( aResetAnnotation ) - DeleteAnnotation( aAnnotateScope, &appendUndo ); - // Set sheet number and number of sheets. SetSheetNumberAndCount(); @@ -208,6 +204,12 @@ void SCH_EDIT_FRAME::AnnotateSymbols( ANNOTATE_SCOPE_T aAnnotateScope, break; } + // Remove annotation only updates the "new" flag to indicate to the algorithm + // that these references must be reannotated, but keeps the original reference + // so that we can reannotate multi-unit symbols together. + if( aResetAnnotation ) + references.RemoveAnnotation(); + // Build additional list of references to be used during reannotation // to avoid duplicate designators (no additional references when annotating // the full schematic) diff --git a/eeschema/component_references_lister.cpp b/eeschema/component_references_lister.cpp index 17e79637c7..732d8e3fa7 100644 --- a/eeschema/component_references_lister.cpp +++ b/eeschema/component_references_lister.cpp @@ -3,7 +3,7 @@ * * Copyright (C) 1992-2018 jean-pierre Charras * Copyright (C) 1992-2011 Wayne Stambaugh - * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2022 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -29,6 +29,7 @@ */ #include +#include #include #include @@ -48,7 +49,7 @@ void SCH_REFERENCE_LIST::RemoveItem( unsigned int aIndex ) } -bool SCH_REFERENCE_LIST::Contains( const SCH_REFERENCE& aItem ) +bool SCH_REFERENCE_LIST::Contains( const SCH_REFERENCE& aItem ) const { for( unsigned ii = 0; ii < GetCount(); ii++ ) { @@ -154,14 +155,14 @@ bool SCH_REFERENCE_LIST::sortByTimeStamp( const SCH_REFERENCE& item1, } -int SCH_REFERENCE_LIST::FindUnit( size_t aIndex, int aUnit ) const +int SCH_REFERENCE_LIST::FindUnit( size_t aIndex, int aUnit, bool aIncludeNew ) const { int NumRef = flatList[aIndex].m_numRef; for( size_t ii = 0; ii < flatList.size(); ii++ ) { if( ( aIndex == ii ) - || ( flatList[ii].m_isNew ) + || ( flatList[ii].m_isNew && !aIncludeNew ) || ( flatList[ii].m_numRef != NumRef ) || ( flatList[aIndex].CompareRef( flatList[ii] ) != 0 ) ) continue; @@ -210,34 +211,98 @@ void SCH_REFERENCE_LIST::GetRefsInUse( int aIndex, std::vector< int >& aIdList, aIdList.push_back( ref.m_numRef ); } - sort( aIdList.begin(), aIdList.end() ); + std::sort( aIdList.begin(), aIdList.end() ); // Ensure each reference number appears only once. If there are symbols with // multiple parts per package the same number will be stored for each part. - std::vector< int >::iterator it = unique( aIdList.begin(), aIdList.end() ); - - // Using the C++ unique algorithm only moves the duplicate entries to the end of - // of the array. This removes the duplicate entries from the array. - aIdList.resize( it - aIdList.begin() ); + alg::remove_duplicates( aIdList ); } -int SCH_REFERENCE_LIST::GetLastReference( int aIndex, int aMinValue ) const +std::vector SCH_REFERENCE_LIST::GetUnitsMatchingRef( const SCH_REFERENCE& aRef ) const { - int lastNumber = aMinValue; + std::vector unitsList; + + // Always add this reference to the list + unitsList.push_back( aRef.m_unit ); + + for( SCH_REFERENCE ref : flatList ) + { + if( ref.CompareValue( aRef ) != 0 ) + continue; + + if( ref.CompareLibName( aRef ) != 0 ) + continue; + + // Split if needed before comparing ref and number + if( ref.IsSplitNeeded() ) + ref.Split(); + + if( ref.CompareRef( aRef ) != 0 ) + continue; + + if( ref.m_numRef != aRef.m_numRef ) + continue; + + unitsList.push_back( ref.m_unit ); + } + + std::sort( unitsList.begin(), unitsList.end() ); + + // Ensure each reference number appears only once. If there are symbols with + // multiple parts per package the same number will be stored for each part. + alg::remove_duplicates( unitsList ); + + return unitsList; +} + + +int SCH_REFERENCE_LIST::FindFirstUnusedReference( const SCH_REFERENCE& aRef, int aMinValue, + const std::vector& aRequiredUnits ) const +{ + // Create a map of references indexed by reference number, only including those with the same + // reference prefix as aRef + std::map> refNumberMap; for( const SCH_REFERENCE& ref : flatList ) { // search only for the current reference prefix: - if( flatList[aIndex].CompareRef( ref ) != 0 ) + if( ref.CompareRef( aRef ) != 0 ) continue; - // update max value for the current reference prefix - if( lastNumber < ref.m_numRef ) - lastNumber = ref.m_numRef; + if( ref.m_isNew ) + continue; // It will be reannotated + + refNumberMap[ref.m_numRef].push_back( ref ); } - return lastNumber; + // Start at the given minimum value + int minFreeNumber = aMinValue; + + for( ; refNumberMap[minFreeNumber].size() > 0; ++minFreeNumber ) + { + auto isNumberInUse = [&]() -> bool + { + for( const int& unit : aRequiredUnits ) + { + for( const SCH_REFERENCE& ref : refNumberMap[minFreeNumber] ) + { + if( ref.CompareLibName( aRef ) || ref.CompareValue( aRef ) + || ref.GetUnit() == unit ) + { + return true; + } + } + } + + return false; + }; + + if( !isNumberInUse() ) + return minFreeNumber; + } + + return minFreeNumber; } @@ -261,7 +326,7 @@ std::vector SCH_REFERENCE_LIST::GetSymbolInstances() } -int SCH_REFERENCE_LIST::CreateFirstFreeRefId( std::vector& aIdList, int aFirstValue ) +int SCH_REFERENCE_LIST::createFirstFreeRefId( std::vector& aIdList, int aFirstValue ) { int expectedId = aFirstValue; @@ -327,9 +392,9 @@ void SCH_REFERENCE_LIST::ReannotateDuplicates( const SCH_REFERENCE_LIST& aAdditi if( refstr[refstr.Len() - 1] == '?' ) continue; - lockedSymbols[refstr].AddItem( ref ); - ref.m_isNew = true; // We want to reannotate all references + + lockedSymbols[refstr].AddItem( ref ); } Annotate( false, 0, 0, lockedSymbols, aAdditionalReferences, true ); @@ -390,10 +455,6 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId, int else minRefId = aStartNumber + 1; - // This is the list of all Id already in use for a given reference prefix. - // Will be refilled for each new reference prefix. - std::vectoridList; - GetRefsInUse( first, idList, minRefId ); for( unsigned ii = 0; ii < flatList.size(); ii++ ) { @@ -435,23 +496,20 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId, int minRefId = ref_unit.m_sheetNum * aSheetIntervalId + 1; else minRefId = aStartNumber + 1; - - GetRefsInUse( first, idList, minRefId ); } // Find references greater than current reference (unless not annotated) if( aStartAtCurrent && ref_unit.m_numRef > 0 ) - { minRefId = ref_unit.m_numRef; - GetRefsInUse( first, idList, minRefId ); - } // Annotation of one part per package symbols (trivial case). if( ref_unit.GetLibPart()->GetUnitCount() <= 1 ) { if( ref_unit.m_isNew ) { - LastReferenceNumber = CreateFirstFreeRefId( idList, minRefId ); + std::vector idList; + GetRefsInUse( first, idList, minRefId ); + LastReferenceNumber = createFirstFreeRefId( idList, minRefId ); ref_unit.m_numRef = LastReferenceNumber; } @@ -463,45 +521,46 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId, int // Annotation of multi-unit parts ( n units per part ) (complex case) NumberOfUnits = ref_unit.GetLibPart()->GetUnitCount(); - if( ref_unit.m_isNew ) - { - LastReferenceNumber = CreateFirstFreeRefId( idList, minRefId ); - ref_unit.m_numRef = LastReferenceNumber; - - ref_unit.m_flag = 1; - } - // If this symbol is in aLockedUnitMap, copy the annotation to all // symbols that are not it if( lockedList != nullptr ) { unsigned n_refs = lockedList->GetCount(); + std::vector units = lockedList->GetUnitsMatchingRef( ref_unit ); - for( unsigned thisRefI = 0; thisRefI < n_refs; ++thisRefI ) + if( ref_unit.m_isNew ) { - SCH_REFERENCE &thisRef = (*lockedList)[thisRefI]; + LastReferenceNumber = FindFirstUnusedReference( ref_unit, minRefId, units ); + ref_unit.m_numRef = LastReferenceNumber; + ref_unit.m_isNew = false; + ref_unit.m_flag = 1; + } - if( thisRef.IsSameInstance( ref_unit ) ) + for( unsigned lockedRefI = 0; lockedRefI < n_refs; ++lockedRefI ) + { + SCH_REFERENCE& lockedRef = ( *lockedList )[lockedRefI]; + + if( lockedRef.IsSameInstance( ref_unit ) ) { // This is the symbol we're currently annotating. Hold the unit! - ref_unit.m_unit = thisRef.m_unit; + ref_unit.m_unit = lockedRef.m_unit; // lock this new full reference inUseRefs.insert( buildFullReference( ref_unit ) ); } - if( thisRef.CompareValue( ref_unit ) != 0 ) + if( lockedRef.CompareValue( ref_unit ) != 0 ) continue; - if( thisRef.CompareLibName( ref_unit ) != 0 ) + if( lockedRef.CompareLibName( ref_unit ) != 0 ) continue; // Find the matching symbol for( unsigned jj = ii + 1; jj < flatList.size(); jj++ ) { - if( ! thisRef.IsSameInstance( flatList[jj] ) ) + if( !lockedRef.IsSameInstance( flatList[jj] ) ) continue; - wxString ref_candidate = buildFullReference( ref_unit, thisRef.m_unit ); + wxString ref_candidate = buildFullReference( ref_unit, lockedRef.m_unit ); // propagate the new reference and unit selection to the "old" symbol, // if this new full reference is not already used (can happens when initial @@ -518,56 +577,16 @@ void SCH_REFERENCE_LIST::Annotate( bool aUseSheetNum, int aSheetIntervalId, int } } } - else + else if( ref_unit.m_isNew ) { - /* search for others units of this symbol. - * we search for others parts that have the same value and the same - * reference prefix (ref without ref number) - */ - for( Unit = 1; Unit <= NumberOfUnits; Unit++ ) - { - if( ref_unit.m_unit == Unit ) - continue; - - int found = FindUnit( ii, Unit ); - - if( found >= 0 ) - continue; // this unit exists for this reference (unit already annotated) - - // Search a symbol to annotate ( same prefix, same value, not annotated) - for( unsigned jj = ii + 1; jj < flatList.size(); jj++ ) - { - auto& cmp_unit = flatList[jj]; - - if( cmp_unit.m_flag ) // already tested - continue; - - if( cmp_unit.CompareRef( ref_unit ) != 0 ) - continue; - - if( cmp_unit.CompareValue( ref_unit ) != 0 ) - continue; - - if( cmp_unit.CompareLibName( ref_unit ) != 0 ) - continue; - - if( aUseSheetNum && - cmp_unit.GetSheetPath().Cmp( ref_unit.GetSheetPath() ) != 0 ) - continue; - - if( !cmp_unit.m_isNew ) - continue; - - // Symbol without reference number found, annotate it if possible. - if( cmp_unit.m_unit == Unit ) - { - cmp_unit.m_numRef = ref_unit.m_numRef; - cmp_unit.m_flag = 1; - cmp_unit.m_isNew = false; - break; - } - } - } + // Reference belonging to multi-unit symbol that has not yet been annotated. We don't + // know what group this might belong to, so just find the first unused reference for + // this specific unit. The other units will be annotated in the following passes. + std::vector units = { ref_unit.GetUnit() }; + LastReferenceNumber = FindFirstUnusedReference( ref_unit, minRefId, units ); + ref_unit.m_numRef = LastReferenceNumber; + ref_unit.m_isNew = false; + ref_unit.m_flag = 1; } } @@ -824,6 +843,16 @@ void SCH_REFERENCE::Split() } +bool SCH_REFERENCE::IsSplitNeeded() +{ + std::string refText = GetRefStr(); + + int ll = refText.length() - 1; + + return ( refText[ll] == '?' ) || isdigit( refText[ll] ); +} + + wxString SCH_REFERENCE_LIST::Shorthand( std::vector aList ) { wxString retVal; diff --git a/eeschema/sch_reference_list.h b/eeschema/sch_reference_list.h index c6cfacdbb6..366da793d3 100644 --- a/eeschema/sch_reference_list.h +++ b/eeschema/sch_reference_list.h @@ -3,7 +3,7 @@ * * Copyright (C) 1992-2011 jean-pierre Charras * Copyright (C) 2011 Wayne Stambaugh - * Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2022 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -97,6 +97,13 @@ public: */ void Split(); + /** + * Determine if this reference needs to be split or if it likely already has been + * + * @return true if this reference hasn't been split yet + */ + bool IsSplitNeeded(); + void SetRef( const wxString& aReference ) { m_ref = aReference; } wxString GetRef() const { return m_ref; } @@ -245,7 +252,7 @@ public: * @param aItem Reference to check * @return true if aItem exists in this list */ - bool Contains( const SCH_REFERENCE& aItem ); + bool Contains( const SCH_REFERENCE& aItem ) const; /* Sort functions: * Sort functions are used to sort symbols for annotation or BOM generation. Because @@ -269,6 +276,17 @@ public: flatList[ii].Split(); } + /** + * Treat all symbols in this list as non-annotated. Does not update annotation state of the + * symbols. + * @see SCH_REFERENCE_LIST::UpdateAnnotation + */ + void RemoveAnnotation() + { + for( unsigned ii = 0; ii < GetCount(); ii++ ) + flatList[ii].m_isNew = true; + } + /** * Update the symbol references for the schematic project (or the current sheet). * @@ -410,9 +428,10 @@ public: * * @param aIndex is the index in aSymbolsList for of given #SCH_REFERENCE item to test. * @param aUnit is the given unit number to search. + * @param aIncludeNew true to include references with the "new" flag in the search. * @return index in aSymbolsList if found or -1 if not found. */ - int FindUnit( size_t aIndex, int aUnit ) const; + int FindUnit( size_t aIndex, int aUnit, bool aIncludeNew = false ) const; /** * Search the list for a symbol with the given KIID path. @@ -430,16 +449,26 @@ public: * @param aIdList is the buffer to fill. * @param aMinRefId is the minimum ID value to store. All values < aMinRefId are ignored. */ - void GetRefsInUse( int aIndex, std::vector< int >& aIdList, int aMinRefId ) const; + void GetRefsInUse( int aIndex, std::vector& aIdList, int aMinRefId ) const; /** - * Return the last used (greatest) reference number in the reference list for the prefix - * used by the symbol pointed to by \a aIndex. The symbol list must be sorted. + * Return all the unit numbers for a given reference, comparing library reference, value, + * reference number and reference prefix. + * + * @param aRef is the index of a symbol to use for reference prefix and number filtering. + */ + std::vector GetUnitsMatchingRef( const SCH_REFERENCE& aRef ) const; + + /** + * Return the first unused reference number from the properties given in aRef, ensuring + * all of the units in aRequiredUnits are also unused. * * @param aIndex The index of the reference item used for the search pattern. * @param aMinValue The minimum value for the current search. + * @param aRequiredUnits List of units to ensure are free */ - int GetLastReference( int aIndex, int aMinValue ) const; + int FindFirstUnusedReference( const SCH_REFERENCE& aRef, int aMinValue, + const std::vector& aRequiredUnits ) const; std::vector GetSymbolInstances() const; @@ -492,7 +521,7 @@ private: * @param aFirstValue The first expected free value * @return The first free (not yet used) value. */ - int CreateFirstFreeRefId( std::vector& aIdList, int aFirstValue ); + static int createFirstFreeRefId( std::vector& aIdList, int aFirstValue ); // Used for sorting static sortByTimeStamp function friend class BACK_ANNOTATE; diff --git a/include/core/kicad_algo.h b/include/core/kicad_algo.h index f09583d4db..5499e38267 100644 --- a/include/core/kicad_algo.h +++ b/include/core/kicad_algo.h @@ -175,6 +175,14 @@ void delete_if( _Container& __c, _Function&& __f ) __c.erase( std::remove_if( __c.begin(), __c.end(), std::forward<_Function>( __f ) ), __c.end() ); } +/** + * @brief Deletes all duplicate values from \a __c. + */ +template +void remove_duplicates( _Container& __c ) +{ + __c.erase( std::unique( __c.begin(), __c.end() ), __c.end() ); +} /** * @brief Integral version of std::signbit that works all compilers. diff --git a/qa/data/eeschema/netlists/test_multiunit_reannotate/test_multiunit_reannotate.kicad_pro b/qa/data/eeschema/netlists/test_multiunit_reannotate/test_multiunit_reannotate.kicad_pro new file mode 100644 index 0000000000..1a11f3e4b6 --- /dev/null +++ b/qa/data/eeschema/netlists/test_multiunit_reannotate/test_multiunit_reannotate.kicad_pro @@ -0,0 +1,326 @@ +{ + "board": { + "design_settings": { + "defaults": { + "board_outline_line_width": 0.1, + "copper_line_width": 0.2, + "copper_text_size_h": 1.5, + "copper_text_size_v": 1.5, + "copper_text_thickness": 0.3, + "other_line_width": 0.15, + "silk_line_width": 0.15, + "silk_text_size_h": 1.0, + "silk_text_size_v": 1.0, + "silk_text_thickness": 0.15 + }, + "diff_pair_dimensions": [], + "drc_exclusions": [], + "rules": { + "min_copper_edge_clearance": 0.0, + "solder_mask_clearance": 0.0, + "solder_mask_min_width": 0.0 + }, + "track_widths": [], + "via_dimensions": [] + }, + "layer_presets": [] + }, + "boards": [], + "cvpcb": { + "equivalence_files": [] + }, + "erc": { + "erc_exclusions": [], + "meta": { + "version": 0 + }, + "pin_map": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 2 + ], + [ + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 2, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + ], + "rule_severities": { + "bus_definition_conflict": "error", + "bus_entry_needed": "error", + "bus_label_syntax": "error", + "bus_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "extra_units": "error", + "global_label_dangling": "warning", + "hier_label_mismatch": "error", + "label_dangling": "error", + "lib_symbol_issues": "warning", + "multiple_net_names": "warning", + "net_not_bus_member": "warning", + "no_connect_connected": "warning", + "no_connect_dangling": "warning", + "pin_not_connected": "error", + "pin_not_driven": "error", + "pin_to_pin": "warning", + "power_pin_not_driven": "error", + "similar_labels": "warning", + "unannotated": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, + "libraries": { + "pinned_footprint_libs": [], + "pinned_symbol_libs": [] + }, + "meta": { + "filename": "test_multiunit_reannotate.kicad_pro", + "version": 1 + }, + "net_settings": { + "classes": [ + { + "bus_width": 12.0, + "clearance": 0.2, + "diff_pair_gap": 0.25, + "diff_pair_via_gap": 0.25, + "diff_pair_width": 0.2, + "line_style": 0, + "microvia_diameter": 0.3, + "microvia_drill": 0.1, + "name": "Default", + "pcb_color": "rgba(0, 0, 0, 0.000)", + "schematic_color": "rgba(0, 0, 0, 0.000)", + "track_width": 0.25, + "via_diameter": 0.8, + "via_drill": 0.4, + "wire_width": 6.0 + } + ], + "meta": { + "version": 2 + }, + "net_colors": null + }, + "pcbnew": { + "last_paths": { + "gencad": "", + "idf": "", + "netlist": "", + "specctra_dsn": "", + "step": "", + "vrml": "" + }, + "page_layout_descr_file": "" + }, + "schematic": { + "annotate_start_num": 0, + "drawing": { + "default_line_thickness": 6.0, + "default_text_size": 50.0, + "field_names": [], + "intersheets_ref_own_page": false, + "intersheets_ref_prefix": "", + "intersheets_ref_short": false, + "intersheets_ref_show": false, + "intersheets_ref_suffix": "", + "junction_size_choice": 3, + "label_size_ratio": 0.375, + "pin_symbol_size": 25.0, + "text_offset_ratio": 0.15 + }, + "legacy_lib_dir": "", + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "", + "ngspice": { + "fix_include_paths": true, + "fix_passive_vals": false, + "meta": { + "version": 0 + }, + "model_mode": 0, + "workbook_filename": "" + }, + "page_layout_descr_file": "", + "plot_directory": "", + "spice_adjust_passive_values": false, + "spice_external_command": "spice \"%I\"", + "subpart_first_id": 65, + "subpart_id_separator": 0 + }, + "sheets": [ + [ + "e63e39d7-6ac0-4ffd-8aa3-1841a4541b55", + "" + ] + ], + "text_variables": {} +} diff --git a/qa/data/eeschema/netlists/test_multiunit_reannotate/test_multiunit_reannotate.kicad_sch b/qa/data/eeschema/netlists/test_multiunit_reannotate/test_multiunit_reannotate.kicad_sch new file mode 100644 index 0000000000..d5a8f4d698 --- /dev/null +++ b/qa/data/eeschema/netlists/test_multiunit_reannotate/test_multiunit_reannotate.kicad_sch @@ -0,0 +1,357 @@ +(kicad_sch (version 20211123) (generator eeschema) + + (uuid e63e39d7-6ac0-4ffd-8aa3-1841a4541b55) + + (paper "A4") + + (lib_symbols + (symbol "Comparator:LM2903" (pin_names (offset 0.127)) (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at 3.81 3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "LM2903" (id 1) (at 6.35 -3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_locked" "" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27))) + ) + (property "ki_keywords" "cmp open collector" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Low-Power, Low-Offset Voltage, Dual Comparators, DIP-8/SOIC-8/SOP-8/TSSOP-8/VSSOP-8" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "SOIC*3.9x4.9mm*P1.27mm* DIP*W7.62mm* SOP*5.28x5.23mm*P1.27mm* VSSOP*3.0x3.0mm*P0.65mm* TSSOP*4.4x3mm*P0.65mm*" (id 7) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "LM2903_1_1" + (polyline + (pts + (xy -5.08 5.08) + (xy 5.08 0) + (xy -5.08 -5.08) + (xy -5.08 5.08) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy 3.302 -0.508) + (xy 2.794 -0.508) + (xy 3.302 0) + (xy 2.794 0.508) + (xy 2.286 0) + (xy 2.794 -0.508) + (xy 2.286 -0.508) + ) + (stroke (width 0.127) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin open_collector line (at 7.62 0 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 -2.54 0) (length 2.54) + (name "-" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 2.54 0) (length 2.54) + (name "+" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LM2903_2_1" + (polyline + (pts + (xy -5.08 5.08) + (xy 5.08 0) + (xy -5.08 -5.08) + (xy -5.08 5.08) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy 3.302 -0.508) + (xy 2.794 -0.508) + (xy 3.302 0) + (xy 2.794 0.508) + (xy 2.286 0) + (xy 2.794 -0.508) + (xy 2.286 -0.508) + ) + (stroke (width 0.127) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin input line (at -7.62 2.54 0) (length 2.54) + (name "+" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 -2.54 0) (length 2.54) + (name "_" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin open_collector line (at 7.62 0 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LM2903_3_1" + (pin power_in line (at -2.54 -7.62 90) (length 3.81) + (name "V-" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -2.54 7.62 270) (length 3.81) + (name "V+" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + ) + ) + ) + + + (polyline (pts (xy 86.36 105.41) (xy 168.91 105.41)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6341adf7-15a3-420c-8496-dc68a5a0f167) + ) + (polyline (pts (xy 168.91 105.41) (xy 168.91 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 67e5abec-f0a1-4faa-829c-13ad7561ae24) + ) + (polyline (pts (xy 168.91 134.62) (xy 86.36 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9eb2304e-04d2-47fc-8ee5-fccd2e9f90f2) + ) + (polyline (pts (xy 86.36 105.41) (xy 86.36 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ce581da9-ac1a-4c11-bedb-fb991b651d4d) + ) + + (text "TO BE REANNOTATED" (at 115.57 133.35 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 2420fd82-7ec8-4e8a-99d9-d1065447a473) + ) + (text "U2B missing" (at 120.65 92.71 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid b008cb3a-bc95-4a80-9811-6665e830944e) + ) + + (symbol (lib_id "Comparator:LM2903") (at 157.48 91.44 0) (unit 3) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 3f20a749-efe3-4804-8fef-435caaa8dacb) + (property "Reference" "U2" (id 0) (at 156.21 90.1699 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "LM2903" (id 1) (at 156.21 92.7099 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 157.48 91.44 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 157.48 91.44 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f091d3c-9b63-4a96-8626-8a903efff083)) + (pin "2" (uuid 138f1880-267a-4cf0-89d9-93f27ab943b1)) + (pin "3" (uuid 8db72d04-aa4e-4246-8b1e-434f2f787f79)) + (pin "5" (uuid d66e67f7-c757-4204-a0b8-2fd904150171)) + (pin "6" (uuid 90146c19-1be3-40dc-ab0e-a10af12a19b3)) + (pin "7" (uuid 4f28bce8-cbce-4bf4-86e5-c68d6f15e557)) + (pin "4" (uuid 25b671c2-8f85-423d-b529-05799bc4badd)) + (pin "8" (uuid 435b8f75-555b-4212-8fe2-c343b2a3f9b9)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 157.48 59.69 0) (unit 3) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 4beb5b03-60d3-49da-ad35-51f275a031d5) + (property "Reference" "U1" (id 0) (at 156.21 58.4199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 156.21 60.9599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 157.48 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 157.48 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f091d3c-9b63-4a96-8626-8a903efff083)) + (pin "2" (uuid 138f1880-267a-4cf0-89d9-93f27ab943b1)) + (pin "3" (uuid 8db72d04-aa4e-4246-8b1e-434f2f787f79)) + (pin "5" (uuid d66e67f7-c757-4204-a0b8-2fd904150171)) + (pin "6" (uuid 90146c19-1be3-40dc-ab0e-a10af12a19b3)) + (pin "7" (uuid 4f28bce8-cbce-4bf4-86e5-c68d6f15e557)) + (pin "4" (uuid 55fea3d7-3338-41ba-9742-415078f59a75)) + (pin "8" (uuid 939d2085-ca84-435b-8eaa-0232903653b7)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 99.06 120.65 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid cf058f25-2bad-4c49-a0c4-f059825c427f) + (property "Reference" "U99" (id 0) (at 99.06 110.49 0)) + (property "Value" "" (id 1) (at 99.06 113.03 0)) + (property "Footprint" "" (id 2) (at 99.06 120.65 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 99.06 120.65 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 4684bd5c-d6ff-4a61-939e-8734e6c74c3a)) + (pin "2" (uuid 78f48a94-b821-4b65-8ec6-dd89469e1860)) + (pin "3" (uuid f249c2ca-9875-4c92-aeb9-3c4a8a5a3f2a)) + (pin "5" (uuid 33aa4306-27d6-4090-96fe-2e0a2a713e0b)) + (pin "6" (uuid a631a287-dbe8-4491-9924-f1eeb226bfe0)) + (pin "7" (uuid 89bc2a9a-0459-4374-90b7-e699bb20f381)) + (pin "4" (uuid 956ad4a4-cb8d-4eef-aba4-03ec6d18e652)) + (pin "8" (uuid 1e3e2138-6822-4c2d-8218-89e25ffe3f06)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 99.06 92.71 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid d43a1d25-d37a-467a-8b09-10cf2e2ace09) + (property "Reference" "U2" (id 0) (at 99.06 82.55 0)) + (property "Value" "LM2903" (id 1) (at 99.06 85.09 0)) + (property "Footprint" "" (id 2) (at 99.06 92.71 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 99.06 92.71 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 2900965f-8b8d-458a-b86a-6e9955743074)) + (pin "2" (uuid f37a2c24-4f47-4e4d-9f7f-0bcaef509ec5)) + (pin "3" (uuid 5a7f5ba6-06c4-4b39-9065-c4c0d044c803)) + (pin "5" (uuid 33aa4306-27d6-4090-96fe-2e0a2a713e0b)) + (pin "6" (uuid a631a287-dbe8-4491-9924-f1eeb226bfe0)) + (pin "7" (uuid 89bc2a9a-0459-4374-90b7-e699bb20f381)) + (pin "4" (uuid 956ad4a4-cb8d-4eef-aba4-03ec6d18e652)) + (pin "8" (uuid 1e3e2138-6822-4c2d-8218-89e25ffe3f06)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 157.48 119.38 0) (unit 3) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid db066797-b21c-4c1c-9591-8c7c549f8087) + (property "Reference" "U99" (id 0) (at 156.21 118.1099 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "LM2903" (id 1) (at 156.21 120.6499 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 157.48 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 157.48 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f091d3c-9b63-4a96-8626-8a903efff083)) + (pin "2" (uuid 138f1880-267a-4cf0-89d9-93f27ab943b1)) + (pin "3" (uuid 8db72d04-aa4e-4246-8b1e-434f2f787f79)) + (pin "5" (uuid d66e67f7-c757-4204-a0b8-2fd904150171)) + (pin "6" (uuid 90146c19-1be3-40dc-ab0e-a10af12a19b3)) + (pin "7" (uuid 4f28bce8-cbce-4bf4-86e5-c68d6f15e557)) + (pin "4" (uuid 81a0a986-adf1-4b06-8f68-9208105ebae6)) + (pin "8" (uuid 7aeda96c-46b8-4006-b414-502a4fefdd07)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 99.06 60.96 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e09508cd-85e8-48bb-9bcb-9bab32279ab6) + (property "Reference" "U1" (id 0) (at 99.06 50.8 0)) + (property "Value" "" (id 1) (at 99.06 53.34 0)) + (property "Footprint" "" (id 2) (at 99.06 60.96 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 99.06 60.96 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b2837d6b-6cc1-45c4-aa75-fd2bb220208e)) + (pin "2" (uuid 0bb36be2-ca53-49e2-aeb3-4c5728e3d819)) + (pin "3" (uuid a0fa8234-8777-4a66-8b79-9ecbb37d6605)) + (pin "5" (uuid 33aa4306-27d6-4090-96fe-2e0a2a713e0b)) + (pin "6" (uuid a631a287-dbe8-4491-9924-f1eeb226bfe0)) + (pin "7" (uuid 89bc2a9a-0459-4374-90b7-e699bb20f381)) + (pin "4" (uuid 956ad4a4-cb8d-4eef-aba4-03ec6d18e652)) + (pin "8" (uuid 1e3e2138-6822-4c2d-8218-89e25ffe3f06)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 129.54 59.69 0) (unit 2) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e0a3a04a-2f9e-4cce-bac0-1a7c08ef4522) + (property "Reference" "U1" (id 0) (at 129.54 49.53 0)) + (property "Value" "" (id 1) (at 129.54 52.07 0)) + (property "Footprint" "" (id 2) (at 129.54 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 129.54 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5b02613f-efef-4dd0-85cc-be1c896d096d)) + (pin "2" (uuid 7d6d569a-7369-4b37-b54d-19f8e663e1c4)) + (pin "3" (uuid ab5eedbe-bf43-43a6-87ca-b41cff2974ef)) + (pin "5" (uuid 9e9af72c-36cd-4137-88d9-d05214970ed2)) + (pin "6" (uuid b42b3d16-0988-4f7b-ad3f-dfc376005ee3)) + (pin "7" (uuid 7c15e983-d86d-4112-8b09-d22a0e2aa9db)) + (pin "4" (uuid bd03a794-c35b-42b3-a331-b23630dee108)) + (pin "8" (uuid 79a4d627-c9cc-4d76-8b31-68992e42badf)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 129.54 119.38 0) (unit 2) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e6c8127f-e282-4128-8744-05f7893bc3ec) + (property "Reference" "U99" (id 0) (at 129.54 109.22 0)) + (property "Value" "" (id 1) (at 129.54 111.76 0)) + (property "Footprint" "" (id 2) (at 129.54 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 129.54 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5b02613f-efef-4dd0-85cc-be1c896d096d)) + (pin "2" (uuid 7d6d569a-7369-4b37-b54d-19f8e663e1c4)) + (pin "3" (uuid ab5eedbe-bf43-43a6-87ca-b41cff2974ef)) + (pin "5" (uuid f1cb5557-7e5b-4159-9575-fba45fd2768c)) + (pin "6" (uuid 24b5c9f7-542e-4a5e-b548-b99bbce6bbc7)) + (pin "7" (uuid 2baf912f-7f66-472f-93b9-411440649bc1)) + (pin "4" (uuid bd03a794-c35b-42b3-a331-b23630dee108)) + (pin "8" (uuid 79a4d627-c9cc-4d76-8b31-68992e42badf)) + ) + + (sheet_instances + (path "/" (page "1")) + ) + + (symbol_instances + (path "/e09508cd-85e8-48bb-9bcb-9bab32279ab6" + (reference "U1") (unit 1) (value "LM2903") (footprint "") + ) + (path "/e0a3a04a-2f9e-4cce-bac0-1a7c08ef4522" + (reference "U1") (unit 2) (value "LM2903") (footprint "") + ) + (path "/4beb5b03-60d3-49da-ad35-51f275a031d5" + (reference "U1") (unit 3) (value "LM2903") (footprint "") + ) + (path "/d43a1d25-d37a-467a-8b09-10cf2e2ace09" + (reference "U2") (unit 1) (value "LM2903") (footprint "") + ) + (path "/3f20a749-efe3-4804-8fef-435caaa8dacb" + (reference "U2") (unit 3) (value "LM2903") (footprint "") + ) + (path "/cf058f25-2bad-4c49-a0c4-f059825c427f" + (reference "U99") (unit 1) (value "LM2903") (footprint "") + ) + (path "/e6c8127f-e282-4128-8744-05f7893bc3ec" + (reference "U99") (unit 2) (value "LM2903") (footprint "") + ) + (path "/db066797-b21c-4c1c-9591-8c7c549f8087" + (reference "U99") (unit 3) (value "LM2903") (footprint "") + ) + ) +) diff --git a/qa/data/eeschema/netlists/test_multiunit_reannotate_2/test_multiunit_reannotate_2.kicad_pro b/qa/data/eeschema/netlists/test_multiunit_reannotate_2/test_multiunit_reannotate_2.kicad_pro new file mode 100644 index 0000000000..1a11f3e4b6 --- /dev/null +++ b/qa/data/eeschema/netlists/test_multiunit_reannotate_2/test_multiunit_reannotate_2.kicad_pro @@ -0,0 +1,326 @@ +{ + "board": { + "design_settings": { + "defaults": { + "board_outline_line_width": 0.1, + "copper_line_width": 0.2, + "copper_text_size_h": 1.5, + "copper_text_size_v": 1.5, + "copper_text_thickness": 0.3, + "other_line_width": 0.15, + "silk_line_width": 0.15, + "silk_text_size_h": 1.0, + "silk_text_size_v": 1.0, + "silk_text_thickness": 0.15 + }, + "diff_pair_dimensions": [], + "drc_exclusions": [], + "rules": { + "min_copper_edge_clearance": 0.0, + "solder_mask_clearance": 0.0, + "solder_mask_min_width": 0.0 + }, + "track_widths": [], + "via_dimensions": [] + }, + "layer_presets": [] + }, + "boards": [], + "cvpcb": { + "equivalence_files": [] + }, + "erc": { + "erc_exclusions": [], + "meta": { + "version": 0 + }, + "pin_map": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 2 + ], + [ + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 2, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + ], + "rule_severities": { + "bus_definition_conflict": "error", + "bus_entry_needed": "error", + "bus_label_syntax": "error", + "bus_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "extra_units": "error", + "global_label_dangling": "warning", + "hier_label_mismatch": "error", + "label_dangling": "error", + "lib_symbol_issues": "warning", + "multiple_net_names": "warning", + "net_not_bus_member": "warning", + "no_connect_connected": "warning", + "no_connect_dangling": "warning", + "pin_not_connected": "error", + "pin_not_driven": "error", + "pin_to_pin": "warning", + "power_pin_not_driven": "error", + "similar_labels": "warning", + "unannotated": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, + "libraries": { + "pinned_footprint_libs": [], + "pinned_symbol_libs": [] + }, + "meta": { + "filename": "test_multiunit_reannotate.kicad_pro", + "version": 1 + }, + "net_settings": { + "classes": [ + { + "bus_width": 12.0, + "clearance": 0.2, + "diff_pair_gap": 0.25, + "diff_pair_via_gap": 0.25, + "diff_pair_width": 0.2, + "line_style": 0, + "microvia_diameter": 0.3, + "microvia_drill": 0.1, + "name": "Default", + "pcb_color": "rgba(0, 0, 0, 0.000)", + "schematic_color": "rgba(0, 0, 0, 0.000)", + "track_width": 0.25, + "via_diameter": 0.8, + "via_drill": 0.4, + "wire_width": 6.0 + } + ], + "meta": { + "version": 2 + }, + "net_colors": null + }, + "pcbnew": { + "last_paths": { + "gencad": "", + "idf": "", + "netlist": "", + "specctra_dsn": "", + "step": "", + "vrml": "" + }, + "page_layout_descr_file": "" + }, + "schematic": { + "annotate_start_num": 0, + "drawing": { + "default_line_thickness": 6.0, + "default_text_size": 50.0, + "field_names": [], + "intersheets_ref_own_page": false, + "intersheets_ref_prefix": "", + "intersheets_ref_short": false, + "intersheets_ref_show": false, + "intersheets_ref_suffix": "", + "junction_size_choice": 3, + "label_size_ratio": 0.375, + "pin_symbol_size": 25.0, + "text_offset_ratio": 0.15 + }, + "legacy_lib_dir": "", + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "", + "ngspice": { + "fix_include_paths": true, + "fix_passive_vals": false, + "meta": { + "version": 0 + }, + "model_mode": 0, + "workbook_filename": "" + }, + "page_layout_descr_file": "", + "plot_directory": "", + "spice_adjust_passive_values": false, + "spice_external_command": "spice \"%I\"", + "subpart_first_id": 65, + "subpart_id_separator": 0 + }, + "sheets": [ + [ + "e63e39d7-6ac0-4ffd-8aa3-1841a4541b55", + "" + ] + ], + "text_variables": {} +} diff --git a/qa/data/eeschema/netlists/test_multiunit_reannotate_2/test_multiunit_reannotate_2.kicad_sch b/qa/data/eeschema/netlists/test_multiunit_reannotate_2/test_multiunit_reannotate_2.kicad_sch new file mode 100644 index 0000000000..d678753296 --- /dev/null +++ b/qa/data/eeschema/netlists/test_multiunit_reannotate_2/test_multiunit_reannotate_2.kicad_sch @@ -0,0 +1,445 @@ +(kicad_sch (version 20211123) (generator eeschema) + + (uuid e63e39d7-6ac0-4ffd-8aa3-1841a4541b55) + + (paper "A4") + + (lib_symbols + (symbol "Comparator:LM2903" (pin_names (offset 0.127)) (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at 3.81 3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "LM2903" (id 1) (at 6.35 -3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_locked" "" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27))) + ) + (property "ki_keywords" "cmp open collector" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Low-Power, Low-Offset Voltage, Dual Comparators, DIP-8/SOIC-8/SOP-8/TSSOP-8/VSSOP-8" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "SOIC*3.9x4.9mm*P1.27mm* DIP*W7.62mm* SOP*5.28x5.23mm*P1.27mm* VSSOP*3.0x3.0mm*P0.65mm* TSSOP*4.4x3mm*P0.65mm*" (id 7) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "LM2903_1_1" + (polyline + (pts + (xy -5.08 5.08) + (xy 5.08 0) + (xy -5.08 -5.08) + (xy -5.08 5.08) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy 3.302 -0.508) + (xy 2.794 -0.508) + (xy 3.302 0) + (xy 2.794 0.508) + (xy 2.286 0) + (xy 2.794 -0.508) + (xy 2.286 -0.508) + ) + (stroke (width 0.127) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin open_collector line (at 7.62 0 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 -2.54 0) (length 2.54) + (name "-" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 2.54 0) (length 2.54) + (name "+" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LM2903_2_1" + (polyline + (pts + (xy -5.08 5.08) + (xy 5.08 0) + (xy -5.08 -5.08) + (xy -5.08 5.08) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy 3.302 -0.508) + (xy 2.794 -0.508) + (xy 3.302 0) + (xy 2.794 0.508) + (xy 2.286 0) + (xy 2.794 -0.508) + (xy 2.286 -0.508) + ) + (stroke (width 0.127) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin input line (at -7.62 2.54 0) (length 2.54) + (name "+" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 -2.54 0) (length 2.54) + (name "_" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin open_collector line (at 7.62 0 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LM2903_3_1" + (pin power_in line (at -2.54 -7.62 90) (length 3.81) + (name "V-" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -2.54 7.62 270) (length 3.81) + (name "V+" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + ) + ) + (symbol "Device:Opamp_Dual" (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at 0 5.08 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "Opamp_Dual" (id 1) (at 0 -5.08 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_locked" "" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27))) + ) + (property "ki_keywords" "dual opamp" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Dual operational amplifier" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "SOIC*3.9x4.9mm*P1.27mm* DIP*W7.62mm* MSOP*3x3mm*P0.65mm* SSOP*2.95x2.8mm*P0.65mm* TSSOP*3x3mm*P0.65mm* VSSOP*P0.5mm* TO?99*" (id 7) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "Opamp_Dual_1_1" + (polyline + (pts + (xy -5.08 5.08) + (xy 5.08 0) + (xy -5.08 -5.08) + (xy -5.08 5.08) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin output line (at 7.62 0 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 -2.54 0) (length 2.54) + (name "-" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 2.54 0) (length 2.54) + (name "+" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "Opamp_Dual_2_1" + (polyline + (pts + (xy -5.08 5.08) + (xy 5.08 0) + (xy -5.08 -5.08) + (xy -5.08 5.08) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (pin input line (at -7.62 2.54 0) (length 2.54) + (name "+" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 -2.54 0) (length 2.54) + (name "-" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin output line (at 7.62 0 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "Opamp_Dual_3_1" + (pin power_in line (at -2.54 -7.62 90) (length 3.81) + (name "V-" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -2.54 7.62 270) (length 3.81) + (name "V+" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + ) + ) + ) + + + (polyline (pts (xy 86.36 105.41) (xy 168.91 105.41)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6341adf7-15a3-420c-8496-dc68a5a0f167) + ) + (polyline (pts (xy 168.91 105.41) (xy 168.91 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 67e5abec-f0a1-4faa-829c-13ad7561ae24) + ) + (polyline (pts (xy 168.91 134.62) (xy 86.36 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9eb2304e-04d2-47fc-8ee5-fccd2e9f90f2) + ) + (polyline (pts (xy 86.36 105.41) (xy 86.36 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ce581da9-ac1a-4c11-bedb-fb991b651d4d) + ) + + (text "TO BE REANNOTATED" (at 115.57 133.35 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 2420fd82-7ec8-4e8a-99d9-d1065447a473) + ) + (text "Different LibRef, same value" (at 46.99 86.36 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 87579f95-2c32-4bae-a1c8-4e64d4b74077) + ) + (text "U2B missing" (at 120.65 92.71 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid b008cb3a-bc95-4a80-9811-6665e830944e) + ) + + (symbol (lib_id "Comparator:LM2903") (at 157.48 59.69 0) (unit 3) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 4beb5b03-60d3-49da-ad35-51f275a031d5) + (property "Reference" "U1" (id 0) (at 156.21 58.4199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "LM2903" (id 1) (at 156.21 60.9599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 157.48 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 157.48 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f091d3c-9b63-4a96-8626-8a903efff084)) + (pin "2" (uuid 138f1880-267a-4cf0-89d9-93f27ab943b2)) + (pin "3" (uuid 8db72d04-aa4e-4246-8b1e-434f2f787f7a)) + (pin "5" (uuid d66e67f7-c757-4204-a0b8-2fd904150172)) + (pin "6" (uuid 90146c19-1be3-40dc-ab0e-a10af12a19b4)) + (pin "7" (uuid 4f28bce8-cbce-4bf4-86e5-c68d6f15e558)) + (pin "4" (uuid 55fea3d7-3338-41ba-9742-415078f59a75)) + (pin "8" (uuid 939d2085-ca84-435b-8eaa-0232903653b7)) + ) + + (symbol (lib_id "Device:Opamp_Dual") (at 157.48 88.9 0) (unit 3) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 9c6c5675-d78d-4a6d-b00f-22547ffb1790) + (property "Reference" "U2" (id 0) (at 156.21 87.6299 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 156.21 90.1699 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 157.48 88.9 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 157.48 88.9 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 227730e1-4daf-4051-8b85-ab4727bd16bc)) + (pin "2" (uuid 4e0bef99-39db-445c-a84c-f54440c5149f)) + (pin "3" (uuid 353ae3e9-aaa3-42cb-9754-fa9a32ea32df)) + (pin "5" (uuid bfe48729-56df-40a2-af3a-8aebff35285b)) + (pin "6" (uuid 55785d1b-646a-4d97-9117-bf24339cded2)) + (pin "7" (uuid 5ff2baa3-7c8e-4eca-beb9-d74306e1eb40)) + (pin "4" (uuid 3c048d02-8b0a-4f38-b4ad-44dab638b480)) + (pin "8" (uuid 08bbe74e-336e-46fb-bf46-95e809a2c1f8)) + ) + + (symbol (lib_id "Device:Opamp_Dual") (at 99.06 90.17 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid a2689e5c-8ccd-4e2c-8098-087f3c734022) + (property "Reference" "U2" (id 0) (at 99.06 80.01 0)) + (property "Value" "" (id 1) (at 99.06 82.55 0)) + (property "Footprint" "" (id 2) (at 99.06 90.17 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "~" (id 3) (at 99.06 90.17 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid e70e5b60-a459-4c08-abff-54232432d8fa)) + (pin "2" (uuid aed451a7-38ba-4d37-91a4-86065f3970c8)) + (pin "3" (uuid 53ded23b-dad2-4c6d-9d77-91fa13f8ed66)) + (pin "5" (uuid 77da69f1-4a7e-4daf-b100-27fb75871e8c)) + (pin "6" (uuid e48c2411-8cec-4a56-a964-fc311cc46655)) + (pin "7" (uuid 5b55646c-afd9-4127-85d7-7d899753820b)) + (pin "4" (uuid c9549976-7e08-4d60-8899-3ba07e9939f9)) + (pin "8" (uuid 86bba780-a183-42d2-86e6-b1ca627942a1)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 99.06 120.65 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid cf058f25-2bad-4c49-a0c4-f059825c427f) + (property "Reference" "U99" (id 0) (at 99.06 110.49 0)) + (property "Value" "LM2903" (id 1) (at 99.06 113.03 0)) + (property "Footprint" "" (id 2) (at 99.06 120.65 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 99.06 120.65 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 4684bd5c-d6ff-4a61-939e-8734e6c74c3a)) + (pin "2" (uuid 78f48a94-b821-4b65-8ec6-dd89469e1860)) + (pin "3" (uuid f249c2ca-9875-4c92-aeb9-3c4a8a5a3f2a)) + (pin "5" (uuid 33aa4306-27d6-4090-96fe-2e0a2a713e0b)) + (pin "6" (uuid a631a287-dbe8-4491-9924-f1eeb226bfe0)) + (pin "7" (uuid 89bc2a9a-0459-4374-90b7-e699bb20f381)) + (pin "4" (uuid 956ad4a4-cb8d-4eef-aba4-03ec6d18e652)) + (pin "8" (uuid 1e3e2138-6822-4c2d-8218-89e25ffe3f06)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 157.48 119.38 0) (unit 3) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid db066797-b21c-4c1c-9591-8c7c549f8087) + (property "Reference" "U99" (id 0) (at 156.21 118.1099 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "LM2903" (id 1) (at 156.21 120.6499 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 157.48 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 157.48 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f091d3c-9b63-4a96-8626-8a903efff085)) + (pin "2" (uuid 138f1880-267a-4cf0-89d9-93f27ab943b3)) + (pin "3" (uuid 8db72d04-aa4e-4246-8b1e-434f2f787f7b)) + (pin "5" (uuid d66e67f7-c757-4204-a0b8-2fd904150173)) + (pin "6" (uuid 90146c19-1be3-40dc-ab0e-a10af12a19b5)) + (pin "7" (uuid 4f28bce8-cbce-4bf4-86e5-c68d6f15e559)) + (pin "4" (uuid 81a0a986-adf1-4b06-8f68-9208105ebae6)) + (pin "8" (uuid 7aeda96c-46b8-4006-b414-502a4fefdd07)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 99.06 60.96 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e09508cd-85e8-48bb-9bcb-9bab32279ab6) + (property "Reference" "U1" (id 0) (at 99.06 50.8 0)) + (property "Value" "LM2903" (id 1) (at 99.06 53.34 0)) + (property "Footprint" "" (id 2) (at 99.06 60.96 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 99.06 60.96 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b2837d6b-6cc1-45c4-aa75-fd2bb220208e)) + (pin "2" (uuid 0bb36be2-ca53-49e2-aeb3-4c5728e3d819)) + (pin "3" (uuid a0fa8234-8777-4a66-8b79-9ecbb37d6605)) + (pin "5" (uuid 33aa4306-27d6-4090-96fe-2e0a2a713e0d)) + (pin "6" (uuid a631a287-dbe8-4491-9924-f1eeb226bfe2)) + (pin "7" (uuid 89bc2a9a-0459-4374-90b7-e699bb20f383)) + (pin "4" (uuid 956ad4a4-cb8d-4eef-aba4-03ec6d18e654)) + (pin "8" (uuid 1e3e2138-6822-4c2d-8218-89e25ffe3f08)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 129.54 59.69 0) (unit 2) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e0a3a04a-2f9e-4cce-bac0-1a7c08ef4522) + (property "Reference" "U1" (id 0) (at 129.54 49.53 0)) + (property "Value" "LM2903" (id 1) (at 129.54 52.07 0)) + (property "Footprint" "" (id 2) (at 129.54 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 129.54 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5b02613f-efef-4dd0-85cc-be1c896d096d)) + (pin "2" (uuid 7d6d569a-7369-4b37-b54d-19f8e663e1c4)) + (pin "3" (uuid ab5eedbe-bf43-43a6-87ca-b41cff2974ef)) + (pin "5" (uuid 9e9af72c-36cd-4137-88d9-d05214970ed2)) + (pin "6" (uuid b42b3d16-0988-4f7b-ad3f-dfc376005ee3)) + (pin "7" (uuid 7c15e983-d86d-4112-8b09-d22a0e2aa9db)) + (pin "4" (uuid bd03a794-c35b-42b3-a331-b23630dee108)) + (pin "8" (uuid 79a4d627-c9cc-4d76-8b31-68992e42badf)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 129.54 119.38 0) (unit 2) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e6c8127f-e282-4128-8744-05f7893bc3ec) + (property "Reference" "U99" (id 0) (at 129.54 109.22 0)) + (property "Value" "LM2903" (id 1) (at 129.54 111.76 0)) + (property "Footprint" "" (id 2) (at 129.54 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 129.54 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5b02613f-efef-4dd0-85cc-be1c896d096e)) + (pin "2" (uuid 7d6d569a-7369-4b37-b54d-19f8e663e1c5)) + (pin "3" (uuid ab5eedbe-bf43-43a6-87ca-b41cff2974f0)) + (pin "5" (uuid f1cb5557-7e5b-4159-9575-fba45fd2768c)) + (pin "6" (uuid 24b5c9f7-542e-4a5e-b548-b99bbce6bbc7)) + (pin "7" (uuid 2baf912f-7f66-472f-93b9-411440649bc1)) + (pin "4" (uuid bd03a794-c35b-42b3-a331-b23630dee109)) + (pin "8" (uuid 79a4d627-c9cc-4d76-8b31-68992e42bae0)) + ) + + (sheet_instances + (path "/" (page "1")) + ) + + (symbol_instances + (path "/e09508cd-85e8-48bb-9bcb-9bab32279ab6" + (reference "U1") (unit 1) (value "LM2903") (footprint "") + ) + (path "/e0a3a04a-2f9e-4cce-bac0-1a7c08ef4522" + (reference "U1") (unit 2) (value "LM2903") (footprint "") + ) + (path "/4beb5b03-60d3-49da-ad35-51f275a031d5" + (reference "U1") (unit 3) (value "LM2903") (footprint "") + ) + (path "/a2689e5c-8ccd-4e2c-8098-087f3c734022" + (reference "U2") (unit 1) (value "LM2903") (footprint "") + ) + (path "/9c6c5675-d78d-4a6d-b00f-22547ffb1790" + (reference "U2") (unit 3) (value "LM2903") (footprint "") + ) + (path "/cf058f25-2bad-4c49-a0c4-f059825c427f" + (reference "U99") (unit 1) (value "LM2903") (footprint "") + ) + (path "/e6c8127f-e282-4128-8744-05f7893bc3ec" + (reference "U99") (unit 2) (value "LM2903") (footprint "") + ) + (path "/db066797-b21c-4c1c-9591-8c7c549f8087" + (reference "U99") (unit 3) (value "LM2903") (footprint "") + ) + ) +) diff --git a/qa/data/eeschema/netlists/test_multiunit_reannotate_3/test_multiunit_reannotate_3.kicad_pro b/qa/data/eeschema/netlists/test_multiunit_reannotate_3/test_multiunit_reannotate_3.kicad_pro new file mode 100644 index 0000000000..1a11f3e4b6 --- /dev/null +++ b/qa/data/eeschema/netlists/test_multiunit_reannotate_3/test_multiunit_reannotate_3.kicad_pro @@ -0,0 +1,326 @@ +{ + "board": { + "design_settings": { + "defaults": { + "board_outline_line_width": 0.1, + "copper_line_width": 0.2, + "copper_text_size_h": 1.5, + "copper_text_size_v": 1.5, + "copper_text_thickness": 0.3, + "other_line_width": 0.15, + "silk_line_width": 0.15, + "silk_text_size_h": 1.0, + "silk_text_size_v": 1.0, + "silk_text_thickness": 0.15 + }, + "diff_pair_dimensions": [], + "drc_exclusions": [], + "rules": { + "min_copper_edge_clearance": 0.0, + "solder_mask_clearance": 0.0, + "solder_mask_min_width": 0.0 + }, + "track_widths": [], + "via_dimensions": [] + }, + "layer_presets": [] + }, + "boards": [], + "cvpcb": { + "equivalence_files": [] + }, + "erc": { + "erc_exclusions": [], + "meta": { + "version": 0 + }, + "pin_map": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 2 + ], + [ + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 2, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + ], + "rule_severities": { + "bus_definition_conflict": "error", + "bus_entry_needed": "error", + "bus_label_syntax": "error", + "bus_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "extra_units": "error", + "global_label_dangling": "warning", + "hier_label_mismatch": "error", + "label_dangling": "error", + "lib_symbol_issues": "warning", + "multiple_net_names": "warning", + "net_not_bus_member": "warning", + "no_connect_connected": "warning", + "no_connect_dangling": "warning", + "pin_not_connected": "error", + "pin_not_driven": "error", + "pin_to_pin": "warning", + "power_pin_not_driven": "error", + "similar_labels": "warning", + "unannotated": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, + "libraries": { + "pinned_footprint_libs": [], + "pinned_symbol_libs": [] + }, + "meta": { + "filename": "test_multiunit_reannotate.kicad_pro", + "version": 1 + }, + "net_settings": { + "classes": [ + { + "bus_width": 12.0, + "clearance": 0.2, + "diff_pair_gap": 0.25, + "diff_pair_via_gap": 0.25, + "diff_pair_width": 0.2, + "line_style": 0, + "microvia_diameter": 0.3, + "microvia_drill": 0.1, + "name": "Default", + "pcb_color": "rgba(0, 0, 0, 0.000)", + "schematic_color": "rgba(0, 0, 0, 0.000)", + "track_width": 0.25, + "via_diameter": 0.8, + "via_drill": 0.4, + "wire_width": 6.0 + } + ], + "meta": { + "version": 2 + }, + "net_colors": null + }, + "pcbnew": { + "last_paths": { + "gencad": "", + "idf": "", + "netlist": "", + "specctra_dsn": "", + "step": "", + "vrml": "" + }, + "page_layout_descr_file": "" + }, + "schematic": { + "annotate_start_num": 0, + "drawing": { + "default_line_thickness": 6.0, + "default_text_size": 50.0, + "field_names": [], + "intersheets_ref_own_page": false, + "intersheets_ref_prefix": "", + "intersheets_ref_short": false, + "intersheets_ref_show": false, + "intersheets_ref_suffix": "", + "junction_size_choice": 3, + "label_size_ratio": 0.375, + "pin_symbol_size": 25.0, + "text_offset_ratio": 0.15 + }, + "legacy_lib_dir": "", + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "", + "ngspice": { + "fix_include_paths": true, + "fix_passive_vals": false, + "meta": { + "version": 0 + }, + "model_mode": 0, + "workbook_filename": "" + }, + "page_layout_descr_file": "", + "plot_directory": "", + "spice_adjust_passive_values": false, + "spice_external_command": "spice \"%I\"", + "subpart_first_id": 65, + "subpart_id_separator": 0 + }, + "sheets": [ + [ + "e63e39d7-6ac0-4ffd-8aa3-1841a4541b55", + "" + ] + ], + "text_variables": {} +} diff --git a/qa/data/eeschema/netlists/test_multiunit_reannotate_3/test_multiunit_reannotate_3.kicad_sch b/qa/data/eeschema/netlists/test_multiunit_reannotate_3/test_multiunit_reannotate_3.kicad_sch new file mode 100644 index 0000000000..1948d86cc1 --- /dev/null +++ b/qa/data/eeschema/netlists/test_multiunit_reannotate_3/test_multiunit_reannotate_3.kicad_sch @@ -0,0 +1,361 @@ +(kicad_sch (version 20211123) (generator eeschema) + + (uuid e63e39d7-6ac0-4ffd-8aa3-1841a4541b55) + + (paper "A4") + + (lib_symbols + (symbol "Comparator:LM2903" (pin_names (offset 0.127)) (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at 3.81 3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "LM2903" (id 1) (at 6.35 -3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_locked" "" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27))) + ) + (property "ki_keywords" "cmp open collector" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Low-Power, Low-Offset Voltage, Dual Comparators, DIP-8/SOIC-8/SOP-8/TSSOP-8/VSSOP-8" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "SOIC*3.9x4.9mm*P1.27mm* DIP*W7.62mm* SOP*5.28x5.23mm*P1.27mm* VSSOP*3.0x3.0mm*P0.65mm* TSSOP*4.4x3mm*P0.65mm*" (id 7) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "LM2903_1_1" + (polyline + (pts + (xy -5.08 5.08) + (xy 5.08 0) + (xy -5.08 -5.08) + (xy -5.08 5.08) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy 3.302 -0.508) + (xy 2.794 -0.508) + (xy 3.302 0) + (xy 2.794 0.508) + (xy 2.286 0) + (xy 2.794 -0.508) + (xy 2.286 -0.508) + ) + (stroke (width 0.127) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin open_collector line (at 7.62 0 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 -2.54 0) (length 2.54) + (name "-" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 2.54 0) (length 2.54) + (name "+" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LM2903_2_1" + (polyline + (pts + (xy -5.08 5.08) + (xy 5.08 0) + (xy -5.08 -5.08) + (xy -5.08 5.08) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy 3.302 -0.508) + (xy 2.794 -0.508) + (xy 3.302 0) + (xy 2.794 0.508) + (xy 2.286 0) + (xy 2.794 -0.508) + (xy 2.286 -0.508) + ) + (stroke (width 0.127) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin input line (at -7.62 2.54 0) (length 2.54) + (name "+" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 -2.54 0) (length 2.54) + (name "_" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin open_collector line (at 7.62 0 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LM2903_3_1" + (pin power_in line (at -2.54 -7.62 90) (length 3.81) + (name "V-" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -2.54 7.62 270) (length 3.81) + (name "V+" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + ) + ) + ) + + + (polyline (pts (xy 86.36 105.41) (xy 168.91 105.41)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6341adf7-15a3-420c-8496-dc68a5a0f167) + ) + (polyline (pts (xy 168.91 105.41) (xy 168.91 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 67e5abec-f0a1-4faa-829c-13ad7561ae24) + ) + (polyline (pts (xy 168.91 134.62) (xy 86.36 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9eb2304e-04d2-47fc-8ee5-fccd2e9f90f2) + ) + (polyline (pts (xy 86.36 105.41) (xy 86.36 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ce581da9-ac1a-4c11-bedb-fb991b651d4d) + ) + + (text "TO BE REANNOTATED" (at 115.57 133.35 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 2420fd82-7ec8-4e8a-99d9-d1065447a473) + ) + (text "Same Libref, different Value" (at 48.26 91.44 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 4ef07d45-f940-4cb6-bb96-2ddec13fd099) + ) + (text "U2B missing" (at 120.65 92.71 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid b008cb3a-bc95-4a80-9811-6665e830944e) + ) + + (symbol (lib_id "Comparator:LM2903") (at 157.48 91.44 0) (unit 3) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 3f20a749-efe3-4804-8fef-435caaa8dacb) + (property "Reference" "U2" (id 0) (at 156.21 90.1699 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 156.21 92.7099 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 157.48 91.44 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 157.48 91.44 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f091d3c-9b63-4a96-8626-8a903efff083)) + (pin "2" (uuid 138f1880-267a-4cf0-89d9-93f27ab943b1)) + (pin "3" (uuid 8db72d04-aa4e-4246-8b1e-434f2f787f79)) + (pin "5" (uuid d66e67f7-c757-4204-a0b8-2fd904150171)) + (pin "6" (uuid 90146c19-1be3-40dc-ab0e-a10af12a19b3)) + (pin "7" (uuid 4f28bce8-cbce-4bf4-86e5-c68d6f15e557)) + (pin "4" (uuid 25b671c2-8f85-423d-b529-05799bc4badd)) + (pin "8" (uuid 435b8f75-555b-4212-8fe2-c343b2a3f9b9)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 157.48 59.69 0) (unit 3) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 4beb5b03-60d3-49da-ad35-51f275a031d5) + (property "Reference" "U1" (id 0) (at 156.21 58.4199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "LM2903" (id 1) (at 156.21 60.9599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 157.48 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 157.48 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f091d3c-9b63-4a96-8626-8a903efff084)) + (pin "2" (uuid 138f1880-267a-4cf0-89d9-93f27ab943b2)) + (pin "3" (uuid 8db72d04-aa4e-4246-8b1e-434f2f787f7a)) + (pin "5" (uuid d66e67f7-c757-4204-a0b8-2fd904150172)) + (pin "6" (uuid 90146c19-1be3-40dc-ab0e-a10af12a19b4)) + (pin "7" (uuid 4f28bce8-cbce-4bf4-86e5-c68d6f15e558)) + (pin "4" (uuid 55fea3d7-3338-41ba-9742-415078f59a75)) + (pin "8" (uuid 939d2085-ca84-435b-8eaa-0232903653b7)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 99.06 120.65 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid cf058f25-2bad-4c49-a0c4-f059825c427f) + (property "Reference" "U99" (id 0) (at 99.06 110.49 0)) + (property "Value" "LM2903" (id 1) (at 99.06 113.03 0)) + (property "Footprint" "" (id 2) (at 99.06 120.65 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 99.06 120.65 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 4684bd5c-d6ff-4a61-939e-8734e6c74c3a)) + (pin "2" (uuid 78f48a94-b821-4b65-8ec6-dd89469e1860)) + (pin "3" (uuid f249c2ca-9875-4c92-aeb9-3c4a8a5a3f2a)) + (pin "5" (uuid 33aa4306-27d6-4090-96fe-2e0a2a713e0b)) + (pin "6" (uuid a631a287-dbe8-4491-9924-f1eeb226bfe0)) + (pin "7" (uuid 89bc2a9a-0459-4374-90b7-e699bb20f381)) + (pin "4" (uuid 956ad4a4-cb8d-4eef-aba4-03ec6d18e652)) + (pin "8" (uuid 1e3e2138-6822-4c2d-8218-89e25ffe3f06)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 99.06 92.71 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid d43a1d25-d37a-467a-8b09-10cf2e2ace09) + (property "Reference" "U2" (id 0) (at 99.06 82.55 0)) + (property "Value" "" (id 1) (at 99.06 85.09 0)) + (property "Footprint" "" (id 2) (at 99.06 92.71 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 99.06 92.71 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 2900965f-8b8d-458a-b86a-6e9955743074)) + (pin "2" (uuid f37a2c24-4f47-4e4d-9f7f-0bcaef509ec5)) + (pin "3" (uuid 5a7f5ba6-06c4-4b39-9065-c4c0d044c803)) + (pin "5" (uuid 33aa4306-27d6-4090-96fe-2e0a2a713e0c)) + (pin "6" (uuid a631a287-dbe8-4491-9924-f1eeb226bfe1)) + (pin "7" (uuid 89bc2a9a-0459-4374-90b7-e699bb20f382)) + (pin "4" (uuid 956ad4a4-cb8d-4eef-aba4-03ec6d18e653)) + (pin "8" (uuid 1e3e2138-6822-4c2d-8218-89e25ffe3f07)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 157.48 119.38 0) (unit 3) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid db066797-b21c-4c1c-9591-8c7c549f8087) + (property "Reference" "U99" (id 0) (at 156.21 118.1099 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "LM2903" (id 1) (at 156.21 120.6499 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 157.48 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 157.48 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f091d3c-9b63-4a96-8626-8a903efff085)) + (pin "2" (uuid 138f1880-267a-4cf0-89d9-93f27ab943b3)) + (pin "3" (uuid 8db72d04-aa4e-4246-8b1e-434f2f787f7b)) + (pin "5" (uuid d66e67f7-c757-4204-a0b8-2fd904150173)) + (pin "6" (uuid 90146c19-1be3-40dc-ab0e-a10af12a19b5)) + (pin "7" (uuid 4f28bce8-cbce-4bf4-86e5-c68d6f15e559)) + (pin "4" (uuid 81a0a986-adf1-4b06-8f68-9208105ebae6)) + (pin "8" (uuid 7aeda96c-46b8-4006-b414-502a4fefdd07)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 99.06 60.96 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e09508cd-85e8-48bb-9bcb-9bab32279ab6) + (property "Reference" "U1" (id 0) (at 99.06 50.8 0)) + (property "Value" "LM2903" (id 1) (at 99.06 53.34 0)) + (property "Footprint" "" (id 2) (at 99.06 60.96 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 99.06 60.96 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b2837d6b-6cc1-45c4-aa75-fd2bb220208e)) + (pin "2" (uuid 0bb36be2-ca53-49e2-aeb3-4c5728e3d819)) + (pin "3" (uuid a0fa8234-8777-4a66-8b79-9ecbb37d6605)) + (pin "5" (uuid 33aa4306-27d6-4090-96fe-2e0a2a713e0d)) + (pin "6" (uuid a631a287-dbe8-4491-9924-f1eeb226bfe2)) + (pin "7" (uuid 89bc2a9a-0459-4374-90b7-e699bb20f383)) + (pin "4" (uuid 956ad4a4-cb8d-4eef-aba4-03ec6d18e654)) + (pin "8" (uuid 1e3e2138-6822-4c2d-8218-89e25ffe3f08)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 129.54 59.69 0) (unit 2) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e0a3a04a-2f9e-4cce-bac0-1a7c08ef4522) + (property "Reference" "U1" (id 0) (at 129.54 49.53 0)) + (property "Value" "LM2903" (id 1) (at 129.54 52.07 0)) + (property "Footprint" "" (id 2) (at 129.54 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 129.54 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5b02613f-efef-4dd0-85cc-be1c896d096d)) + (pin "2" (uuid 7d6d569a-7369-4b37-b54d-19f8e663e1c4)) + (pin "3" (uuid ab5eedbe-bf43-43a6-87ca-b41cff2974ef)) + (pin "5" (uuid 9e9af72c-36cd-4137-88d9-d05214970ed2)) + (pin "6" (uuid b42b3d16-0988-4f7b-ad3f-dfc376005ee3)) + (pin "7" (uuid 7c15e983-d86d-4112-8b09-d22a0e2aa9db)) + (pin "4" (uuid bd03a794-c35b-42b3-a331-b23630dee108)) + (pin "8" (uuid 79a4d627-c9cc-4d76-8b31-68992e42badf)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 129.54 119.38 0) (unit 2) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e6c8127f-e282-4128-8744-05f7893bc3ec) + (property "Reference" "U99" (id 0) (at 129.54 109.22 0)) + (property "Value" "LM2903" (id 1) (at 129.54 111.76 0)) + (property "Footprint" "" (id 2) (at 129.54 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 129.54 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5b02613f-efef-4dd0-85cc-be1c896d096e)) + (pin "2" (uuid 7d6d569a-7369-4b37-b54d-19f8e663e1c5)) + (pin "3" (uuid ab5eedbe-bf43-43a6-87ca-b41cff2974f0)) + (pin "5" (uuid f1cb5557-7e5b-4159-9575-fba45fd2768c)) + (pin "6" (uuid 24b5c9f7-542e-4a5e-b548-b99bbce6bbc7)) + (pin "7" (uuid 2baf912f-7f66-472f-93b9-411440649bc1)) + (pin "4" (uuid bd03a794-c35b-42b3-a331-b23630dee109)) + (pin "8" (uuid 79a4d627-c9cc-4d76-8b31-68992e42bae0)) + ) + + (sheet_instances + (path "/" (page "1")) + ) + + (symbol_instances + (path "/e09508cd-85e8-48bb-9bcb-9bab32279ab6" + (reference "U1") (unit 1) (value "LM2903") (footprint "") + ) + (path "/e0a3a04a-2f9e-4cce-bac0-1a7c08ef4522" + (reference "U1") (unit 2) (value "LM2903") (footprint "") + ) + (path "/4beb5b03-60d3-49da-ad35-51f275a031d5" + (reference "U1") (unit 3) (value "LM2903") (footprint "") + ) + (path "/d43a1d25-d37a-467a-8b09-10cf2e2ace09" + (reference "U2") (unit 1) (value "SomeOtherValue") (footprint "") + ) + (path "/3f20a749-efe3-4804-8fef-435caaa8dacb" + (reference "U2") (unit 3) (value "SomeOtherValue") (footprint "") + ) + (path "/cf058f25-2bad-4c49-a0c4-f059825c427f" + (reference "U99") (unit 1) (value "LM2903") (footprint "") + ) + (path "/e6c8127f-e282-4128-8744-05f7893bc3ec" + (reference "U99") (unit 2) (value "LM2903") (footprint "") + ) + (path "/db066797-b21c-4c1c-9591-8c7c549f8087" + (reference "U99") (unit 3) (value "LM2903") (footprint "") + ) + ) +) diff --git a/qa/data/eeschema/netlists/test_multiunit_reannotate_4/test_multiunit_reannotate_4.kicad_pro b/qa/data/eeschema/netlists/test_multiunit_reannotate_4/test_multiunit_reannotate_4.kicad_pro new file mode 100644 index 0000000000..1a11f3e4b6 --- /dev/null +++ b/qa/data/eeschema/netlists/test_multiunit_reannotate_4/test_multiunit_reannotate_4.kicad_pro @@ -0,0 +1,326 @@ +{ + "board": { + "design_settings": { + "defaults": { + "board_outline_line_width": 0.1, + "copper_line_width": 0.2, + "copper_text_size_h": 1.5, + "copper_text_size_v": 1.5, + "copper_text_thickness": 0.3, + "other_line_width": 0.15, + "silk_line_width": 0.15, + "silk_text_size_h": 1.0, + "silk_text_size_v": 1.0, + "silk_text_thickness": 0.15 + }, + "diff_pair_dimensions": [], + "drc_exclusions": [], + "rules": { + "min_copper_edge_clearance": 0.0, + "solder_mask_clearance": 0.0, + "solder_mask_min_width": 0.0 + }, + "track_widths": [], + "via_dimensions": [] + }, + "layer_presets": [] + }, + "boards": [], + "cvpcb": { + "equivalence_files": [] + }, + "erc": { + "erc_exclusions": [], + "meta": { + "version": 0 + }, + "pin_map": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 2 + ], + [ + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 2, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + ], + "rule_severities": { + "bus_definition_conflict": "error", + "bus_entry_needed": "error", + "bus_label_syntax": "error", + "bus_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "extra_units": "error", + "global_label_dangling": "warning", + "hier_label_mismatch": "error", + "label_dangling": "error", + "lib_symbol_issues": "warning", + "multiple_net_names": "warning", + "net_not_bus_member": "warning", + "no_connect_connected": "warning", + "no_connect_dangling": "warning", + "pin_not_connected": "error", + "pin_not_driven": "error", + "pin_to_pin": "warning", + "power_pin_not_driven": "error", + "similar_labels": "warning", + "unannotated": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, + "libraries": { + "pinned_footprint_libs": [], + "pinned_symbol_libs": [] + }, + "meta": { + "filename": "test_multiunit_reannotate.kicad_pro", + "version": 1 + }, + "net_settings": { + "classes": [ + { + "bus_width": 12.0, + "clearance": 0.2, + "diff_pair_gap": 0.25, + "diff_pair_via_gap": 0.25, + "diff_pair_width": 0.2, + "line_style": 0, + "microvia_diameter": 0.3, + "microvia_drill": 0.1, + "name": "Default", + "pcb_color": "rgba(0, 0, 0, 0.000)", + "schematic_color": "rgba(0, 0, 0, 0.000)", + "track_width": 0.25, + "via_diameter": 0.8, + "via_drill": 0.4, + "wire_width": 6.0 + } + ], + "meta": { + "version": 2 + }, + "net_colors": null + }, + "pcbnew": { + "last_paths": { + "gencad": "", + "idf": "", + "netlist": "", + "specctra_dsn": "", + "step": "", + "vrml": "" + }, + "page_layout_descr_file": "" + }, + "schematic": { + "annotate_start_num": 0, + "drawing": { + "default_line_thickness": 6.0, + "default_text_size": 50.0, + "field_names": [], + "intersheets_ref_own_page": false, + "intersheets_ref_prefix": "", + "intersheets_ref_short": false, + "intersheets_ref_show": false, + "intersheets_ref_suffix": "", + "junction_size_choice": 3, + "label_size_ratio": 0.375, + "pin_symbol_size": 25.0, + "text_offset_ratio": 0.15 + }, + "legacy_lib_dir": "", + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "", + "ngspice": { + "fix_include_paths": true, + "fix_passive_vals": false, + "meta": { + "version": 0 + }, + "model_mode": 0, + "workbook_filename": "" + }, + "page_layout_descr_file": "", + "plot_directory": "", + "spice_adjust_passive_values": false, + "spice_external_command": "spice \"%I\"", + "subpart_first_id": 65, + "subpart_id_separator": 0 + }, + "sheets": [ + [ + "e63e39d7-6ac0-4ffd-8aa3-1841a4541b55", + "" + ] + ], + "text_variables": {} +} diff --git a/qa/data/eeschema/netlists/test_multiunit_reannotate_4/test_multiunit_reannotate_4.kicad_sch b/qa/data/eeschema/netlists/test_multiunit_reannotate_4/test_multiunit_reannotate_4.kicad_sch new file mode 100644 index 0000000000..06b10672ee --- /dev/null +++ b/qa/data/eeschema/netlists/test_multiunit_reannotate_4/test_multiunit_reannotate_4.kicad_sch @@ -0,0 +1,277 @@ +(kicad_sch (version 20211123) (generator eeschema) + + (uuid e63e39d7-6ac0-4ffd-8aa3-1841a4541b55) + + (paper "A4") + + (lib_symbols + (symbol "Comparator:LM2903" (pin_names (offset 0.127)) (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at 3.81 3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "LM2903" (id 1) (at 6.35 -3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_locked" "" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27))) + ) + (property "ki_keywords" "cmp open collector" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Low-Power, Low-Offset Voltage, Dual Comparators, DIP-8/SOIC-8/SOP-8/TSSOP-8/VSSOP-8" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "SOIC*3.9x4.9mm*P1.27mm* DIP*W7.62mm* SOP*5.28x5.23mm*P1.27mm* VSSOP*3.0x3.0mm*P0.65mm* TSSOP*4.4x3mm*P0.65mm*" (id 7) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "LM2903_1_1" + (polyline + (pts + (xy -5.08 5.08) + (xy 5.08 0) + (xy -5.08 -5.08) + (xy -5.08 5.08) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy 3.302 -0.508) + (xy 2.794 -0.508) + (xy 3.302 0) + (xy 2.794 0.508) + (xy 2.286 0) + (xy 2.794 -0.508) + (xy 2.286 -0.508) + ) + (stroke (width 0.127) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin open_collector line (at 7.62 0 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 -2.54 0) (length 2.54) + (name "-" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 2.54 0) (length 2.54) + (name "+" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LM2903_2_1" + (polyline + (pts + (xy -5.08 5.08) + (xy 5.08 0) + (xy -5.08 -5.08) + (xy -5.08 5.08) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy 3.302 -0.508) + (xy 2.794 -0.508) + (xy 3.302 0) + (xy 2.794 0.508) + (xy 2.286 0) + (xy 2.794 -0.508) + (xy 2.286 -0.508) + ) + (stroke (width 0.127) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin input line (at -7.62 2.54 0) (length 2.54) + (name "+" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 -2.54 0) (length 2.54) + (name "_" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin open_collector line (at 7.62 0 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LM2903_3_1" + (pin power_in line (at -2.54 -7.62 90) (length 3.81) + (name "V-" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -2.54 7.62 270) (length 3.81) + (name "V+" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + ) + ) + ) + + + (polyline (pts (xy 116.84 104.14) (xy 116.84 74.93)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 113c6f24-eefb-4df4-9071-3d8843379fca) + ) + (polyline (pts (xy 144.78 104.14) (xy 116.84 104.14)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 135a07d0-7692-4455-8538-0bd4306020d8) + ) + (polyline (pts (xy 116.84 74.93) (xy 118.11 74.93)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 25fc7484-491e-43e0-bd7c-d028fb2ba319) + ) + (polyline (pts (xy 118.11 74.93) (xy 144.78 74.93)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 95634212-020d-4124-92dd-151742a05529) + ) + (polyline (pts (xy 144.78 74.93) (xy 144.78 104.14)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid f1017e9e-ae45-4388-b7cc-82ad790788ae) + ) + + (text "TO BE REANNOTATED" (at 121.92 101.6 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 717b25a7-c9c2-4f6f-b744-a96113325c99) + ) + + (symbol (lib_id "Comparator:LM2903") (at 97.79 88.9 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 02fad080-98cd-46ab-9ee4-13a74595ac68) + (property "Reference" "U2" (id 0) (at 97.79 78.74 0)) + (property "Value" "LM2903" (id 1) (at 97.79 81.28 0)) + (property "Footprint" "" (id 2) (at 97.79 88.9 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 97.79 88.9 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 3e2733b2-429a-48e0-a5f6-9bc75cea3fb3)) + (pin "2" (uuid a72be1e0-9af1-4c8b-a80a-e23a2ce6ded3)) + (pin "3" (uuid 7e75e4cc-e0cb-4b98-b80b-d3c04ae9a412)) + (pin "5" (uuid 33aa4306-27d6-4090-96fe-2e0a2a713e0d)) + (pin "6" (uuid a631a287-dbe8-4491-9924-f1eeb226bfe2)) + (pin "7" (uuid 89bc2a9a-0459-4374-90b7-e699bb20f383)) + (pin "4" (uuid 956ad4a4-cb8d-4eef-aba4-03ec6d18e654)) + (pin "8" (uuid 1e3e2138-6822-4c2d-8218-89e25ffe3f08)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 157.48 59.69 0) (unit 3) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 4beb5b03-60d3-49da-ad35-51f275a031d5) + (property "Reference" "U1" (id 0) (at 156.21 58.4199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "LM2903" (id 1) (at 156.21 60.9599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 157.48 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 157.48 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f091d3c-9b63-4a96-8626-8a903efff084)) + (pin "2" (uuid 138f1880-267a-4cf0-89d9-93f27ab943b2)) + (pin "3" (uuid 8db72d04-aa4e-4246-8b1e-434f2f787f7a)) + (pin "5" (uuid d66e67f7-c757-4204-a0b8-2fd904150172)) + (pin "6" (uuid 90146c19-1be3-40dc-ab0e-a10af12a19b4)) + (pin "7" (uuid 4f28bce8-cbce-4bf4-86e5-c68d6f15e558)) + (pin "4" (uuid 55fea3d7-3338-41ba-9742-415078f59a75)) + (pin "8" (uuid 939d2085-ca84-435b-8eaa-0232903653b7)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 128.27 88.9 0) (unit 2) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 549455c3-ab6e-454e-94b0-5ca9e521ae0b) + (property "Reference" "U?" (id 0) (at 128.27 78.74 0)) + (property "Value" "LM2903" (id 1) (at 128.27 81.28 0)) + (property "Footprint" "" (id 2) (at 128.27 88.9 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 128.27 88.9 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5b02613f-efef-4dd0-85cc-be1c896d096d)) + (pin "2" (uuid 7d6d569a-7369-4b37-b54d-19f8e663e1c4)) + (pin "3" (uuid ab5eedbe-bf43-43a6-87ca-b41cff2974ef)) + (pin "5" (uuid 207c68d8-2bd6-401c-bbd5-e50fcc95bf20)) + (pin "6" (uuid 4713b701-0d77-40e8-8184-3a11f9df2324)) + (pin "7" (uuid 14ae6814-97a1-417e-bec2-8de437fc055e)) + (pin "4" (uuid bd03a794-c35b-42b3-a331-b23630dee108)) + (pin "8" (uuid 79a4d627-c9cc-4d76-8b31-68992e42badf)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 99.06 60.96 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e09508cd-85e8-48bb-9bcb-9bab32279ab6) + (property "Reference" "U1" (id 0) (at 99.06 50.8 0)) + (property "Value" "LM2903" (id 1) (at 99.06 53.34 0)) + (property "Footprint" "" (id 2) (at 99.06 60.96 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 99.06 60.96 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b2837d6b-6cc1-45c4-aa75-fd2bb220208e)) + (pin "2" (uuid 0bb36be2-ca53-49e2-aeb3-4c5728e3d819)) + (pin "3" (uuid a0fa8234-8777-4a66-8b79-9ecbb37d6605)) + (pin "5" (uuid 33aa4306-27d6-4090-96fe-2e0a2a713e0d)) + (pin "6" (uuid a631a287-dbe8-4491-9924-f1eeb226bfe2)) + (pin "7" (uuid 89bc2a9a-0459-4374-90b7-e699bb20f383)) + (pin "4" (uuid 956ad4a4-cb8d-4eef-aba4-03ec6d18e654)) + (pin "8" (uuid 1e3e2138-6822-4c2d-8218-89e25ffe3f08)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 129.54 59.69 0) (unit 2) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e0a3a04a-2f9e-4cce-bac0-1a7c08ef4522) + (property "Reference" "U1" (id 0) (at 129.54 49.53 0)) + (property "Value" "LM2903" (id 1) (at 129.54 52.07 0)) + (property "Footprint" "" (id 2) (at 129.54 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 129.54 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5b02613f-efef-4dd0-85cc-be1c896d096d)) + (pin "2" (uuid 7d6d569a-7369-4b37-b54d-19f8e663e1c4)) + (pin "3" (uuid ab5eedbe-bf43-43a6-87ca-b41cff2974ef)) + (pin "5" (uuid 9e9af72c-36cd-4137-88d9-d05214970ed2)) + (pin "6" (uuid b42b3d16-0988-4f7b-ad3f-dfc376005ee3)) + (pin "7" (uuid 7c15e983-d86d-4112-8b09-d22a0e2aa9db)) + (pin "4" (uuid bd03a794-c35b-42b3-a331-b23630dee108)) + (pin "8" (uuid 79a4d627-c9cc-4d76-8b31-68992e42badf)) + ) + + (sheet_instances + (path "/" (page "1")) + ) + + (symbol_instances + (path "/e09508cd-85e8-48bb-9bcb-9bab32279ab6" + (reference "U1") (unit 1) (value "LM2903") (footprint "") + ) + (path "/e0a3a04a-2f9e-4cce-bac0-1a7c08ef4522" + (reference "U1") (unit 2) (value "LM2903") (footprint "") + ) + (path "/4beb5b03-60d3-49da-ad35-51f275a031d5" + (reference "U1") (unit 3) (value "LM2903") (footprint "") + ) + (path "/02fad080-98cd-46ab-9ee4-13a74595ac68" + (reference "U2") (unit 1) (value "LM2903") (footprint "") + ) + (path "/549455c3-ab6e-454e-94b0-5ca9e521ae0b" + (reference "U?") (unit 2) (value "LM2903") (footprint "") + ) + ) +) diff --git a/qa/data/eeschema/netlists/test_multiunit_reannotate_5/test_multiunit_reannotate_5.kicad_pro b/qa/data/eeschema/netlists/test_multiunit_reannotate_5/test_multiunit_reannotate_5.kicad_pro new file mode 100644 index 0000000000..7bfc38b85d --- /dev/null +++ b/qa/data/eeschema/netlists/test_multiunit_reannotate_5/test_multiunit_reannotate_5.kicad_pro @@ -0,0 +1,326 @@ +{ + "board": { + "design_settings": { + "defaults": { + "board_outline_line_width": 0.1, + "copper_line_width": 0.2, + "copper_text_size_h": 1.5, + "copper_text_size_v": 1.5, + "copper_text_thickness": 0.3, + "other_line_width": 0.15, + "silk_line_width": 0.15, + "silk_text_size_h": 1.0, + "silk_text_size_v": 1.0, + "silk_text_thickness": 0.15 + }, + "diff_pair_dimensions": [], + "drc_exclusions": [], + "rules": { + "min_copper_edge_clearance": 0.0, + "solder_mask_clearance": 0.0, + "solder_mask_min_width": 0.0 + }, + "track_widths": [], + "via_dimensions": [] + }, + "layer_presets": [] + }, + "boards": [], + "cvpcb": { + "equivalence_files": [] + }, + "erc": { + "erc_exclusions": [], + "meta": { + "version": 0 + }, + "pin_map": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 1, + 0, + 1, + 2 + ], + [ + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 1, + 1, + 1, + 1, + 1, + 0, + 1, + 1, + 1, + 1, + 1, + 2 + ], + [ + 0, + 0, + 0, + 1, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 2, + 0, + 0, + 1, + 0, + 2, + 2, + 2, + 2 + ], + [ + 0, + 2, + 0, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 0, + 2, + 1, + 1, + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 2 + ], + [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ] + ], + "rule_severities": { + "bus_definition_conflict": "error", + "bus_entry_needed": "error", + "bus_label_syntax": "error", + "bus_to_bus_conflict": "error", + "bus_to_net_conflict": "error", + "different_unit_footprint": "error", + "different_unit_net": "error", + "duplicate_reference": "error", + "duplicate_sheet_names": "error", + "extra_units": "error", + "global_label_dangling": "warning", + "hier_label_mismatch": "error", + "label_dangling": "error", + "lib_symbol_issues": "warning", + "multiple_net_names": "warning", + "net_not_bus_member": "warning", + "no_connect_connected": "warning", + "no_connect_dangling": "warning", + "pin_not_connected": "error", + "pin_not_driven": "error", + "pin_to_pin": "warning", + "power_pin_not_driven": "error", + "similar_labels": "warning", + "unannotated": "error", + "unit_value_mismatch": "error", + "unresolved_variable": "error", + "wire_dangling": "error" + } + }, + "libraries": { + "pinned_footprint_libs": [], + "pinned_symbol_libs": [] + }, + "meta": { + "filename": "test_multiunit_reannotate_5.kicad_pro", + "version": 1 + }, + "net_settings": { + "classes": [ + { + "bus_width": 12.0, + "clearance": 0.2, + "diff_pair_gap": 0.25, + "diff_pair_via_gap": 0.25, + "diff_pair_width": 0.2, + "line_style": 0, + "microvia_diameter": 0.3, + "microvia_drill": 0.1, + "name": "Default", + "pcb_color": "rgba(0, 0, 0, 0.000)", + "schematic_color": "rgba(0, 0, 0, 0.000)", + "track_width": 0.25, + "via_diameter": 0.8, + "via_drill": 0.4, + "wire_width": 6.0 + } + ], + "meta": { + "version": 2 + }, + "net_colors": null + }, + "pcbnew": { + "last_paths": { + "gencad": "", + "idf": "", + "netlist": "", + "specctra_dsn": "", + "step": "", + "vrml": "" + }, + "page_layout_descr_file": "" + }, + "schematic": { + "annotate_start_num": 10, + "drawing": { + "default_line_thickness": 6.0, + "default_text_size": 50.0, + "field_names": [], + "intersheets_ref_own_page": false, + "intersheets_ref_prefix": "", + "intersheets_ref_short": false, + "intersheets_ref_show": false, + "intersheets_ref_suffix": "", + "junction_size_choice": 3, + "label_size_ratio": 0.375, + "pin_symbol_size": 25.0, + "text_offset_ratio": 0.15 + }, + "legacy_lib_dir": "", + "legacy_lib_list": [], + "meta": { + "version": 1 + }, + "net_format_name": "", + "ngspice": { + "fix_include_paths": true, + "fix_passive_vals": false, + "meta": { + "version": 0 + }, + "model_mode": 0, + "workbook_filename": "" + }, + "page_layout_descr_file": "", + "plot_directory": "", + "spice_adjust_passive_values": false, + "spice_external_command": "spice \"%I\"", + "subpart_first_id": 65, + "subpart_id_separator": 0 + }, + "sheets": [ + [ + "e63e39d7-6ac0-4ffd-8aa3-1841a4541b55", + "" + ] + ], + "text_variables": {} +} diff --git a/qa/data/eeschema/netlists/test_multiunit_reannotate_5/test_multiunit_reannotate_5.kicad_sch b/qa/data/eeschema/netlists/test_multiunit_reannotate_5/test_multiunit_reannotate_5.kicad_sch new file mode 100644 index 0000000000..5697d74ed5 --- /dev/null +++ b/qa/data/eeschema/netlists/test_multiunit_reannotate_5/test_multiunit_reannotate_5.kicad_sch @@ -0,0 +1,381 @@ +(kicad_sch (version 20211123) (generator eeschema) + + (uuid e63e39d7-6ac0-4ffd-8aa3-1841a4541b55) + + (paper "A4") + + (lib_symbols + (symbol "Comparator:LM2903" (pin_names (offset 0.127)) (in_bom yes) (on_board yes) + (property "Reference" "U" (id 0) (at 3.81 3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Value" "LM2903" (id 1) (at 6.35 -3.81 0) + (effects (font (size 1.27 1.27))) + ) + (property "Footprint" "" (id 2) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_locked" "" (id 4) (at 0 0 0) + (effects (font (size 1.27 1.27))) + ) + (property "ki_keywords" "cmp open collector" (id 5) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_description" "Low-Power, Low-Offset Voltage, Dual Comparators, DIP-8/SOIC-8/SOP-8/TSSOP-8/VSSOP-8" (id 6) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "ki_fp_filters" "SOIC*3.9x4.9mm*P1.27mm* DIP*W7.62mm* SOP*5.28x5.23mm*P1.27mm* VSSOP*3.0x3.0mm*P0.65mm* TSSOP*4.4x3mm*P0.65mm*" (id 7) (at 0 0 0) + (effects (font (size 1.27 1.27)) hide) + ) + (symbol "LM2903_1_1" + (polyline + (pts + (xy -5.08 5.08) + (xy 5.08 0) + (xy -5.08 -5.08) + (xy -5.08 5.08) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy 3.302 -0.508) + (xy 2.794 -0.508) + (xy 3.302 0) + (xy 2.794 0.508) + (xy 2.286 0) + (xy 2.794 -0.508) + (xy 2.286 -0.508) + ) + (stroke (width 0.127) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin open_collector line (at 7.62 0 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "1" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 -2.54 0) (length 2.54) + (name "-" (effects (font (size 1.27 1.27)))) + (number "2" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 2.54 0) (length 2.54) + (name "+" (effects (font (size 1.27 1.27)))) + (number "3" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LM2903_2_1" + (polyline + (pts + (xy -5.08 5.08) + (xy 5.08 0) + (xy -5.08 -5.08) + (xy -5.08 5.08) + ) + (stroke (width 0.254) (type default) (color 0 0 0 0)) + (fill (type background)) + ) + (polyline + (pts + (xy 3.302 -0.508) + (xy 2.794 -0.508) + (xy 3.302 0) + (xy 2.794 0.508) + (xy 2.286 0) + (xy 2.794 -0.508) + (xy 2.286 -0.508) + ) + (stroke (width 0.127) (type default) (color 0 0 0 0)) + (fill (type none)) + ) + (pin input line (at -7.62 2.54 0) (length 2.54) + (name "+" (effects (font (size 1.27 1.27)))) + (number "5" (effects (font (size 1.27 1.27)))) + ) + (pin input line (at -7.62 -2.54 0) (length 2.54) + (name "_" (effects (font (size 1.27 1.27)))) + (number "6" (effects (font (size 1.27 1.27)))) + ) + (pin open_collector line (at 7.62 0 180) (length 2.54) + (name "~" (effects (font (size 1.27 1.27)))) + (number "7" (effects (font (size 1.27 1.27)))) + ) + ) + (symbol "LM2903_3_1" + (pin power_in line (at -2.54 -7.62 90) (length 3.81) + (name "V-" (effects (font (size 1.27 1.27)))) + (number "4" (effects (font (size 1.27 1.27)))) + ) + (pin power_in line (at -2.54 7.62 270) (length 3.81) + (name "V+" (effects (font (size 1.27 1.27)))) + (number "8" (effects (font (size 1.27 1.27)))) + ) + ) + ) + ) + + + (polyline (pts (xy 110.49 105.41) (xy 144.78 105.41)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 6341adf7-15a3-420c-8496-dc68a5a0f167) + ) + (polyline (pts (xy 144.78 105.41) (xy 144.78 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 67e5abec-f0a1-4faa-829c-13ad7561ae24) + ) + (polyline (pts (xy 144.78 134.62) (xy 110.49 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid 9eb2304e-04d2-47fc-8ee5-fccd2e9f90f2) + ) + (polyline (pts (xy 110.49 105.41) (xy 110.49 134.62)) + (stroke (width 0) (type default) (color 0 0 0 0)) + (uuid ce581da9-ac1a-4c11-bedb-fb991b651d4d) + ) + + (text "TO BE REANNOTATED" (at 115.57 133.35 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 2420fd82-7ec8-4e8a-99d9-d1065447a473) + ) + (text "Same Libref, same Value" (at 48.26 91.44 0) + (effects (font (size 1.27 1.27)) (justify left bottom)) + (uuid 4ef07d45-f940-4cb6-bb96-2ddec13fd099) + ) + + (symbol (lib_id "Comparator:LM2903") (at 157.48 91.44 0) (unit 3) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 3f20a749-efe3-4804-8fef-435caaa8dacb) + (property "Reference" "U2" (id 0) (at 156.21 90.1699 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "" (id 1) (at 156.21 92.7099 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 157.48 91.44 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 157.48 91.44 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f091d3c-9b63-4a96-8626-8a903efff083)) + (pin "2" (uuid 138f1880-267a-4cf0-89d9-93f27ab943b1)) + (pin "3" (uuid 8db72d04-aa4e-4246-8b1e-434f2f787f79)) + (pin "5" (uuid d66e67f7-c757-4204-a0b8-2fd904150171)) + (pin "6" (uuid 90146c19-1be3-40dc-ab0e-a10af12a19b3)) + (pin "7" (uuid 4f28bce8-cbce-4bf4-86e5-c68d6f15e557)) + (pin "4" (uuid 25b671c2-8f85-423d-b529-05799bc4badd)) + (pin "8" (uuid 435b8f75-555b-4212-8fe2-c343b2a3f9b9)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 157.48 59.69 0) (unit 3) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid 4beb5b03-60d3-49da-ad35-51f275a031d5) + (property "Reference" "U1" (id 0) (at 156.21 58.4199 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "LM2903" (id 1) (at 156.21 60.9599 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 157.48 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 157.48 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f091d3c-9b63-4a96-8626-8a903efff084)) + (pin "2" (uuid 138f1880-267a-4cf0-89d9-93f27ab943b2)) + (pin "3" (uuid 8db72d04-aa4e-4246-8b1e-434f2f787f7a)) + (pin "5" (uuid d66e67f7-c757-4204-a0b8-2fd904150172)) + (pin "6" (uuid 90146c19-1be3-40dc-ab0e-a10af12a19b4)) + (pin "7" (uuid 4f28bce8-cbce-4bf4-86e5-c68d6f15e558)) + (pin "4" (uuid 55fea3d7-3338-41ba-9742-415078f59a75)) + (pin "8" (uuid 939d2085-ca84-435b-8eaa-0232903653b7)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 129.54 92.71 0) (unit 2) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid cd562bae-2426-44e6-8196-59eee5439809) + (property "Reference" "U2" (id 0) (at 129.54 82.55 0)) + (property "Value" "LM2903" (id 1) (at 129.54 85.09 0)) + (property "Footprint" "" (id 2) (at 129.54 92.71 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 129.54 92.71 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5b02613f-efef-4dd0-85cc-be1c896d096e)) + (pin "2" (uuid 7d6d569a-7369-4b37-b54d-19f8e663e1c5)) + (pin "3" (uuid ab5eedbe-bf43-43a6-87ca-b41cff2974f0)) + (pin "5" (uuid af94a592-0290-41d6-acfb-25e9e5f847d6)) + (pin "6" (uuid 8ee44ea3-b3e4-42f2-b0ee-dcf81bb527c1)) + (pin "7" (uuid 709129a3-cf8f-42ae-a88c-02cd627de08a)) + (pin "4" (uuid bd03a794-c35b-42b3-a331-b23630dee109)) + (pin "8" (uuid 79a4d627-c9cc-4d76-8b31-68992e42bae0)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 99.06 120.65 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid cf058f25-2bad-4c49-a0c4-f059825c427f) + (property "Reference" "U2" (id 0) (at 99.06 110.49 0)) + (property "Value" "LM2903" (id 1) (at 99.06 113.03 0)) + (property "Footprint" "" (id 2) (at 99.06 120.65 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 99.06 120.65 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 4684bd5c-d6ff-4a61-939e-8734e6c74c3a)) + (pin "2" (uuid 78f48a94-b821-4b65-8ec6-dd89469e1860)) + (pin "3" (uuid f249c2ca-9875-4c92-aeb9-3c4a8a5a3f2a)) + (pin "5" (uuid 33aa4306-27d6-4090-96fe-2e0a2a713e0b)) + (pin "6" (uuid a631a287-dbe8-4491-9924-f1eeb226bfe0)) + (pin "7" (uuid 89bc2a9a-0459-4374-90b7-e699bb20f381)) + (pin "4" (uuid 956ad4a4-cb8d-4eef-aba4-03ec6d18e652)) + (pin "8" (uuid 1e3e2138-6822-4c2d-8218-89e25ffe3f06)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 99.06 92.71 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid d43a1d25-d37a-467a-8b09-10cf2e2ace09) + (property "Reference" "U2" (id 0) (at 99.06 82.55 0)) + (property "Value" "" (id 1) (at 99.06 85.09 0)) + (property "Footprint" "" (id 2) (at 99.06 92.71 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 99.06 92.71 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 2900965f-8b8d-458a-b86a-6e9955743074)) + (pin "2" (uuid f37a2c24-4f47-4e4d-9f7f-0bcaef509ec5)) + (pin "3" (uuid 5a7f5ba6-06c4-4b39-9065-c4c0d044c803)) + (pin "5" (uuid 33aa4306-27d6-4090-96fe-2e0a2a713e0c)) + (pin "6" (uuid a631a287-dbe8-4491-9924-f1eeb226bfe1)) + (pin "7" (uuid 89bc2a9a-0459-4374-90b7-e699bb20f382)) + (pin "4" (uuid 956ad4a4-cb8d-4eef-aba4-03ec6d18e653)) + (pin "8" (uuid 1e3e2138-6822-4c2d-8218-89e25ffe3f07)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 157.48 119.38 0) (unit 3) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid db066797-b21c-4c1c-9591-8c7c549f8087) + (property "Reference" "U2" (id 0) (at 156.21 118.1099 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Value" "LM2903" (id 1) (at 156.21 120.6499 0) + (effects (font (size 1.27 1.27)) (justify left)) + ) + (property "Footprint" "" (id 2) (at 157.48 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 157.48 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5f091d3c-9b63-4a96-8626-8a903efff085)) + (pin "2" (uuid 138f1880-267a-4cf0-89d9-93f27ab943b3)) + (pin "3" (uuid 8db72d04-aa4e-4246-8b1e-434f2f787f7b)) + (pin "5" (uuid d66e67f7-c757-4204-a0b8-2fd904150173)) + (pin "6" (uuid 90146c19-1be3-40dc-ab0e-a10af12a19b5)) + (pin "7" (uuid 4f28bce8-cbce-4bf4-86e5-c68d6f15e559)) + (pin "4" (uuid 81a0a986-adf1-4b06-8f68-9208105ebae6)) + (pin "8" (uuid 7aeda96c-46b8-4006-b414-502a4fefdd07)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 99.06 60.96 0) (unit 1) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e09508cd-85e8-48bb-9bcb-9bab32279ab6) + (property "Reference" "U1" (id 0) (at 99.06 50.8 0)) + (property "Value" "LM2903" (id 1) (at 99.06 53.34 0)) + (property "Footprint" "" (id 2) (at 99.06 60.96 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 99.06 60.96 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid b2837d6b-6cc1-45c4-aa75-fd2bb220208e)) + (pin "2" (uuid 0bb36be2-ca53-49e2-aeb3-4c5728e3d819)) + (pin "3" (uuid a0fa8234-8777-4a66-8b79-9ecbb37d6605)) + (pin "5" (uuid 33aa4306-27d6-4090-96fe-2e0a2a713e0d)) + (pin "6" (uuid a631a287-dbe8-4491-9924-f1eeb226bfe2)) + (pin "7" (uuid 89bc2a9a-0459-4374-90b7-e699bb20f383)) + (pin "4" (uuid 956ad4a4-cb8d-4eef-aba4-03ec6d18e654)) + (pin "8" (uuid 1e3e2138-6822-4c2d-8218-89e25ffe3f08)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 129.54 59.69 0) (unit 2) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e0a3a04a-2f9e-4cce-bac0-1a7c08ef4522) + (property "Reference" "U1" (id 0) (at 129.54 49.53 0)) + (property "Value" "LM2903" (id 1) (at 129.54 52.07 0)) + (property "Footprint" "" (id 2) (at 129.54 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 129.54 59.69 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5b02613f-efef-4dd0-85cc-be1c896d096d)) + (pin "2" (uuid 7d6d569a-7369-4b37-b54d-19f8e663e1c4)) + (pin "3" (uuid ab5eedbe-bf43-43a6-87ca-b41cff2974ef)) + (pin "5" (uuid 9e9af72c-36cd-4137-88d9-d05214970ed2)) + (pin "6" (uuid b42b3d16-0988-4f7b-ad3f-dfc376005ee3)) + (pin "7" (uuid 7c15e983-d86d-4112-8b09-d22a0e2aa9db)) + (pin "4" (uuid bd03a794-c35b-42b3-a331-b23630dee108)) + (pin "8" (uuid 79a4d627-c9cc-4d76-8b31-68992e42badf)) + ) + + (symbol (lib_id "Comparator:LM2903") (at 129.54 119.38 0) (unit 2) + (in_bom yes) (on_board yes) (fields_autoplaced) + (uuid e6c8127f-e282-4128-8744-05f7893bc3ec) + (property "Reference" "U2" (id 0) (at 129.54 109.22 0)) + (property "Value" "" (id 1) (at 129.54 111.76 0)) + (property "Footprint" "" (id 2) (at 129.54 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (property "Datasheet" "http://www.ti.com/lit/ds/symlink/lm393.pdf" (id 3) (at 129.54 119.38 0) + (effects (font (size 1.27 1.27)) hide) + ) + (pin "1" (uuid 5b02613f-efef-4dd0-85cc-be1c896d096e)) + (pin "2" (uuid 7d6d569a-7369-4b37-b54d-19f8e663e1c5)) + (pin "3" (uuid ab5eedbe-bf43-43a6-87ca-b41cff2974f0)) + (pin "5" (uuid f1cb5557-7e5b-4159-9575-fba45fd2768c)) + (pin "6" (uuid 24b5c9f7-542e-4a5e-b548-b99bbce6bbc7)) + (pin "7" (uuid 2baf912f-7f66-472f-93b9-411440649bc1)) + (pin "4" (uuid bd03a794-c35b-42b3-a331-b23630dee109)) + (pin "8" (uuid 79a4d627-c9cc-4d76-8b31-68992e42bae0)) + ) + + (sheet_instances + (path "/" (page "1")) + ) + + (symbol_instances + (path "/e09508cd-85e8-48bb-9bcb-9bab32279ab6" + (reference "U1") (unit 1) (value "LM2903") (footprint "") + ) + (path "/e0a3a04a-2f9e-4cce-bac0-1a7c08ef4522" + (reference "U1") (unit 2) (value "LM2903") (footprint "") + ) + (path "/4beb5b03-60d3-49da-ad35-51f275a031d5" + (reference "U1") (unit 3) (value "LM2903") (footprint "") + ) + (path "/cf058f25-2bad-4c49-a0c4-f059825c427f" + (reference "U2") (unit 1) (value "LM2903") (footprint "") + ) + (path "/d43a1d25-d37a-467a-8b09-10cf2e2ace09" + (reference "U2") (unit 1) (value "LM2903") (footprint "") + ) + (path "/cd562bae-2426-44e6-8196-59eee5439809" + (reference "U2") (unit 2) (value "LM2903") (footprint "") + ) + (path "/e6c8127f-e282-4128-8744-05f7893bc3ec" + (reference "U2") (unit 2) (value "LM2903") (footprint "") + ) + (path "/3f20a749-efe3-4804-8fef-435caaa8dacb" + (reference "U2") (unit 3) (value "LM2903") (footprint "") + ) + (path "/db066797-b21c-4c1c-9591-8c7c549f8087" + (reference "U2") (unit 3) (value "LM2903") (footprint "") + ) + ) +) diff --git a/qa/unittests/eeschema/CMakeLists.txt b/qa/unittests/eeschema/CMakeLists.txt index bb37b3a39a..376fbcbab4 100644 --- a/qa/unittests/eeschema/CMakeLists.txt +++ b/qa/unittests/eeschema/CMakeLists.txt @@ -3,6 +3,7 @@ # # Copyright (C) 2017 CERN # @author Alejandro GarcĂ­a Montoro +# Copyright (C) 2022 KiCad Developers, see AUTHORS.txt for contributors. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -60,6 +61,7 @@ set( QA_EESCHEMA_SRCS test_pin_numbers.cpp test_sch_pin.cpp test_sch_rtree.cpp + test_sch_reference_list.cpp test_sch_sheet.cpp test_sch_sheet_path.cpp test_sch_sheet_list.cpp diff --git a/qa/unittests/eeschema/eeschema_test_utils.h b/qa/unittests/eeschema/eeschema_test_utils.h index ea40d0f871..adfb9199bd 100644 --- a/qa/unittests/eeschema/eeschema_test_utils.h +++ b/qa/unittests/eeschema/eeschema_test_utils.h @@ -1,7 +1,7 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 2019 KiCad Developers, see AUTHORS.TXT for contributors. + * Copyright (C) 2019-2022 KiCad Developers, see AUTHORS.TXT for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -60,7 +60,7 @@ public: } protected: - void loadSchematic( const wxString& aRelativePath ); + virtual void loadSchematic( const wxString& aRelativePath ); virtual wxFileName getSchematicFile( const wxString& aBaseName ); diff --git a/qa/unittests/eeschema/test_sch_reference_list.cpp b/qa/unittests/eeschema/test_sch_reference_list.cpp new file mode 100644 index 0000000000..f2b36c3a95 --- /dev/null +++ b/qa/unittests/eeschema/test_sch_reference_list.cpp @@ -0,0 +1,299 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2022 Roberto Fernandez Bautista + * Copyright (C) 2022 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include +#include "eeschema_test_utils.h" + +#include +#include // SCH_MULTI_UNIT_REFERENCE_MAP + + +struct REANNOTATED_REFERENCE +{ + wxString m_KIID; ///< KIID of the symbol to reannotate + wxString m_OriginalRef; ///< Original Reference Designator (prior to reannotating) + wxString m_ExpectedRef; ///< Expected Reference Designator (after reannotating) + bool m_IncludeInReannotationList; ///< True if reference is "selected" for reannotation +}; + + +class TEST_SCH_REFERENCE_LIST_FIXTURE : public KI_TEST::SCHEMATIC_TEST_FIXTURE +{ +protected: + void loadTestCase( wxString aSchematicRelativePath, std::vector aRefs ); + + SCH_SYMBOL* getSymbolByKIID( wxString aKIID, SCH_SHEET_PATH* aSymbolPath ); + + SCH_REFERENCE_LIST getAdditionalRefs(); + + void checkAnnotation( std::vector aRefs ); + + SCH_REFERENCE_LIST m_refsToReannotate; + SCH_MULTI_UNIT_REFERENCE_MAP m_lockedRefs; +}; + + +void TEST_SCH_REFERENCE_LIST_FIXTURE::loadTestCase( wxString aSchematicRelativePath, + std::vector aRefs ) +{ + m_refsToReannotate.Clear(); + m_lockedRefs.clear(); + + loadSchematic( aSchematicRelativePath ); + + // Create list of references to reannotate + for( REANNOTATED_REFERENCE ref : aRefs ) + { + SCH_SHEET_PATH symbolPath; + SCH_SYMBOL* symbol = getSymbolByKIID( ref.m_KIID, &symbolPath ); + + //Make sure test case is built properly + BOOST_REQUIRE_NE( symbol, nullptr ); + BOOST_REQUIRE_EQUAL( symbol->GetRef( &symbolPath, true ), ref.m_OriginalRef ); + + if( ref.m_IncludeInReannotationList ) + { + symbolPath.AppendSymbol( m_refsToReannotate, symbol ); + symbolPath.AppendMultiUnitSymbol( m_lockedRefs, symbol ); + } + } +} + + +SCH_SYMBOL* TEST_SCH_REFERENCE_LIST_FIXTURE::getSymbolByKIID( wxString aKIID, + SCH_SHEET_PATH* aSymbolPath ) +{ + SCH_SHEET_LIST sheets = m_schematic.GetSheets(); + + KIID symKIID( aKIID ); + SCH_ITEM* foundItem = sheets.GetItem( symKIID, aSymbolPath ); + SCH_SYMBOL* symbol = dynamic_cast( foundItem ); + + return symbol; +}; + + +SCH_REFERENCE_LIST TEST_SCH_REFERENCE_LIST_FIXTURE::getAdditionalRefs() +{ + // Build List of additional references to pass into Annotate() + SCH_REFERENCE_LIST allRefs, additionalRefs; + + m_schematic.GetSheets().GetSymbols( allRefs ); + + for( size_t i = 0; i < allRefs.GetCount(); ++i ) + { + if( !m_refsToReannotate.Contains( allRefs[i] ) ) + additionalRefs.AddItem( allRefs[i] ); + } + + return additionalRefs; +} + + +void TEST_SCH_REFERENCE_LIST_FIXTURE::checkAnnotation( std::vector aRefs ) +{ + for( REANNOTATED_REFERENCE ref : aRefs ) + { + SCH_SHEET_PATH symbolPath; + SCH_SYMBOL* symbol = getSymbolByKIID( ref.m_KIID, &symbolPath ); + + BOOST_CHECK_EQUAL( symbol->GetRef( &symbolPath, true ), ref.m_ExpectedRef ); + } +} + + +BOOST_FIXTURE_TEST_SUITE( SchReferenceList, TEST_SCH_REFERENCE_LIST_FIXTURE ) + + +struct REANNOTATION_CASE +{ + std::string m_caseName; + wxString m_SchematicRelativePath; + int m_StartNumber; + std::vector m_ExpectedReannotations; +}; + +// Case 1: same value, same libref +// Case 2: same value, different libref +// Case 3: different value, same libref +// Case 4: Not annotated unit to reannotate +// Case 5: Duplicate references +static const std::vector reannotationCases = { + { "CASE 1. Rename only selected. All units selected", + "test_multiunit_reannotate", + 1, + { + { "cf058f25-2bad-4c49-a0c4-f059825c427f", "U99A", "U3A", true }, + { "e6c8127f-e282-4128-8744-05f7893bc3ec", "U99B", "U3B", true }, + { "db066797-b21c-4c1c-9591-8c7c549f8087", "U99C", "U3C", true }, + } }, + { "CASE 1. Rename only selected. Only unit B selected (A and C should NOT be reannotated)", + "test_multiunit_reannotate", + 1, + { + { "cf058f25-2bad-4c49-a0c4-f059825c427f", "U99A", "U99A", false }, + { "e6c8127f-e282-4128-8744-05f7893bc3ec", "U99B", "U2B", true }, + { "db066797-b21c-4c1c-9591-8c7c549f8087", "U99C", "U99C", false }, + } }, + { "CASE 1. Rename only selected. Only units B and C selected (A should NOT be reannotated)", + "test_multiunit_reannotate", + 1, + { + { "cf058f25-2bad-4c49-a0c4-f059825c427f", "U99A", "U99A", false }, + { "e6c8127f-e282-4128-8744-05f7893bc3ec", "U99B", "U3B", true }, + { "db066797-b21c-4c1c-9591-8c7c549f8087", "U99C", "U3C", true }, + } }, + { "CASE 2. Rename only selected. All units selected", + "test_multiunit_reannotate_2", + 1, + { + { "cf058f25-2bad-4c49-a0c4-f059825c427f", "U99A", "U3A", true }, + { "e6c8127f-e282-4128-8744-05f7893bc3ec", "U99B", "U3B", true }, + { "db066797-b21c-4c1c-9591-8c7c549f8087", "U99C", "U3C", true }, + } }, + { "CASE 2. Rename only selected. Only unit B selected (A and C should NOT be reannotated)", + "test_multiunit_reannotate_2", + 1, + { + { "cf058f25-2bad-4c49-a0c4-f059825c427f", "U99A", "U99A", false }, + { "e6c8127f-e282-4128-8744-05f7893bc3ec", "U99B", "U3B", true }, + { "db066797-b21c-4c1c-9591-8c7c549f8087", "U99C", "U99C", false }, + } }, + { "CASE 2. Rename only selected. Only units B and C selected (A should NOT be reannotated)", + "test_multiunit_reannotate_2", + 1, + { + { "cf058f25-2bad-4c49-a0c4-f059825c427f", "U99A", "U99A", false }, + { "e6c8127f-e282-4128-8744-05f7893bc3ec", "U99B", "U3B", true }, + { "db066797-b21c-4c1c-9591-8c7c549f8087", "U99C", "U3C", true }, + } }, + { "CASE 3. Rename only selected. All units selected", + "test_multiunit_reannotate_3", + 1, + { + { "cf058f25-2bad-4c49-a0c4-f059825c427f", "U99A", "U3A", true }, + { "e6c8127f-e282-4128-8744-05f7893bc3ec", "U99B", "U3B", true }, + { "db066797-b21c-4c1c-9591-8c7c549f8087", "U99C", "U3C", true }, + } }, + { "CASE 3. Rename only selected. Only unit B selected (A and C should NOT be reannotated)", + "test_multiunit_reannotate_3", + 1, + { + { "cf058f25-2bad-4c49-a0c4-f059825c427f", "U99A", "U99A", false }, + { "e6c8127f-e282-4128-8744-05f7893bc3ec", "U99B", "U3B", true }, + { "db066797-b21c-4c1c-9591-8c7c549f8087", "U99C", "U99C", false }, + } }, + { "CASE 3. Rename only selected. Only units B and C selected (A should NOT be reannotated)", + "test_multiunit_reannotate_3", + 1, + { + { "cf058f25-2bad-4c49-a0c4-f059825c427f", "U99A", "U99A", false }, + { "e6c8127f-e282-4128-8744-05f7893bc3ec", "U99B", "U3B", true }, + { "db066797-b21c-4c1c-9591-8c7c549f8087", "U99C", "U3C", true }, + } }, + { "CASE 4 - Not previously annotated (does not get added to multi-unit locked group)", + "test_multiunit_reannotate_4", + 1, + { + { "549455c3-ab6e-454e-94b0-5ca9e521ae0b", "U?B", "U2B", true }, + } }, + { "CASE 5 - Duplicate annotation. 1 selected", + "test_multiunit_reannotate_5", + 10, + { + { "d43a1d25-d37a-467a-8b09-10cf2e2ace09", "U2A", "U2A", false }, + { "cd562bae-2426-44e6-8196-59eee5439809", "U2B", "U2B", false }, + { "3f20a749-efe3-4804-8fef-435caaa8dacb", "U2C", "U2C", false }, + { "cf058f25-2bad-4c49-a0c4-f059825c427f", "U2A", "U2A", false }, + { "e6c8127f-e282-4128-8744-05f7893bc3ec", "U2B", "U11B", true }, + { "db066797-b21c-4c1c-9591-8c7c549f8087", "U2C", "U2C", false }, + } }, + { "CASE 5 - Duplicate annotation. 2 selected", + "test_multiunit_reannotate_5", + 10, + { + { "d43a1d25-d37a-467a-8b09-10cf2e2ace09", "U2A", "U2A", false }, + { "cd562bae-2426-44e6-8196-59eee5439809", "U2B", "U11B", true }, + { "3f20a749-efe3-4804-8fef-435caaa8dacb", "U2C", "U2C", false }, + { "cf058f25-2bad-4c49-a0c4-f059825c427f", "U2A", "U2A", false }, + { "e6c8127f-e282-4128-8744-05f7893bc3ec", "U2B", "U12B", true }, + { "db066797-b21c-4c1c-9591-8c7c549f8087", "U2C", "U2C", false }, + } }, +}; + +// @todo simplify or refactor this test case. +// Currently it simulates part of SCH_EDIT_FRAME::AnnotateSymbols +BOOST_AUTO_TEST_CASE( Reannotate ) +{ + for( const REANNOTATION_CASE& c : reannotationCases ) + { + BOOST_TEST_INFO_SCOPE( c.m_caseName ); + + loadTestCase( c.m_SchematicRelativePath, c.m_ExpectedReannotations ); + + m_refsToReannotate.RemoveAnnotation(); + m_refsToReannotate.SplitReferences(); + m_refsToReannotate.Annotate( false, 0, c.m_StartNumber, m_lockedRefs, getAdditionalRefs() ); + m_refsToReannotate.UpdateAnnotation(); + + checkAnnotation( c.m_ExpectedReannotations ); + } +} + + +struct DUPLICATE_REANNOTATION_CASE +{ + std::string m_caseName; + wxString m_SchematicRelativePath; + std::vector m_ExpectedReannotations; +}; + + +static const std::vector reannotateDuplicatesCases = { + { "Reannotate Duplicates. Simple case", + "test_multiunit_reannotate_5", + { + { "d43a1d25-d37a-467a-8b09-10cf2e2ace09", "U2A", "U2A", false }, + { "cd562bae-2426-44e6-8196-59eee5439809", "U2B", "U2B", false }, + { "3f20a749-efe3-4804-8fef-435caaa8dacb", "U2C", "U2C", false }, + { "cf058f25-2bad-4c49-a0c4-f059825c427f", "U2A", "U3A", true }, + { "e6c8127f-e282-4128-8744-05f7893bc3ec", "U2B", "U3B", true }, + { "db066797-b21c-4c1c-9591-8c7c549f8087", "U2C", "U3C", true }, + } }, +}; + + +BOOST_AUTO_TEST_CASE( ReannotateDuplicates ) +{ + for( const DUPLICATE_REANNOTATION_CASE& c : reannotateDuplicatesCases ) + { + BOOST_TEST_INFO_SCOPE( c.m_caseName ); + + loadTestCase( c.m_SchematicRelativePath, c.m_ExpectedReannotations ); + + m_refsToReannotate.ReannotateDuplicates( getAdditionalRefs() ); + m_refsToReannotate.UpdateAnnotation(); + + checkAnnotation( c.m_ExpectedReannotations ); + } +} + + +BOOST_AUTO_TEST_SUITE_END()