<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Verification and Computer Architecture on VCA: Verification and Computer Architecture</title><link>https://vca-epfl.github.io/</link><description>Recent content in Verification and Computer Architecture on VCA: Verification and Computer Architecture</description><generator>Hugo</generator><language>en-us</language><copyright>VCA Lab, EPFL</copyright><lastBuildDate>Tue, 15 Apr 2025 13:03:42 +0200</lastBuildDate><atom:link href="https://vca-epfl.github.io/index.xml" rel="self" type="application/rss+xml"/><item><title>Porting XiangShan to the Xilinx U55C FPGA</title><link>https://vca-epfl.github.io/wiki/xiangshan-fpga/</link><pubDate>Tue, 15 Apr 2025 13:03:42 +0200</pubDate><guid>https://vca-epfl.github.io/wiki/xiangshan-fpga/</guid><description>&lt;p>I recently ported the XiangShan RISC-V CPU core to the Xilinx Alveo U55C FPGA. This post outlines the key steps, practical tips, and workarounds that go beyond the official documentation—especially helpful for those transitioning from ASIC/simulation workflows to FPGA-based development.&lt;/p>
&lt;hr>
&lt;h2 id="getting-started-with-fpgas">Getting Started with FPGAs&lt;/h2>
&lt;p>If you&amp;rsquo;re new to FPGAs (as I was), setting up a complete system can be confusing.&lt;/p>
&lt;h3 id="fpga-basics">FPGA Basics&lt;/h3>
&lt;p>Unlike simulation or ASIC environments, FPGAs require you to manually generate external signals like &lt;code>clock&lt;/code> and &lt;code>reset&lt;/code>. These are mapped to physical pins via XDC constraint files, and you can find U55C-specific examples &lt;a href="https://docs.amd.com/r/en-US/ug1469-alveo-u55c/Design-Flows">in Xilinx&amp;rsquo;s documentation&lt;/a>. Board files also provide crucial clock configuration info.&lt;/p></description></item><item><title>Lean Profiling</title><link>https://vca-epfl.github.io/wiki/lean-profiling/</link><pubDate>Wed, 11 Sep 2024 00:00:00 +0000</pubDate><guid>https://vca-epfl.github.io/wiki/lean-profiling/</guid><description>&lt;p>Lean has good support for profiling tactic scripts, with incrementally more information. There are two different profilers in Lean, a general profiler called &lt;code>profiler&lt;/code> and a newer profiler with more detailed information called &lt;code>trace.profiler&lt;/code>.&lt;/p>
&lt;h2 id="traceprofiler">&lt;code>trace.profiler&lt;/code>&lt;/h2>
&lt;p>First we will cover the more advanced &lt;code>trace.profiler&lt;/code>, which can give an incremental trace of the time taken for each tactic in the tactic script. For example, enabling the profiler using &lt;code>set_option trace.profiler true in&lt;/code> will produce the profiling trace shown below.&lt;/p></description></item><item><title>Contact</title><link>https://vca-epfl.github.io/contact/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vca-epfl.github.io/contact/</guid><description>&lt;p>&lt;a href="https://search.epfl.ch/?filter=unit&amp;amp;q=VCA">Browse the directory&lt;/a>.&lt;/p>
&lt;h3 id="address">Address&lt;/h3>
&lt;iframe width="100%" height="300px" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://plan.epfl.ch/iframe?q=BC%20103&amp;map_zoom=11">&lt;/iframe>

&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>Verification and Computer Architecture Lab
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>EPFL IC IINFCOM VCA
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>BC 103 (Bâtiment BC)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Station 14
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>CH-1015 Lausanne
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>People</title><link>https://vca-epfl.github.io/people/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vca-epfl.github.io/people/</guid><description/></item><item><title>Projects</title><link>https://vca-epfl.github.io/projects/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://vca-epfl.github.io/projects/</guid><description>&lt;p>Our code and artefacts are available on &lt;a href="https://github.com/VCA-EPFL">GitHub&lt;/a>. Here are some of our main projects that involve artifact code.&lt;/p>
&lt;h2 id="graphiti">Graphiti&lt;/h2>
&lt;p>Formally verified graph rewriting for dataflow circuits. Graphiti uses the Lean theorem prover to verify that out-of-order execution transformations in dataflow circuits preserve program semantics. Published at ASPLOS &amp;lsquo;26.&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/VCA-EPFL/graphiti">Source code (Lean)&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="fsa--systolicattention">FSA — SystolicAttention&lt;/h2>
&lt;p>A hardware architecture that fuses FlashAttention within a single systolic array, eliminating off-chip memory traffic for attention computation. The design is implemented in Chisel/Scala with an FPGA prototype.&lt;/p></description></item></channel></rss>