When making any prototype PCB it is always a great idea to have features within it that can be used to aid in debug of the design.
A few examples are:
Use the largest FPGA available that has migration path to the one we expect to use in the final product. This means we can have a lot of logic to implement debug modes and internal logic analyzer like signal-tap. This does mean that our power dissipation measurements won't be accurate since a larger FPGA will have higher static power dissipation.
Embed features into the board that makes it possible to connect certain signal paths to a scope. These could be analogue signals or digital signals. I am not talking about the signals that directly connect to the FPGA. There are different ways to do this, and I am not sure about the best way to do this.
Have 8 or 16 pins exposed via header, that connect to the extra general purpose I/O on the FPGA. These can be used to output internal FPGA signals to the pins which can then be connected to a scope or logic analyzer. The question that arises here is, what type of connector to use since high speed signals require signal integrity to be kept in mind. Certainly we must choose a connector that a scope or logic analyzer can easily connect to.
Have 1ohm resistors on the power supply rails that can be used to accurately measure the power dissipation on all the supply rails, especially the ones connected to the FPGA.
Put in an FTDI chip that can be used to implement USB-UART.
Have an easy method for the prototype to be connected to another FPGA or microcontroller board in case the need arises. One way to do this is to have Arduino shield connectors on the board but then we must be sure that what we intend to connect is compatible before we make the PCB.
I am sure that people that have made many prototype PCBs and then gone to production can give their opinion on this list and suggest some improvements. It is true that the features also depend on what the board actually has been designed to do, so the same techniques can be applicable to every project. So now my questions are:
- Is there any improvement over what I have recommended above?
- Are there some features further to what I have mentioned that should be utilized?
- Having lots of capability to aid in debug is a great idea but, it creates an issue when we come to production level tests. The path to go from the prototype board to the production level PCB for alpha testing e.t.c must be simple.
I would be grateful if someone can put in their two cents. This question is VERY specific and not broad or off topic. I think I have covered most things already.