Methodical ¡Approximate ¡ Hardware ¡Design ¡and ¡Reuse ¡
Amir ¡Yazdanbakhsh ¡Bradley ¡Thwaites ¡ ¡ Jongse ¡Park ¡ ¡ ¡ ¡Hadi ¡Esmaeilzadeh ¡ ¡
¡Georgia ¡InsBtute ¡of ¡Technology ¡
Methodical Approximate Hardware Design and Reuse Amir - - PowerPoint PPT Presentation
Methodical Approximate Hardware Design and Reuse Amir Yazdanbakhsh Bradley Thwaites Jongse Park Hadi Esmaeilzadeh Georgia InsBtute of Technology
¡Georgia ¡InsBtute ¡of ¡Technology ¡
a b c_in (* A *) s c_out w0 w1 w2 w3 x0 x1
module fa(a, b, c_in, c_out, s); input a, b, c_in;
(∗A∗) output s; wire w0, w1, w2, w3; xor x0(w0, a, b); xor x1(s, w0, c_in); and u2(w1, a, b); and u2(w2, a, c_in); and u2(w3, b, c_in);
u4(c_out, w1, w2, w3);
endmodule
(*A*) data_out approx_out (*C*) addr data_in (*C*) approx_in (*C*) wrt_en (*C*) clk DualState Memory
module DualStateMemory(
clk, wrt_en, address, data_in, approx_in, data_out, approx_out);
(∗C∗) input clk; (∗C∗) input wrt_en; (∗C∗) input[N-1:0] address;
input[M-1:0] data_in;
(∗C∗) input approx_in; (∗A∗) output[N-1:0] data_out;
...
endmodule
Full Adder a[0] b[0] c_in z[0] c[0] Full Adder a[1] b[1] z[1] c[1] Full Adder a[2] b[2] (*C*) z[2] c[2] Full Adder a[7] b[7] (*C*) z[7] c_out
Precise Modules Approximate Modules
b1 b2 b3
* * * * + + +
x (*C*) clk b0 (*A*) w1 (*A*) w3 (*A*) y (*C*) y (*A*) w0 (*A*) w2 w4 w5 d0 d1 d2 d3
*
m0 m1 m2 m3 a1 a2 a3
(*C*) rst
Algorithm 1 Backward slicing to find precise wires. Inputs: K: Circuit Θ: Set of precise outputs Ψ: Set of critical wire overrides Y: Set of approximate wires overrides Output: ℜ: Set of precise wires Initialize ℜ / Initialize Q / for each wi 2 (Θ [ Ψ) do enqueue(Q, wi) end for while (Q 6= / 0) do wi dequeue(Q) Φ In K, find input wires of the gate that drives wi for each w j 2 Φ do if (w j / 2 Y and wj / 2 ℜ) then ℜ ℜ [ w j enqueue(Q, wj) end if end for end while
(*A*) y (*C*) y (*A*) w0 (*A*) w1 (*C*) w2 (*A*) y z