This page exists to chronicle all of the insane hoops one has to jump through to get Vivado to behave.
To create a custom Board File: https://docs.amd.com/r/en-US/ug895-vivado-system-level-design-entry/Introduction?tocId=F6i4Whhu7YXEryUAukRhtg
Adding board files https://support.xilinx.com/s/article/72033?language=en_US
Some intermediate-advanced level Verilog info: https://zipcpu.com/
Examples of many common use cases in Verilog http://fpgacpu.ca/fpga/index.html
Sometimes, you'll need to configure system variables to do… things? I'm not clear on when this matters. Anyways, the appropriate command is source <path to Xilinx installation directory>/Xilinx/Vivado/2020.1/settings64.sh
useful for a lot of automation, more common among pros than GUI for design.
SPACES IN PATH NAMES ARE VERBOTEN! THEY CAUSE NOTHING BUT PAIN!
https://docs.amd.com/r/en-US/ug835-vivado-tcl-commands/Tcl-Commands-Listed-by-Category
(* mark_debug = “TRUE” *) tags a register / wire to follow later.wire - an interconnect between devices. Cannot store data, must be assigned a value by somethingreg - A register, can store data freely. Cannot directly be used as an output port, for that you need to assign a wire to the value of the register and use that. logic - similar to register. However, if you try to assign it multiple values it just takes the latest one; registers are unpredictable and the output is X - unknown.XDC - Xilinx Design Constraints file. Defines input/output pins and such. One for Red Pitaya is here.IOB - Input Output BuffersARM - Advanced RISC MachineRISC - Reduced Instruction Set ComputerCISC - Complex Instruction Set ComputerMGT Multi-Gigabit Transceiver. High speed IO.BUFG - Global buffer. Near center of chip, particularly useful for high performance.Fabric - Internal elements of the FPGA. Usually just the logic blocks, interconnects, and IOs.LVDS - Low Voltage Differential Signal. Uses 2 pins for 1 bit of signal for better integrity.PS - Processing System. Traditional computer processor.PL - Programmable Logic. What you normally think of as the FPGA parts.HDL - Hardware description language. Basically VHDL and Verilog.BEL - Basic Element of Logic.DRC - Design Rule Check. Check for sketchy shit.SSN - Simultaneous Switching Noise. How much noise you're liable to pick up from nearby pins.UART - Universal Asynchronous Receiver/Transmitter. Common communication protocol. MMCM - Mixed Mode Clock Module. Lets you create clocks & set phases.CMT - Clock Management TileSPI - Serial Peripheral Interface. Common communication protocol.AXI - Advanced Extensible InterfaceAMBA - Advanced Microcontroller Bus Architecture. AXI is subset of this.XML - eXtensible Markup Language. Created by the SPIRIT Consortium standards organization. Hence why you may see “spirit” in the files a lot. Not haunted.CDMA - Central Direct Memory AccessSG - Scatter Gather. Refers to being able to address non-consecutive addresses simultaneously. Often used for faster vector math.HP - High Performance. Counterpart to General Purpose. Relevant for interconnects (AXI) that need to be fast.0x - Indicates that following number is in hexadecimal.CIC - Cascaded Integrator Comb. Flavor of low-pass filter? The integrators average things, like you'd expect, and the comb parts add a time-delayed version of the signal to itself (A-la CFD circuitry?).Types of AXI interfaces:
https://digilent.com/blog/fpga-for-beginners-glossary-and-setup/
https://projectf.io/posts/fpga-memory-types/
https://projectf.io/posts/fpga-sine-table/
Chinese site, but some useful info: https://leiblog.wang/static/FPGA/books/Vivado%E4%BB%8E%E6%AD%A4%E5%BC%80%E5%A7%8B/
http://ecen220wiki.groups.et.byu.net/00-tutorials/
http://ecen220wiki.groups.et.byu.net/resources/tool_resources/testbenches/
https://www.fpga4student.com/ More Verilog, but still relevant.
http://www.asic-world.com/verilog/veritut.html
https://www.rtlaudiolab.com/ Specifically about processing audio
AMD workshops - Slightly broken tutorials, but moderately better than nothing.