⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modified_booth_cla_rtl_group.v

📁 主題 : Low power Modified Booth Multiplier 介紹 : 為了節省乘法器面積、加快速度等等
💻 V
📖 第 1 页 / 共 3 页
字号:
module ppgenerator_DW01_inc_0 ( A, SUM );  input [7:0] A;  output [7:0] SUM;  wire   \carry[7] , \carry[6] , \carry[5] , \carry[4] , \carry[3] ,         \carry[2] ;  ADDHXL U1_1_4 ( .A(A[4]), .B(\carry[4] ), .CO(\carry[5] ), .S(SUM[4]) );  ADDHXL U1_1_5 ( .A(A[5]), .B(\carry[5] ), .CO(\carry[6] ), .S(SUM[5]) );  ADDHXL U1_1_6 ( .A(A[6]), .B(\carry[6] ), .CO(\carry[7] ), .S(SUM[6]) );  ADDHXL U1_1_3 ( .A(A[3]), .B(\carry[3] ), .CO(\carry[4] ), .S(SUM[3]) );  ADDHXL U1_1_1 ( .A(A[1]), .B(A[0]), .CO(\carry[2] ), .S(SUM[1]) );  ADDHXL U1_1_2 ( .A(A[2]), .B(\carry[2] ), .CO(\carry[3] ), .S(SUM[2]) );  CLKINVXL U5 ( .A(A[0]), .Y(SUM[0]) );  XOR2XL U6 ( .A(\carry[7] ), .B(A[7]), .Y(SUM[7]) );endmodulemodule my_CLA_9bits_1 ( sum, cout, x, y, cin );  output [8:0] sum;  input [8:0] x;  input [8:0] y;  input cin;  output cout;  wire   n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16,         n17, n18, n19;  NAND2XL U1 ( .A(y[7]), .B(x[7]), .Y(n19) );  XOR2XL U2 ( .A(cin), .B(n17), .Y(sum[0]) );  XOR2XL U3 ( .A(x[0]), .B(y[0]), .Y(n17) );  XOR2XL U4 ( .A(n15), .B(n16), .Y(sum[1]) );  XNOR2XL U5 ( .A(x[1]), .B(y[1]), .Y(n15) );  AOI22XL U6 ( .A0(y[0]), .A1(x[0]), .B0(n17), .B1(cin), .Y(n16) );  XOR2XL U7 ( .A(n13), .B(n14), .Y(sum[2]) );  XOR2XL U8 ( .A(x[2]), .B(y[2]), .Y(n14) );  XOR2XL U9 ( .A(n11), .B(n12), .Y(sum[3]) );  XNOR2XL U10 ( .A(x[3]), .B(y[3]), .Y(n11) );  AOI22XL U11 ( .A0(y[2]), .A1(x[2]), .B0(n13), .B1(n14), .Y(n12) );  XOR2XL U12 ( .A(n9), .B(n10), .Y(sum[4]) );  XOR2XL U13 ( .A(x[4]), .B(y[4]), .Y(n10) );  XOR2XL U14 ( .A(n7), .B(n8), .Y(sum[5]) );  XNOR2XL U15 ( .A(x[5]), .B(y[5]), .Y(n7) );  AOI22XL U16 ( .A0(y[4]), .A1(x[4]), .B0(n9), .B1(n10), .Y(n8) );  XOR2XL U17 ( .A(n5), .B(n6), .Y(sum[6]) );  XOR2XL U18 ( .A(x[6]), .B(y[6]), .Y(n6) );  XOR2XL U19 ( .A(n3), .B(n4), .Y(sum[7]) );  AOI22XL U20 ( .A0(y[6]), .A1(x[6]), .B0(n5), .B1(n6), .Y(n4) );  XOR2XL U21 ( .A(n1), .B(n2), .Y(sum[8]) );  CLKINVXL U22 ( .A(n18), .Y(n1) );  OAI21XL U23 ( .A0(n4), .A1(n3), .B0(n19), .Y(n18) );  XNOR2XL U24 ( .A(x[8]), .B(y[8]), .Y(n2) );  OAI2BB2X1 U25 ( .B0(n1), .B1(n2), .A0N(y[8]), .A1N(x[8]), .Y(cout) );  OAI21X1 U26 ( .A0(y[7]), .A1(x[7]), .B0(n19), .Y(n3) );  OAI2BB2X1 U27 ( .B0(n8), .B1(n7), .A0N(y[5]), .A1N(x[5]), .Y(n5) );  OAI2BB2X1 U28 ( .B0(n12), .B1(n11), .A0N(y[3]), .A1N(x[3]), .Y(n9) );  OAI2BB2X1 U29 ( .B0(n16), .B1(n15), .A0N(y[1]), .A1N(x[1]), .Y(n13) );endmodulemodule my_mux_3 ( out, xshi, xtwo, zero, xorg, xmul, sel );  output [8:0] out;  input [8:0] xshi;  input [8:0] xtwo;  input [8:0] zero;  input [8:0] xorg;  input [8:0] xmul;  input [2:0] sel;  wire   n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16,         n17, n18, n19, n20, n21, n22, n23, n24, n25, n26, n27, n28, n29, n30,         n31, n32, n33, n34, n35, n36, n37, n38, n39, n40, n41, n42, n43, n44,         n45, n46, n47, n48, n49, n50, n51, n52, n53, n54, n55, n56, n57, n58,         n59, n60, n61, n62, n63, n64, n65, n66, n67, n68, n69, n70, n71, n72,         n73;  NAND2XL U2 ( .A(n68), .B(n69), .Y(out[1]) );  NAND2BXL U3 ( .AN(n73), .B(n45), .Y(n48) );  NAND2BXL U4 ( .AN(n72), .B(n50), .Y(n53) );  CLKINVXL U5 ( .A(n21), .Y(n2) );  AND3XL U6 ( .A(n1), .B(n72), .C(n10), .Y(n14) );  CLKINVXL U7 ( .A(n49), .Y(n23) );  CLKINVXL U8 ( .A(n44), .Y(n11) );  CLKINVXL U9 ( .A(n50), .Y(n1) );  CLKINVXL U10 ( .A(n2), .Y(n3) );  CLKINVXL U11 ( .A(n2), .Y(n4) );  CLKINVXL U12 ( .A(n44), .Y(n5) );  BUFXL U13 ( .A(n36), .Y(n6) );  BUFXL U14 ( .A(n31), .Y(n7) );  CLKINVXL U15 ( .A(n49), .Y(n8) );  CLKINVXL U16 ( .A(n46), .Y(n9) );  CLKINVXL U17 ( .A(n51), .Y(n10) );  CLKINVXL U18 ( .A(n11), .Y(n12) );  CLKINVXL U19 ( .A(n11), .Y(n13) );  CLKINVXL U20 ( .A(n14), .Y(n15) );  CLKINVXL U21 ( .A(n14), .Y(n16) );  NOR2XL U22 ( .A(sel[0]), .B(sel[1]), .Y(n17) );  CLKINVXL U23 ( .A(n17), .Y(n18) );  CLKINVXL U24 ( .A(n17), .Y(n19) );  NAND3XL U25 ( .A(n9), .B(n73), .C(sel[2]), .Y(n20) );  CLKINVXL U26 ( .A(n20), .Y(n21) );  CLKINVXL U27 ( .A(n20), .Y(n22) );  CLKINVXL U28 ( .A(n23), .Y(n24) );  CLKINVXL U29 ( .A(n23), .Y(n25) );  AOI222XL U30 ( .A0(xmul[4]), .A1(n40), .B0(xtwo[4]), .B1(n22), .C0(xshi[4]),         .C1(n37), .Y(n63) );  AOI222XL U31 ( .A0(xmul[2]), .A1(n41), .B0(xtwo[2]), .B1(n4), .C0(xshi[2]),         .C1(n6), .Y(n67) );  AOI222XL U32 ( .A0(xmul[7]), .A1(n5), .B0(xtwo[7]), .B1(n3), .C0(xshi[7]),         .C1(n34), .Y(n57) );  CLKINVXL U33 ( .A(n24), .Y(n26) );  CLKINVXL U34 ( .A(n25), .Y(n29) );  CLKINVXL U35 ( .A(n25), .Y(n27) );  CLKINVXL U36 ( .A(n24), .Y(n28) );  CLKINVXL U37 ( .A(n19), .Y(n30) );  CLKINVXL U38 ( .A(n18), .Y(n33) );  CLKINVXL U39 ( .A(n18), .Y(n31) );  CLKINVXL U40 ( .A(n19), .Y(n32) );  CLKINVXL U41 ( .A(n16), .Y(n34) );  CLKINVXL U42 ( .A(n15), .Y(n37) );  CLKINVXL U43 ( .A(n15), .Y(n35) );  CLKINVXL U44 ( .A(n16), .Y(n36) );  AOI222XL U45 ( .A0(xmul[8]), .A1(n5), .B0(xtwo[8]), .B1(n4), .C0(xshi[8]),         .C1(n36), .Y(n55) );  AOI222XL U46 ( .A0(xmul[1]), .A1(n39), .B0(xtwo[1]), .B1(n42), .C0(xshi[1]),         .C1(n6), .Y(n69) );  AOI222XL U47 ( .A0(xmul[0]), .A1(n41), .B0(xtwo[0]), .B1(n43), .C0(xshi[0]),         .C1(n34), .Y(n71) );  AOI222XL U48 ( .A0(xmul[3]), .A1(n38), .B0(xtwo[3]), .B1(n3), .C0(xshi[3]),         .C1(n35), .Y(n65) );  AOI222XL U49 ( .A0(xmul[6]), .A1(n40), .B0(xtwo[6]), .B1(n42), .C0(xshi[6]),         .C1(n37), .Y(n59) );  AOI222XL U50 ( .A0(xmul[5]), .A1(n38), .B0(xtwo[5]), .B1(n43), .C0(xshi[5]),         .C1(n35), .Y(n61) );  CLKINVXL U51 ( .A(n12), .Y(n38) );  CLKINVXL U52 ( .A(n13), .Y(n41) );  CLKINVXL U53 ( .A(n13), .Y(n39) );  CLKINVXL U54 ( .A(n12), .Y(n40) );  BUFXL U55 ( .A(n21), .Y(n43) );  BUFXL U56 ( .A(n22), .Y(n42) );  CLKINVXL U57 ( .A(n1), .Y(n45) );  CLKINVXL U58 ( .A(sel[0]), .Y(n46) );  NAND2XL U59 ( .A(n46), .B(n47), .Y(n44) );  CLKINVXL U60 ( .A(n48), .Y(n47) );  CLKINVXL U61 ( .A(n10), .Y(n73) );  CLKINVXL U62 ( .A(sel[2]), .Y(n50) );  CLKINVXL U63 ( .A(sel[1]), .Y(n51) );  NAND2XL U64 ( .A(n51), .B(n52), .Y(n49) );  CLKINVXL U65 ( .A(n53), .Y(n52) );  AOI22XL U66 ( .A0(zero[3]), .A1(n30), .B0(n27), .B1(xorg[3]), .Y(n64) );  AOI22XL U67 ( .A0(zero[0]), .A1(n32), .B0(xorg[0]), .B1(n8), .Y(n70) );  AOI22XL U68 ( .A0(zero[4]), .A1(n33), .B0(n29), .B1(xorg[4]), .Y(n62) );  AOI22XL U69 ( .A0(zero[1]), .A1(n7), .B0(n28), .B1(xorg[1]), .Y(n68) );  AOI22XL U70 ( .A0(zero[2]), .A1(n7), .B0(n28), .B1(xorg[2]), .Y(n66) );  AOI22XL U71 ( .A0(zero[6]), .A1(n33), .B0(n26), .B1(xorg[6]), .Y(n58) );  AOI22XL U72 ( .A0(zero[5]), .A1(n30), .B0(n29), .B1(xorg[5]), .Y(n60) );  AOI22XL U73 ( .A0(zero[8]), .A1(n31), .B0(xorg[8]), .B1(n26), .Y(n54) );  CLKINVXL U74 ( .A(n9), .Y(n72) );  AOI22XL U75 ( .A0(zero[7]), .A1(n32), .B0(n8), .B1(xorg[7]), .Y(n56) );  NAND2X1 U76 ( .A(n54), .B(n55), .Y(out[8]) );  NAND2X1 U77 ( .A(n56), .B(n57), .Y(out[7]) );  NAND2X1 U78 ( .A(n58), .B(n59), .Y(out[6]) );  NAND2X1 U79 ( .A(n60), .B(n61), .Y(out[5]) );  NAND2X1 U80 ( .A(n62), .B(n63), .Y(out[4]) );  NAND2X1 U81 ( .A(n64), .B(n65), .Y(out[3]) );  NAND2X1 U82 ( .A(n66), .B(n67), .Y(out[2]) );  NAND2X1 U83 ( .A(n70), .B(n71), .Y(out[0]) );endmodulemodule my_mux_2 ( out, xshi, xtwo, zero, xorg, xmul, sel );  output [8:0] out;  input [8:0] xshi;  input [8:0] xtwo;  input [8:0] zero;  input [8:0] xorg;  input [8:0] xmul;  input [2:0] sel;  wire   n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16,         n17, n18, n19, n20, n21, n22, n23, n24, n25, n26, n27, n28, n29, n30,         n31, n32, n33, n34, n35, n36, n37, n38, n39, n40, n41, n42, n43, n44,         n45, n46, n47, n48, n49, n50, n51, n52, n53, n54, n55, n56, n57, n58,         n59, n60, n61, n62, n63, n64, n65, n66, n67, n68, n69, n70;  NAND2BXL U2 ( .AN(n69), .B(n43), .Y(n46) );  CLKINVXL U3 ( .A(n42), .Y(n22) );  CLKINVXL U4 ( .A(n37), .Y(n13) );  CLKINVXL U5 ( .A(n43), .Y(n1) );  BUFXL U6 ( .A(n49), .Y(n2) );  CLKINVXL U7 ( .A(n37), .Y(n3) );  BUFXL U8 ( .A(n34), .Y(n4) );  BUFXL U9 ( .A(n31), .Y(n5) );  CLKINVXL U10 ( .A(n42), .Y(n6) );  BUFXL U11 ( .A(sel[0]), .Y(n7) );  BUFXL U12 ( .A(sel[0]), .Y(n8) );  OR3XL U13 ( .A(n8), .B(n1), .C(n70), .Y(n37) );  CLKINVXL U14 ( .A(n44), .Y(n9) );  AND3XL U15 ( .A(sel[2]), .B(n69), .C(n9), .Y(n19) );  NOR2XL U16 ( .A(n7), .B(sel[1]), .Y(n10) );  CLKINVXL U17 ( .A(n10), .Y(n11) );  CLKINVXL U18 ( .A(n10), .Y(n12) );  CLKINVXL U19 ( .A(n13), .Y(n14) );  CLKINVXL U20 ( .A(n13), .Y(n15) );  AND3XL U21 ( .A(n8), .B(n70), .C(n1), .Y(n16) );  CLKINVXL U22 ( .A(n16), .Y(n17) );  CLKINVXL U23 ( .A(n16), .Y(n18) );  CLKINVXL U24 ( .A(n9), .Y(n70) );  CLKINVXL U25 ( .A(n19), .Y(n20) );  CLKINVXL U26 ( .A(n19), .Y(n21) );  CLKINVXL U27 ( .A(n22), .Y(n23) );  CLKINVXL U28 ( .A(n22), .Y(n24) );  AOI222XL U29 ( .A0(xmul[4]), .A1(n39), .B0(xtwo[4]), .B1(n35), .C0(xshi[4]),         .C1(n29), .Y(n60) );  AOI222XL U30 ( .A0(xmul[3]), .A1(n38), .B0(xtwo[3]), .B1(n4), .C0(xshi[3]),         .C1(n32), .Y(n62) );  AOI222XL U31 ( .A0(xmul[8]), .A1(n41), .B0(xtwo[8]), .B1(n34), .C0(xshi[8]),         .C1(n5), .Y(n52) );  CLKINVXL U32 ( .A(n23), .Y(n25) );  CLKINVXL U33 ( .A(n24), .Y(n28) );  CLKINVXL U34 ( .A(n24), .Y(n26) );  CLKINVXL U35 ( .A(n23), .Y(n27) );  CLKINVXL U36 ( .A(n21), .Y(n29) );  CLKINVXL U37 ( .A(n20), .Y(n32) );  CLKINVXL U38 ( .A(n20), .Y(n30) );  CLKINVXL U39 ( .A(n21), .Y(n31) );  AOI222XL U40 ( .A0(xmul[0]), .A1(n39), .B0(xtwo[0]), .B1(n33), .C0(xshi[0]),         .C1(n31), .Y(n68) );  AOI222XL U41 ( .A0(xmul[2]), .A1(n40), .B0(xtwo[2]), .B1(n4), .C0(xshi[2]),         .C1(n5), .Y(n64) );  AOI222XL U42 ( .A0(xmul[6]), .A1(n3), .B0(xtwo[6]), .B1(n36), .C0(xshi[6]),         .C1(n29), .Y(n56) );  AOI222XL U43 ( .A0(xmul[5]), .A1(n40), .B0(xtwo[5]), .B1(n36), .C0(xshi[5]),         .C1(n30), .Y(n58) );  AOI222XL U44 ( .A0(xmul[1]), .A1(n41), .B0(xtwo[1]), .B1(n35), .C0(xshi[1]),         .C1(n32), .Y(n66) );  AOI222XL U45 ( .A0(xmul[7]), .A1(n38), .B0(xtwo[7]), .B1(n33), .C0(xshi[7]),         .C1(n30), .Y(n54) );  CLKINVXL U46 ( .A(n18), .Y(n33) );  CLKINVXL U47 ( .A(n17), .Y(n36) );  CLKINVXL U48 ( .A(n18), .Y(n34) );  CLKINVXL U49 ( .A(n17), .Y(n35) );  CLKINVXL U50 ( .A(n14), .Y(n38) );  CLKINVXL U51 ( .A(n15), .Y(n41) );  CLKINVXL U52 ( .A(n15), .Y(n39) );  CLKINVXL U53 ( .A(n14), .Y(n40) );  CLKINVXL U54 ( .A(sel[2]), .Y(n43) );  CLKINVXL U55 ( .A(sel[1]), .Y(n44) );  NAND2XL U56 ( .A(n44), .B(n45), .Y(n42) );  CLKINVXL U57 ( .A(n46), .Y(n45) );  AOI22XL U58 ( .A0(zero[3]), .A1(n49), .B0(n26), .B1(xorg[3]), .Y(n61) );  AOI22XL U59 ( .A0(zero[0]), .A1(n48), .B0(xorg[0]), .B1(n6), .Y(n67) );  AOI22XL U60 ( .A0(zero[5]), .A1(n2), .B0(n28), .B1(xorg[5]), .Y(n57) );  AOI22XL U61 ( .A0(zero[1]), .A1(n47), .B0(n27), .B1(xorg[1]), .Y(n65) );  AOI22XL U62 ( .A0(zero[2]), .A1(n50), .B0(n27), .B1(xorg[2]), .Y(n63) );  AOI22XL U63 ( .A0(zero[7]), .A1(n48), .B0(n25), .B1(xorg[7]), .Y(n53) );  AOI22XL U64 ( .A0(zero[6]), .A1(n47), .B0(n28), .B1(xorg[6]), .Y(n55) );  AOI22XL U65 ( .A0(zero[8]), .A1(n50), .B0(xorg[8]), .B1(n25), .Y(n51) );  CLKINVXL U66 ( .A(n7), .Y(n69) );  CLKINVXL U67 ( .A(n12), .Y(n47) );  CLKINVXL U68 ( .A(n11), .Y(n50) );  CLKINVXL U69 ( .A(n11), .Y(n48) );  CLKINVXL U70 ( .A(n12), .Y(n49) );  AOI22XL U71 ( .A0(zero[4]), .A1(n2), .B0(n6), .B1(xorg[4]), .Y(n59) );  NAND2X1 U72 ( .A(n51), .B(n52), .Y(out[8]) );  NAND2X1 U73 ( .A(n53), .B(n54), .Y(out[7]) );  NAND2X1 U74 ( .A(n55), .B(n56), .Y(out[6]) );  NAND2X1 U75 ( .A(n57), .B(n58), .Y(out[5]) );  NAND2X1 U76 ( .A(n59), .B(n60), .Y(out[4]) );  NAND2X1 U77 ( .A(n61), .B(n62), .Y(out[3]) );  NAND2X1 U78 ( .A(n63), .B(n64), .Y(out[2]) );  NAND2X1 U79 ( .A(n65), .B(n66), .Y(out[1]) );  NAND2X1 U80 ( .A(n67), .B(n68), .Y(out[0]) );endmodulemodule my_mux_1 ( out, xshi, xtwo, zero, xorg, xmul, sel );  output [8:0] out;  input [8:0] xshi;  input [8:0] xtwo;  input [8:0] zero;  input [8:0] xorg;  input [8:0] xmul;  input [2:0] sel;  wire   n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16,         n17, n18, n19, n20, n21, n22, n23, n24, n25, n26, n27, n28, n29, n30,         n31, n32, n33, n34, n35, n36, n37, n38, n39, n40, n41, n42, n43, n44,         n45, n46, n47, n48, n49, n50, n51, n52, n53, n54, n55, n56, n57, n58,         n59, n60, n61, n62, n63, n64, n65, n66, n67, n68, n69, n70, n71;  NAND2XL U2 ( .A(n62), .B(n63), .Y(out[3]) );  NAND2XL U3 ( .A(n58), .B(n59), .Y(out[5]) );  NAND2BXL U4 ( .AN(n70), .B(n48), .Y(n51) );  CLKINVXL U5 ( .A(n42), .Y(n20) );  CLKINVXL U6 ( .A(n47), .Y(n11) );  NAND2XL U7 ( .A(n52), .B(n53), .Y(out[8]) );  CLKINVXL U8 ( .A(n48), .Y(n1) );  CLKINVXL U9 ( .A(n42), .Y(n2) );  OR3XL U10 ( .A(n24), .B(n1), .C(n71), .Y(n42) );  CLKINVXL U11 ( .A(n47), .Y(n3) );  BUFXL U12 ( .A(n35), .Y(n4) );  BUFXL U13 ( .A(n32), .Y(n5) );  BUFXL U14 ( .A(n28), .Y(n6) );  CLKINVXL U15 ( .A(n49), .Y(n7) );  AND3XL U16 ( .A(sel[2]), .B(n70), .C(n7), .Y(n17) );  AND3XL U17 ( .A(n24), .B(n71), .C(n1), .Y(n8) );  CLKINVXL U18 ( .A(n8), .Y(n9) );  CLKINVXL U19 ( .A(n8), .Y(n10) );  CLKINVXL U20 ( .A(n11), .Y(n12) );  CLKINVXL U21 ( .A(n11), .Y(n13) );  NOR2XL U22 ( .A(n25), .B(sel[1]), .Y(n14) );  CLKINVXL U23 ( .A(n14), .Y(n15) );  CLKINVXL U24 ( .A(n14), .Y(n16) );  CLKINVXL U25 ( .A(n17), .Y(n18) );  CLKINVXL U26 ( .A(n17), .Y(n19) );  CLKINVXL U27 ( .A(n20), .Y(n21) );  CLKINVXL U28 ( .A(n20), .Y(n22) );  CLKINVXL U29 ( .A(sel[0]), .Y(n23) );  CLKINVXL U30 ( .A(n23), .Y(n24) );  CLKINVXL U31 ( .A(n23), .Y(n25) );  CLKINVXL U32 ( .A(n10), .Y(n26) );  CLKINVXL U33 ( .A(n9), .Y(n29) );  CLKINVXL U34 ( .A(n10), .Y(n27) );  CLKINVXL U35 ( .A(n9), .Y(n28) );  AOI222XL U36 ( .A0(xmul[6]), .A1(n45), .B0(xtwo[6]), .B1(n29), .C0(xshi[6]),         .C1(n30), .Y(n57) );  AOI222XL U37 ( .A0(xmul[2]), .A1(n43), .B0(xtwo[2]), .B1(n26), .C0(xshi[2]),         .C1(n5), .Y(n65) );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -