<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Scrutinize my FPGA PCB Layout</title><link>/products/pcbprototyping/b/pcb-blogs/posts/scrutinize-my-fpga-pcb-layout</link><description>Since cstanton alerted everyone to the PCB Forum, I thought I&amp;rsquo;d make use of it and try to get some help.
I&amp;rsquo;ve never done a ball grid array (BGA) layout, and I wished to have an FPGA board that I&amp;rsquo;d created myself, for some ...</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: Scrutinize my FPGA PCB Layout</title><link>https://community.element14.com/products/pcbprototyping/b/pcb-blogs/posts/scrutinize-my-fpga-pcb-layout</link><pubDate>Thu, 14 Jul 2022 22:04:40 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:b6331db4-71ba-418a-bda7-172bd546837c</guid><dc:creator>jc2048</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Just remembered that my Lattice Brevia-2 dev board has an asynchronous SRAM on it. This is how they&amp;#39;ve done it, in case you&amp;#39;re interested (&amp;#39;they&amp;#39; being a 3rd-party design company - it wasn&amp;#39;t done by Lattice themselves).&lt;/p&gt;
&lt;p&gt;No termination resistors. They&amp;#39;ve placed the SRAM close to the side of the FPGA, so that the traces are short. As you can see, though, they &lt;strong&gt;&lt;em&gt;have&lt;/em&gt;&lt;/strong&gt; length-matched the traces. It&amp;#39;s an IDT device with a min cycle time of 15ns (read or write), but I&amp;#39;ve got no idea what the cycle time actually being used is. I could put the demo back on it and scope some of the signals if you wanted.&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/1280x720/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-b6331db4-71ba-418a-bda7-172bd546837c/top.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/1280x720/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-b6331db4-71ba-418a-bda7-172bd546837c/bottom.JPG" /&gt;&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=23952&amp;AppID=385&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Scrutinize my FPGA PCB Layout</title><link>https://community.element14.com/products/pcbprototyping/b/pcb-blogs/posts/scrutinize-my-fpga-pcb-layout</link><pubDate>Thu, 14 Jul 2022 10:04:58 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:b6331db4-71ba-418a-bda7-172bd546837c</guid><dc:creator>michaelkellett</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Hello Shabaz,&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve had good results using TQFP FPGAs (Lattice XP2) with both static ram and SDRAM. In neither case have I used length equalised tracks or terminating resistors.&lt;/p&gt;
&lt;p&gt;The SDRAM clock was 100MHz.&lt;/p&gt;
&lt;p&gt;In both cases I chose general purpose IO pins based exclusively on pcb routing convnenience.&lt;/p&gt;
&lt;p&gt;The pic is an example (from 2010) of a prototype pcb with a 208 pin TQFP connected to to asynchronous static ram chips.&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/1280x720/__key/commentfiles/f7d226abd59f475c9d224a79e3f0ec07-b6331db4-71ba-418a-bda7-172bd546837c/latticfpga_5F00_mem.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Design rules were 0.15mm track and gap, 0.55mm vias with 0.2mm holes.&lt;/p&gt;
&lt;p&gt;The two inner power plane layers are not shown.&lt;/p&gt;
&lt;p&gt;The Spartan 7 has more routing resource than the Lattice XP2 (which is a very old design)&lt;/p&gt;
&lt;p&gt;Of course you would absolutely not get away with this with modern DDRAM with its fast clocks and the need to use specific pins on the chip to work with Xilinx&amp;#39;s hard interface and IP.&lt;/p&gt;
&lt;p&gt;MK&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=23952&amp;AppID=385&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Scrutinize my FPGA PCB Layout</title><link>https://community.element14.com/products/pcbprototyping/b/pcb-blogs/posts/scrutinize-my-fpga-pcb-layout</link><pubDate>Wed, 13 Jul 2022 20:15:04 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:b6331db4-71ba-418a-bda7-172bd546837c</guid><dc:creator>rachaelp</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Hi Shabaz!&lt;br /&gt;&lt;br /&gt;At first glance it looks good so far! Your approach to breaking out the BGA and connecting up power/ground are good. How much of the IO do you think you&amp;#39;ll use when you&amp;#39;ve added everything you want? If it&amp;#39;s going to be a large portion of them you might need to be careful how you route out to make sure you retain enough routing channels and don&amp;#39;t end up blocking yourself, but judging by how you&amp;#39;ve started it looks like you have the logical/methodical approach in hand anyway so I expect you&amp;#39;ll be fine :)&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=23952&amp;AppID=385&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Scrutinize my FPGA PCB Layout</title><link>https://community.element14.com/products/pcbprototyping/b/pcb-blogs/posts/scrutinize-my-fpga-pcb-layout</link><pubDate>Wed, 13 Jul 2022 12:18:58 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:b6331db4-71ba-418a-bda7-172bd546837c</guid><dc:creator>wolfgangfriedrich</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Some comments and questions:&lt;/p&gt;
&lt;p&gt;- A good rule of thumb is that traces into BGA pads can use up to 25% of the circumference of the pad. With a 0.4mm pad you can use 0.3mm (12mil) width for the power and gnd traces. And 0.127mm (5mil) signal traces might help with pricing at the budget board houses as well.&lt;br /&gt;- Pad layout looks good in general, vias under the BGA shall be tented with soldermask to avoid shorting to neighboring balls. What are the 7 pads of the FPGA with white circles around them and the 4 horizontal lines? If they are silkscreen, they should be removed. &lt;br /&gt;- Any BGA IO pin that is not used should not have a fan-out trace and via. Un-needed holes in the planes on layout 2 and 3 can be avoided that way. &lt;br /&gt;- I did not check the Xilinx part for a dedicated SRAM interface, but assuming you are just using GPIOs of the FPGA for the SRAM interface you could align them much better to the SRAM pins. Having trace from the top row of the SRAM going to the bottom half of the BGA are more difficult to route, than having as many traces as possible running horizontally and then to a close IO pin. Cross-talk is not a major concern with a reference plane underneath. &lt;br /&gt;- For power supply integrity it is better to have one ground plane and one power plane going all the way between the IO banks of the FPGA and the memory chip. Every time signals cross from top to bottom, as decoupling cap should stitch power and GND together, so it is useful to group signals that cross sides together. Is the SRAM 3.3V or 1.8V?&lt;br /&gt;- At least the clock signal to the SRAM should have a series termination resistor. Ideally all signals should be terminated if EMC is a requirement. There are 4-packs of resistors in small packages. Moving the SRAM further away and lengthen the traces is a trade-off well worth for this. The resistor packs are ugly to hand-solder though. &lt;br /&gt;- Soldering the board by hand seems doable with either a reflow oven or hot plate and a decent temp profile. If you decide to have the board assembled by a company, add two local fiducials at 2 opposite sides of the FPGA, the pick&amp;amp;place with thank you :).&lt;br /&gt;- Shall we start a flame-war about odd angle traces ;)&lt;/p&gt;
&lt;p&gt;- Review of the schematic in context to the layout might add some more insights, if you are willing to share it.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- Moving the 1.0V regulator to the 10 o&amp;#39;clock position around the FPGA seems to lead to a more efficient power flow.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=23952&amp;AppID=385&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Scrutinize my FPGA PCB Layout</title><link>https://community.element14.com/products/pcbprototyping/b/pcb-blogs/posts/scrutinize-my-fpga-pcb-layout</link><pubDate>Wed, 13 Jul 2022 06:43:48 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:b6331db4-71ba-418a-bda7-172bd546837c</guid><dc:creator>neuromodulator</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;I haven&amp;#39;t tried a design around of ICs of the complexity of the ones that you want to use, but I found 2 sources that give some pretty good advice on how to design these kind of PCBs. One is a video of Rick Hartley about grounding (&lt;a rel="nofollow" target="_blank" href="https://www.youtube.com/watch?v=ySuUZEjARPY)"&gt;www.youtube.com/watch&lt;/a&gt;, were he discusses all about different stackups. One thing he shows in that video is that referencing signals to a power plane is not that good (i.e referencing to ground is much better). Of course in the end it all depends on each case, and there are going to be always tradeoffs, or time where you will have to break the best practices. One nice blog where the author explores designs that are less than ideal is a blog by Jay Carlson (&lt;a href="https://jaycarlson.net/embedded-linux/"&gt;https://jaycarlson.net/embedded-linux/&lt;/a&gt;). There he shows a couple of interesting things:&lt;br /&gt;- It is possible to solder 0.65 pitch at home with a hot-plate.&lt;br /&gt;- 4 layers is enough to get relatively complex BGAs to work (although they may not be EMC ideal)&lt;br /&gt;- Memory track-length matching is much more forgiving than what manufacturers recommend.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=23952&amp;AppID=385&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Scrutinize my FPGA PCB Layout</title><link>https://community.element14.com/products/pcbprototyping/b/pcb-blogs/posts/scrutinize-my-fpga-pcb-layout</link><pubDate>Tue, 12 Jul 2022 23:46:09 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:b6331db4-71ba-418a-bda7-172bd546837c</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>1</slash:comments><description>&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;the FPGA is connected to a RAM chip (SRAM) on the right side. This is easier than DRAM. It&amp;rsquo;s messily routed currently.&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span&gt;You may have to length-match the RAM data lines (it may limit the achievable data rate if you don&amp;#39;t), and the sets of balanced analogue inputs.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=23952&amp;AppID=385&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Scrutinize my FPGA PCB Layout</title><link>https://community.element14.com/products/pcbprototyping/b/pcb-blogs/posts/scrutinize-my-fpga-pcb-layout</link><pubDate>Tue, 12 Jul 2022 23:32:12 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:b6331db4-71ba-418a-bda7-172bd546837c</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Checking if [mention:7d5ee4caf55f4ccaa8b711eb508ecedd:e9ed411860ed4f2ba0265705b8793d05] can chime in. She&amp;#39;s been doing FPGA design and BGA fanout as a job.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=23952&amp;AppID=385&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Scrutinize my FPGA PCB Layout</title><link>https://community.element14.com/products/pcbprototyping/b/pcb-blogs/posts/scrutinize-my-fpga-pcb-layout</link><pubDate>Tue, 12 Jul 2022 23:11:14 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:b6331db4-71ba-418a-bda7-172bd546837c</guid><dc:creator>dougw</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;SparkFun&amp;nbsp;wrote an interesting article on how they laid out an 81&amp;nbsp;ball BGA (Artemis) in 4 layers, including all the &amp;quot;rules&amp;quot; they followed:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sparkfun.com/news/3122?_ga=2.220878495.625515125.1657666606-595437000.1657666606"&gt;https://www.sparkfun.com/news/3122?_ga=2.220878495.625515125.1657666606-595437000.1657666606&lt;/a&gt;&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=23952&amp;AppID=385&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Scrutinize my FPGA PCB Layout</title><link>https://community.element14.com/products/pcbprototyping/b/pcb-blogs/posts/scrutinize-my-fpga-pcb-layout</link><pubDate>Tue, 12 Jul 2022 22:04:55 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:b6331db4-71ba-418a-bda7-172bd546837c</guid><dc:creator>Andrew J</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Can I assume the FPGA / SRAM signals are going to be high frequency? Those signals are going to have a return path that follows the trace so you&amp;rsquo;ll need to be careful with the ground plane by those traces, with vias to the ground plane by the trace. &amp;nbsp;At high frequency, cross-talk between closely routed signal traces may become an issue. &amp;nbsp;I seem to recall there were some good YT videos by Altium and Robert Lefranc (?? That&amp;nbsp;doesn&amp;rsquo;t sound right but I can&amp;rsquo;t remember his surname but he will come up if you search for PCB layout.) &amp;nbsp;having a ground plane on both inside layers helps because it minimises the distance between a trace and its return path (the pre-preg between layers 2 and 3 is relatively thick) &amp;nbsp;Obviously there&amp;rsquo;s going to have to be some compromise given the power planes for the FPGA: if you could minimise their size and use traces on the top/bottom layer to reach them it might help. I&amp;rsquo;d say layout of those two components, with decoupling caps, are the most important on the board but I&amp;rsquo;m guessing you&amp;nbsp;already know that.&lt;/p&gt;
&lt;p&gt;I have no soldering advice for the BGA unfortunately. &amp;nbsp;I guess a reflow oven would help. &amp;nbsp;Alternatively, if your not fussed about practicing your soldering technique on that part, you might be able to get the board fabricator to do it if you can get the part to them. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t forget that the FPGA (and possibly SRAM??) is likely to need a heatsink. &amp;nbsp;I&amp;rsquo;d guess that will go on top so do the calcs and leave enough clearance and maybe even mechanical support.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=23952&amp;AppID=385&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Scrutinize my FPGA PCB Layout</title><link>https://community.element14.com/products/pcbprototyping/b/pcb-blogs/posts/scrutinize-my-fpga-pcb-layout</link><pubDate>Tue, 12 Jul 2022 18:47:29 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:b6331db4-71ba-418a-bda7-172bd546837c</guid><dc:creator>genebren</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;This looks very good so far.&amp;nbsp; That is a very ambitious project that you are taking on there.&amp;nbsp; The geometries are far beyond anything that I have attempted, not to mention the soldering job that you are looking at once you get the board.&amp;nbsp; Good luck!&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=23952&amp;AppID=385&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: Scrutinize my FPGA PCB Layout</title><link>https://community.element14.com/products/pcbprototyping/b/pcb-blogs/posts/scrutinize-my-fpga-pcb-layout</link><pubDate>Tue, 12 Jul 2022 17:34:25 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:b6331db4-71ba-418a-bda7-172bd546837c</guid><dc:creator>cstanton</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;Is it a typical convention to use certain layers for particular functions? Such as layer 2 is the ground plane, 3 for power, etc.?&amp;nbsp;&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=23952&amp;AppID=385&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item></channel></rss>