Move no-connect processing to connection graph

This way the net names can be inspected in eeschema and cross-probing works.
Testcases updated for the name changes

CHANGED: all unconnected pins are now included in the netlist with no_connect_ prefixes
This commit is contained in:
Jon Evans 2021-01-14 20:55:39 -05:00
parent ef00e7513a
commit 02681fcf0e
8 changed files with 271 additions and 316 deletions

View File

@ -268,8 +268,9 @@ wxString CONNECTION_SUBGRAPH::driverName( SCH_ITEM* aItem ) const
{
case SCH_PIN_T:
{
bool forceNoConnect = m_no_connect != nullptr;
SCH_PIN* pin = static_cast<SCH_PIN*>( aItem );
return pin->GetDefaultNetName( m_sheet );
return pin->GetDefaultNetName( m_sheet, forceNoConnect );
break;
}
@ -518,19 +519,8 @@ void CONNECTION_GRAPH::updateItemConnectivity( const SCH_SHEET_PATH& aSheet,
{
SCH_COMPONENT* component = static_cast<SCH_COMPONENT*>( item );
// TODO(JE) right now this relies on GetPins() returning good SCH_PIN pointers
// that contain good LIB_PIN pointers. Since these get invalidated whenever the
// library component is refreshed, the current solution as of ed025972 is to just
// rebuild the SCH_PIN list when the component is refreshed, and then re-run the
// connectivity calculations. This is slow and should be improved before release.
// See https://gitlab.com/kicad/code/kicad/issues/3784
for( SCH_PIN* pin : component->GetPins( &aSheet ) )
{
// Not connected pins are not connected.
if( pin->GetType() == ELECTRICAL_PINTYPE::PT_NC )
continue;
pin->InitializeConnection( aSheet, this );
wxPoint pos = pin->GetPosition();
@ -789,23 +779,8 @@ void CONNECTION_GRAPH::buildConnectionGraph()
}
/**
* TODO(JE)
*
* It would be good if net codes were preserved as much as possible when
* generating netlists, so that unnamed nets don't keep shifting around when
* you regenerate.
*
* Right now, we are clearing out the old connections up in
* updateItemConnectivity(), but that is useful information, so maybe we
* need to just set the dirty flag or something.
*
* That way, ResolveDrivers() can check what the driver of the subgraph was
* previously, and if it is in the situation of choosing between equal
* candidates for an auto-generated net name, pick the previous one.
*
* N.B. the old algorithm solves this by sorting the possible net names
* alphabetically, so as long as the same refdes components are involved,
* the net will be the same.
* TODO(JE): Net codes are non-deterministic. Fortunately, they are also not really used for
* anything. We should consider removing them entirely and just using net names everywhere.
*/
// Resolve drivers for subgraphs and propagate connectivity info
@ -1512,6 +1487,16 @@ void CONNECTION_GRAPH::buildConnectionGraph()
{
CONNECTION_SUBGRAPH* subgraph = m_driver_subgraphs[subgraphId];
// Make sure weakly-driven single-pin nets get the no_connect_ prefix
if( !subgraph->m_strong_driver && subgraph->m_drivers.size() == 1 &&
subgraph->m_driver->Type() == SCH_PIN_T )
{
SCH_PIN* pin = static_cast<SCH_PIN*>( subgraph->m_driver );
pin->ClearDefaultNetName( &subgraph->m_sheet );
subgraph->m_driver_connection->ConfigureFromLabel(
pin->GetDefaultNetName( subgraph->m_sheet, true ) );
}
subgraph->m_dirty = false;
subgraph->UpdateItemConnections();

View File

@ -579,7 +579,6 @@ XNODE* NETLIST_EXPORTER_XML::makeListOfNets( unsigned aCtl )
typedef std::pair<SCH_PIN*, SCH_SHEET_PATH> MEMBER_RECORD;
typedef std::pair<wxString, std::vector<MEMBER_RECORD>> NET_RECORD;
std::vector<NET_RECORD*> nets;
std::vector<NET_RECORD*> ncNets;
for( const auto& it : m_schematic->ConnectionGraph()->GetNetMap() )
{
@ -590,16 +589,8 @@ XNODE* NETLIST_EXPORTER_XML::makeListOfNets( unsigned aCtl )
if( subgraphs.empty() )
continue;
if( !subgraphs[0]->m_strong_driver && subgraphs[0]->m_no_connect )
{
ncNets.push_back( new NET_RECORD( NC_PREFIX, std::vector<MEMBER_RECORD>() ) );
net_record = ncNets.back();
}
else
{
nets.push_back( new NET_RECORD( net_name, std::vector<MEMBER_RECORD>() ) );
net_record = nets.back();
}
for( CONNECTION_SUBGRAPH* subgraph : subgraphs )
{
@ -625,28 +616,6 @@ XNODE* NETLIST_EXPORTER_XML::makeListOfNets( unsigned aCtl )
}
}
// Add no_connect_* nets for no-connect pins.
SCH_SHEET_LIST sheetList = m_schematic->GetSheets();
for( unsigned ii = 0; ii < sheetList.size(); ii++ )
{
SCH_SHEET_PATH& sheet = sheetList[ii];
for( SCH_ITEM* item : sheet.LastScreen()->Items().OfType( SCH_COMPONENT_T ) )
{
SCH_COMPONENT* symbol = static_cast<SCH_COMPONENT*>( item );
for( SCH_PIN* pin : symbol->GetPins( &sheet ) )
{
if( pin->GetType() == ELECTRICAL_PINTYPE::PT_NC && !pin->Connection( &sheet ) )
{
ncNets.push_back( new NET_RECORD( NC_PREFIX, std::vector<MEMBER_RECORD>() ) );
ncNets.back()->second.emplace_back( pin, sheet );
}
}
}
}
// Netlist ordering: Net name, then ref des, then pin name
std::sort( nets.begin(), nets.end(),
[]( const NET_RECORD* a, const NET_RECORD*b )
@ -654,8 +623,6 @@ XNODE* NETLIST_EXPORTER_XML::makeListOfNets( unsigned aCtl )
return StrNumCmp( a->first, b->first ) < 0;
} );
nets.insert( nets.end(), ncNets.begin(), ncNets.end() );
for( int i = 0; i < (int) nets.size(); ++i )
{
NET_RECORD* net_record = nets[i];

View File

@ -231,7 +231,7 @@ void SCH_PIN::ClearDefaultNetName( const SCH_SHEET_PATH* aPath )
}
wxString SCH_PIN::GetDefaultNetName( const SCH_SHEET_PATH& aPath )
wxString SCH_PIN::GetDefaultNetName( const SCH_SHEET_PATH& aPath, bool aForceNoConnect )
{
if( m_libPin->IsPowerConnection() )
return m_libPin->GetName();
@ -243,6 +243,9 @@ wxString SCH_PIN::GetDefaultNetName( const SCH_SHEET_PATH& aPath )
wxString name = "Net-(";
if( aForceNoConnect || GetType() == ELECTRICAL_PINTYPE::PT_NC )
name = ( "no_connect_(" );
name << GetParentSymbol()->GetRef( &aPath );
bool annotated = true;

View File

@ -69,7 +69,7 @@ public:
LIB_PIN* GetLibPin() const { return m_libPin; }
void ClearDefaultNetName( const SCH_SHEET_PATH* aPath );
wxString GetDefaultNetName( const SCH_SHEET_PATH& aPath );
wxString GetDefaultNetName( const SCH_SHEET_PATH& aPath, bool aForceNoConnect = false );
wxString GetAlt() const { return m_alt; }
void SetAlt( const wxString& aAlt ) { m_alt = aAlt; }

View File

@ -933,7 +933,7 @@
(node (ref "C1") (pin "1"))
(node (ref "U1") (pin "8") (pinfunction "V+"))
(node (ref "U2") (pin "1") (pinfunction "VO")))
(net (code "51") (name "no_connect_51")
(net (code "51") (name "no_connect_(U1-Pad6)")
(node (ref "U1") (pin "6") (pinfunction "LV")))
(net (code "52") (name "no_connect_52")
(net (code "52") (name "no_connect_(U1-Pad7)")
(node (ref "U1") (pin "7") (pinfunction "OSC")))))

View File

@ -138,5 +138,5 @@
(net (code "5") (name "LIVE")
(node (ref "J1") (pin "1") (pinfunction "Pin_1"))
(node (ref "R2") (pin "2")))
(net (code "6") (name "Net-(J1-Pad3)")
(net (code "6") (name "no_connect_(J1-Pad3)")
(node (ref "J1") (pin "3") (pinfunction "Pin_3")))))

View File

@ -128,67 +128,67 @@
(net (code "8") (name "/ROW7")
(node (ref "DS1") (pin "9") (pinfunction "ROW8"))
(node (ref "DS2") (pin "9") (pinfunction "ROW8")))
(net (code "9") (name "Net-(DS1-Pad1)")
(net (code "12") (name "no_connect_(DS1-Pad1)")
(node (ref "DS1") (pin "1") (pinfunction "COL1G")))
(net (code "10") (name "Net-(DS1-Pad2)")
(net (code "13") (name "no_connect_(DS1-Pad2)")
(node (ref "DS1") (pin "2") (pinfunction "COL2G")))
(net (code "11") (name "Net-(DS1-Pad3)")
(net (code "14") (name "no_connect_(DS1-Pad3)")
(node (ref "DS1") (pin "3") (pinfunction "COL3G")))
(net (code "12") (name "Net-(DS1-Pad4)")
(net (code "15") (name "no_connect_(DS1-Pad4)")
(node (ref "DS1") (pin "4") (pinfunction "COL4G")))
(net (code "13") (name "Net-(DS1-Pad5)")
(net (code "16") (name "no_connect_(DS1-Pad5)")
(node (ref "DS1") (pin "5") (pinfunction "COL5G")))
(net (code "14") (name "Net-(DS1-Pad6)")
(net (code "17") (name "no_connect_(DS1-Pad6)")
(node (ref "DS1") (pin "6") (pinfunction "COL6G")))
(net (code "15") (name "Net-(DS1-Pad7)")
(net (code "18") (name "no_connect_(DS1-Pad7)")
(node (ref "DS1") (pin "7") (pinfunction "COL7G")))
(net (code "16") (name "Net-(DS1-Pad8)")
(net (code "19") (name "no_connect_(DS1-Pad8)")
(node (ref "DS1") (pin "8") (pinfunction "COL8G")))
(net (code "17") (name "Net-(DS1-Pad17)")
(net (code "20") (name "no_connect_(DS1-Pad17)")
(node (ref "DS1") (pin "17") (pinfunction "COL1R")))
(net (code "18") (name "Net-(DS1-Pad18)")
(net (code "21") (name "no_connect_(DS1-Pad18)")
(node (ref "DS1") (pin "18") (pinfunction "COL2R")))
(net (code "19") (name "Net-(DS1-Pad19)")
(net (code "22") (name "no_connect_(DS1-Pad19)")
(node (ref "DS1") (pin "19") (pinfunction "COL3R")))
(net (code "20") (name "Net-(DS1-Pad20)")
(net (code "23") (name "no_connect_(DS1-Pad20)")
(node (ref "DS1") (pin "20") (pinfunction "COL4R")))
(net (code "21") (name "Net-(DS1-Pad21)")
(net (code "24") (name "no_connect_(DS1-Pad21)")
(node (ref "DS1") (pin "21") (pinfunction "COL5R")))
(net (code "22") (name "Net-(DS1-Pad22)")
(net (code "25") (name "no_connect_(DS1-Pad22)")
(node (ref "DS1") (pin "22") (pinfunction "COL6R")))
(net (code "23") (name "Net-(DS1-Pad23)")
(net (code "26") (name "no_connect_(DS1-Pad23)")
(node (ref "DS1") (pin "23") (pinfunction "COL7R")))
(net (code "24") (name "Net-(DS1-Pad24)")
(net (code "27") (name "no_connect_(DS1-Pad24)")
(node (ref "DS1") (pin "24") (pinfunction "COL8R")))
(net (code "25") (name "Net-(DS2-Pad1)")
(net (code "28") (name "no_connect_(DS2-Pad1)")
(node (ref "DS2") (pin "1") (pinfunction "COL1G")))
(net (code "26") (name "Net-(DS2-Pad2)")
(net (code "29") (name "no_connect_(DS2-Pad2)")
(node (ref "DS2") (pin "2") (pinfunction "COL2G")))
(net (code "27") (name "Net-(DS2-Pad3)")
(net (code "30") (name "no_connect_(DS2-Pad3)")
(node (ref "DS2") (pin "3") (pinfunction "COL3G")))
(net (code "28") (name "Net-(DS2-Pad4)")
(net (code "31") (name "no_connect_(DS2-Pad4)")
(node (ref "DS2") (pin "4") (pinfunction "COL4G")))
(net (code "29") (name "Net-(DS2-Pad5)")
(net (code "32") (name "no_connect_(DS2-Pad5)")
(node (ref "DS2") (pin "5") (pinfunction "COL5G")))
(net (code "30") (name "Net-(DS2-Pad6)")
(net (code "33") (name "no_connect_(DS2-Pad6)")
(node (ref "DS2") (pin "6") (pinfunction "COL6G")))
(net (code "31") (name "Net-(DS2-Pad7)")
(net (code "34") (name "no_connect_(DS2-Pad7)")
(node (ref "DS2") (pin "7") (pinfunction "COL7G")))
(net (code "32") (name "Net-(DS2-Pad8)")
(net (code "35") (name "no_connect_(DS2-Pad8)")
(node (ref "DS2") (pin "8") (pinfunction "COL8G")))
(net (code "33") (name "Net-(DS2-Pad17)")
(net (code "36") (name "no_connect_(DS2-Pad17)")
(node (ref "DS2") (pin "17") (pinfunction "COL1R")))
(net (code "34") (name "Net-(DS2-Pad18)")
(net (code "37") (name "no_connect_(DS2-Pad18)")
(node (ref "DS2") (pin "18") (pinfunction "COL2R")))
(net (code "35") (name "Net-(DS2-Pad19)")
(net (code "38") (name "no_connect_(DS2-Pad19)")
(node (ref "DS2") (pin "19") (pinfunction "COL3R")))
(net (code "36") (name "Net-(DS2-Pad20)")
(net (code "39") (name "no_connect_(DS2-Pad20)")
(node (ref "DS2") (pin "20") (pinfunction "COL4R")))
(net (code "37") (name "Net-(DS2-Pad21)")
(net (code "40") (name "no_connect_(DS2-Pad21)")
(node (ref "DS2") (pin "21") (pinfunction "COL5R")))
(net (code "38") (name "Net-(DS2-Pad22)")
(net (code "41") (name "no_connect_(DS2-Pad22)")
(node (ref "DS2") (pin "22") (pinfunction "COL6R")))
(net (code "39") (name "Net-(DS2-Pad23)")
(net (code "42") (name "no_connect_(DS2-Pad23)")
(node (ref "DS2") (pin "23") (pinfunction "COL7R")))
(net (code "40") (name "Net-(DS2-Pad24)")
(net (code "43") (name "no_connect_(DS2-Pad24)")
(node (ref "DS2") (pin "24") (pinfunction "COL8R")))))

View File

@ -5147,231 +5147,231 @@
(net (code "386") (name "Net-(U20-Pad23)")
(node (ref "U20") (pin "23") (pinfunction "OSC"))
(node (ref "X3") (pin "2") (pinfunction "2")))
(net (code "387") (name "no_connect_387")
(net (code "387") (name "no_connect_(BUS1-PadA1)")
(node (ref "BUS1") (pin "A1") (pinfunction "TRST#")))
(net (code "388") (name "no_connect_388")
(node (ref "BUS1") (pin "A11") (pinfunction "RESERVED")))
(net (code "389") (name "no_connect_389")
(node (ref "BUS1") (pin "A14") (pinfunction "3.3VAUX")))
(net (code "390") (name "no_connect_390")
(node (ref "BUS1") (pin "A19") (pinfunction "PME#")))
(net (code "391") (name "no_connect_391")
(net (code "388") (name "no_connect_(BUS1-PadA3)")
(node (ref "BUS1") (pin "A3") (pinfunction "TMS")))
(net (code "392") (name "no_connect_392")
(node (ref "BUS1") (pin "A40") (pinfunction "RESERVED")))
(net (code "393") (name "no_connect_393")
(node (ref "BUS1") (pin "A41") (pinfunction "RESERVED")))
(net (code "394") (name "no_connect_394")
(node (ref "BUS1") (pin "A60") (pinfunction "REQ64#")))
(net (code "395") (name "no_connect_395")
(net (code "389") (name "no_connect_(BUS1-PadA7)")
(node (ref "BUS1") (pin "A7") (pinfunction "INTC#")))
(net (code "396") (name "no_connect_396")
(net (code "390") (name "no_connect_(BUS1-PadA9)")
(node (ref "BUS1") (pin "A9") (pinfunction "RESERVED")))
(net (code "397") (name "no_connect_397")
(net (code "391") (name "no_connect_(BUS1-PadA11)")
(node (ref "BUS1") (pin "A11") (pinfunction "RESERVED")))
(net (code "392") (name "no_connect_(BUS1-PadA14)")
(node (ref "BUS1") (pin "A14") (pinfunction "3.3VAUX")))
(net (code "393") (name "no_connect_(BUS1-PadA19)")
(node (ref "BUS1") (pin "A19") (pinfunction "PME#")))
(net (code "394") (name "no_connect_(BUS1-PadA40)")
(node (ref "BUS1") (pin "A40") (pinfunction "RESERVED")))
(net (code "395") (name "no_connect_(BUS1-PadA41)")
(node (ref "BUS1") (pin "A41") (pinfunction "RESERVED")))
(net (code "396") (name "no_connect_(BUS1-PadA60)")
(node (ref "BUS1") (pin "A60") (pinfunction "REQ64#")))
(net (code "397") (name "no_connect_(BUS1-PadB1)")
(node (ref "BUS1") (pin "B1") (pinfunction "-12V")))
(net (code "398") (name "no_connect_398")
(node (ref "BUS1") (pin "B10") (pinfunction "RESERVED")))
(net (code "399") (name "no_connect_399")
(node (ref "BUS1") (pin "B14") (pinfunction "RESERVED")))
(net (code "400") (name "no_connect_400")
(net (code "398") (name "no_connect_(BUS1-PadB2)")
(node (ref "BUS1") (pin "B2") (pinfunction "TCK")))
(net (code "401") (name "no_connect_401")
(node (ref "BUS1") (pin "B60") (pinfunction "ACK64#")))
(net (code "402") (name "no_connect_402")
(net (code "399") (name "no_connect_(BUS1-PadB7)")
(node (ref "BUS1") (pin "B7") (pinfunction "INTB#")))
(net (code "403") (name "no_connect_403")
(net (code "400") (name "no_connect_(BUS1-PadB8)")
(node (ref "BUS1") (pin "B8") (pinfunction "INTD#")))
(net (code "404") (name "no_connect_404")
(node (ref "U10") (pin "101") (pinfunction "TDO")))
(net (code "405") (name "no_connect_405")
(node (ref "U10") (pin "105") (pinfunction "CLKX2")))
(net (code "406") (name "no_connect_406")
(node (ref "U10") (pin "106") (pinfunction "XTAL2_IN")))
(net (code "407") (name "no_connect_407")
(node (ref "U10") (pin "107") (pinfunction "XTAL2_OUT")))
(net (code "408") (name "no_connect_408")
(node (ref "U10") (pin "127") (pinfunction "VID1_C")))
(net (code "409") (name "no_connect_409")
(node (ref "U10") (pin "129") (pinfunction "VID2_C")))
(net (code "410") (name "no_connect_410")
(node (ref "U10") (pin "131") (pinfunction "VID3_C")))
(net (code "411") (name "no_connect_411")
(node (ref "U10") (pin "150") (pinfunction "VID3_Y")))
(net (code "412") (name "no_connect_412")
(node (ref "U10") (pin "152") (pinfunction "VID2_Y")))
(net (code "413") (name "no_connect_413")
(node (ref "U10") (pin "154") (pinfunction "VID1_Y")))
(net (code "414") (name "no_connect_414")
(node (ref "U10") (pin "25") (pinfunction "FIELD_1")))
(net (code "415") (name "no_connect_415")
(node (ref "U10") (pin "26") (pinfunction "FIELD_0")))
(net (code "416") (name "no_connect_416")
(node (ref "U10") (pin "27") (pinfunction "FIELD_2")))
(net (code "417") (name "no_connect_417")
(node (ref "U10") (pin "28") (pinfunction "CBFLAG")))
(net (code "418") (name "no_connect_418")
(node (ref "U10") (pin "29") (pinfunction "VALID")))
(net (code "419") (name "no_connect_419")
(node (ref "U10") (pin "32") (pinfunction "ACTIVE")))
(net (code "420") (name "no_connect_420")
(node (ref "U10") (pin "33") (pinfunction "VACTIVE")))
(net (code "421") (name "no_connect_421")
(node (ref "U10") (pin "35") (pinfunction "HACTIVE")))
(net (code "422") (name "no_connect_422")
(node (ref "U10") (pin "37") (pinfunction "SERROR")))
(net (code "423") (name "no_connect_423")
(node (ref "U10") (pin "38") (pinfunction "CAPTURE")))
(net (code "424") (name "no_connect_424")
(node (ref "U12") (pin "67") (pinfunction "PRD0")))
(net (code "425") (name "no_connect_425")
(node (ref "U12") (pin "68") (pinfunction "PRD1")))
(net (code "426") (name "no_connect_426")
(node (ref "U12") (pin "69") (pinfunction "PRD2")))
(net (code "427") (name "no_connect_427")
(node (ref "U12") (pin "70") (pinfunction "PRD3")))
(net (code "428") (name "no_connect_428")
(node (ref "U13") (pin "67") (pinfunction "PRD0")))
(net (code "429") (name "no_connect_429")
(node (ref "U13") (pin "68") (pinfunction "PRD1")))
(net (code "430") (name "no_connect_430")
(node (ref "U13") (pin "69") (pinfunction "PRD2")))
(net (code "431") (name "no_connect_431")
(node (ref "U13") (pin "70") (pinfunction "PRD3")))
(net (code "432") (name "no_connect_432")
(node (ref "U14") (pin "67") (pinfunction "PRD0")))
(net (code "433") (name "no_connect_433")
(node (ref "U14") (pin "68") (pinfunction "PRD1")))
(net (code "434") (name "no_connect_434")
(node (ref "U14") (pin "69") (pinfunction "PRD2")))
(net (code "435") (name "no_connect_435")
(node (ref "U14") (pin "70") (pinfunction "PRD3")))
(net (code "436") (name "no_connect_436")
(node (ref "U15") (pin "67") (pinfunction "PRD0")))
(net (code "437") (name "no_connect_437")
(node (ref "U15") (pin "68") (pinfunction "PRD1")))
(net (code "438") (name "no_connect_438")
(node (ref "U15") (pin "69") (pinfunction "PRD2")))
(net (code "439") (name "no_connect_439")
(node (ref "U15") (pin "70") (pinfunction "PRD3")))
(net (code "440") (name "no_connect_440")
(node (ref "U16") (pin "67") (pinfunction "PRD0")))
(net (code "441") (name "no_connect_441")
(node (ref "U16") (pin "68") (pinfunction "PRD1")))
(net (code "442") (name "no_connect_442")
(node (ref "U16") (pin "69") (pinfunction "PRD2")))
(net (code "443") (name "no_connect_443")
(node (ref "U16") (pin "70") (pinfunction "PRD3")))
(net (code "444") (name "no_connect_444")
(node (ref "U17") (pin "67") (pinfunction "PRD0")))
(net (code "445") (name "no_connect_445")
(node (ref "U17") (pin "68") (pinfunction "PRD1")))
(net (code "446") (name "no_connect_446")
(node (ref "U17") (pin "69") (pinfunction "PRD2")))
(net (code "447") (name "no_connect_447")
(node (ref "U17") (pin "70") (pinfunction "PRD3")))
(net (code "448") (name "no_connect_448")
(node (ref "U18") (pin "67") (pinfunction "PRD0")))
(net (code "449") (name "no_connect_449")
(node (ref "U18") (pin "68") (pinfunction "PRD1")))
(net (code "450") (name "no_connect_450")
(node (ref "U18") (pin "69") (pinfunction "PRD2")))
(net (code "451") (name "no_connect_451")
(node (ref "U18") (pin "70") (pinfunction "PRD3")))
(net (code "452") (name "no_connect_452")
(node (ref "U19") (pin "67") (pinfunction "PRD0")))
(net (code "453") (name "no_connect_453")
(node (ref "U19") (pin "68") (pinfunction "PRD1")))
(net (code "454") (name "no_connect_454")
(node (ref "U19") (pin "69") (pinfunction "PRD2")))
(net (code "455") (name "no_connect_455")
(node (ref "U19") (pin "70") (pinfunction "PRD3")))
(net (code "456") (name "no_connect_456")
(node (ref "U20") (pin "1") (pinfunction "-R.Y")))
(net (code "457") (name "no_connect_457")
(node (ref "U20") (pin "3") (pinfunction "-B.Y")))
(net (code "458") (name "no_connect_458")
(node (ref "U20") (pin "4") (pinfunction "H/2")))
(net (code "459") (name "no_connect_459")
(node (ref "U20") (pin "5") (pinfunction "Y")))
(net (code "460") (name "no_connect_460")
(node (ref "U21") (pin "6") (pinfunction "CEO")))
(net (code "461") (name "no_connect_461")
(node (ref "U22") (pin "10") (pinfunction "P/A4")))
(net (code "462") (name "no_connect_462")
(node (ref "U22") (pin "14") (pinfunction "P14")))
(net (code "463") (name "no_connect_463")
(node (ref "U22") (pin "15") (pinfunction "P15")))
(net (code "464") (name "no_connect_464")
(node (ref "U22") (pin "16") (pinfunction "P16")))
(net (code "465") (name "no_connect_465")
(node (ref "U22") (pin "27") (pinfunction "PGCK2")))
(net (code "466") (name "no_connect_466")
(node (ref "U22") (pin "3") (pinfunction "P/A17")))
(net (code "467") (name "no_connect_467")
(node (ref "U22") (pin "30") (pinfunction "P/LDC")))
(net (code "468") (name "no_connect_468")
(node (ref "U22") (pin "4") (pinfunction "P/TDI")))
(net (code "469") (name "no_connect_469")
(node (ref "U22") (pin "5") (pinfunction "P/TCK")))
(net (code "470") (name "no_connect_470")
(node (ref "U22") (pin "6") (pinfunction "P/A3")))
(net (code "471") (name "no_connect_471")
(node (ref "U22") (pin "65") (pinfunction "P65")))
(net (code "472") (name "no_connect_472")
(node (ref "U22") (pin "66") (pinfunction "P66")))
(net (code "473") (name "no_connect_473")
(node (ref "U22") (pin "73") (pinfunction "DOUT/SGCK4")))
(net (code "474") (name "no_connect_474")
(node (ref "U22") (pin "76") (pinfunction "TDO")))
(net (code "475") (name "no_connect_475")
(node (ref "U23") (pin "100") (pinfunction "P100")))
(net (code "476") (name "no_connect_476")
(node (ref "U23") (pin "2") (pinfunction "SGCK1")))
(net (code "477") (name "no_connect_477")
(node (ref "U23") (pin "31") (pinfunction "P31/HDC")))
(net (code "478") (name "no_connect_478")
(node (ref "U23") (pin "33") (pinfunction "P33/LDC")))
(net (code "479") (name "no_connect_479")
(node (ref "U23") (pin "49") (pinfunction "P49")))
(net (code "480") (name "no_connect_480")
(node (ref "U23") (pin "50") (pinfunction "P50")))
(net (code "481") (name "no_connect_481")
(node (ref "U23") (pin "58") (pinfunction "P58")))
(net (code "482") (name "no_connect_482")
(node (ref "U23") (pin "60") (pinfunction "P60")))
(net (code "483") (name "no_connect_483")
(node (ref "U23") (pin "62") (pinfunction "P62")))
(net (code "484") (name "no_connect_484")
(node (ref "U23") (pin "68") (pinfunction "P68")))
(net (code "485") (name "no_connect_485")
(node (ref "U23") (pin "76") (pinfunction "DOUT/SGCK4")))
(net (code "486") (name "no_connect_486")
(node (ref "U23") (pin "79") (pinfunction "TDO")))
(net (code "487") (name "no_connect_487")
(node (ref "U23") (pin "98") (pinfunction "P98")))
(net (code "488") (name "no_connect_488")
(node (ref "U23") (pin "99") (pinfunction "P99")))
(net (code "489") (name "no_connect_489")
(node (ref "U24") (pin "121") (pinfunction "TDO")))
(net (code "490") (name "no_connect_490")
(node (ref "U24") (pin "84") (pinfunction "PGCK3")))
(net (code "491") (name "no_connect_491")
(net (code "401") (name "no_connect_(BUS1-PadB10)")
(node (ref "BUS1") (pin "B10") (pinfunction "RESERVED")))
(net (code "402") (name "no_connect_(BUS1-PadB14)")
(node (ref "BUS1") (pin "B14") (pinfunction "RESERVED")))
(net (code "403") (name "no_connect_(BUS1-PadB60)")
(node (ref "BUS1") (pin "B60") (pinfunction "ACK64#")))
(net (code "404") (name "no_connect_(U7-Pad8)")
(node (ref "U7") (pin "8") (pinfunction "CLK/2")))
(net (code "492") (name "no_connect_492")
(net (code "405") (name "no_connect_(U8-Pad4)")
(node (ref "U8") (pin "4") (pinfunction "SYNC0")))
(net (code "493") (name "no_connect_493")
(net (code "406") (name "no_connect_(U8-Pad5)")
(node (ref "U8") (pin "5") (pinfunction "SYNC1")))
(net (code "494") (name "no_connect_494")
(net (code "407") (name "no_connect_(U8-Pad74)")
(node (ref "U8") (pin "74") (pinfunction "BVID1")))
(net (code "495") (name "no_connect_495")
(net (code "408") (name "no_connect_(U8-Pad77)")
(node (ref "U8") (pin "77") (pinfunction "GVID1")))
(net (code "496") (name "no_connect_496")
(net (code "409") (name "no_connect_(U8-Pad81)")
(node (ref "U8") (pin "81") (pinfunction "RVID1")))
(net (code "497") (name "no_connect_497")
(node (ref "U9") (pin "27") (pinfunction "CR0")))
(net (code "498") (name "no_connect_498")
(node (ref "U9") (pin "30") (pinfunction "CR3")))
(net (code "499") (name "no_connect_499")
(net (code "410") (name "no_connect_(U9-Pad5)")
(node (ref "U9") (pin "5") (pinfunction "S0")))
(net (code "500") (name "no_connect_500")
(node (ref "U9") (pin "6") (pinfunction "S1")))))
(net (code "411") (name "no_connect_(U9-Pad6)")
(node (ref "U9") (pin "6") (pinfunction "S1")))
(net (code "412") (name "no_connect_(U9-Pad27)")
(node (ref "U9") (pin "27") (pinfunction "CR0")))
(net (code "413") (name "no_connect_(U9-Pad30)")
(node (ref "U9") (pin "30") (pinfunction "CR3")))
(net (code "414") (name "no_connect_(U10-Pad25)")
(node (ref "U10") (pin "25") (pinfunction "FIELD_1")))
(net (code "415") (name "no_connect_(U10-Pad26)")
(node (ref "U10") (pin "26") (pinfunction "FIELD_0")))
(net (code "416") (name "no_connect_(U10-Pad27)")
(node (ref "U10") (pin "27") (pinfunction "FIELD_2")))
(net (code "417") (name "no_connect_(U10-Pad28)")
(node (ref "U10") (pin "28") (pinfunction "CBFLAG")))
(net (code "418") (name "no_connect_(U10-Pad29)")
(node (ref "U10") (pin "29") (pinfunction "VALID")))
(net (code "419") (name "no_connect_(U10-Pad32)")
(node (ref "U10") (pin "32") (pinfunction "ACTIVE")))
(net (code "420") (name "no_connect_(U10-Pad33)")
(node (ref "U10") (pin "33") (pinfunction "VACTIVE")))
(net (code "421") (name "no_connect_(U10-Pad35)")
(node (ref "U10") (pin "35") (pinfunction "HACTIVE")))
(net (code "422") (name "no_connect_(U10-Pad37)")
(node (ref "U10") (pin "37") (pinfunction "SERROR")))
(net (code "423") (name "no_connect_(U10-Pad38)")
(node (ref "U10") (pin "38") (pinfunction "CAPTURE")))
(net (code "424") (name "no_connect_(U10-Pad101)")
(node (ref "U10") (pin "101") (pinfunction "TDO")))
(net (code "425") (name "no_connect_(U10-Pad105)")
(node (ref "U10") (pin "105") (pinfunction "CLKX2")))
(net (code "426") (name "no_connect_(U10-Pad106)")
(node (ref "U10") (pin "106") (pinfunction "XTAL2_IN")))
(net (code "427") (name "no_connect_(U10-Pad107)")
(node (ref "U10") (pin "107") (pinfunction "XTAL2_OUT")))
(net (code "428") (name "no_connect_(U10-Pad127)")
(node (ref "U10") (pin "127") (pinfunction "VID1_C")))
(net (code "429") (name "no_connect_(U10-Pad129)")
(node (ref "U10") (pin "129") (pinfunction "VID2_C")))
(net (code "430") (name "no_connect_(U10-Pad131)")
(node (ref "U10") (pin "131") (pinfunction "VID3_C")))
(net (code "431") (name "no_connect_(U10-Pad150)")
(node (ref "U10") (pin "150") (pinfunction "VID3_Y")))
(net (code "432") (name "no_connect_(U10-Pad152)")
(node (ref "U10") (pin "152") (pinfunction "VID2_Y")))
(net (code "433") (name "no_connect_(U10-Pad154)")
(node (ref "U10") (pin "154") (pinfunction "VID1_Y")))
(net (code "434") (name "no_connect_(U12-Pad67)")
(node (ref "U12") (pin "67") (pinfunction "PRD0")))
(net (code "435") (name "no_connect_(U12-Pad68)")
(node (ref "U12") (pin "68") (pinfunction "PRD1")))
(net (code "436") (name "no_connect_(U12-Pad69)")
(node (ref "U12") (pin "69") (pinfunction "PRD2")))
(net (code "437") (name "no_connect_(U12-Pad70)")
(node (ref "U12") (pin "70") (pinfunction "PRD3")))
(net (code "438") (name "no_connect_(U13-Pad67)")
(node (ref "U13") (pin "67") (pinfunction "PRD0")))
(net (code "439") (name "no_connect_(U13-Pad68)")
(node (ref "U13") (pin "68") (pinfunction "PRD1")))
(net (code "440") (name "no_connect_(U13-Pad69)")
(node (ref "U13") (pin "69") (pinfunction "PRD2")))
(net (code "441") (name "no_connect_(U13-Pad70)")
(node (ref "U13") (pin "70") (pinfunction "PRD3")))
(net (code "442") (name "no_connect_(U14-Pad67)")
(node (ref "U14") (pin "67") (pinfunction "PRD0")))
(net (code "443") (name "no_connect_(U14-Pad68)")
(node (ref "U14") (pin "68") (pinfunction "PRD1")))
(net (code "444") (name "no_connect_(U14-Pad69)")
(node (ref "U14") (pin "69") (pinfunction "PRD2")))
(net (code "445") (name "no_connect_(U14-Pad70)")
(node (ref "U14") (pin "70") (pinfunction "PRD3")))
(net (code "446") (name "no_connect_(U15-Pad67)")
(node (ref "U15") (pin "67") (pinfunction "PRD0")))
(net (code "447") (name "no_connect_(U15-Pad68)")
(node (ref "U15") (pin "68") (pinfunction "PRD1")))
(net (code "448") (name "no_connect_(U15-Pad69)")
(node (ref "U15") (pin "69") (pinfunction "PRD2")))
(net (code "449") (name "no_connect_(U15-Pad70)")
(node (ref "U15") (pin "70") (pinfunction "PRD3")))
(net (code "450") (name "no_connect_(U16-Pad67)")
(node (ref "U16") (pin "67") (pinfunction "PRD0")))
(net (code "451") (name "no_connect_(U16-Pad68)")
(node (ref "U16") (pin "68") (pinfunction "PRD1")))
(net (code "452") (name "no_connect_(U16-Pad69)")
(node (ref "U16") (pin "69") (pinfunction "PRD2")))
(net (code "453") (name "no_connect_(U16-Pad70)")
(node (ref "U16") (pin "70") (pinfunction "PRD3")))
(net (code "454") (name "no_connect_(U17-Pad67)")
(node (ref "U17") (pin "67") (pinfunction "PRD0")))
(net (code "455") (name "no_connect_(U17-Pad68)")
(node (ref "U17") (pin "68") (pinfunction "PRD1")))
(net (code "456") (name "no_connect_(U17-Pad69)")
(node (ref "U17") (pin "69") (pinfunction "PRD2")))
(net (code "457") (name "no_connect_(U17-Pad70)")
(node (ref "U17") (pin "70") (pinfunction "PRD3")))
(net (code "458") (name "no_connect_(U18-Pad67)")
(node (ref "U18") (pin "67") (pinfunction "PRD0")))
(net (code "459") (name "no_connect_(U18-Pad68)")
(node (ref "U18") (pin "68") (pinfunction "PRD1")))
(net (code "460") (name "no_connect_(U18-Pad69)")
(node (ref "U18") (pin "69") (pinfunction "PRD2")))
(net (code "461") (name "no_connect_(U18-Pad70)")
(node (ref "U18") (pin "70") (pinfunction "PRD3")))
(net (code "462") (name "no_connect_(U19-Pad67)")
(node (ref "U19") (pin "67") (pinfunction "PRD0")))
(net (code "463") (name "no_connect_(U19-Pad68)")
(node (ref "U19") (pin "68") (pinfunction "PRD1")))
(net (code "464") (name "no_connect_(U19-Pad69)")
(node (ref "U19") (pin "69") (pinfunction "PRD2")))
(net (code "465") (name "no_connect_(U19-Pad70)")
(node (ref "U19") (pin "70") (pinfunction "PRD3")))
(net (code "466") (name "no_connect_(U20-Pad1)")
(node (ref "U20") (pin "1") (pinfunction "-R.Y")))
(net (code "467") (name "no_connect_(U20-Pad3)")
(node (ref "U20") (pin "3") (pinfunction "-B.Y")))
(net (code "468") (name "no_connect_(U20-Pad4)")
(node (ref "U20") (pin "4") (pinfunction "H/2")))
(net (code "469") (name "no_connect_(U20-Pad5)")
(node (ref "U20") (pin "5") (pinfunction "Y")))
(net (code "470") (name "no_connect_(U21-Pad6)")
(node (ref "U21") (pin "6") (pinfunction "CEO")))
(net (code "471") (name "no_connect_(U22-Pad3)")
(node (ref "U22") (pin "3") (pinfunction "P/A17")))
(net (code "472") (name "no_connect_(U22-Pad4)")
(node (ref "U22") (pin "4") (pinfunction "P/TDI")))
(net (code "473") (name "no_connect_(U22-Pad5)")
(node (ref "U22") (pin "5") (pinfunction "P/TCK")))
(net (code "474") (name "no_connect_(U22-Pad6)")
(node (ref "U22") (pin "6") (pinfunction "P/A3")))
(net (code "475") (name "no_connect_(U22-Pad10)")
(node (ref "U22") (pin "10") (pinfunction "P/A4")))
(net (code "476") (name "no_connect_(U22-Pad14)")
(node (ref "U22") (pin "14") (pinfunction "P14")))
(net (code "477") (name "no_connect_(U22-Pad15)")
(node (ref "U22") (pin "15") (pinfunction "P15")))
(net (code "478") (name "no_connect_(U22-Pad16)")
(node (ref "U22") (pin "16") (pinfunction "P16")))
(net (code "479") (name "no_connect_(U22-Pad27)")
(node (ref "U22") (pin "27") (pinfunction "PGCK2")))
(net (code "480") (name "no_connect_(U22-Pad30)")
(node (ref "U22") (pin "30") (pinfunction "P/LDC")))
(net (code "481") (name "no_connect_(U22-Pad65)")
(node (ref "U22") (pin "65") (pinfunction "P65")))
(net (code "482") (name "no_connect_(U22-Pad66)")
(node (ref "U22") (pin "66") (pinfunction "P66")))
(net (code "483") (name "no_connect_(U22-Pad73)")
(node (ref "U22") (pin "73") (pinfunction "DOUT/SGCK4")))
(net (code "484") (name "no_connect_(U22-Pad76)")
(node (ref "U22") (pin "76") (pinfunction "TDO")))
(net (code "485") (name "no_connect_(U23-Pad2)")
(node (ref "U23") (pin "2") (pinfunction "SGCK1")))
(net (code "486") (name "no_connect_(U23-Pad31)")
(node (ref "U23") (pin "31") (pinfunction "P31/HDC")))
(net (code "487") (name "no_connect_(U23-Pad33)")
(node (ref "U23") (pin "33") (pinfunction "P33/LDC")))
(net (code "488") (name "no_connect_(U23-Pad49)")
(node (ref "U23") (pin "49") (pinfunction "P49")))
(net (code "489") (name "no_connect_(U23-Pad50)")
(node (ref "U23") (pin "50") (pinfunction "P50")))
(net (code "490") (name "no_connect_(U23-Pad58)")
(node (ref "U23") (pin "58") (pinfunction "P58")))
(net (code "491") (name "no_connect_(U23-Pad60)")
(node (ref "U23") (pin "60") (pinfunction "P60")))
(net (code "492") (name "no_connect_(U23-Pad62)")
(node (ref "U23") (pin "62") (pinfunction "P62")))
(net (code "493") (name "no_connect_(U23-Pad68)")
(node (ref "U23") (pin "68") (pinfunction "P68")))
(net (code "494") (name "no_connect_(U23-Pad76)")
(node (ref "U23") (pin "76") (pinfunction "DOUT/SGCK4")))
(net (code "495") (name "no_connect_(U23-Pad79)")
(node (ref "U23") (pin "79") (pinfunction "TDO")))
(net (code "496") (name "no_connect_(U23-Pad98)")
(node (ref "U23") (pin "98") (pinfunction "P98")))
(net (code "497") (name "no_connect_(U23-Pad99)")
(node (ref "U23") (pin "99") (pinfunction "P99")))
(net (code "498") (name "no_connect_(U23-Pad100)")
(node (ref "U23") (pin "100") (pinfunction "P100")))
(net (code "499") (name "no_connect_(U24-Pad84)")
(node (ref "U24") (pin "84") (pinfunction "PGCK3")))
(net (code "500") (name "no_connect_(U24-Pad121)")
(node (ref "U24") (pin "121") (pinfunction "TDO")))))