| |
| |
| /* |
| * Copyright (c) 2000 Philips Semiconductors Stefan.Thiede@philips.com |
| * |
| * This source code is free software; you can redistribute it |
| * Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, write to the Free Software |
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
| */ |
| |
| `timescale 1ns / 10ps |
| `celldefine |
| |
| module MULT_8x8_f (P, A, B); |
| |
| parameter |
| NA = 8, |
| NB = 8, |
| NP = 16, |
| PX = 16'bx; |
| |
| input [NA-1:0] A; |
| input [NB-1:0] B; |
| output [NP-1:0] P; |
| |
| reg [NA-1:0] A_sign; |
| reg [NB-1:0] B_sign; |
| reg [NP-1:0] P_sign; |
| reg Sign; |
| |
| wire [NA-1:0] AI; |
| wire [NB-1:0] BI; |
| |
| // SDF constraint: set of buffers to allow the MIPDs annotation |
| buf a0 (AI[0], A[0]); |
| buf a1 (AI[1], A[1]); |
| buf a2 (AI[2], A[2]); |
| buf a3 (AI[3], A[3]); |
| buf a4 (AI[4], A[4]); |
| buf a5 (AI[5], A[5]); |
| buf a6 (AI[6], A[6]); |
| buf a7 (AI[7], A[7]); |
| |
| buf b0 (BI[0], B[0]); |
| buf b1 (BI[1], B[1]); |
| buf b2 (BI[2], B[2]); |
| buf b3 (BI[3], B[3]); |
| buf b4 (BI[4], B[4]); |
| buf b5 (BI[5], B[5]); |
| buf b6 (BI[6], B[6]); |
| buf b7 (BI[7], B[7]); |
| |
| reg change_in; |
| wire change_out; |
| |
| initial change_in = 0; |
| |
| buf #(0.01) bc (change_out, change_in); |
| |
| wire [NP-1:0] PI; |
| |
| // SDF constraint: P_sign cannot be used to drive directly buffers |
| assign PI = P_sign; |
| |
| // SDF constraint: set of buffers to allow the output acceleration |
| buf p0 (P[0], PI[0]); |
| buf p1 (P[1], PI[1]); |
| buf p2 (P[2], PI[2]); |
| buf p3 (P[3], PI[3]); |
| buf p4 (P[4], PI[4]); |
| buf p5 (P[5], PI[5]); |
| buf p6 (P[6], PI[6]); |
| buf p7 (P[7], PI[7]); |
| buf p8 (P[8], PI[8]); |
| buf p9 (P[9], PI[9]); |
| buf p10 (P[10], PI[10]); |
| buf p11 (P[11], PI[11]); |
| buf p12 (P[12], PI[12]); |
| buf p13 (P[13], PI[13]); |
| buf p14 (P[14], PI[14]); |
| buf p15 (P[15], PI[15]); |
| |
| specify |
| specparam |
| th = 0.940, |
| td = 4.930; |
| |
| // Pin-to-pin delay |
| (A, B *> P) = (td, td, th, 0, th, 0); |
| endspecify |
| |
| |
| endmodule |
| `endcelldefine |