Close

Never trust your Eagle

A project log for World's first 32bit Homebrew CPU

Creating the world's first 32bit homebrew CPU using 74' series logic.

phil-wrightPhil Wright 02/20/2017 at 08:516 Comments

I recently took delivery of some more PCB's from PCBWAY. Given I have never managed to get a design to work the first time around I was not optimistic. Sure enough, I had made a mistake that messed up the board.

Using Eagle the 74688 IC has an P = Q output pin at the top right.

The 74688 is used to compare two 8 bit values. So naturally I assumed the P = Q output was HIGH when the two values are equal. When debugging the board I noticed it was the opposite value of what I was expecting. So time to check the actual datasheet.

What the! The schematic is inverted to the datasheet and so no wonder it doesn't work. So, it seems in future I need to double check the schematic against the actual datasheet for all IC's.

Discussions

K.C. Lee wrote 02/22/2017 at 10:52 point

I got burnt by silly thing like USB connector that had wrong pin ordering when datasheet has pin numbering.  That was on a rev 2 of the library I downloaded somewhere else. 

I saw (not used) parts with badly translated metric/imperial scaling with rounding errors and wrong sized hole because of misaligned imperial grid.  Eagle can handle mixed dimensions/grids, so there is no excuse for that.  

Aside from having to bend pins to fit , those pegs are for offloading the insertion/extraction forces, so use the right size and proper units/grids.

I also prefer to explicitly define the power pins of my parts instead of relying on hidden net connection to some common power rails.  This can mess things up if you are using a different rail. e.g. power management, mixed voltages or want to pair decoupling caps for part with multiple power pins.

Sometimes you also want to match a part to the manufacturing capability. e.g. plated slots vs round hole, homebrew PCB vs commercial, size and placement of silkscreen - my Chinese PCB vendor has very sloppy alignment so I have to allow for extra spacing to avoid getting silkscreen on SMT pads.

I have also use some libraries that are good, but they are more an exception than the rule. 

  Are you sure? yes | no

Elliot Williams wrote 02/22/2017 at 09:37 point

Welcome to the club!  This is kind of a rite of passage -- first coaster!  Congrats.

Seriously, I'm almost with @Ted Yapo on this one.  Making your own footprints is a good exercise in that it forces you to double-check with the datasheet at a very fine level of detail, which can help pick up logic errors. But it's also time-consuming.   

I have a sub-directory of parts that I've tested -- like they've actually been built into a board that works -- but I didn't do them all myself.  When I pull a part/footprint from outside of that pool, I give it a double checking.  

  Are you sure? yes | no

Ted Yapo wrote 02/20/2017 at 18:30 point

I have been burned by supplied library components too many times.  These days, I make all of my own - it pays for itself easily.  The added bonus is that you can then release the libraries (and your design) under whatever license you want - I was never really clear on the licensing of the supplied Eagle libraries.

But, I think in this case the Eagle schematic is technically correct - the inversion bubble makes the output at C1 equal to /(P=Q).  Even so, I'm not a huge fan of some of the "bubble pusher" designers out there and what seems to make sense to them.  I probably would have drawn the schematic without the bubble and with the inversion bar on P = Q, but as drawn it looks logically consistent with the datasheet.

  Are you sure? yes | no

Phil Wright wrote 02/20/2017 at 21:40 point

Ah, I didn't notice the bubble. I will need to take closer notice in future.

  Are you sure? yes | no

Ted Yapo wrote 02/21/2017 at 00:01 point

  Are you sure? yes | no

Eric Hertz wrote 02/21/2017 at 07:49 point

Right... but can't trust them bubbles, anyhow. Easy example: the pin might've been labelled P=Q with a bar over it, and *still* show a bubble, in which case, is its output !(P!=Q) == P=Q? There are definitely cases where it's even more confusing, and I (and it sounds like Ted) have run into many cases where the documenters clearly didn't understand the purpose of the bubble.

  Are you sure? yes | no