I am kind of finishing up hardware design based on AMD Zynq 7010 SoC which has different peripherals. This is the most complex design that I have done in my past and I wanted to get some sort of feedback if there is any. Below schematic shows EMMC memory, Clock source, and SD card. I also I2C signals that goes to level shifter then multiplexer. Is there anything that looks wrong or parts that I need to pay more attention? Any feedback would be appreciated. I did referecne to a multiple simliar design but I wanted to avoid mistakes as little as possible. I am still in college and trying to learn hardware design from scratch to the board bring-up. Thank you!
-
\$\begingroup\$ Have you compared to the numerous demo boards? And economically speaking, are you sure you need to make a board? MyIR has a great module with all you may need \$\endgroup\$TQQQ– TQQQ2025-03-15 03:49:29 +00:00Commented Mar 15 at 3:49
-
1\$\begingroup\$ @TQQQ Purpose is to learn about how to select parts and design custom high speed interface boards which is not shown in this part of schematic yet (HDMI, MIPI, Ethernet, sensors) Yes I can just buy off the shelf boards and I've used them before via VHDL or Verilog. I wanted to gain more experiences in schematic and board design instead of application engineer sort of career. The board will contain high speed peripherals but also will be used as SoM to test some sensors through I/O expansion connectors. \$\endgroup\$James– James2025-03-15 03:55:14 +00:00Commented Mar 15 at 3:55
-
2\$\begingroup\$ @TQQQ Again, the purpose is not just learn how to design FPGA digital logic design but hardware schematic/PCB design. I wanted to prepare getting into that high speed mixed signal board designer area, not just PCB design but schematic and perform testing and validation. This isn't economical at all :) I am aware of the design cost but I wanted to avoid mistakes as little as possible so I don't have to re-spin the board :) I'm graduate student and still in school so my finance isn't that good haha, but ill spend for my learning \$\endgroup\$James– James2025-03-15 03:57:57 +00:00Commented Mar 15 at 3:57
-
\$\begingroup\$ Feedback: use schematic wires to connect nodes (and not arbitrary and non-followable labels). Segregating the circuit into various blocks generally does not help someone who might be good at analysing circuits (as per please check my circuit / schematic review). \$\endgroup\$Andy aka– Andy aka2025-03-15 10:06:15 +00:00Commented Mar 15 at 10:06
1 Answer
My answer is about your diagram, not your circuit.
Item 0. The single best thing you can do to get better at this is what you have already done: ask for criticism. This is excellent.
In general, people start by thinking the CAD tool is for telling the PCB what is desired. In fact, it's for communicating with other engineers -- very often your future self -- about what was wanted, what things were for, the intentions.
As such, use everything can you do to make your intention clear. We have special skills at noticing visual patterns, and you can use this to make your diagrams much much clearer.
Please consider the following as well-intentioned general advice.
- The first weakness I see in designers and programmers joining professional groups is they don't use version control either at all, or in a way which works with others. I want to be able to answer, at a glance Exactly what version of what project am I looking at? Yes, even for private projects, yes even for works in progress. Consider something as simple using Status: preliminary and a file timestamp. Once you've filled out the project name on the title block. For real project work, most places I know use GIT, but most places I know have more software engineers than anything else. Your future managers will not let you edit anything at all until they trust you can use the versioning system.
All we see here is an advert for some software.

Give yourself more space. Don't cramp everything up. Consider using a large sheet and then arranging things nicely at a later point. For concrete values, I like to design at A2 which I tidy to A3 once I know where everything goes. And I print reduced at A4 landscape. Consider more than one sheet if that makes things clearer.
If you use labelled signals, you have to look over the whole diagram to find where they go. Use ordinary lines where they make most sense, and use bus connectors to show it's a bus. Consider using "off-sheet" connectors whenever a signal goes out of a boxed area (should each box be its own sheet?). Labelled blocks are good, but use them judiciously. Off-sheet connectors show up well in most CAD systems and indicate "this signal goes far". Usually the signals that leave a section are the inputs and outputs, the purpose, of the section. (Consider this: in FORTRAN and BASIC, we just load up some globals and call some subroutine, and we hope our interim results in
TMPdon't clash with anything. No programming language since then is designed like that: we always declare inputs and outputs, we always use local variables. Using signal labels as the primary means of connecting signals is just using global variables for everything, and it's as bad in circuit design as in programming.)Always have higher voltages up, not down. You can solve the ugly tie-to-ground and tie-to-positive overlaps by using off-sheet named signals
GNDand+3V3(but still keep symbols for real power supply). If you have a device with multiple power, use the layout to show the multiple voltages.
If you put all the decoupling caps out of the way (in the corner of a box or sheet) it's usually a great decluttering as it moves all the trivial to understand caps out of the way. I like to number the decoupling caps after their chips:
U1getsC101,C102etc. Number "important functional caps" in main sequence fromC1. It also gives the benefit of listing the power needed for a given section.Don't hide the point of signals. Just because you can connect with a label, don't make the reader hunt for it. For example
GPI_XandCSI_Xin your level shifter: these are the purpose of this block. OrUART_X.Always fold signals the same way (/) -- it's very rarely impossible.
Here's a portion of your circuit redrawn with a few of these principles shown.



