📄 m3s090ct.v
字号:
//******************************************************************* ////IMPORTANT NOTICE ////================ ////Copyright Mentor Graphics Corporation 1996 - 1998. All rights reserved. ////This file and associated deliverables are the trade secrets, ////confidential information and copyrighted works of Mentor Graphics ////Corporation and its licensors and are subject to your license agreement ////with Mentor Graphics Corporation. //// ////These deliverables may be used for the purpose of making silicon for one ////IC design only. No further use of these deliverables for the purpose of ////making silicon from an IC design is permitted without the payment of an ////additional license fee. See your license agreement with Mentor Graphics ////for further details. If you have further questions please contact ////Mentor Graphics Customer Support. //// ////This Mentor Graphics core (m320c50eng v1999.010) was extracted on ////workstation hostid 800059c1 Inventra //// Adder Tree Element 1// Copyright Mentor Graphics Corporation and Licensors 1998.// V1.000// m3s090ct.v// M320C50 Adder Tree Element 1// This module provides the 1st level of the adder tree for the M320C50 multiplier.module m3s090ct (QQ, PP);//******************************************************************* ////IMPORTANT NOTICE ////================ ////Copyright Mentor Graphics Corporation 1996 - 1998. All rights reserved. ////This file and associated deliverables are the trade secrets, ////confidential information and copyrighted works of Mentor Graphics ////Corporation and its licensors and are subject to your license agreement ////with Mentor Graphics Corporation. //// ////These deliverables may be used for the purpose of making silicon for one ////IC design only. No further use of these deliverables for the purpose of ////making silicon from an IC design is permitted without the payment of an ////additional license fee. See your license agreement with Mentor Graphics ////for further details. If you have further questions please contact ////Mentor Graphics Customer Support. //// ////This Mentor Graphics core (m320c50eng v1999.010) was extracted on ////workstation hostid 800059c1 Inventra // input [256:0] PP; output [181:0] QQ; reg [181:0] QQ; reg [5:0] Depth; integer l, m, n;// Partial Product adder tree first stagealways @(PP)begin for (l=0;l<31;l=l+1) begin case (l) 0: Depth = 1; 1: Depth = 2; 2: Depth = 3; 3: Depth = 4; 4: Depth = 5; 5: Depth = 6; 6: Depth = 7; 7: Depth = 8; 8: Depth = 9; 9: Depth = 10; 10: Depth = 11; 11: Depth = 12; 12: Depth = 13; 13: Depth = 14; 14: Depth = 15; 15: Depth = 16; 16: Depth = 15; 17: Depth = 14; 18: Depth = 13; 19: Depth = 12; 20: Depth = 11; 21: Depth = 10; 22: Depth = 9; 23: Depth = 8; 24: Depth = 7; 25: Depth = 6; 26: Depth = 5; 27: Depth = 4; 28: Depth = 3; 29: Depth = 2; 30: Depth = 1; default: Depth = 1; endcase case(Depth) 1: begin if (l == 0) begin m = 0 ; n = 0 ; QQ[0] = PP[0]; end else begin QQ[m] = PP[n]; end m = m + 1; n = n + 1; end 2: begin QQ[m] = PP[n] ^ PP[n+1]; QQ[m+1] = PP[n] & PP[n+1]; m = m + 2; n = n + 2; end 3: begin QQ[m] = PP[n] ^ PP[n+1] ^ PP[n+2]; QQ[m+1] = (PP[n] & PP[n+1]) | (PP[n] & PP[n+2]) | (PP[n+1] & PP[n+2]); m = m + 2; n = n + 3; end 4: begin QQ[m] = PP[n] ^ PP[n+1] ^ PP[n+2]; QQ[m+1] = PP[n+3]; QQ[m+2] = (PP[n] & PP[n+1]) | (PP[n] & PP[n+2]) | (PP[n+1] & PP[n+2]); m = m + 3; n = n + 4; end 5: begin QQ[m] = PP[n] ^ PP[n+1] ^ PP[n+2]; QQ[m+1] = PP[n+3] ^ PP[n+4]; QQ[m+2] = (PP[n] & PP[n+1]) | (PP[n] & PP[n+2]) | (PP[n+1] & PP[n+2]); QQ[m+3] = PP[n+3] & PP[n+4]; m = m + 4; n = n + 5; end 6: begin QQ[m] = PP[n] ^ PP[n+1] ^ PP[n+2]; QQ[m+1] = PP[n+3] ^ PP[n+4] ^ PP[n+5]; QQ[m+2] = (PP[n] & PP[n+1]) | (PP[n] & PP[n+2]) | (PP[n+1] & PP[n+2]); QQ[m+3] = (PP[n+3] & PP[n+4]) | (PP[n+3] & PP[n+5]) | (PP[n+4] & PP[n+5]); m = m + 4; n = n + 6; end 7: begin QQ[m] = PP[n] ^ PP[n+1] ^ PP[n+2]; QQ[m+1] = PP[n+3] ^ PP[n+4] ^ PP[n+5]; QQ[m+2] = PP[n+6]; QQ[m+3] = (PP[n] & PP[n+1]) | (PP[n] & PP[n+2]) | (PP[n+1] & PP[n+2]); QQ[m+4] = (PP[n+3] & PP[n+4]) | (PP[n+3] & PP[n+5]) | (PP[n+4] & PP[n+5]); m = m + 5; n = n + 7; end 8: begin QQ[m] = PP[n] ^ PP[n+1] ^ PP[n+2]; QQ[m+1] = PP[n+3] ^ PP[n+4] ^ PP[n+5]; QQ[m+2] = PP[n+6] ^ PP[n+7]; QQ[m+3] = (PP[n] & PP[n+1]) | (PP[n] & PP[n+2]) | (PP[n+1] & PP[n+2]); QQ[m+4] = (PP[n+3] & PP[n+4]) | (PP[n+3] & PP[n+5]) | (PP[n+4] & PP[n+5]); QQ[m+5] = PP[n+6] & PP[n+7]; m = m + 6; n = n + 8; end 9: begin QQ[m] = PP[n] ^ PP[n+1] ^ PP[n+2]; QQ[m+1] = PP[n+3] ^ PP[n+4] ^ PP[n+5]; QQ[m+2] = PP[n+6] ^ PP[n+7] ^ PP[n+8]; QQ[m+3] = (PP[n] & PP[n+1]) | (PP[n] & PP[n+2]) | (PP[n+1] & PP[n+2]); QQ[m+4] = (PP[n+3] & PP[n+4]) | (PP[n+3] & PP[n+5]) | (PP[n+4] & PP[n+5]); QQ[m+5] = (PP[n+6] & PP[n+7]) | (PP[n+6] & PP[n+8]) | (PP[n+7] & PP[n+8]); m = m + 6; n = n + 9; end 10: begin QQ[m] = PP[n] ^ PP[n+1] ^ PP[n+2]; QQ[m+1] = PP[n+3] ^ PP[n+4] ^ PP[n+5]; QQ[m+2] = PP[n+6] ^ PP[n+7] ^ PP[n+8]; QQ[m+3] = PP[n+9]; QQ[m+4] = (PP[n] & PP[n+1]) | (PP[n] & PP[n+2]) | (PP[n+1] & PP[n+2]); QQ[m+5] = (PP[n+3] & PP[n+4]) | (PP[n+3] & PP[n+5]) | (PP[n+4] & PP[n+5]); QQ[m+6] = (PP[n+6] & PP[n+7]) | (PP[n+6] & PP[n+8]) | (PP[n+7] & PP[n+8]); m = m + 7; n = n + 10; end 11: begin QQ[m] = PP[n] ^ PP[n+1] ^ PP[n+2]; QQ[m+1] = PP[n+3] ^ PP[n+4] ^ PP[n+5]; QQ[m+2] = PP[n+6] ^ PP[n+7] ^ PP[n+8]; QQ[m+3] = PP[n+9] ^ PP[n+10]; QQ[m+4] = (PP[n] & PP[n+1]) | (PP[n] & PP[n+2]) | (PP[n+1] & PP[n+2]); QQ[m+5] = (PP[n+3] & PP[n+4]) | (PP[n+3] & PP[n+5]) | (PP[n+4] & PP[n+5]); QQ[m+6] = (PP[n+6] & PP[n+7]) | (PP[n+6] & PP[n+8]) | (PP[n+7] & PP[n+8]); QQ[m+7] = PP[n+9] & PP[n+10]; m = m + 8; n = n + 11; end 12: begin QQ[m] = PP[n] ^ PP[n+1] ^ PP[n+2]; QQ[m+1] = PP[n+3] ^ PP[n+4] ^ PP[n+5]; QQ[m+2] = PP[n+6] ^ PP[n+7] ^ PP[n+8]; QQ[m+3] = PP[n+9] ^ PP[n+10] ^ PP[n+11]; QQ[m+4] = (PP[n] & PP[n+1]) | (PP[n] & PP[n+2]) | (PP[n+1] & PP[n+2]); QQ[m+5] = (PP[n+3] & PP[n+4]) | (PP[n+3] & PP[n+5]) | (PP[n+4] & PP[n+5]); QQ[m+6] = (PP[n+6] & PP[n+7]) | (PP[n+6] & PP[n+8]) | (PP[n+7] & PP[n+8]); QQ[m+7] = (PP[n+9] & PP[n+10]) | (PP[n+9] & PP[n+11]) | (PP[n+10] & PP[n+11]); m = m + 8; n = n + 12; end 13: begin QQ[m] = PP[n] ^ PP[n+1] ^ PP[n+2]; QQ[m+1] = PP[n+3] ^ PP[n+4] ^ PP[n+5]; QQ[m+2] = PP[n+6] ^ PP[n+7] ^ PP[n+8]; QQ[m+3] = PP[n+9] ^ PP[n+10] ^ PP[n+11]; QQ[m+4] = PP[n+12]; QQ[m+5] = (PP[n] & PP[n+1]) | (PP[n] & PP[n+2]) | (PP[n+1] & PP[n+2]); QQ[m+6] = (PP[n+3] & PP[n+4]) | (PP[n+3] & PP[n+5]) | (PP[n+4] & PP[n+5]); QQ[m+7] = (PP[n+6] & PP[n+7]) | (PP[n+6] & PP[n+8]) | (PP[n+7] & PP[n+8]); QQ[m+8] = (PP[n+9] & PP[n+10]) | (PP[n+9] & PP[n+11]) | (PP[n+10] & PP[n+11]); m = m + 9; n = n + 13; end 14: begin QQ[m] = PP[n] ^ PP[n+1] ^ PP[n+2]; QQ[m+1] = PP[n+3] ^ PP[n+4] ^ PP[n+5]; QQ[m+2] = PP[n+6] ^ PP[n+7] ^ PP[n+8]; QQ[m+3] = PP[n+9] ^ PP[n+10] ^ PP[n+11]; QQ[m+4] = PP[n+12] ^ PP[n+13]; QQ[m+5] = (PP[n] & PP[n+1]) | (PP[n] & PP[n+2]) | (PP[n+1] & PP[n+2]); QQ[m+6] = (PP[n+3] & PP[n+4]) | (PP[n+3] & PP[n+5]) | (PP[n+4] & PP[n+5]); QQ[m+7] = (PP[n+6] & PP[n+7]) | (PP[n+6] & PP[n+8]) | (PP[n+7] & PP[n+8]); QQ[m+8] = (PP[n+9] & PP[n+10]) | (PP[n+9] & PP[n+11]) | (PP[n+10] & PP[n+11]); QQ[m+9] = PP[n+12] & PP[n+13]; m = m + 10; n = n + 14; end 15: begin QQ[m] = PP[n] ^ PP[n+1] ^ PP[n+2]; QQ[m+1] = PP[n+3] ^ PP[n+4] ^ PP[n+5]; QQ[m+2] = PP[n+6] ^ PP[n+7] ^ PP[n+8]; QQ[m+3] = PP[n+9] ^ PP[n+10] ^ PP[n+11]; QQ[m+4] = PP[n+12] ^ PP[n+13] ^ PP[n+14]; QQ[m+5] = (PP[n] & PP[n+1]) | (PP[n] & PP[n+2]) | (PP[n+1] & PP[n+2]); QQ[m+6] = (PP[n+3] & PP[n+4]) | (PP[n+3] & PP[n+5]) | (PP[n+4] & PP[n+5]); QQ[m+7] = (PP[n+6] & PP[n+7]) | (PP[n+6] & PP[n+8]) | (PP[n+7] & PP[n+8]); QQ[m+8] = (PP[n+9] & PP[n+10]) | (PP[n+9] & PP[n+11]) | (PP[n+10] & PP[n+11]); QQ[m+9] = (PP[n+12] & PP[n+13]) | (PP[n+12] & PP[n+14]) | (PP[n+13] & PP[n+14]); m = m + 10; n = n + 15; end 16: begin QQ[m] = PP[n] ^ PP[n+1] ^ PP[n+2]; QQ[m+1] = PP[n+3] ^ PP[n+4] ^ PP[n+5]; QQ[m+2] = PP[n+6] ^ PP[n+7] ^ PP[n+8]; QQ[m+3] = PP[n+9] ^ PP[n+10] ^ PP[n+11]; QQ[m+4] = PP[n+12] ^ PP[n+13] ^ PP[n+14]; QQ[m+5] = PP[n+15] ; QQ[m+6] = (PP[n] & PP[n+1]) | (PP[n] & PP[n+2]) | (PP[n+1] & PP[n+2]); QQ[m+7] = (PP[n+3] & PP[n+4]) | (PP[n+3] & PP[n+5]) | (PP[n+4] & PP[n+5]); QQ[m+8] = (PP[n+6] & PP[n+7]) | (PP[n+6] & PP[n+8]) | (PP[n+7] & PP[n+8]); QQ[m+9] = (PP[n+9] & PP[n+10]) | (PP[n+9] & PP[n+11]) | (PP[n+10] & PP[n+11]); QQ[m+10] = (PP[n+12] & PP[n+13]) | (PP[n+12] & PP[n+14]) | (PP[n+13] & PP[n+14]); QQ[m+11] = PP[256] ; // add in NBM bit here m = m + 12; n = n + 16; end default: begin QQ = PP; Depth = 0; m = 0; n = 0; end endcase endendendmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -