I'd give here a new car! People that fix the PCB (or the BOM) instead of the schematic should be put against the wall and shot.
Back when I was an intern they gave me a big PCB to design. Took me two weeks to get it routed. When they tested it, it turned out some circuits where completely wrong. Ofcourse they accused me first but after more careful study it turned out the designer had moved components and wires in the schematic. As a result wires that looked like they where crossing where not crossing but where connected to each other.
--
Failure does not prove something is impossible, failure simply
indicates you are not using the right tools...
nico@nctdevpuntnl (punt=.)
--------------------------------------------------------------
Doesn't PADS have some database synchronisation tool for that? What you're describing is much like how Orcad CIS works.
--
Failure does not prove something is impossible, failure simply
indicates you are not using the right tools...
nico@nctdevpuntnl (punt=.)
--------------------------------------------------------------
Yes. That's the way global/implied power is connected.
Have fun! I gave up on using global power during some timer/oscillator design work for Microchip. Drove me nuts, so I re-worked the symbols to play either way... at my choice.
Thus I can read someone else's schematic, but "specific-wire" when I want. ...Jim Thompson
--
| James E.Thompson, CTO | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |
Remember: Once you go over the hill, you pick up speed
We release the schematic, the PCB, and one or more BOMs all together. At that point they are correct and coherent. But an assembly can have multiple "dash number" versions, with different parts and values, so the schematic can't agree with all of them. And later, if we change the BOM, or create a new version, we don't change the schematic, because it's a released document. So we consider the released schematic to be a reference drawing; the assembly drawing, the correct dash-number BOM, and any ECOs define product configuration.
Seems to work.
One always accuses interns first!
but
Yikes. A good schematic program puts connection dots, or doesn't.
So the rule is.......both the board and schematic have to be 'right'.
Why schematic entry can't back-annotate thoroughly is a mystery to me. The simplest changes to the puppet/drill/conductor art may take ages to achieve manually - with no effect to 'dots' or 'crosses'.
You always seem to end up running around trying to find out what vendor suffixes are required to ship with green mylar packing tape, rather than reinforced paper, so the schematic can be 'right'.
These programs were designed and are maintained by morons.
PADS can do netlist compares, but sometimes it won't, and won't say why. And we wanted to do BOM checks and such, so we wrote something we like.
PADS likes to use Windows OLE for stuff like this, and that is bad news. If you enable OLE between the sch and pcb, it's practically guaranteed to corrupt both.
I got one schematic from my layout guy that had a color photo of his girlfriend on one page, tastefully clad of course. I thought it couldn't be deleted but it just turned out to be 10 copies deep. OLE screwed up again.
' ' BLUE.BAS ' ' PADS/MAX PARTS COMPARISON ' ' By John Larkin ' Highland Technology, Inc ' San Francisco ' June 1, 2010 ' ' Copyright Highland Technology Inc. ' ' This program is coded for PBCC v 5 ' ' Netlist format assumes PADS-LOGIC version 5
#COMPILE EXE
DEFLNG A-Z ' WE NEED FLOATS FOR PART VALS
GLOBAL K$ ' KEYBOARD CHAR GLOBAL CONWID AS LONG ' CONSOLE WIDTH
' 103-2300 CAP CER 0603 50V 10nF DIGIKEY ' 115-3120 CAP TANT LD 35V 3.3uF 20% RAD NEC ELEC ' 131-3841 RES 0603 1/16W 75R 1% DIGIKEY ' 154-2640 IND 1008 580MA 150NH 2% COILCRAFT ' 163-1008 IND BEAD 0805 500MA 600R @ 100MHZ STEWARD ' 145-5676 RES TRIM LD 3/4" SIDE 5K 15T MOUSER ' 140-5005 RES NETWORK SO16W 8X 1K ISO 2% DIGIKEY
TRY OPEN "C:\MAX\_PARTS.TXT" FOR INPUT AS # 7 PRINT "OPENING C:\MAX\_PARTS.TXT" CATCH PRINT "ERROR : CAN'T OPEN C:\MAX\_PARTS.TXT" GOTO BAIL END TRY
J = 0 ' POINTER INTO MX, MV
MAPL:
TRY LINE INPUT #7, M$ CATCH GOTO MEXX END TRY
PT$ = MID$(M$, 11, 3) ' PART TYPE, "CAP" MAYBE
IF ( (PT$"CAP") AND (PT$"RES") AND (PT$"IND") ) THEN GOTO MAPL ' R,L,C ONLY!
MX$(J) = LEFT$(M$, 60) ' SAVE MOST OF PART LINE V$ = MID$(M$, 41, 12) ' PLUCK VALUE FIELD MV#(J) = VALCON#(V$) ' SAVE VAL AS FLOAT
INCR J GOTO MAPL
MEXX:
PRINT USING$("FOUND ##### R/L/C PARTS IN MAX DATABASE", J) PRINT
PRINT #1, USING$("FOUND ##### R/L/C PARTS IN MAX DATABASE", J) PRINT #1,
IF J < 800 THEN PRINT "ERROR : TOO FEW R/L/C PARTS "; J GOTO BAIL END IF
CLOSE # 7
'
' HERE WE HAVE A STATE MACHINE THAT READS LINES FROM THE PADS FILE ' ' INSIDE THE PADS-LOGIC NETLIST, A PART BLOCK LOOKS LIKE... ' ' PART R209 ' { ' "ORIG" JL 8/22/96 ' "DESC" 0603 SMD RESISTOR ' "HTI" 131-4001 ' "VALUE" 100R ' }
TRY PRINT "OPENING PADS FILE " ; F$ OPEN F$ FOR INPUT AS # 9 CATCH PRINT "ERROR : CAN'T OPEN PADS FILE " GOTO BAIL END TRY
L = 0 ' LINE NUMBER OF NETLIST FILE PRINT
POGO:
P$ = "" ' NUKE PART NAME V$ = "" ' AND VALUE FIELD H$ = "" ' AND HTI/MAX NUMBER, AS STRING D$ = "" ' DESCRIPTION FIELD EF = 0 ' ZAP ERROR FLAG
PLOOP:
TRY LINE INPUT #9, E$ ' READ FROM SCHEMATIC FILE INCR L ' AND COUNT LINE # IF L = 1 THEN PRINT #1, E$ : PRINT E$ ' LOG FIRST TWO LINES IF L = 2 THEN PRINT #1, E$ : PRINT #1, : PRINT E$ ' OF SCHEMATIC FILE CATCH PRINT "ERROR : UNEXPECTED PADS END OF FILE" PRINT # 1, PRINT # 1, "ERROR : UNEXPECTED PADS END OF FILE" PRINT # 1, INCR ERRC GOTO SUMRY END TRY
IF LEFT$(E$,5) = "*END*" THEN PRINT PRINT "PADS FILE *END*" GOTO SUMRY END IF
' LOOK FOR LINE LIKE PART R125
IF LEFT$(E$,4) = "PART" THEN
INCR PARTS
' WE SHOULDN'T ALREADY HAVE AN ACTIVE PART NAME HERE
IF P$ "" THEN PRINT # 1, PRINT # 1, "*** PADS FILE SYNTAX ERROR *** line "; L ; E$ PRINT # 1, INCR ERRC GOTO POGO END IF
IF LEN(P$) < 2 THEN PRINT # 1, PRINT # 1, "ERROR : BAD PART FROM PADS FILE line "; L ; E$ PRINT # 1, INCR ERRC GOTO POGO END IF
GOTO PLOOP
END IF
' NOW EXCLUDE PARTS EXCEPT RESISTORS, CAP, AND INDUCTORS
B$ = LEFT$(P$,1) IF ( (B$ "R") AND (B$ "C") AND (B$ "L") ) THEN GOTO POGO
' LOOK FOR LINE LIKE "DESC" 0603 SMD RESISTOR AND EXTRACT DESCRIPTION
IF INSTR(E$,"DESC") THEN D$ = MID$(E$,8) D$ = UCASE$(TRIM$(D$)) ELSEIF INSTR(E$,"DES") THEN ' SOME FUNKY OLD PARTS HAVE "DES" INSTEAD OF "DESC" D$ = MID$(E$,7) D$ = UCASE$(TRIM$(D$)) END IF
' LOOK FOR HTI #, LINE LIKE "HTI" 123-4567
IF INSTR(E$,"HTI") THEN H$ = MID$(E$,7,8) H$ = TRIM$(H$) END IF '
' LOOK FOR VALUE, LINE LIKE "VALUE" 49.9K
IF INSTR(E$,"VALUE") THEN V$ = MID$(E$,9) V$ = TRIM$(V$) END IF
' BRACKET } ENDS THIS PART. SEE IF WE'VE ACCUMULATED THE BASIC STUFF WE NEED...
IF E$ = "}" THEN
INCR RLC
IF H$ = "" THEN PRINT #1, USING$ ("\ \ MISSING HTI NUMBER Line ######", P$, L) INCR ERRC EF = 1 END IF
IF ( (LEN(H$) < 8) AND (H$ "*") ) THEN PRINT #1, USING$ ("\ \ BAD HTI NUMBER Line ######", P$, L) INCR ERRC EF = 1 END IF
IF V$ = "" THEN PRINT #1, USING$ ("\ \ MISSING VALUE Line ######", P$, L) INCR ERRC EF = 1 END IF
IF D$ = "" THEN PRINT #1, USING$ ("\ \ MISSING DESCRIPTION Line ######", P$, L) INCR ERRC END IF
IF EF THEN GOTO PRAX ' IF ANY ERRORS SO FAR, SKIP FURTHER ANALYSIS
GOTO PROCES ' IF OK, PROCESS IT
END IF
GOTO PLOOP
'
PROCES:
' CASE : PART HAS NO HTI# : ALREADY HANDLED ABOVE ' CASE : PART HAS NO VALUE : ALREADY HANDLED ABOVE
' CASE : PART VALUE IS * UNUSED PART
IF V$ = "*" THEN GOTO PRAX
' CASE : HTI# IS INVALID OR ' PART HAS VALID HTI# BUT VALUES DISAGREE ' ' SCAN MAX PARTS ARRAY FOR HTI# MATCH
FOR X = 0 TO J-1 ' SCAN ENTIRE MAX PARTS ARRAY
MM$ = LEFT$(MX$(X),8) ' EXTRACT 123-4567 IF MM$ = H$ THEN GOTO PHIT ' BREAK OUT ON HTI# MATCH
NEXT
' HERE, WE FAILED TO FIND A MATCH
PRINT #1, USING$ ("\ \ INVALID HTI NUMBER Line ######", P$, L) EF = 2 INCR ERRC GOTO PRAX
' MATCH IS OK, SO COMPARE VALUES
PHIT: V# = VALCON#(V$) ' FLOAT PART VALUE
T# = 1.0001 ' 100 PPM FLOATING POINT DEADBAND!
IF ( (V#*T# < MV#(X)) OR (MV#(X)*T# < V#) ) THEN PRINT #1, USING$ ("\ \ VALUES DISAGREE Line ######", P$, L) EF = 2 INCR ERRC END IF
' CASE : WRONG SIZE 0805 ETC
CP$ = GETSIZ$(D$) ' HUNT FOR SUCH IN PADS DESCRIPTION FIELD CM$ = GETSIZ$(MX$(X)) ' AND IN MAX PART
IF ( (CP$"") OR (CM$"") ) THEN ' IF EITHER HAS A PACKAGE TYPE, COMPARE
IF (CP$CM$) THEN PRINT #1, USING$ ("\ \ PACKAGE TYPES DISAGREE Line ######", P$, L) EF = 2 INCR ERRC END IF
END IF
' IF WE HAVE ANY ERRORS FOR THIS PART, ADD PADS/MAX DETAILS
END SUB ' '********************** HEADR *************************
SUB HEADR (CF%, CB%, TEXT$)
' SUBROUTINE TO PAINT A PAGE HEADER ' ' CF% IS FOREGROUND (TEXT) COLOR ' CB% IS BACKGROUND COLOR ' TEXT$ IS CENTERED TEXT
' GLOBAL CONWID IS SCREEN WIDTH
LOCATE 1, 1 ' USE TOP LINE AND COLOR CF%, CB% ' CALLER'S DECOR
HD$ = " " + DATE$ HT$ = TIME$ + " "
H = LEN (HD$) + LEN (HT$)
T = LEN(TEXT$)
FL$ = SPACE$((CONWID-H-T) / 2) ' FILL BEFORE/AFTER TEXT$
H$ = HD$ + FL$ + TEXT$ + FL$ + HT$
H$ = H$ + TIME$ + " "
PRINT LEFT$(H$, CONWID);
COLOR BLU%+DARK%, WHT%
END SUB
' FUN TO EXTRACT A VALUE FROM SOMETHING LIKE 22uF ' ' UNITS ARE OHMS, FARADS, HENRIES ' ' -1 FLAGS BLANK OR ALPHA ("TBD") VALS
' NOTE THAT WE EXPECT "22uf" AND NOT "22 uF" BUT WE CAN HAVE... ' ' 22uF 15V Y5V ' 15R 5% ' 1mF = MILLIFARAD! ' 2.2F = FARADS! ' TBD ' (BLANK) '
FUNCTION VALCON#(V$)
Y$ = TRIM$(V$) ' CLEAN UP A LITTLE Y$ = TRIM$(PARSE$(Y$, " ", 1)) ' PARSE OUT FIRST FIELD
IF Y$ = "" THEN V# = -1 : GOTO VEXX ' NULL VALUE FIELD FORCES ERROR LATER
IF INSTR(Y$,"ZERO") THEN V# = 0 : GOTO VEXX ' ZERO OHM JUMPERS!
A$ = LEFT$(Y$,1) ' CHECK FOR NUMERIC AND IF ( (A$ < "0") OR (A$ > "9") ) THEN V# = -1 : GOTO VEXX ' INSIST ON THAT!
V# = VAL(Y$)
IF INSTR(Y$,"m") THEN V# = V# * 1E-3 : GOTO VEXX ' GOOFY MILLITHINGS
Y$ = UCASE$(Y$) ' IGNORE CASES NOW:
IF INSTR(Y$,"K") THEN V# = V# * 1E3 : GOTO VEXX IF INSTR(Y$,"M") THEN V# = V# * 1E6 : GOTO VEXX IF INSTR(Y$,"G") THEN V# = V# * 1E9 : GOTO VEXX IF INSTR(Y$,"T") THEN V# = V# * 1E12 : GOTO VEXX
IF INSTR(Y$,"U") THEN V# = V# * 1E-6 : GOTO VEXX IF INSTR(Y$,"N") THEN V# = V# * 1E-9 : GOTO VEXX IF INSTR(Y$,"P") THEN V# = V# * 1E-12 : GOTO VEXX
VEXX:
VALCON# = V#
END FUNCTION
' FUN TO LOOK FOR A PACKAGE SIZE IN A STRING ' ' A REWRITE WOULDN'T OFFEND ANYBODY MUCH. THIS SHOULD ' ACTUALLY GOBBLE A FILE OF LEGIT PACKAGE TYPES.
FUNCTION GETSIZ$(S$)
A$ = ""
IF INSTR(S$, "0402") THEN A$ = "0402" IF INSTR(S$, "0603") THEN A$ = "0603" IF INSTR(S$, "0606") THEN A$ = "0606" IF INSTR(S$, "0805") THEN A$ = "0805" IF INSTR(S$, "1008") THEN A$ = "1008" IF INSTR(S$, "1206") THEN A$ = "1206" IF INSTR(S$, "1210") THEN A$ = "1210" IF INSTR(S$, "1212") THEN A$ = "1212" IF INSTR(S$, "1812") THEN A$ = "1812" IF INSTR(S$, "1825") THEN A$ = "1825" IF INSTR(S$, "1913") THEN A$ = "1913" IF INSTR(S$, "2010") THEN A$ = "2010" IF INSTR(S$, "2012") THEN A$ = "2012" IF INSTR(S$, "2416") THEN A$ = "2416" IF INSTR(S$, "2506") THEN A$ = "2506"
IF INSTR(S$, "SOT23") THEN A$ = "SOT23" IF INSTR(S$, "SO16") THEN A$ = "SO16" IF INSTR(S$, "TRIM") THEN A$ = "TRIM"
IF INSTR(S$, "3216") THEN A$ = "3216" IF INSTR(S$, "3528") THEN A$ = "3528" IF INSTR(S$, "6032") THEN A$ = "6032" IF INSTR(S$, "7343") THEN A$ = "7343"
I'm still a noob, not up to those subtleties yet with this tool.
I found the problem: on two different pages, a power symbol labeled "VCC_3" was the problem.
I checked the "Properties" for those symbols and saw nothing wrong, but deleting them clears the shorts. Deleting and replacing them with other copies of "VCC_3" from elsewhere in the design fixed the problem. The new netlist confirms the fix.
Do "Edit", "Attributes", and you can read what got named wrong. ...Jim Thompson
--
| James E.Thompson, CTO | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |
Remember: Once you go over the hill, you pick up speed
This version of OrCAD calls it "Properties" instead of "attributes," but yes, I did that and couldn't see any difference whatsoever between the good symbols and the short-causing versions.
There weren't many attributes to even look at--I've no idea why the symbols caused the short or how, but brute-force showed that indeed they were responsible.
It might have said Label="What-ever-was-5V", or something like "Global_Power" ...Jim Thompson
--
| James E.Thompson, CTO | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |
Remember: Once you go over the hill, you pick up speed
If you highlight the object in the schematic, then select edit, etc., what do you see?
Oooooh! I forgot, you have Crapture :-( ...Jim Thompson
--
| James E.Thompson, CTO | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |
Remember: Once you go over the hill, you pick up speed
Oooops! I wasn't paying attention. What's in "blah blah blah"? ...Jim Thompson
--
| James E.Thompson, CTO | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |
Remember: Once you go over the hill, you pick up speed
If you want to hook them to different rails, simply check the "show power pins" checkbox in the part parameters. I try not to show power pins with unit logic. It's too messy. With analogs there is usually little choice. With big parts, like uCs or FPGAs, I use a separate homogenous (sub)part.
Your kidding! I demand that the schematic be correct. The schematic is the source of everything. If it's not correct bad things will happen down the line. If the layout guy has to bug me for a week, so be it.
AS you, I suspect a problem with understanding of connections via labels. ...Jim Thompson
--
| James E.Thompson, CTO | mens |
| Analog Innovations, Inc. | et |
| Analog/Mixed-Signal ASIC's and Discrete Systems | manus |
| Phoenix, Arizona 85048 Skype: Contacts Only | |
| Voice:(480)460-2350 Fax: Available upon request | Brass Rat |
| E-mail Icon at http://www.analog-innovations.com | 1962 |
Remember: Once you go over the hill, you pick up speed
Heck, I can't even tell her to ground the mounting holes without her insisting that we show every hole, grounded, on the schematic.
We always do a final netlist crosscheck, sch pcb, before we release the package.
Look, I'm her father. I'm the President. I'm the Chief Engineer. I'm even the Chairman of the Board. I'm probably other seriously important things I don't even know about. Wouldn't you think that I'd be in charge? Fat chance!
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.