v04-Test enable for 8pin and 4pin together
This commit is contained in:
		
							parent
							
								
									c00527b128
								
							
						
					
					
						commit
						bcfd586b53
					
				
							
								
								
									
										14141
									
								
								edfFile/z_dsp_en.edf
								
								
								
								
							
							
						
						
									
										14141
									
								
								edfFile/z_dsp_en.edf
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										18
									
								
								rtl/z_dsp.v
								
								
								
								
							
							
						
						
									
										18
									
								
								rtl/z_dsp.v
								
								
								
								
							|  | @ -71,6 +71,14 @@ output signed [15:0]	dout0, | ||||||
| output signed [15:0]	dout1,	 | output signed [15:0]	dout1,	 | ||||||
| output signed [15:0]	dout2,	 | output signed [15:0]	dout2,	 | ||||||
| output signed [15:0]	dout3,	 | output signed [15:0]	dout3,	 | ||||||
|  | output signed [15:0]	doutNI_0, | ||||||
|  | output signed [15:0]	doutNI_1,	 | ||||||
|  | output signed [15:0]	doutNI_2,	 | ||||||
|  | output signed [15:0]	doutNI_3, | ||||||
|  | output signed [15:0]	doutNI_4, | ||||||
|  | output signed [15:0]	doutNI_5,	 | ||||||
|  | output signed [15:0]	doutNI_6,	 | ||||||
|  | output signed [15:0]	doutNI_7,	 | ||||||
| output		        vldo, | output		        vldo, | ||||||
| output 			saturation_0, | output 			saturation_0, | ||||||
| output 			saturation_1, | output 			saturation_1, | ||||||
|  | @ -203,4 +211,14 @@ assign    dout1  =  doutf_1; | ||||||
| assign    dout2  =  doutf_2; | assign    dout2  =  doutf_2; | ||||||
| assign    dout3  =  doutf_3; | assign    dout3  =  doutf_3; | ||||||
| 
 | 
 | ||||||
|  | assign	  doutNI_0 = dout_0;  | ||||||
|  | assign	  doutNI_1 = dout_1; | ||||||
|  | assign	  doutNI_2 = dout_2; | ||||||
|  | assign	  doutNI_3 = dout_3; | ||||||
|  | assign	  doutNI_4 = dout_4; | ||||||
|  | assign	  doutNI_5 = dout_5; | ||||||
|  | assign	  doutNI_6 = dout_6; | ||||||
|  | assign	  doutNI_7 = dout_7; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| endmodule | endmodule | ||||||
|  |  | ||||||
|  | @ -70,6 +70,14 @@ output signed [15:0]	dout0, | ||||||
| output signed [15:0]	dout1,	 | output signed [15:0]	dout1,	 | ||||||
| output signed [15:0]	dout2,	 | output signed [15:0]	dout2,	 | ||||||
| output signed [15:0]	dout3,	 | output signed [15:0]	dout3,	 | ||||||
|  | output signed [15:0]	doutNI_0, | ||||||
|  | output signed [15:0]	doutNI_1,	 | ||||||
|  | output signed [15:0]	doutNI_2,	 | ||||||
|  | output signed [15:0]	doutNI_3, | ||||||
|  | output signed [15:0]	doutNI_4, | ||||||
|  | output signed [15:0]	doutNI_5,	 | ||||||
|  | output signed [15:0]	doutNI_6,	 | ||||||
|  | output signed [15:0]	doutNI_7,	 | ||||||
| output		        vldo, | output		        vldo, | ||||||
| output 			saturation_0, | output 			saturation_0, | ||||||
| output 			saturation_1, | output 			saturation_1, | ||||||
|  | @ -128,6 +136,14 @@ z_dsp	inst_z_dsp | ||||||
| 		        .dout1			(dout1                  ), | 		        .dout1			(dout1                  ), | ||||||
| 		        .dout2			(dout2                  ), | 		        .dout2			(dout2                  ), | ||||||
| 		        .dout3			(dout3                  ), | 		        .dout3			(dout3                  ), | ||||||
|  | 		        .doutNI_0		(doutNI_0               ), | ||||||
|  | 		        .doutNI_1		(doutNI_1               ), | ||||||
|  | 		        .doutNI_2		(doutNI_2               ), | ||||||
|  | 		        .doutNI_3		(doutNI_3               ), | ||||||
|  | 		        .doutNI_4		(doutNI_4               ), | ||||||
|  | 		        .doutNI_5		(doutNI_5               ), | ||||||
|  | 		        .doutNI_6		(doutNI_6               ), | ||||||
|  | 		        .doutNI_7		(doutNI_7               ), | ||||||
| 		        .vldo			(vldo                   ), | 		        .vldo			(vldo                   ), | ||||||
| 		        .saturation_0		(saturation_0           ), | 		        .saturation_0		(saturation_0           ), | ||||||
| 		        .saturation_1		(saturation_1           ), | 		        .saturation_1		(saturation_1           ), | ||||||
|  |  | ||||||
|  | @ -1,6 +1,5 @@ | ||||||
| ../rtl/diff.v | ../rtl/diff.v | ||||||
| ../rtl/DW_mult_pipe.v | 
 | ||||||
| //../rtl/z_data_mux.v |  | ||||||
| ../rtl/nco/coef_c.v | ../rtl/nco/coef_c.v | ||||||
| ../rtl/nco/pipe_acc_48bit.v | ../rtl/nco/pipe_acc_48bit.v | ||||||
| ../rtl/nco/pipe_add_48bit.v | ../rtl/nco/pipe_add_48bit.v | ||||||
|  | @ -10,7 +9,7 @@ | ||||||
| ../rtl/nco/sin_op.v | ../rtl/nco/sin_op.v | ||||||
| ../rtl/nco/ph2amp.v | ../rtl/nco/ph2amp.v | ||||||
| ../rtl/nco/cos_op.v | ../rtl/nco/cos_op.v | ||||||
| ../rtl/lsdacif.v | 
 | ||||||
| ../rtl/TailCorr_top.v | ../rtl/TailCorr_top.v | ||||||
| ../rtl/z_dsp.v | ../rtl/z_dsp.v | ||||||
| ../rtl/z_dsp_en_Test.v | ../rtl/z_dsp_en_Test.v | ||||||
|  | @ -18,5 +17,6 @@ | ||||||
| ../rtl/DW02_mult.v | ../rtl/DW02_mult.v | ||||||
| ../rtl/DW_iir_dc.v | ../rtl/DW_iir_dc.v | ||||||
| ../tb/clk_gen.v | ../tb/clk_gen.v | ||||||
|  | ../tb/DW_mult_pipe.v | ||||||
| ../tb/tb_z_dsp.v | ../tb/tb_z_dsp.v | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,357 @@ | ||||||
|  | //////////////////////////////////////////////////////////////////////////////// | ||||||
|  | // | ||||||
|  | //       This confidential and proprietary software may be used only | ||||||
|  | //     as authorized by a licensing agreement from Synopsys Inc. | ||||||
|  | //     In the event of publication, the following notice is applicable: | ||||||
|  | // | ||||||
|  | //                    (C) COPYRIGHT 2002 - 2018 SYNOPSYS INC. | ||||||
|  | //                           ALL RIGHTS RESERVED | ||||||
|  | // | ||||||
|  | //       The entire notice above must be reproduced on all authorized | ||||||
|  | //     copies. | ||||||
|  | // | ||||||
|  | // AUTHOR:    Rajeev Huralikoppi         Feb 15, 2002 | ||||||
|  | // | ||||||
|  | // VERSION:   Verilog Simulation Architecture | ||||||
|  | // | ||||||
|  | // DesignWare_version: 4e25d03d | ||||||
|  | // DesignWare_release: O-2018.06-DWBB_201806.3 | ||||||
|  | // | ||||||
|  | //////////////////////////////////////////////////////////////////////////////// | ||||||
|  | //----------------------------------------------------------------------------- | ||||||
|  | // ABSTRACT:   An n stage pipelined multipler simulation model  | ||||||
|  | // | ||||||
|  | //      Parameters      Valid Values    Description | ||||||
|  | //      ==========      =========       ===========   | ||||||
|  | //      a_width         >= 1            default: none | ||||||
|  | //                                      Word length of a | ||||||
|  | // | ||||||
|  | //      b_width         >= 1            default: none | ||||||
|  | //                                      Word length of b | ||||||
|  | // | ||||||
|  | //      num_stages      >= 2            default: 2 | ||||||
|  | //                                      Number of pipelined stages | ||||||
|  | // | ||||||
|  | //      stall_mode      0 or 1          default: 1 | ||||||
|  | //                                      Stall mode | ||||||
|  | //                                        0 => non-stallable | ||||||
|  | //                                        1 => stallable | ||||||
|  | // | ||||||
|  | //      rst_mode        0 to 2          default: 1 | ||||||
|  | //                                      Reset mode | ||||||
|  | //                                        0 => no reset | ||||||
|  | //                                        1 => asynchronous reset | ||||||
|  | //                                        2 => synchronous reset | ||||||
|  | // | ||||||
|  | //      op_iso_mode     0 to 4         default: 0 | ||||||
|  | //                                     Type of operand isolation | ||||||
|  | //                                       If 'stall_mode' is '0', this parameter is ignored and no isolation is applied | ||||||
|  | //                                       0 => Follow intent defined by Power Compiler user setting | ||||||
|  | //                                       1 => no operand isolation | ||||||
|  | //                                       2 => 'and' gate operand isolaton | ||||||
|  | //                                       3 => 'or' gate operand isolation | ||||||
|  | //                                       4 => preferred isolation style: 'and' | ||||||
|  | // | ||||||
|  | // | ||||||
|  | //      Input Ports     Size            Description | ||||||
|  | //      ===========     ====            ============  | ||||||
|  | //      clk             1               Clock  | ||||||
|  | //      rst_n           1               Reset, active low | ||||||
|  | //      en              1               Register enable, active high | ||||||
|  | //      tc              1               2's complement control | ||||||
|  | //      a               a_width         Multiplier | ||||||
|  | //      b               b_width         Multiplicand | ||||||
|  | //       | ||||||
|  | //      product         a_width+b_width Product (a*b) | ||||||
|  | // | ||||||
|  | // MODIFIED: | ||||||
|  | //              RJK  05/14/15   Updated model to work with less propagated 'X's | ||||||
|  | //                              so as to be more friendly with VCS-NLP | ||||||
|  | // | ||||||
|  | //              RJK  05/28/13   Updated documentation in comments to properly | ||||||
|  | //                              describe the "en" input (STAR 9000627580) | ||||||
|  | // | ||||||
|  | //              DLL  02/01/08   Enhanced abstract and added "op_iso_mode" parameter | ||||||
|  | //                              and related code. | ||||||
|  | //            | ||||||
|  | //              DLL  11/14/05   Changed legality checking of 'num_stages' | ||||||
|  | //                              parameter along with its abstract "Valid Values" | ||||||
|  | // | ||||||
|  | // | ||||||
|  | //----------------------------------------------------------------------------- | ||||||
|  | 
 | ||||||
|  | module DW_mult_pipe (clk,rst_n,en,tc,a,b,product); | ||||||
|  |     | ||||||
|  |    parameter integer a_width = 2; | ||||||
|  |    parameter integer b_width = 2; | ||||||
|  |    parameter integer num_stages = 2; | ||||||
|  |    parameter integer stall_mode = 1; | ||||||
|  |    parameter integer rst_mode = 1; | ||||||
|  |    parameter integer op_iso_mode = 0; | ||||||
|  | 
 | ||||||
|  |     | ||||||
|  |    input clk; | ||||||
|  |    input rst_n; | ||||||
|  |    input [a_width-1 : 0] a; | ||||||
|  |    input [b_width-1 : 0] b; | ||||||
|  |    input tc; | ||||||
|  |    input en; | ||||||
|  |     | ||||||
|  |    output [a_width+b_width-1: 0] product; | ||||||
|  | 
 | ||||||
|  |    reg [a_width-1 : 0]  a_reg  [0 : num_stages-2]; | ||||||
|  |    reg [b_width-1 : 0]  b_reg  [0 : num_stages-2]; | ||||||
|  |    reg                  tc_reg [0 : num_stages-2]; | ||||||
|  | 
 | ||||||
|  |   // synopsys translate_off | ||||||
|  |   //--------------------------------------------------------------------------- | ||||||
|  |   // Behavioral model | ||||||
|  |   //---------------------------------------------------------------------------    | ||||||
|  |     | ||||||
|  | generate | ||||||
|  |   if (rst_mode == 0) begin : GEN_RSM_EQ_0 | ||||||
|  | 
 | ||||||
|  |     if (stall_mode == 0) begin : GEN_RM0_SM0 | ||||||
|  |       always @(posedge clk) begin: rm0_sm0_pipe_reg_PROC | ||||||
|  | 	integer i; | ||||||
|  | 
 | ||||||
|  | 	for(i= 0; i < num_stages-1; i=i+1) begin  | ||||||
|  | 	   if (i == 0) begin | ||||||
|  | 	      a_reg[0]  <= a; | ||||||
|  | 	      b_reg[0]  <= b; | ||||||
|  | 	      tc_reg[0] <= tc; | ||||||
|  | 	   end else begin | ||||||
|  | 	      a_reg[i]  <= a_reg[i-1]; | ||||||
|  | 	      b_reg[i]  <= b_reg[i-1]; | ||||||
|  | 	      tc_reg[i] <= tc_reg[i-1]; | ||||||
|  | 	   end | ||||||
|  | 	end	  // for (i= 0; i < num_stages-1; i++) | ||||||
|  |       end // block: rm0_pipe_reg_PROC | ||||||
|  |     end else begin : GEN_RM0_SM1 | ||||||
|  |       always @(posedge clk) begin: rm0_sm1_pipe_reg_PROC | ||||||
|  | 	integer i; | ||||||
|  | 
 | ||||||
|  | 	for(i= 0; i < num_stages-1; i=i+1) begin  | ||||||
|  | 	   if (i == 0) begin | ||||||
|  | 	      a_reg[0]  <= (en == 1'b0)? a_reg[0] : ((en == 1'b1)? a : {a_width{1'bx}}); | ||||||
|  | 	      b_reg[0]  <= (en == 1'b0)? b_reg[0] : ((en == 1'b1)? b : {b_width{1'bx}}); | ||||||
|  | 	      tc_reg[0] <= (en == 1'b0)? tc_reg[0]: ((en == 1'b1)? tc: 1'bx); | ||||||
|  | 	   end else begin | ||||||
|  | 	      a_reg[i]  <= (en == 1'b0)? a_reg[i] : ((en == 1'b1)? a_reg[i-1] : {a_width{1'bx}}); | ||||||
|  | 	      b_reg[i]  <= (en == 1'b0)? b_reg[i] : ((en == 1'b1)? b_reg[i-1] : {b_width{1'bx}}); | ||||||
|  | 	      tc_reg[i] <= (en == 1'b0)? tc_reg[i]: ((en == 1'b1)? tc_reg[i-1]: 1'bx); | ||||||
|  | 	   end | ||||||
|  |         end | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |   end else if (rst_mode == 1) begin : GEN_RM_EQ_1 | ||||||
|  | 
 | ||||||
|  |     if (stall_mode == 0) begin : GEN_RM1_SM0 | ||||||
|  |       always @(posedge clk or negedge rst_n) begin: rm1_pipe_reg_PROC | ||||||
|  | 	integer i; | ||||||
|  | 	  | ||||||
|  | 	if (rst_n == 1'b0) begin | ||||||
|  | 	  for (i= 0; i < num_stages-1; i=i+1) begin | ||||||
|  | 	    a_reg[i]  <= {a_width{1'b0}}; | ||||||
|  | 	    b_reg[i]  <= {b_width{1'b0}}; | ||||||
|  | 	    tc_reg[i] <= 1'b0; | ||||||
|  | 	  end // for (i= 0; i < num_stages-1; i++) | ||||||
|  | 	end else if  (rst_n == 1'b1) begin | ||||||
|  | 	  for(i= 0; i < num_stages-1; i=i+1) begin  | ||||||
|  | 	     if (i == 0) begin | ||||||
|  | 		a_reg[0]  <= a; | ||||||
|  | 		b_reg[0]  <= b; | ||||||
|  | 		tc_reg[0] <= tc; | ||||||
|  | 	     end else begin | ||||||
|  | 		a_reg[i]  <= a_reg[i-1]; | ||||||
|  | 		b_reg[i]  <= b_reg[i-1]; | ||||||
|  | 		tc_reg[i] <= tc_reg[i-1]; | ||||||
|  | 	     end | ||||||
|  | 	  end	  // for (i= 0; i < num_stages-1; i++) | ||||||
|  | 	end else begin // rst_n not 1'b0 and not 1'b1 | ||||||
|  | 	  for (i= 0; i < num_stages-1; i=i+1) begin | ||||||
|  | 	    a_reg[i]  <= {a_width{1'bx}}; | ||||||
|  | 	    b_reg[i]  <= {b_width{1'bx}}; | ||||||
|  | 	    tc_reg[i] <= 1'bx; | ||||||
|  | 	  end // for (i= 0; i < num_stages-1; i++) | ||||||
|  | 	end | ||||||
|  |       end // block: rm1_pipe_reg_PROC | ||||||
|  |     end else begin : GEN_RM1_SM1 | ||||||
|  |       always @(posedge clk or negedge rst_n) begin: rm1_pipe_reg_PROC | ||||||
|  | 	integer i; | ||||||
|  | 	  | ||||||
|  | 	if (rst_n == 1'b0) begin | ||||||
|  | 	  for (i= 0; i < num_stages-1; i=i+1) begin | ||||||
|  | 	    a_reg[i]  <= {a_width{1'b0}}; | ||||||
|  | 	    b_reg[i]  <= {b_width{1'b0}}; | ||||||
|  | 	    tc_reg[i] <= 1'b0; | ||||||
|  | 	  end // for (i= 0; i < num_stages-1; i++) | ||||||
|  | 	end else if  (rst_n == 1'b1) begin | ||||||
|  | 	  for(i= 0; i < num_stages-1; i=i+1) begin  | ||||||
|  | 	    if (i == 0) begin | ||||||
|  | 	      a_reg[0]  <= (en == 1'b0)? a_reg[0] : ((en == 1'b1)? a : {a_width{1'bx}}); | ||||||
|  | 	      b_reg[0]  <= (en == 1'b0)? b_reg[0] : ((en == 1'b1)? b : {b_width{1'bx}}); | ||||||
|  | 	      tc_reg[0] <= (en == 1'b0)? tc_reg[0]: ((en == 1'b1)? tc: 1'bx); | ||||||
|  | 	    end else begin | ||||||
|  | 	      a_reg[i]  <= (en == 1'b0)? a_reg[i] : ((en == 1'b1)? a_reg[i-1] : {a_width{1'bx}}); | ||||||
|  | 	      b_reg[i]  <= (en == 1'b0)? b_reg[i] : ((en == 1'b1)? b_reg[i-1] : {b_width{1'bx}}); | ||||||
|  | 	      tc_reg[i] <= (en == 1'b0)? tc_reg[i]: ((en == 1'b1)? tc_reg[i-1]: 1'bx); | ||||||
|  | 	    end | ||||||
|  | 	  end	  // for (i= 0; i < num_stages-1; i++) | ||||||
|  | 	end else begin // rst_n not 1'b0 and not 1'b1 | ||||||
|  | 	  for (i= 0; i < num_stages-1; i=i+1) begin | ||||||
|  | 	    a_reg[i]  <= {a_width{1'bx}}; | ||||||
|  | 	    b_reg[i]  <= {b_width{1'bx}}; | ||||||
|  | 	    tc_reg[i] <= 1'bx; | ||||||
|  | 	  end // for (i= 0; i < num_stages-1; i++) | ||||||
|  | 	end | ||||||
|  |       end // block: rm1_pipe_reg_PROC | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |   end else begin : GEN_RM_GT_1 | ||||||
|  | 
 | ||||||
|  |     if (stall_mode == 0) begin : GEN_RM2_SM0 | ||||||
|  |       always @(posedge clk) begin: rm2_pipe_reg_PROC | ||||||
|  | 	integer i; | ||||||
|  | 	  | ||||||
|  | 	if (rst_n == 1'b0) begin | ||||||
|  | 	  for (i= 0; i < num_stages-1; i=i+1) begin | ||||||
|  | 	    a_reg[i]  <= {a_width{1'b0}}; | ||||||
|  | 	    b_reg[i]  <= {b_width{1'b0}}; | ||||||
|  | 	    tc_reg[i] <= 1'b0; | ||||||
|  | 	  end // for (i= 0; i < num_stages-1; i++) | ||||||
|  | 	end else if  (rst_n == 1'b1) begin | ||||||
|  | 	  for(i= 0; i < num_stages-1; i=i+1) begin  | ||||||
|  | 	     if (i == 0) begin | ||||||
|  | 		a_reg[0]  <= a; | ||||||
|  | 		b_reg[0]  <= b; | ||||||
|  | 		tc_reg[0] <= tc; | ||||||
|  | 	     end else begin | ||||||
|  | 		a_reg[i]  <= a_reg[i-1]; | ||||||
|  | 		b_reg[i]  <= b_reg[i-1]; | ||||||
|  | 		tc_reg[i] <= tc_reg[i-1]; | ||||||
|  | 	     end | ||||||
|  | 	  end	  // for (i= 0; i < num_stages-1; i++) | ||||||
|  | 	end else begin // rst_n not 1'b0 and not 1'b1 | ||||||
|  | 	  for (i= 0; i < num_stages-1; i=i+1) begin | ||||||
|  | 	    a_reg[i]  <= {a_width{1'bx}}; | ||||||
|  | 	    b_reg[i]  <= {b_width{1'bx}}; | ||||||
|  | 	    tc_reg[i] <= 1'bx; | ||||||
|  | 	  end // for (i= 0; i < num_stages-1; i++) | ||||||
|  | 	end | ||||||
|  |       end // block: rm2_pipe_reg_PROC | ||||||
|  |     end else begin : GEN_RM2_SM1 | ||||||
|  |       always @(posedge clk) begin: rm2_pipe_reg_PROC | ||||||
|  | 	integer i; | ||||||
|  | 	  | ||||||
|  | 	if (rst_n == 1'b0) begin | ||||||
|  | 	  for (i= 0; i < num_stages-1; i=i+1) begin | ||||||
|  | 	    a_reg[i]  <= {a_width{1'b0}}; | ||||||
|  | 	    b_reg[i]  <= {b_width{1'b0}}; | ||||||
|  | 	    tc_reg[i] <= 1'b0; | ||||||
|  | 	  end // for (i= 0; i < num_stages-1; i++) | ||||||
|  | 	end else if  (rst_n == 1'b1) begin | ||||||
|  | 	  for(i= 0; i < num_stages-1; i=i+1) begin  | ||||||
|  | 	    if (i == 0) begin | ||||||
|  | 	      a_reg[0]  <= (en == 1'b0)? a_reg[0] : ((en == 1'b1)? a : {a_width{1'bx}}); | ||||||
|  | 	      b_reg[0]  <= (en == 1'b0)? b_reg[0] : ((en == 1'b1)? b : {b_width{1'bx}}); | ||||||
|  | 	      tc_reg[0] <= (en == 1'b0)? tc_reg[0]: ((en == 1'b1)? tc: 1'bx); | ||||||
|  | 	    end else begin | ||||||
|  | 	      a_reg[i]  <= (en == 1'b0)? a_reg[i] : ((en == 1'b1)? a_reg[i-1] : {a_width{1'bx}}); | ||||||
|  | 	      b_reg[i]  <= (en == 1'b0)? b_reg[i] : ((en == 1'b1)? b_reg[i-1] : {b_width{1'bx}}); | ||||||
|  | 	      tc_reg[i] <= (en == 1'b0)? tc_reg[i]: ((en == 1'b1)? tc_reg[i-1]: 1'bx); | ||||||
|  | 	    end | ||||||
|  | 	  end	  // for (i= 0; i < num_stages-1; i++) | ||||||
|  | 	end else begin // rst_n not 1'b0 and not 1'b1 | ||||||
|  | 	  for (i= 0; i < num_stages-1; i=i+1) begin | ||||||
|  | 	    a_reg[i]  <= {a_width{1'bx}}; | ||||||
|  | 	    b_reg[i]  <= {b_width{1'bx}}; | ||||||
|  | 	    tc_reg[i] <= 1'bx; | ||||||
|  | 	  end // for (i= 0; i < num_stages-1; i++) | ||||||
|  | 	end | ||||||
|  |       end // block: rm2_pipe_reg_PROC | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |   end | ||||||
|  | endgenerate | ||||||
|  |     | ||||||
|  |    DW02_mult #(a_width, b_width) | ||||||
|  |       U1 (.A(a_reg[num_stages-2]), | ||||||
|  | 	  .B(b_reg[num_stages-2]), | ||||||
|  | 	  .TC(tc_reg[num_stages-2]), | ||||||
|  | 	  .PRODUCT(product)); | ||||||
|  |  //--------------------------------------------------------------------------- | ||||||
|  |   // Parameter legality check and initializations | ||||||
|  |   //--------------------------------------------------------------------------- | ||||||
|  |    | ||||||
|  |   | ||||||
|  |   initial begin : parameter_check | ||||||
|  |     integer param_err_flg; | ||||||
|  | 
 | ||||||
|  |     param_err_flg = 0; | ||||||
|  |      | ||||||
|  |      | ||||||
|  |     if (a_width < 1) begin | ||||||
|  |       param_err_flg = 1; | ||||||
|  |       $display( | ||||||
|  | 	"ERROR: %m :\n  Invalid value (%d) for parameter a_width (lower bound: 1)", | ||||||
|  | 	a_width ); | ||||||
|  |     end | ||||||
|  |      | ||||||
|  |     if (b_width < 1) begin | ||||||
|  |       param_err_flg = 1; | ||||||
|  |       $display( | ||||||
|  | 	"ERROR: %m :\n  Invalid value (%d) for parameter b_width (lower bound: 1)", | ||||||
|  | 	b_width ); | ||||||
|  |     end | ||||||
|  |      | ||||||
|  |     if (num_stages < 2) begin | ||||||
|  |       param_err_flg = 1; | ||||||
|  |       $display( | ||||||
|  | 	"ERROR: %m :\n  Invalid value (%d) for parameter num_stages (lower bound: 2)", | ||||||
|  | 	num_stages ); | ||||||
|  |     end    | ||||||
|  |      | ||||||
|  |     if ( (stall_mode < 0) || (stall_mode > 1) ) begin | ||||||
|  |       param_err_flg = 1; | ||||||
|  |       $display( | ||||||
|  | 	"ERROR: %m :\n  Invalid value (%d) for parameter stall_mode (legal range: 0 to 1)", | ||||||
|  | 	stall_mode ); | ||||||
|  |     end    | ||||||
|  |      | ||||||
|  |     if ( (rst_mode < 0) || (rst_mode > 2) ) begin | ||||||
|  |       param_err_flg = 1; | ||||||
|  |       $display( | ||||||
|  | 	"ERROR: %m :\n  Invalid value (%d) for parameter rst_mode (legal range: 0 to 2)", | ||||||
|  | 	rst_mode ); | ||||||
|  |     end | ||||||
|  |      | ||||||
|  |     if ( (op_iso_mode < 0) || (op_iso_mode > 4) ) begin | ||||||
|  |       param_err_flg = 1; | ||||||
|  |       $display( | ||||||
|  | 	"ERROR: %m :\n  Invalid value (%d) for parameter op_iso_mode (legal range: 0 to 4)", | ||||||
|  | 	op_iso_mode ); | ||||||
|  |     end | ||||||
|  |    | ||||||
|  |     if ( param_err_flg == 1) begin | ||||||
|  |       $display( | ||||||
|  |         "%m :\n  Simulation aborted due to invalid parameter value(s)"); | ||||||
|  |       $finish; | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |   end // parameter_check  | ||||||
|  | 
 | ||||||
|  |   | ||||||
|  |   //--------------------------------------------------------------------------- | ||||||
|  |   // Report unknown clock inputs | ||||||
|  |   //--------------------------------------------------------------------------- | ||||||
|  |    | ||||||
|  |   always @ (clk) begin : clk_monitor  | ||||||
|  |     if ( (clk !== 1'b0) && (clk !== 1'b1) && ($time > 0) ) | ||||||
|  |       $display( "WARNING: %m :\n  at time = %t, detected unknown value, %b, on clk input.", | ||||||
|  |                 $time, clk ); | ||||||
|  |     end // clk_monitor  | ||||||
|  |      | ||||||
|  |   // synopsys translate_on    | ||||||
|  | endmodule // | ||||||
		Loading…
	
		Reference in New Issue