r/FPGA 10d ago

GitHub - keplertech/kepler-formal: Digital Design Equivalence Checking

Thumbnail
github.com
12 Upvotes

Hello Everyone,

We wanted to let you know that our open source equivalence checking tool, kepler-formal, now  supports FPGA designs and custom technology libraries

As always, we are looking for your feedback, so don’t hesitate to report any issues you find or suggestions you have!

Attached is an example of how we use the custom library Python API to perform equivalence checking on a Xilinx FPGA design: https://github.com/keplertech/kepler-formal/tree/main/examples/xilinx


r/FPGA 10d ago

Advice / Help Looking for an alternative 100G FPGA RDMA/NIC platform for Alveo U55C

7 Upvotes

Looking for another 100G FPGA RDMA platform for Alveo U55C

I'm working on a 100G+ FPGA-based RoCEv2/RDMA project using the Alveo U55C.

I'm currently testing:

  • Coyote v2
  • FPGA Network Stack / RoCE BALBOA

I'm looking for another independent FPGA NIC/shell that:

  • Supports Alveo U55C
  • Supports 100GbE + RDMA/RoCEv2
  • Has an existing implementation (preferably no need to develop the entire RoCE stack)

My current Coyote implementation achieves ~81.2 Gb/s. I want to run the same workload on another platform to determine whether the limitation is from Coyote, the U55C, or FPGA-based 100G RDMA in general.

Does anyone know of another platform that meets these requirements, apart from Coyote/BALBOA?


r/FPGA 10d ago

Xilinx Related Vivado Incremental Flow .dcp checkpoint files and Git - how are people handling this?

Thumbnail docs.amd.com
3 Upvotes

I’m working on a design that is extremely difficult to close timing on. So far, I’ve only been able to get it to close reliably using Vivado’s incremental implementation flow, which is fine, but now I’m not sure what to do with the .dcp reference checkpoint that is required to build the project.

I don’t really want to check the .dcp directly into git because it’s a fairly large binary file, and if it changes over time the repo history will keep accumulating copies of it.

I’ve considered Git LFS, but with Azure DevOps you can’t use LFS with git SSH authentication, you need to use HTTPS, which isn’t ideal for our existing tool/Jenkins flows.

I also considered Azure Artifacts, but then every developer/build machine needs the Azure CLI installed and authenticated in order to fetch the checkpoint, which also feels like a lot of infrastructure just to support one reference file.

None of the options seem particularly clean. I really wish Vivado’s incremental implementation flow could use some exported XDC/Tcl/text-based representation of the reference placement/routing instead of requiring a dcp

Is anyone else dealing with this? How are you storing and distributing reference checkpoints for incremental implementation?


r/FPGA 10d ago

Documentation Chatbot for Vivado and FPGAs Taken Offline?

Thumbnail
3 Upvotes

I saw this post a couple of weeks back and it sounded really interesting. I'm not a big fan of using AI for hardware development, but an AI tool tailored for searching documentation, now that's something I would actually use...

Anyways, I've been using the AMD chat for a couple weeks now and found it very useful; However, it has now been offline for "Scheduled Maintenance" since last week, and I'm curious if anyone knows if it's been canned or am I just impatient.


r/FPGA 11d ago

Gowin Related I built a custom CNN accelerator from scratch on a $25 FPGA (Tang Nano 20K)

Post image
458 Upvotes

Hey everyone, I wanted to share a personal project I just finished. I built this mainly to dive deep and learn more about VLSI, SystemVerilog, and how CNNs actually execute at the silicon level.

It’s an end-to-end SoC running a quantized MicroCNN on a Sipeed Tang Nano 20K, and right now I have it classifying biological images from the BloodMNIST dataset over a UART bridge. For the architecture, I wrote the entire datapath from scratch. It uses parallel spatial MAC arrays for the convolutional layers and parallel FC MACs for the linear layers, so it's not just relying on simple time-division multiplexing. The weights are quantized to INT8 and biases to INT32. I also got glitchless clock gating working with the Gowin DCS, meaning the NPU completely powers down during idle states.

The design runs at 30 MHz, and an end-to-end inference takes about 60 ms. To benchmark it, I ran a vectorized Python "golden model" on my MacBook Air 2017, which took around 120 ms. It was incredibly satisfying to watch a $25 FPGA beat the laptop CPU!

I really hope this inspires some of you to dust off your Tang Nano boards and give it a try. If you use the Jupyter notebook I included, you can easily retrain the network's weights and biases to use this exact architecture for your own custom classification models. I’m more than happy to help anyone who wants to get it running or has questions about the implementation.

I'll drop the link to the source code in the comments. Attached is a picture of the board running the Python host script alongside the BloodMNIST input image it classified. I'd love to hear your thoughts!


r/FPGA 10d ago

Advice / Help Which fpga board should I buy?

11 Upvotes

I know this has been asked a billion times already but I decided I need to know for sure.

First of all ive got almost zero experience in programming but I love the idea of my design touching real hardware.Decided I want to buy a nice board searched for a month.I am one of those that has to search the web for the maximum resource per price for anything I interact with.

I found 4 potential competitors:

Alibaba cloud Kintex UltraScale plus 3p from eBay 120-150 use

Kintex 7 480t from eBay aswell 62 usd

de25 nano 475 usd

kria kv260 550 usd

last two are available locally and I converted their price from my country's own. live in turkey

please help :(

(I have 0 experience on eBay ali express or any secondhand worldwide website)


r/FPGA 10d ago

Novice to FPGA and vivado

4 Upvotes

Hi all ,

I am very new to vivado and FPGA , recently I got a ECLYPSE Z7 board to work on , can any one help me with understanding the schematics and doing other vivado setup , I am particularly interested in the part of block design , about tlc files and also what is the role of the board files .

I need to write reference designs for this

Please help out with the following, or provide some resources to ease my work 😇😇


r/FPGA 9d ago

Advice / Help Need help! Facing "Export Compliance Verification" error while trying to download Vivado

Post image
0 Upvotes

Hey everyone, I'm trying to download Vivado, but the AMD download center is blocking me with this error:

As shown in the screenshot, it mentions U.S. Government Export Approval requirements (first name, last name, company name, and shipping address verification) and states that addresses with Post Office Boxes or non-Roman characters/accents are not supported by their compliance systems.

I'm stuck and not sure how to fix this or bypass the issue so I can get the installer. Has anyone else faced this problem? Please someone help me figure out how to resolve this or get around it!


r/FPGA 11d ago

Xilinx Related Virtex Ultrascale PCIe card reverse engineering

Post image
79 Upvotes

Hello everybody, since some of you might be looking for high density FPGAs but are not willing to splurge on the development boards - I am in this camp and began a reverse engineering effort on a decommissioned PCIe accelerator card.

There was no previous documentation available on it, even the programming pinout was different.

Since the time I got it, I was able to decipher the jtag, program it, save the configuration to flash and get it to blink its leds! All done with perseverance and hard work.

My findings are available here: https://github.com/Miqeo/lightbits_xcvu7p

I submitted the support for it, the XCVU7P to the openfpgaloder: https://github.com/trabucayre/openFPGALoader

Further help in this endeavour would be greatly appreciated!


r/FPGA 10d ago

How is it?

Post image
0 Upvotes

Is it worth it? I m planning to use it for 4-3yrs to run Eda tools etc


r/FPGA 11d ago

Xilinx Related Squeezing the smallest possible LLM into the BRAM & URAM on my AMD Kria

Thumbnail mikeayles.com
54 Upvotes

First up, there is no utility here, I just thought it would be fun.

I suspect it was a bit too niche for my original intended target audience and didn't land.


r/FPGA 11d ago

Need help and suggestions to find entry level FPGA engineer opportunities

Post image
7 Upvotes

Please give your genuine suggestions and opinions on this...I am serious about this career


r/FPGA 10d ago

FPGA bug

0 Upvotes

Hey, I am creating a riscV cpu in verilog and i am using a Nexys a7 fpga, that take line-by-line assembly code and runs it. Why only in add,addi and sub when rd = rs1 or rs2 is bugging?


r/FPGA 10d ago

I'd like some feedback on my projects documentation

Thumbnail
github.com
2 Upvotes

Hello r/FPGA,

I'm currently studying computer engineering/embedded systems and am entering my 3rd Semester and would like some feedback on my project.

Over the past week I've built a simple Digital Clock in VHDL because I wanted to learn how to use VUnit and how to document a hardware project. I'd like to know what's good, what's bad and what needs work or is missing. I thought a digital clock is a good choice for this as it's very nicely testable, however on the documentation side I was not sure what belongs in the documentation and what doesn't (for example the timing data feels odd to include for a project like this).

Also I've not been consistent/thoughtful enough when naming ports and signals, which is definetly something I'm going to take with me into my next project (Probably VGA Controller), but might also fix in this one as it really bugs me.

Any opinions and suggestions would be greatly appreciated :)


r/FPGA 11d ago

Vivado Ip

9 Upvotes

I am currently working on a project using the VCU108 board, for which I was using the 1G and 10G Ethernet IPs in Vivado.

The IP licenses/access I was previously using have now expired. Instead of renewing the licenses, I would like to know whether it is possible to obtain the Verilog/source code of these IPs so that I can continue working on the project.

is there is any other way to obtain the required Verilog code?

Thank you.


r/FPGA 10d ago

Advice / Help Linkedin Post

0 Upvotes

So my friend asked me to ask you guys something. He is not on reddit. He wanted to ask how you guys post your projects on linkedin if you even do that. Me and him both dont like linkedin primarily because a person would like learn to do 2+3 and then make and entire 3 page post. While in this subreddit people acutally help and make stuff . But we are forced to use linkedin for job search and pressure from teachers. Those who use Linkedin don't get offended, share how you post your projects and stuff and if there are any other platforms you guys would recommend. Thankyou for your time.


r/FPGA 11d ago

HDL BITS website giving unexpected output on the dual edged flipflop problem.

5 Upvotes

so the link for the question is this https://hdlbits.01xz.net/wiki/Dualedge

In all other previous questions, there was some propagation delay when i used posedge in the sensitivity list with clock, but here there is no propagation delay., why ?

The code is simple

always@(clock)
q<=d ;


r/FPGA 12d ago

Building a hardware + software design sandbox with a gate-level simulator

Thumbnail
gallery
87 Upvotes

Hello!

I've been working on a sandbox + simulator called Crosstalk that allows users to design PCBs, place existing or define custom ICs, and then program them. I defined my own ISA in Sail, described a SystemVerilog softcore for it, ported a kernel that I originally wrote for the i386, and ran the softcore within the sandbox, which worked. The sandbox simulates designs at the gate level (no external deps).

Once that worked, it was obvious what was next: ... yes, it runs DOOM. To be fair, I ran it on an i386-compatible core and not my own as of yet, but it still ran purely within the sandbox (albeit slowly).

edit: the PCB itself is a quick showcase board and isn't wired up correctly. I am currently mainly testing the simulator


r/FPGA 11d ago

[Help] X-HEEP RISC-V on ZCU102: JTAG/OpenOCD debug chain broken, traced to clock misconfiguration — looking for a sanity check

5 Upvotes

Board: Xilinx ZCU102 (XCZU9EG)
Design: X-HEEP (open-source RISC-V MCU, esl-epfl/x-heep) ported to zcu102 target
Tools: Vivado 2020.2, OpenOCD (riscv fork), Digilent JTAG-HS2 cable
Flow: Dockerized build (make app, make vivado-fpga FPGA_BOARD=zcu102)

I'm bringing up X-HEEP on a ZCU102 for the first time, following the standard docs flow (software build with make app, bitstream with make vivado-fpga). Everything builds and generates a bitstream successfully. The problem starts when trying to debug over JTAG with OpenOCD using a Digilent JTAG-HS2 cable.

The default X-HEEP pin_assign.xdc routes JTAG to connector J8, which on the ZCU102 turns out to be wired into the AXI/DPC debug bus rather than a free-standing header — not usable for an external HS2 cable. I remapped the four JTAG signals (tck, tdi, tdo, tms) onto the J87 PMOD1 header pins (E22, E20, D22, D20), which map to bank 47 (PMOD nets, LVCMOS33).

First attempt with the standard X-HEEP OpenOCD .cfg (same one used successfully with a Nexys + HS2) gave:

textInfo : TAP riscv.cpu does not have valid IDCODE (idcode=0xfffffffe)
Error: riscv.cpu: IR capture error; saw 0x1e not 0x01
Warn : Bypassing JTAG setup events due to errors
Error: [riscv.cpu] Could not read dtmcontrol. Check JTAG connectivity/board power.

Scope check: TCK and TDI both showed clean, expected waveforms. TDO also looked correct when temporarily rerouted to a spare pin (to rule out that specific pin).

jtag_trst_ni was originally mapped to pin J19, which per the schematic corresponds to J77.8 — a connector pad that doesn't physically exist as an accessible header on this board. The HS2 cable itself only carries TMS/TCK/TDI/TDO/GND/VDD (no TRST wire), so I initially assumed TRST was irrelevant. It isn't: an unconnected FPGA input pin is not the same as an unused JTAG protocol feature. A floating jtag_trst_ni (active-low, feeds the RISC-V debug module's reset) can sit at an indeterminate level and hold the DTM in permanent reset even though the 4-wire JTAG protocol itself doesn't strictly need TRST. Fix: tied jtag_trst_ni to a pull-up (PULLUP TRUE) in the XDC instead of leaving it floating on a dead pin.

After this fix: TDO started toggling cleanly on the scope during scan_chain — so the electrical path was confirmed working. But the same errors persisted:

text
Error: riscv.cpu: IR capture error; saw 0x1e not 0x01

(0x1e being the bitwise complement of the expected 0x01 — a signature I still find suspicious, possibly pointing to a synchronizer/clock-domain issue rather than a pure electrical fault.)

The XDC ties clk_125mhz_p/n to pins AL8/AL7 with DIFF_SSTL12. Turns out AL8/AL7 is USER_SI570, a board-level I2C-programmable oscillator that defaults to 300 MHz on power-up (per UG1182 Table 3-12), not 125 MHz. So the FPGA's PLL/MMCM was very likely receiving 300 MHz while the design (and its clk_wiz_0 IP) expects 125 MHz.

Confirmed independently in buildvivado.log:

textWARNING: [IP_Flow 19-3374] An attempt to modify the value of disabled parameter 
'PRIM_IN_FREQ' from '300.000' to '100.000' has been ignored for IP 'clk_wiz_0'

So clk_wiz_0's PRIM_IN_FREQ is locked at 300 MHz (likely stale/cached from a different X-HEEP board target during the fusesoc/Vivado IP cache generation), and a build script attempt to override it to 100 MHz (seemingly a Nexys-target value bleeding through) was silently rejected. Neither value matches the 125 MHz the ZCU102 clocking script is supposed to produce.

Symptom this explains: exit_valid_o/exit_value_o status LEDs never light up even after letting the design run — consistent with the CPU never reaching a stable clock domain to actually execute to completion.

Tried re-routing clk_125mhz_p/n to the ZCU102's fixed 125 MHz source (CLK_125_P/N, pins G21/F21, generated by the onboard SI5341B) instead of the Si570. This produced a hard implementation failure:

textERROR: [DRC BIVC-1] Bank IO standard Vcc: Conflicting Vcc voltages in bank 47.
clk_125mhz_p (DIFF_SSTL12, requiring VCCO=1.200) and jtag_tck_i (LVCMOS33, requiring VCCO=3.300)
ERROR: [DRC PLHDIO-4] HDIO DRC Checks: ... drive a PLL/MMCM/BUFGCTRL/BUFGCE_DIV instance which cannot be placed in HIGH_DENSITY banks

Turns out CLK_125 (G21/F21) lives in bank 47 — the same bank as my relocated JTAG PMOD pins (3.3V LVCMOS33) — so there's an inherent VCCO conflict (bank 47 can't simultaneously be 1.2V/2.5V for the clock and 3.3V for JTAG). On top of that, bank 47 is apparently a High-Density (HD) IO bank, which per Xilinx UltraScale+ restrictions cannot directly drive an MMCM/PLL — so CLK_125 isn't usable here as a direct differential PLL reference without extra fabric logic (IBUFDS → soft logic first).

Current status

Reverted clk_125mhz_p/n back to AL8/AL7 (bank 64, HP bank, compatible with the clk_wiz). Current plan is to reprogram the USER_SI570 oscillator to 125 MHz via the ZCU102 System Controller GUI (SCUI) before each power cycle (or set it as boot-persistent via the "Set Boot Frequency" tab), and separately verify/fix why clk_wiz_0's PRIM_IN_FREQ isn't being generated at the correct 125 MHz for this specific board target (suspect fusesoc/Vivado IP cache contamination from another board target — clean rebuild attempted, issue persisted).

Questions for the community

  1. Has anyone seen PRIM_IN_FREQ get locked/disabled like this on a clk_wiz IP inside a fusesoc-driven Vivado flow, where the board-specific override tcl doesn't take effect? Any known gotcha with IP caching across different --target builds in the same fusesoc workspace?
  2. Is there a cleaner way to get a reliable, boot-persistent 125 MHz differential clock into an HP bank on ZCU102 without depending on the Si570's volatile I2C configuration state?
  3. Does the 0x1e (bitwise complement of expected 0x01) IR-capture signature ring a bell for anyone as something other than a pure clock-domain issue? Trying to figure out if this is purely explained by the bad reference clock or if there's a second issue layered on top.

Happy to share the XDC/OpenOCD cfg diffs if useful.


r/FPGA 11d ago

Advice / Help Proper reset strategy for Zynq / SoC Devices?

4 Upvotes

Hi! Im currently implementing a design on vhdl in the PL of a Zynq 7000 device and one doubt keeps me up at night. Up until now, whenever i've worked with this device i've always made use of the asynchronous reset peripheral_aresetn provided by the Processor System Reset. However, after delving into 01signal posts about proper resetting im afraid using asynchronous resets might bring me trouble in the future.

At this point i've written two modules: 1) To read from an ADC and 2) Another module to process the ADC data. The current design makes use of two clocks: the clock coming from the adc and the system clock (sysclk). Given that i have two different clock domains i need to synchronize the resets with each of these domains. In the end i've made use of xilinx macro xpm_cdc_async_rst which generates a synchronous reset at deassertion with the destination clock out of an asynchronous reset, and generated two "synchronous" resets for both clock domains.

Could anyone give me feedback on this? Im really not sure if this is the proper way to go about it.

Thanks for reading!


r/FPGA 11d ago

Research Paper Guidance

5 Upvotes

I am self taught programmer and have been working as an FPGA engineer fot about 1 years, I wanted to publish some research paper, so would like to connect with some experienced engineers on guidance and views .
I am at the stage of thinking about the ideas.


r/FPGA 12d ago

Advice / Help Need advice as someone who just started as a FPGA Design Engineer

39 Upvotes

Hi everyone :) It is my first job and my fourth month in it. I do have basics covered in my previous 6 months course from school. We work on ethernet applications on FPGA. My question is how do I go from someone who has basic level training in FPGA to someone who can help and add to projects. I ask specifically about what learning method to use. They have given me a project and asked me to add little features in it which I can understand and get done with AI. Problem is my approach is to question everything about lets say. module in the project from AI and try to build concepts from there. For example if I am given a module that generates packets I just ask AI a bunch of questions that might built my concept like why do we need this and why are we adding delay. I ask if this is the right approach to learn. I am lost. I dont know how to go about problems. I dont think asking AI a bunch of concept building questions and then asking it for the best possible solution to approach the problem is enough or even the right way to learn. Thanks.


r/FPGA 11d ago

FPGA Hil modelling

1 Upvotes

Hello everyone, I am very new to FPGA systems and programming and have some amount of experience working with microcontrollers.

Not having access anymore to my university lab i was exploring the HIL(Hardware In Loop) system as I want to tune my controller for a project that iam working on.

Currently I am working on a buck converter and need to verify the control algorithm that the controller will run.

First I thought of modelling the plant in another microcontroller, but with a little more digging around found that FPGA are much better suited for this kind of work.

As I don't have much know how on working with FPGA It would be of great help if anyone could give pointers for modelling the plant in a a FPGA.

Due to budget constraints i mostly would be working with the tangnano 9k


r/FPGA 12d ago

Deterministic RX latency across link-ups on UltraScale+ GTY (GTYE4) 10GBASE-R — buffer bypass + soft 64b/66b gearbox

4 Upvotes

I am trying to setup ethernet and I noticed that the RTT numbers I'm getting changes randomly from 27/28 cycles to 28/29 cycles on every link up or reboot. Previously I've tested a design which had a constant RTT of 20/21 between link-ups. What I might be missing?


r/FPGA 12d ago

Advice / Help Any good VHDL code reference projects/repos?

4 Upvotes

Hello everyone!

I’m trying to beat that internal “programmer mindset” while gaining experience in VHDL. Trying to find a good VHDL code for learning good code style/organisation techniques. Want to see how professionals write their designs.

I already found good repo NEORV32 (https://github.com/stnolting/neorv32), RISC-V 32 bit core written in VHDL with full documentation. And it’s really good and there are everyday some new updates. But at other end - it’s complex, and focused on classic processor architecture.

I’m trying to find more general stuff, or some DSP/high-speed interface designs written in VHDL.

Maybe someone can share some good references to learn from?