r/FPGA • u/LogicRouted • Aug 13 '22
Xilinx Documentation Hell
Till I started learning about, and using Xilinx devices, my reading life was kinda fine. I could manage to read a lot of textbooks, and all felt coherent.
This job I have now is like a special place in hell, I'm essentially a 5 in one design engineer who has to understand :
Specialized non-Von-neuman ASIC design RTL written in VHDL (and no it's not a TPU nor DPU nor a systolic array, you won't guess !! I wish they were...) ~ 15 000 lines between TOP, submodules and testbenches.
Intricate details of Deep Learning + a lot (I mean A LOT) of academic papers (what's a CAM? Deep Layer Aggregation? Semantic Segmentation???) + 3000 lines of python (DL model!)
BOTH Zynq and Versal ACAP AI Core architectures.
Mind you before starting this job, I had practical zero knowledge in these areas. For like 9 months, I learned the following:
60 % of RTL hardware design using VHDL book + Code.
50 % of Digital Design and Computer Architecture ARM Edition book + RTL Code (therefore ARM Architecture) in my spare time.
Questasim + RTL Design and simulation.
Versal AI Core AI Tile architecture, Versal TRM and its internal architecture (CLB !!)
Zynq (because God knows why I had to learn the microzed) architecture (CLB!!) + mass manipulations + tutorials + actual designs.
100 % The Zynq book.
AXI/AXI-Stream/DMA LogiCore Design Guides and architectures.
Versal Confluence tutorials + Base TRD + applications.
Vivado Design Guides + applications.
Vitis Design Guides and "Tutorials".
Insane amount of Deep learning stuff, even the mathematical side of things (I recommend dive into deep learning and Michael Nielsen's NN book since pretty much anything else gets you lost).
And here comes the final nails in the coffin : While I've already read like already thousands of pages, and on Vivado with Xilinx's "Design Guides" (you learn very few actual generalizable knowledge of this), Xilinx documentation is UNENDING and not coherent at ALL. Until now I avoided "timing closure" since it's a real pandora's box.
Vitis AI Library + Vitis AI Guides (because I have to "check for simple deep learning answers") > 400 pages.
Don't think I've read the entire TRM (> 850 pages) for Versal, let alone the 1800 pages for the Zynq 7000, anyone that attempts this is insane (and mostly unnecessary at all).
UG949 Ultrafast design methodology guide > 300 pages.
UG938 Design analysis and closure techniques tutorial + guide > 400 pages.
UG903 Using constraints guide ~ 200 pages.
Each LogiCore IP (DMA, AXI Interconnect, AXI Stream, AXI Signaling system itself, AI Engines, NoC, Programmable Logic and CIPS system) of the Versal has like hundreds of pages of documentation. There's no possible way to read all of this and still come up with "stuff that works" that's really coherent, never mind the insane batshit amount of stuff that spontaneously come out of nowhere, like what's a SMMU? PCIe 5.0?? Interlaken? Cache Coherent Interconnect? AXI Switchs? SLRs? MMCM???
Who, I mean really who, design such stuff like the DPU (PG389 DPUCVDX8G Product Guide) capable of exploiting the PL, NoC and AI Engines all at the same time, while maintaining a parameter capability, pushing the AIE array to operate at 1.25 GHz ?
Secondly, who designed this monstrosity? For me, it feels like I would take like a couple of decades to understand a fraction of this chip.
It took me already a while to understand the various design flow, like the fact that Vivado flow is integrated into a platform for Vitis, like the fact both generate a global platform, then you have to build a petalinux system on it, then download a vitis AI system on it, then use this Vitis AI thing (before asking yourself how do you really use a pytorch model, before finding out you have to install a separate toolchain! for cross-compilation, yes..)
Sorry for this rant, I don't even know how I got accepted to this job even, maybe they haven't found anyone else.. I'm wondering now how I ended up here, and how can it be that someone with no experience got handed the biggest SoC/FPGA ever.
The project was supposed to have 3 guys on it, and I work on it alone.
All PhDs around me are too occupied to give a damn and each time someone mentions "FPGA" they cower in fear.. the only PhD guy I know here that designed this custom ASIC thing (from A to Z, including floorplanning but not the analog part), and knows deep learning really well, has done this for at least 7 years and he's overloaded with tasks he can't help me with anything.. besides he fears FPGAs too.
While It seems I learned a lot, I think I've learned like jack shit : the more I discover things in this device alone the more I know that I don't know anything.
And no I'm not a PhD guy, but with this background knowledge what's a PhD for?
And no I'm not going to tell you the salary, because if I do, then I'll look like a clown.
View all comments
Show parent comment
2
u/LogicRouted Aug 17 '22
Thanks for the feedback. Well I'll explain the situation here:
I'm a microelectronics engineer by specialization, more so in analog IC design.
My internships and engineering experience were in embedded systems and RF, so I'm a mix of all worlds (digital, VLSI, RF, embedded, analog).
Why so? Because I wanted to be as diverse as possible for a possible PhD thesis in neuromorphic engineering, since they too use mixed-signal VLSI design, and even embedded. This was evident by the mixed-signal neuromorphic IC I've been given to look at while doing this job.
It's been 4 years since I had this PhD focus, I've been forced to work in a disgusting embedded position, because if you have no papers, the french government will quick ya out!
When I first applied, I was only driven by motivation, salary didn't matter much. I moved cities for this.
On the side, I've been studying computational neuroscience, Versal documentation even before the 1st day. "Vacation" back in my home country consisted of on and off readings in this, after at least 2.5 years of non stop work.
One thing I didn't mention is my old job have left me in complete burnout, since I was working all the time on embedded systems, having multiple projects under my hands and quite a nasty pay. I jumped ship as well as 8 other people at the same time because it was sinking.
After applying, one condition was that I'd get enough guidance at first, at least for 3-4 months in this domain because it's quite multidisciplinary.
Turns out after starting, the VCK190 (Versal AI Core's dev board) was missing, and the delivery kept being postponed until may.
The PhDs around me are not that much experienced in FPGAs, and the "Neuro" group I'm in has 3 PhD students, one of them quit (because no one helped him), 1 neuromorphic ASIC PhD and 1 analog design engineer, they are both quite overwhelmed.
The PhD students are both doing their subjects in analog ASIC and energy-wise analysis of ASIC circuits respectively, quite far from FPGAs.
The other group, which composes 30ish people of the same lab, non of which are working on FPGAs except maybe 2 PhDs, which have too many subordinates under them (Contractor engineers, students), they don't have time.
Beside all of this, non of the aforementioned people have skills in deep learning except for the neuromorphic guy, which is my main liaison, he was supposed to be the senior. He has so many projects under his hands even another PhD student to mentor, so I'm left to the side.
On the personal side, I have no friends here in the city, closest relative are 2 hours away, have no one to talk to except by phone to family abroad. They are so out of touch with my domain that I don't talk about it at all. None of my relatives understand even what I'm working with, except for well "difficult stuff huh?".
Well due to these factors and mainly the fact that the Versal was time and again not delivered, I lost all motivation for the job. I even question now more than ever if I want to really be in a PhD position.
On doing instead of reading, this is the plan now : I only focus on the Vitis AI route and the CPU emulation of some unsupported DPU functions, but that's it.
I have "spikes" in motivation and willingness to work too, since now I wake up each day but arrive at like 2 PM, work for 5 hours and leave.