DDR3 using cheap PCB Fabs? - Page 1
Forum section: electronics / projects

author: PhillyGreg
author_rank: Contributor
timestamp: November 02, 2017, 02:45:03 pm
content: Hi Everyone,I'm working on planning out a board for a camera project I've been working on for awhile now.Eventually will be targeting a Kintex device. But for a first go at something like this I'm going to go with an Artix in a 484 pin BGA.Figuring I'll probably screw something up the first time around.I've done some higher speed designs in the past. Mostly image sensors and DSP + ADC, 200MHZ range.But this is the first time I'm working with DDR3, and the first time I'm looking at using BGAs that are $100+ a pop.(Though the 15T is $40 and pin compatible, so might be a cheap way to validate the DDR3)The current plan is an Artix 7, DDR3 SODIMM, the MGT's will go to cable drivers for 3G SDI, and 32 LVDS pairs for the image sensor.What I've been running into is all of the inexpensive fabs(<$500USD for a couple boards) all use rather thick prepreg compared to any of the tech notes I've been reading.Originally was looking at a pair of x16 chips for the RAM, but given the 12 -15 mil traces needed to get to 50 ohm traces...not going to work well there.It seems somewhat possible to get 4 byte lanes, length matched to 5mil with 12mil traces routed to a SODIMM on a 4 layer board. I'm not opposed to a 6 layer, but it seems the inner layer spacing isn't really any better.I was curious if anyone here has produced a working FPGA + DDR3 board with any of the low cost, thick stackups?Any advise, recommendations? Or am I just being super paranoid on this given the Artix maxes out at 1066MT?ThanksGreg

author: asmi
author_rank: Super Contributor
timestamp: November 02, 2017, 03:20:23 pm
content: I've recently found a fab which quoted me $237 for 10 6-layer boards 10x10 cm with 0.1/0.1 mm traces, 0.2 mm drills, and impedance control on all signal layers. I've chosen the stackup myself (using prepregs and cores that are commonly used in the industry), and they were able to make it almost exactly what I asked for - they even ran field solver to verify that traces I calculated do indeed have correct width for the kind of stackup that is to be used). BTW that board is for Artix-7/DDR3 as wellThe boards are being manufactured right now, I'm supposed to receive them some time next week (placed an order last Friday, with lead time of 7 days). I intend to write up a review of the boards once I receive them and have some time to inspect them under my microscope, as there seem to be great interest in finding inexpensive manufacturer who have the process that is good enough for 0.8 mm BGA (and up). They also offered 4-layer boards with the same as above process for only $142 - and their quotes include DHL shipping! I consider it to be a bargain as just about everywhere else I was getting into $200+ territory as soon as I mention things like "0.1 mm traces" or "controlled impedance".I would be more than glad to recommend it to you (and everyone), but I take my integrity seriously and never recommend products or services that I didn't use personally, so I'd wait until I see the results of that order to see if it's any good. Their sales rep didn't seem to understand half of questions I've asked him, but their supporting engineers were very good and thorough.Also - if you want to achieve 1066 MT/s with Artix, you will need to use their fastest (-3) speed grade, which is expensive. They support 667 MT/s with -1 grade (as well as -1LE), 800 MT/s with -2, and 1066 with -3.

author: ali_asadzadeh
author_rank: Super Contributor
timestamp: November 02, 2017, 03:36:07 pm
content: There is a 4 layer design based on spartan 6 and DDR3 on opencores.org, it has PCIe and sata too, the guy used a clever way of routing to achieve low cost, so it's doable

author: asmi
author_rank: Super Contributor
timestamp: November 02, 2017, 03:40:16 pm
content: Quote from: ali_asadzadeh on November 02, 2017, 03:36:07 pmCan you please provide the link? I'd love to see how he has done it. The problem with DDR is not routing per se - it's the breakout of DDR3 chip which is 0.8 mm pitch BGA.

author: PhillyGreg
author_rank: Contributor
timestamp: November 02, 2017, 04:12:11 pm
content: Quote from: asmi on November 02, 2017, 03:20:23 pmThat sounds like a great deal. I was seeing prices around that for 6 layer with much larger traces and vias.Would be very interested to hear how your test turns out. I'll keep an eye out.I'm taking my time planning this one so I'm not expecting to try and fab anything till well after Christmas time.Thanks for the reminder there, I knew there was a reason 1066MT sounded fast. (I've been reading way too many data sheets lately.) 800MT is perfectly fine for me, I need the -2 to meet timing anyway.Glad to know someone else is working with similar parts, everyone I know thinks I'm nuts trying to design this stuff without a large prototype budget and HyperLynx.Quote from: ali_asadzadeh on November 02, 2017, 03:36:07 pmThis is one I've looked at, seems like it matches up.https://opencores.org/project,spartan6_pcieSource files are Altium.I've looked at it a bit. Other than length matching it seems to ignore most of the "rules" of DDR3 layout.Looks like .3mm drils and .1mm annular ring (.5mm total diameter), .15mm traces.He doesn't mention stackup, on the page. (In Altium, it shows .320mm cores and prepreg)Other point I noted was the layer arrangement.Top layer is a ground flood, L2 ground plane with a cut for the DDR3 data and some address, L2 ground plane cut for DQS and Clock, Address/CTL, Bottom DDR3 1.5V planeI don't really have the experience to judge if this is a good practice or not.According to the page it works, but generally violates most of the "rules" I read, so without having good SI tools at hand I was a little hesitant to try something along these lines.

author: asmi
author_rank: Super Contributor
timestamp: November 02, 2017, 05:30:33 pm
content: Quote from: PhillyGreg on November 02, 2017, 04:12:11 pmUnfortunately I don't have any instrumentation to verify if the fab got CI traces right (and I'm not willing to sell my car for one of those), so I plan to verify it in old-school way - assemble it and see if it works. There is also USB3.0 diff traces on board (which are 5Gbps each) so if those will work, I will assume that the fab has done great job. I plan to use XC7A35T-2FTG256I and x16 DDR3L chip for the first board to minimise damage in case I screwed something up - this is the first revision, and I don't have a very good history of getting my boards to work on a first tryQuote from: PhillyGreg on November 02, 2017, 04:12:11 pmI wanted to do something akin to what I'm doing right now for quite a while, but I didn't fancy spending $400+ on a 6-board, so I've invested quote a lot of time into looking for affordable fab that would be able to make boards to the specs I wanted. Now spending $240 doesn't sound great either, but at least it's something I can actually afford to spend every so often - especially since BOM cost for just a single board isn't that far off the price of PCBs. And since I design boards myself, I can't possibly design more than one 6-layer board per month anyway - so this pricing is more-or-less OK with me.The thing is - if this fab will hold true to it's promise, it will open a lot of possibilities - like making boards for Zynq, just about any MPU in existence (they all are in 0.8 mm pitch BGA or even finer), and a whole lot of other 0.8 mm ICs. This is why I decided it's worth to take a risk and placed an order even though some initial exchanges left me a bit uneasy.BTW - this is the stackup I ended up using:As you can see it's pretty good for HS traces. All coppers are 35 um (1 Oz).And just for reference - this is the stackup I've requested:It's almost spot-on (to ~0.01mm tolerance). I used information fromhereto design stackup such that it could be manufactured.Quote from: PhillyGreg on November 02, 2017, 04:12:11 pmYea it looks a bit fishy. I've recently purchased Orcad PCB Editor Pro (they were kind enough to offer me a massive discount since I use it for hobby projects only), which does include SI tools like IBIS/HSPICE sim, and thanks to them I feel a little better about that first board I'm waiting for now.

author: darrell
author_rank: Regular Contributor
timestamp: November 02, 2017, 06:23:06 pm
content: Quote from: asmi on November 02, 2017, 03:20:23 pmI'd be curious to know the name of the manufacturer if it works out. I've used Eurocircuits (about $400 for 8L 0./1mm track/space) in the past for a Zynq DDR3 design which was successful. Their stack wasn't ideal, so I couldn't hit the desired impedance. It worked and had good signal integrity since the traces were short. The local fab charges about $1600 for a minimum order of 8 layer with a custom stack which I've done a time or two.

author: PhillyGreg
author_rank: Contributor
timestamp: November 07, 2017, 03:08:02 pm
content: Quote from: asmi on November 02, 2017, 05:30:33 pmI had a bit of tunnel vision reading the specs you posted, and completely missed the .1mm trace spec.The Zynq devices that one of the forum members has had for sale, have been mighty tempting.Also makes for really nice routing on the 1mm devices.Looks like three rows out on the first layer. Depending on the drill to copper, possibly on the inner layers.Suddenly I'm not wasting half the pins on the 484 pin devices.The first stackup looks great, I'd be more than happy there. (Length matching 12 - 13mil traces is not fun)The second even better. I've had a couple $1000 quotes that didn't come up with anything that nice.On another note, how are the length matching tools in Orcad?Altium won't use delays for the bond lengths, I've ended up using a spreadsheet to figure out target trace lengths.(I was surprised by the variation within the designated lane groups on the Artix. Given how picky Xilinx is I figured they would be grouped a little better)Quote from: darrell on November 02, 2017, 06:23:06 pmHmm, interesting.Your local fabs pricing is better than some of the quotes I've gotten. Just well out of the budget for a personal hobby project. UnfortunatelyI beginning to get the impression that the DDR3 interface is pretty robust these days.And with short traces and good routing, that getting reasonably close to 50 ohms is good enough for a prototype/dev system.

author: asmi
author_rank: Super Contributor
timestamp: November 07, 2017, 03:35:57 pm
content: Quote from: PhillyGreg on November 07, 2017, 03:08:02 pmYea, I'm also really tempted to buy few of those.Quote from: PhillyGreg on November 07, 2017, 03:08:02 pmI used 0.2/0.45 mm vias, and consequently was able to route 2 traces between vias. This made full breakout of BGA256 a breeze with no difficulties whatsoever - unlike my previous 4-layer design, which I had to almost completely re-lay several times because I routed myself into the corner.Quote from: PhillyGreg on November 07, 2017, 03:08:02 pmMy boards are already on their way! Hoping to get them tomorrow or a day after that. As soon as I have a chance to inspect them, I will post an update. Probably won't get around to assembling them for another week or two though as I will have other things to do during weekends.Quote from: PhillyGreg on November 07, 2017, 03:08:02 pmIn Orcad/Allegro it really depends on the license level. I have Professional level license, and it doesn't include z-height if vias into length, but constraint manager allows to specify additional offsets to tolerance on a per-trace level within match groups, so I just manually set those limits according to which layers traces go to. On higher-level licenses (Allegro baselinse, High-speed option) this is accounted for automatically.I also absolutely love their diff traces handling, where they not only match total trace length, but also can check to ensure that signals arrive to vias in phase - essentially it brakes down the entire traces into sub-traces based on pins and vias, and enforces correct static phase at each endpoint.I actually kind of like Cadence's approach to setting license limits in such a way that most of higher-level features can be "emulated" on lower-level licenses, even if this will be somewhat labor-intensive - but at least it's possible at all.I've purchased Pro level license for the sole purpose of trace length matching (initially I was looking at their standard level license, but it wasn't of much use to me without match groups). It is VERY good and can be as precise as you want it to be. They also support tree-style routing via user-defined route schedules and T-points where trace branches off. No Excel is needed. Watch some YT videos of that in action (can't like those as I'm at work now and YT is banned here) - it's very impressive!Quote from: PhillyGreg on November 07, 2017, 03:08:02 pmFrom what I read up on the subject of DDR3, exact impedance match is not as big of a deal as people seem to think - infact the best impedance for it is 40 Ohm, but such traces are unpractical in many stackups and at speeds of 1066 MT and slower 50 Ohm is perfectly OK. If you read Xilinx recommendations for DDR3 routing, you will see that they require 40 Ohm traces for 1333 MT and higher speeds (this is obviously for their Kintex/Virtex devices).Here is the screenshot straight from MIG user guide (UG586):

author: asmi
author_rank: Super Contributor
timestamp: November 07, 2017, 09:08:47 pm
content: Also on a subject of DDR3 layout. After reading up on a subject, I've got impression that DQ/DQS lines are the most important to get right, as they can switch up to twice per clock cycle.However after running IBIS sims even with grossly out-of-spec traces, I realised that ODT will take care even of most extreme cases for writes, and similarly FPGA side's IN_TERM is pretty good at ensuring good SI for reads.What you really need to watch out for is address/control signals groups, as they don't have ODT, so if you opt to not implement any sort of external termination (this approach is common for FPGA designs with just a single memory IC that is physically close to FPGA), you really need to run IBIS sim for these traces to make sure overshoot is in check. So help you with that, you may need to use _R "reduced strength" drivers on FPGA side. Also for the clock you've got to make sure the eye is open enough. I botched up that part, and only realised the problem after I sent the board for manufacturing, so I will have to solder 0402 termination resistor directly to vias of DDR3 IC (IBIS sim shows the best results when it's just past receiver, so bottom side of the board straight under DDR3 chip seems like the best place, and because those vias happened to be diagonal, I've got 1.3 mm of distance between centers, so 0402 part can easily fit in there).

author: asmi
author_rank: Super Contributor
timestamp: November 09, 2017, 08:40:42 pm
content: Small update - DHL managed to lose my package somewhere between their depot and dropoff location, looks like I'm not getting it until at least early next week

author: asmi
author_rank: Super Contributor
timestamp: November 11, 2017, 05:08:32 am
content: Another update - DHL managed to find my shipment and delivered it today. I've posted my impressions here:https://www.eevblog.com/forum/manufacture/ourpcb-affordable-multi-layer-board-manufacturer-my-experience/

author: diyaudio
author_rank: Frequent Contributor
timestamp: November 11, 2017, 10:26:03 am
content: Quote from: asmi on November 02, 2017, 03:40:16 pmThis is very true, I watched a presentation by ti proving this can be done with a 4 layer board.see this link.

author: krho
author_rank: Regular Contributor
timestamp: November 12, 2017, 09:11:13 am
content: Moronic is that they have a patent on that, but the only thing they did is took out some balls so there is a place for vias and more traces.

author: PhillyGreg
author_rank: Contributor
timestamp: November 13, 2017, 09:57:05 pm
content: Thanks for all of the input everyone.Got sidetracked working on the power supply board that will go with this one. Wanted to get it done before the free shipping deal was over.Quote from: cleaningOut on November 07, 2017, 03:23:13 pmThats awesome to know, I've been reading a lot of 8 layer recommendations, and haven't had the time to really look at the pinout yet.Quote from: asmi on November 07, 2017, 09:08:47 pmGood to know on the clock, worth adding a couple spots for resistors to be safe.I've read so many datasheets and tech notes, I'd forgotten the 50Ohm was for the low speeds. Thanks for the reminder.Sounds like ORCAD is a pretty sweet package, I've been eying the deal that I've seen advertised...but not the best time of year to be buying more software.I did spend some time with Altium this weekend, I know everyone pretty universally feels that it's SI tools are useless.I agree UI wise they absolutely suck. And it can't use ebd models for the SODIMM.I figure if they have it in the software, it can't be absolutely wrong. Not as refined, accurate, or misleading I can believe.(Now if it can't properly model a square wave, a transmission line, and a termination...I'm very concerned about the rest of the program as a whole.)I threw together a quick schematic with 4 x8 DDR3 chips with both spec and out of spec traces and what I saw matches your description.Out of spec traces do have an effect, and at over 1066 it is rather dramatic on the Addr/Control lines, but not nearly as bad as I was expecting to see.The reduced strength is a great tip, that may do the trick.Given this, I may just finish off the SODIMM layout I've mostly finished. ALLPCB's calculator is showing like $60 and free shipping.Since I've never done an Artix layout, I'm thinking keep it super cheap with the smallest Artix.Spend the holidays thrashing it and get it right the first go with ourPCB.

author: asmi
author_rank: Super Contributor
timestamp: November 13, 2017, 10:49:32 pm
content: Quote from: PhillyGreg on November 13, 2017, 09:57:05 pmBe very careful with that as high-speed traces really don't like having stubs. If you will end up having such spots take great care to ensure stubs are as short as humanly possible. Otherwise they might screw you over and make matter worse just by themselves.Quote from: PhillyGreg on November 13, 2017, 09:57:05 pmAt this point I can be sure that at least Orcad's field solver is very good. As OurPCB did ran some more advanced (and expensive I'm sure) field solver to figure out my trace's impedance during pre-production prep and it's results were pretty much spot-on with Orcad's, so they didn't have to adjust anything and just released files to production.Quote from: PhillyGreg on November 13, 2017, 09:57:05 pmIf it's going to be your first Artix design, download XMP277 document from Xilinx website. It is pure GOLD, it will ask you for some basic application parameters, and will generate a schematic checklist to ensure you got configuration right! I was able to get my FPGA to be recognized by the Vivado IDE (through Digilent's cable), boot it up, burn the SPI flash and boot from it, as well as working in-circuit debug on a first try! Just follow it to the letter, and mark off items as you go through verification. It will walk you though pin connections, getting right signals to right pins to get config right, etc. Very useful tool!

author: PhillyGreg
author_rank: Contributor
timestamp: November 15, 2017, 07:41:12 pm
content: Quote from: asmi on November 13, 2017, 10:49:32 pmThat's an awesome find. Covers most of the things I was tearing my hair out going through manuals to make sure I covered everything.The first Spartan 6 board I did was a mess, it was my first go at an FPGA and I think everything I could do wrong I did.One part I miss with QFP parts, easy to cut traces and wire to pins forgottenAlso realized I nearly forgot the XADC for the DDR3 temp sensor.

author: asmi
author_rank: Super Contributor
timestamp: November 15, 2017, 11:26:54 pm
content: Quote from: PhillyGreg on November 15, 2017, 07:41:12 pmWhen I was designing my first Artix board, in addition to the checklist, I used schematics of Digilent's Arty board as a reference and also to get an idea of what kind of components to use (for example idea to use REF3012 as XADC's voltage reference came straight from Arty's schematics). Same can be said of using two beads to "clean up" +1V8 power rail so that it can be used to power XADC. There is no need to reinvent the wheel.

author: asmi
author_rank: Super Contributor
timestamp: November 15, 2017, 11:41:19 pm
content: Quote from: cleaningOut on November 15, 2017, 11:14:54 pmI think it was already discussed recently. There are three issues with Oshpark - 1) unless you break their DRC and specify slightly smaller annular ring than they require, you can't breakout 0.8 mm BGAs (though somebody did this with 17 mils instead of required 18 mils and got away with it, but YMMV), 2) on typical FPGA board just PMIC takes up at least few square inches, as result, the board tends to be rather large and as such expensive, and finally 3) they don't offer controlled impedance option (due to shared panel I imagine). Also for some reason delivery to Canada via USPS takes forever - at least it took almost full month for my order to arrive. And by the time you order 9 of them (in most Chinese shops ordering anything less than 10 doesn't make sense as it costs same money) they don't appear as cheap anymore. To give you some context, when I asked OurPCB about 4 layer boards with 0.1/0.1 mm (3.9 mil) traces and 0.2 mm drills with controlled impedance and ENIG finish, they quoted me something like $170 + some change with DHL delivery included for 10 boards 10x10 cm - and you get to choose whatever stackup you want! No other PCB fab I know of can get even close to those specs and price.

author: texaspyro
author_rank: Super Contributor
timestamp: November 16, 2017, 12:30:37 am
content: OSHPARK is only price competitive for very small boards. For 4x6" boards you get 3 four layer boards for $240 in 2-3 weeks. I do use them quite a bit for smaller boards, but it does not take much before the cost gets out of control.From gojgo.com in China you get 50 boards for $220 (or 5 boards for $95). I get boards from them in 8 days with DHL shipping. There are less expensive places in China than gojgo, but they do really good work and their contact guy is very fluent in English. Plus, you can send them Eagle/Kicad files and let them muck about making and naming Gerbers. I have not checked what their minimum design rules are... it's very rare that I go below 10/10 mil.If the design fits in a 50x50 or 100x100 mm board, they are $40/$60 for 5, shipped.One disadvantage of using Chinese board houses for prototypes... you should see my pile 'o "coasters" when the design did not work out and I ordered a 50 board prototype run.

author: asmi
author_rank: Super Contributor
timestamp: November 16, 2017, 03:26:10 am
content: Quote from: cleaningOut on November 16, 2017, 01:39:14 amActually I'm now exactly in this position where I got some 6-layer boards which are non-functional due to mistakes in layout. Of 10 boards that I've got, I've trashed one for testing really old LF solder paste that I happen to have to see if it's still usable (the answer is - it's not, got to throw it away and buy a fresh one). Another board was partially assembled with power supply-related parts only (this part of the board is not affected by layout mistakes) to confirm that all calculations I made for voltage- and current-setting resistors are correct and will not burn down expensive parts when I will fully assemble the board. So these boards were definitely not wasted, as I extracted useful information out of them. I will likely use a couple more boards to tune reflow profile to new LF paste, as well as I plan to practice placing tiny 0201 parts as I never actually used such small parts before (I'm fully comfortable with 0402 and bigger - placed 100's of them with no problems). So I wouldn't call them a complete waste even if the use will obviously be not what it was intended.Now, the notion of "prototype" is very theoretical when it comes to high-speed multilayer boards because getting design to actually work when boards are made by specific manufacturer is very important part of "prototyping". Each manufacturer tends to use different materials/stackups, and these things have huge effect on the way you design the board. So switching manufacturer mid-project might very well be akin to near-complete redesign, as all high-speed traces will need to have different widths/spacings to accommodate new materials and stackup.Quote from: cleaningOut on November 16, 2017, 01:39:14 amI suspect PYNQ board has quite a bit more layers than 4. Have you actually tried to design PMIC design that would fit on 1 sq inch? And no, you can't "run everything except the core at 3.3V". At the very least you will need another DC-DC converter for 1.8 V rail to power things like PLL, which actually are quite power-hungry and can easily consume half amp of power or even more each. For example, right now I'm looking at quite simple design consisting of MB soft-core with DDR3 controller, and power estimation tool tells me that AUX rail will consume almost 0.3 A of power. You can perhaps get away with linear regulator in marginal cases (if you don't care about power efficiency), but most real-world designs I've seen use switchers for that rail.Not to mention that foregoing external memory also severely limits usability of FPGAs. There is a reason that almost any board out there has at least some kind of external memory.Quote from: cleaningOut on November 16, 2017, 01:39:14 amPCBWay will make 10 10x10 cm 4 layer boards with ENIG for $75 + shipping (granted it will be only 0.15/0.15/0.3 process). I actually have working Artix 4 layer board with ENIG that was manufactured by them (and assembled by me). It has two 64M HyperRAM memory chips as it's impossible to place DDR3 with such process.And there was #3, which is also quite importantIf you don't order this option and instead rely on manufacturer to always manufacture same stackup, with higher speed you run a risk of your design exhibiting intermittent failures if it was marginal to begin with. You might get away with it for relatively robust buses like DDR2/DDR3, but things like LVDS, and especially 1Gbps+ lines (for example USB3 tx/rx lines, SATA, PCIE, etc.) are almost guaranteed to screw you over if you won't get your trace impedance/diff impedance right.

author: asmi
author_rank: Super Contributor
timestamp: November 16, 2017, 11:34:32 am
content: Quote from: cleaningOut on November 16, 2017, 05:25:09 amThis is the chip I use as main PMIC as well. I did my best trying to lay it out as compact as possible, but still it took 26x33 mm, or approximate 1.3 sq inch. If you add an area that is taken by PMIC reset button as well as power jack - it's already over 2 sq inch. If you want to power the board from wall wart, you will probably need another DC-DC converter to provide +5V rail so that you can power the board either from USB or from dedicated power supply. On my current board I also needed a boost converter to power LCD backlight. In total everything power-related occupies an area of about 3 sq inch. As you can see it's fairly tightly packed, and most of passive components are as small as they could possibly be.

author: asmi
author_rank: Super Contributor
timestamp: November 17, 2017, 07:14:10 am
content: Quote from: cleaningOut on November 17, 2017, 06:26:40 amYes I saw that. But that is beside the point as he ultimately just got lucky. He built a very marginal design with no length matching of DDR2 traces, out-of-spec traces, no termination resistors. This is not a way to design a robust circuit with good margins. And he didn't need most of IO pins broken out - which is what ultimately made it possible. No good for most FPGAs designs.Basically until I see a devboard with Artix, DDR3-800 x16 and some assorted peripherals made by OSHPark and actually working, I'm very skeptical about all that. Designs with FPGAs are complicated enough as they are, no need to further complicate them by limiting yourself only to what OSHPark can do. It might be an interesting challenge to someone, but not my fortefor sure. I like to build robust, reliable designs that just work without any unnecessary drama.

author: PhillyGreg
author_rank: Contributor
timestamp: November 20, 2017, 05:34:53 am
content: Quote from: cleaningOut on November 17, 2017, 06:26:40 amFor that size board OSHPark can be a good deal.I've seen the blog on pushing the design rules, I've done it with them a couple times on small 2 layer boards.But when it gets to be $150 for three, I prefer to stick to the rules.Quote from: asmi on November 17, 2017, 07:14:10 amGiven the note at the bottom about the random bit error...maybe not so lucky.Quote from: asmi on November 17, 2017, 07:14:10 amExactly, It's no fun debugging designs with hardware that works most of the time.Quote from: cleaningOut on November 16, 2017, 01:39:14 amMade me giggle a little. Here the discussion is how small the PS can be.I decided to break the power supply on my design to a second board.One so I can reuse the expensive pieces when my first couple boards don't work perfectly. (I don't trust trying to setup 6 rails on my bench supplies and not fry something once)And two then I can set it up for current measurements, and I2C monitoring etc.In the end it fills up a 10cm x 10cm card rather well...On the plus side, I've got a couple days off this week so I'm hoping to finally get version one of the FPGA board sent off.I've managed to convince myself that I stand a pretty good chance of having my DDR3 layout actually work.The power supply boards should be here this week.(Still have no clue how they make money with the free shipping, but figured I might as well take them up on it)

author: asmi
author_rank: Super Contributor
timestamp: November 20, 2017, 06:21:15 am
content: Quote from: PhillyGreg on November 20, 2017, 05:34:53 amTo be fair to him, the specific MCU he has chosen to use does not support ODT for DDR2, and you already know how much of a difference does it make - so I'm surprised it worked at all. This is why I think he got lucky. Even though we was running memory only at 133 MHz.Quote from: PhillyGreg on November 20, 2017, 05:34:53 amIf you do that, make sure you've got enough capacitance near power rails that power high-speed interfaces to hold them steady until power supply has a chance to react to abrupt change of current drawn. I can't find the source now, but I remember reading that it's strongly recommended to have onboard supplies for high-speed interfaces to improve transient response. Also if you use termination to Vddr3 / 2 - make sure Vtt tracking supply is on the board as it need to track Vddr3 rail in case in dips or bounces to make sure the eye is as open as it can be (SSTL signals are references to midrail, so if rail jumps - so does the mid-rail, and Vref should follow it).This is especially important if you want to use memory in DDR3L mode as there is less of a margin - Vref ± 0.15 V as opposed to Vref ± 0.175 V for regular DDR3.Quote from: PhillyGreg on November 20, 2017, 05:34:53 amThe major problem with using lab supplies is getting power sequencing right. FPGA may fail to initialize if it's grossly wrong. I had this happened (with different FPGA though).Quote from: PhillyGreg on November 20, 2017, 05:34:53 amThey don't. My understanding is that it's time-limited promotion.

author: asmi
author_rank: Super Contributor
timestamp: December 12, 2017, 04:20:30 pm
content: Hey PhillyGreg,I hope your project is going great. Just wanted to give you an update that I've assembled my board and DDR3 on my board runs just fine at full 800 MT/sdespite some minor issues with schematics (I've messed up connection of indication LED to the "DONE" ping of FPGA) and assembly (there is a "tombstone" near DDR3 IC which I decided not to fix as it's 0201 cap and it's too close to the module to get there with an iron)Board front:Board back:FPGA installed:DDR3 module:In the end it WORKS!!!!!even with full-strength drivers, so OurPCB folks did a great job of meeting trace impedance specs. Once again - highly recommend them, as combination of price and quality they bring to the table is nothing short of amazing.

author: PhillyGreg
author_rank: Contributor
timestamp: December 18, 2017, 02:31:18 am
content: That board looks awesome! Congrats on getting it going.Seems like quite a few cool bits to play with there.I'm finally getting back to my layout.I've been working on a couple pre-req courses for my masters, ended up with a giant project that managed to suck up all my time after workHoping to finish it up this week and send it out before Christmas.I've got the supply boards in hand, so I'll have that to bring up while I wait.How was placing the 0201 caps?I'm pretty used to dealing with 0402's, but they just don't fit as well.Quote from: asmi on November 20, 2017, 06:21:15 amI also remember reading a similar article, but now that I need it I can't dig it up.I'm thinking it should be ok. I've made room for plenty of bulk capacitance on the board.Left jumpers to either route the sense lines over to the FPGA or connect them on the PS board.The DDR3 VTT is staying on the FPGA side, plenty of space for that.

author: asmi
author_rank: Super Contributor
timestamp: December 18, 2017, 04:58:48 am
content: Quote from: PhillyGreg on December 18, 2017, 02:31:18 amUnfortunately some of these things are implemented wrong. For example, 40 pin FRC connector for LCD has its' pins numbered wrong way around, and as a consequence 6 pin FRC connector for the LCD's touch panel is on the wrong size of the board relative to main 40 pin one - these are connected via rigid-flex board (that comes out from LCD panel) and thus relative positioning matter. It's a small consolation for this screw up, but I didn't actually have the LCD panel in my hands during design process, so I couldn't "fit check" it on a piece of paper (like I always do with any major parts/connectors that might have physical placement issues, or if it's a new part which footprint I hadn't confirmed in "metal" yet).Another f-up is with voltage level shifter for the DDC interface of HDMI connector - but it's not as devastating as previous one because it's optional for HDMI source (the receiver will accept the stream just fine if its' parameters are among those supposed by it).But the rest of it seems just fine.1. I've mentioned DDR3 above. I designed a sort of memtest firmware for the Microblaze softcore, and ran it for about 2 hrs without any errors (at that mark my patience ran dry, and I stopped the test to anxious to run some other tests), so I'm fairly confident that my DDR3L layout is solid, and traces' impedance is close enough.2. I've developed a simple HDMI TX block and verified it in hardware - it worked just fine in 720p@60Hz and 1080p@24Hz modes (this equates to about 750 Mbps serial rate for each of 3 HDMI data channels, I used 10:1 SERDES in DDR mode clocked at 375 MHz). As SERDES can be clocked up to over 600 MHz (if my memory serves me), I will try to find some kind of non-standard mode that brings data rate as close to the maximum of 1.25 Gbps per line just to see what I can achieve. Unfortunately whatever I do, it won't be able to output full 1080p@60Hz, but over the course of this design I realized that Artix's GTPs natively support DisplayPort, so it might be a fun project to design a board around DP. The only option that doesn't involve MGTs would be to use external HDMI TX that would accept data via parallel bus. But whatever - for this board I didn't really intended to have HDMI at all when I was originally designing it, it's primary purpose was to drive LCD with touch panel, the adding of HDMI port came as an afterthought just because I had some free FPGA pins and enough board space. Ironically that "afterthought" part ended up working just fine, while main design is f'ed-upAgain, part of this test was desire to push diff pairs as fast as possible to verify impedance. So far it's great.3. Over the course of two previous tests I used buttons on the board that are connected through MAX6818 "debouncer" IC, and it works just fine - so no issues with that IC nor schematics/layout.4. As for USB3 to FIFO bridge, I'm still working on VHL core to test the actual transmission, but I've connected board's USB3 port to my computer's USB3 port, and IC was recognized properly by the system, drivers were installed with no issues, and FTDI's configuration utility was able to read IC's config and write a new one into built-in flash memory. That tells me that USB data lines are OK, but of course unless I run some actual full-bandwidth transmissions over it, I can't be certain if USB3 6G lines are OK or not - as I don't know for sure if FTDI's config utility uses those lines for reading/writing, or it uses USB 2 data lines. So more tests are needed, but this will certainly be the most interesting test in terms of confirming traces' impedance specifications. 6G lines are well known for having very little tolerance for out-of-spec traces, so I'm curious to see how it pans out. But at this stage to be honest I'm fairly certain of specs considering all previous tests indicated no SI-related issues whatsoever (so much so that DDR3L works even with full-strength drivers).Quote from: PhillyGreg on December 18, 2017, 02:31:18 amYea, I'm also a bit busy tying up loose ends before the end of the year, but at least I will have enough free time during holidays to test the crap out of this board, before fixing all issues and ordering the third (and hopefully the final) revision. But I won't rush it this time around, because I can test most things on the current revision. On a final board I plan to solder the XC7A100 speed grade 2 part (which is $134 alone!), so it's worth investing into testing before installing such expensive components.Quote from: PhillyGreg on December 18, 2017, 02:31:18 amI actually designed PMIC subcircuit based on TPS6400 quite some time ago, and now I just copy the circuit and layout to whatever new board I make, so I don't have to spend any time designing PSU for every new board I do. This really cuts down on layout time, and it's outputs (1.0/1.35/1.8/3.3 V) are universal enough to be useful on pretty much any Artix or Kintex FPGA board. Another useful PMIC design I have is based around TPS65581 3-channel PMIC - this is handy if you don't need DDR3 on FPGA board as it requires very few external components (about a dozen for all 3 channels IIRC!), and I have it set up for 1.0/1.8/3.3 V, which will be needed on any Artix board.Quote from: PhillyGreg on December 18, 2017, 02:31:18 amI use Zephyrtronics'sZT-3vacuum pickup tool with VSC1005-BD Derlin tip specifically designed to handle 0201 parts (I've bought the full set of bent Derlin tips with the tool, except for smallest VSC0803-BD, as it wasn't available at the time of my purchase) , as well as cheap 10x stereo microscope (SE410 By AmScope, ~$175), so it's relatively painless. And after handling 0201, 0402's seem so huuge & easy to placeThis pickup is quite expensive, but it works so good - the trick is to use the right sized tip for the part - in this case a part gets automagically released the moment it touches the board. This dramatically speeds up placing parts.Another side to this is the use of thermally stable solder paste. Aside from not having to refrigerate it (and then let it warm up before use), the paste doesn't dry out after it's printed on the board, which gives all the time in the world to place components. This is amazing for hand-assembly of complicated boards, as placing all components might take hours, so regular paste (especially lead free ones) will dry out and the reflow will fail.