You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -494,11 +491,10 @@ \subsection{Bit Heap Data Structure}
494
491
\paragraph{Evaluation of Bit Heaps}
495
492
Since a bit heap represents a summation of weighted bits,
496
493
we can evaluate the bit heap $h$ under a bit environment $\sigma$ to obtain a concrete value, written as $\csem{h}$.
497
-
This is defined by adding up all the bits across all the columns, with bits at column $k$ being evaluated by $\csem{\cdot}$ and weighted by $2^k$. Moreover, since we work with fixed-size bitvectors, all our computations happen modulo $2^w$.
498
-
494
+
This is defined by adding up all the bits across all the columns, with bits at column $k$ being evaluated by $\csem{\cdot}$ and weighted by $2^k$. Moreover, since we work with fixed-size bitvectors, all our computations happen modulo $2^w$:
The \Arith variables are assigned a value by a variable environment $\rho : \mathbb{N} \to\mathtt{BitVec}\ w$, mapping each variable to a $w$-bit word,
@@ -693,8 +688,7 @@ \subsection{Compression Algorithms For Fast Arithmetic}
693
688
In this section, we prove the correctness of compression algorithms, starting from a single compressor step.
694
689
695
690
Concretely, any compression algorithm produces a sequence of compression steps.
696
-
Formally, we define a \Step as either a half adder or a full adder, which takes the column index and the bits it consumes as arguments.
697
-
691
+
Formally, we define a \Step as either a half adder or a full adder, which takes the column index and the bits it consumes as arguments:
698
692
\[
699
693
\begin{array}{r@{\;}c@{\;}l@{\qquad}l}
700
694
\Step\ni s &::=& \HA(k,c,c) \mid\FA(k,c,c,c) &
@@ -739,8 +733,7 @@ \subsection{Compression Algorithms For Fast Arithmetic}
739
733
Having established that each individual step preserves the value of the heap, we now consider
740
734
sequences of steps.
741
735
Formally, a chain of compressors is an ordered list of compression steps, where each step is a half or full adder,
742
-
and is either empty or a step followed by a chain.
743
-
736
+
and is either empty or a step followed by a chain:
744
737
\[
745
738
\begin{array}{r@{\;}c@{\;}l@{\qquad}l}
746
739
\Chain\ni S &::=& [\,] \mid s :: S &
@@ -863,7 +856,7 @@ \section{Results}
863
856
with the gap being stable for other bit widths as well ($1.21\times$ / $1.12\times$ at 16 bits, $1.21\times$ / $1.10\times$ at 8 bits).
864
857
865
858
The existing gap in circuit quality is not an inherent limitation of our workflow.
866
-
CIRCT's datapath engine applies certain optimizations we have not yet implemented, notably Booth encoding and sign-extension optimizations. \sam{cite?}
859
+
CIRCT's datapath engine applies certain optimizations we have not yet implemented, notably Booth encoding and sign-extension optimizations\cite{application_specific_arithmetic}. \sam{cite?}
867
860
This is also revealed on our performance on signed benchmarks.
868
861
869
862
\autoref{tab:verify-time-16} reports how both of flows perform on total verification time.
@@ -872,7 +865,6 @@ \section{Results}
872
865
873
866
The results show that we are able to verify circuits that the standard flow cannot verify\osman{funny thing, we are not faster on the ones that the standard flow can already verify},
874
867
with out flow verifying 11 more circuits than the standard flow, we show the effectiveness of our approach on verification.
875
-
The results show that we are able to verify 11 circuits that the standard flow cannot verify at 16-bits.
0 commit comments