Distributed Memory Based FPGA Debug

Field-programmable gate arrays (FPGAs) are powerful integrated circuits for low-overhead custom computing needs and design prototyping. Due to the hardware nature of programming an FPGA, finding bugs in a design can be a very challenging process. Signals need to be physically probed and data recorde...

Full description

Bibliographic Details
Main Author: Hale, Robert Benjamin
Format: Others
Published: BYU ScholarsArchive 2020
Subjects:
Online Access:https://scholarsarchive.byu.edu/etd/8434
https://scholarsarchive.byu.edu/cgi/viewcontent.cgi?article=9434&context=etd
id ndltd-BGMYU2-oai-scholarsarchive.byu.edu-etd-9434
record_format oai_dc
spelling ndltd-BGMYU2-oai-scholarsarchive.byu.edu-etd-94342021-09-17T05:01:01Z Distributed Memory Based FPGA Debug Hale, Robert Benjamin Field-programmable gate arrays (FPGAs) are powerful integrated circuits for low-overhead custom computing needs and design prototyping. Due to the hardware nature of programming an FPGA, finding bugs in a design can be a very challenging process. Signals need to be physically probed and data recorded in real time. This is often done by dedicating some resources on the FPGA itself towards an embedded logic analyzer. This method is effective but can be time and resource consuming. Academic research projects have produced a variety of methods for reducing this difficulty. One option that has previously been unexplored is the use of distributed LUT memory for debug trace buffers, rather than dedicated FPGA BRAM. This dissertation presents a novel, lean embedded logic analyzer that leverages leftover LUT resources on the FPGA for this purpose. Distributed Memory Debug (abbreviated as "DIME Debug") provides some amount of signal visibility into very large (90\%+ LUT utilized) FPGA designs or designs where the programmer requires all available device BRAM, situations in which currently available embedded logic analyzers are likely to fail. The ubiquitous nature of LUTs on FPGAs provides opportunities to insert debug circuitry near signals of interest without disturbing placement of the user design. Using only leftover LUTs for trace buffers allows for effectively no area overhead. The DIME Debug system typically has a critical path delay in the 7-9ns range, which can force non-ideal slower timing constraints on the user design. A simulated annealing based placement algorithm and other optimizations are shown to improve timing closure results from 20-50\% depending on benchmark and probe count. DIME debug can be instrumented into a fully implemented design incrementally using the RapidWright CAD tool, resulting in debug iterations under 15 minutes even for very large benchmarks. Another interesting possibility introduced by the use of memory LUTs for debug trace buffers is preallocating these resources. Setting aside a certain number of LUTs before implementation of the user design leaves them available for incremental debug instrumentation. Experiments with a preallocation scheme show that, with virtually no penalty to the user design, debug critical paths are lowered by approximately 1ns and 2-3X the number of trace buffers can be instrumented into most benchmarks. 2020-04-13T07:00:00Z text application/pdf https://scholarsarchive.byu.edu/etd/8434 https://scholarsarchive.byu.edu/cgi/viewcontent.cgi?article=9434&context=etd https://lib.byu.edu/about/copyright/ Theses and Dissertations BYU ScholarsArchive FPGA debug embedded logic analyzer distributed memory Engineering
collection NDLTD
format Others
sources NDLTD
topic FPGA
debug
embedded logic analyzer
distributed memory
Engineering
spellingShingle FPGA
debug
embedded logic analyzer
distributed memory
Engineering
Hale, Robert Benjamin
Distributed Memory Based FPGA Debug
description Field-programmable gate arrays (FPGAs) are powerful integrated circuits for low-overhead custom computing needs and design prototyping. Due to the hardware nature of programming an FPGA, finding bugs in a design can be a very challenging process. Signals need to be physically probed and data recorded in real time. This is often done by dedicating some resources on the FPGA itself towards an embedded logic analyzer. This method is effective but can be time and resource consuming. Academic research projects have produced a variety of methods for reducing this difficulty. One option that has previously been unexplored is the use of distributed LUT memory for debug trace buffers, rather than dedicated FPGA BRAM. This dissertation presents a novel, lean embedded logic analyzer that leverages leftover LUT resources on the FPGA for this purpose. Distributed Memory Debug (abbreviated as "DIME Debug") provides some amount of signal visibility into very large (90\%+ LUT utilized) FPGA designs or designs where the programmer requires all available device BRAM, situations in which currently available embedded logic analyzers are likely to fail. The ubiquitous nature of LUTs on FPGAs provides opportunities to insert debug circuitry near signals of interest without disturbing placement of the user design. Using only leftover LUTs for trace buffers allows for effectively no area overhead. The DIME Debug system typically has a critical path delay in the 7-9ns range, which can force non-ideal slower timing constraints on the user design. A simulated annealing based placement algorithm and other optimizations are shown to improve timing closure results from 20-50\% depending on benchmark and probe count. DIME debug can be instrumented into a fully implemented design incrementally using the RapidWright CAD tool, resulting in debug iterations under 15 minutes even for very large benchmarks. Another interesting possibility introduced by the use of memory LUTs for debug trace buffers is preallocating these resources. Setting aside a certain number of LUTs before implementation of the user design leaves them available for incremental debug instrumentation. Experiments with a preallocation scheme show that, with virtually no penalty to the user design, debug critical paths are lowered by approximately 1ns and 2-3X the number of trace buffers can be instrumented into most benchmarks.
author Hale, Robert Benjamin
author_facet Hale, Robert Benjamin
author_sort Hale, Robert Benjamin
title Distributed Memory Based FPGA Debug
title_short Distributed Memory Based FPGA Debug
title_full Distributed Memory Based FPGA Debug
title_fullStr Distributed Memory Based FPGA Debug
title_full_unstemmed Distributed Memory Based FPGA Debug
title_sort distributed memory based fpga debug
publisher BYU ScholarsArchive
publishDate 2020
url https://scholarsarchive.byu.edu/etd/8434
https://scholarsarchive.byu.edu/cgi/viewcontent.cgi?article=9434&context=etd
work_keys_str_mv AT halerobertbenjamin distributedmemorybasedfpgadebug
_version_ 1719481153711243264