输出8路转4路后和原来的8路进行比较;
.m输出二进制数,方便配寄存器; 将z_dsp综合成网表用于z芯片的在环验证 v04-script add hex output v04-z_dsp's netlist used to z_chip_top
This commit is contained in:
parent
596b32273b
commit
5433610d48
File diff suppressed because it is too large
Load Diff
|
@ -1,3 +1,4 @@
|
|||
|
||||
//+FHDR--------------------------------------------------------------------------------------------------------
|
||||
// Company:
|
||||
//-----------------------------------------------------------------------------------------------------------------
|
||||
|
@ -31,14 +32,16 @@
|
|||
// Other:
|
||||
//-FHDR--------------------------------------------------------------------------------------------------------
|
||||
|
||||
module z_dsp_wrapper
|
||||
module z_dsp
|
||||
(
|
||||
input clk,
|
||||
input rstn,
|
||||
input en, //enable
|
||||
input [1:0] dac_mode_sel, //2'b00:NRZ mode;2'b01:Double data mode;
|
||||
//2'b10:Double Double data mode;2'b11:reserve;
|
||||
input tc_bypass,
|
||||
input [1:0] intp_mode, //2'b00:x1;2'b01:x2,'b10:x4;other:reserve;
|
||||
input vldi,
|
||||
input signed [15:0] din_re,
|
||||
input signed [15:0] din_im,
|
||||
input signed [31:0] a0_re, //a0's real part
|
||||
|
@ -69,10 +72,6 @@ output signed [15:0] dout0,
|
|||
output signed [15:0] dout1,
|
||||
output signed [15:0] dout2,
|
||||
output signed [15:0] dout3,
|
||||
output signed [15:0] dout4,
|
||||
output signed [15:0] dout5,
|
||||
output signed [15:0] dout6,
|
||||
output signed [15:0] dout7,
|
||||
output vldo,
|
||||
output saturation_0,
|
||||
output saturation_1,
|
||||
|
@ -80,6 +79,6 @@ output saturation_2,
|
|||
output saturation_3,
|
||||
output saturation_4,
|
||||
output saturation_5
|
||||
);
|
||||
);
|
||||
|
||||
endmodule
|
||||
endmodule
|
14141
edfFile/z_dsp_en.edf
14141
edfFile/z_dsp_en.edf
File diff suppressed because it is too large
Load Diff
20
rtl/z_dsp.v
20
rtl/z_dsp.v
|
@ -70,7 +70,15 @@ input signed [31:0] b5_im,
|
|||
output signed [15:0] dout0,
|
||||
output signed [15:0] dout1,
|
||||
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 saturation_0,
|
||||
output saturation_1,
|
||||
|
@ -203,4 +211,14 @@ assign dout1 = doutf_1;
|
|||
assign dout2 = doutf_2;
|
||||
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
|
||||
|
|
|
@ -69,7 +69,15 @@ input signed [31:0] b5_im,
|
|||
output signed [15:0] dout0,
|
||||
output signed [15:0] dout1,
|
||||
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 saturation_0,
|
||||
output saturation_1,
|
||||
|
@ -128,6 +136,14 @@ z_dsp inst_z_dsp
|
|||
.dout1 (dout1 ),
|
||||
.dout2 (dout2 ),
|
||||
.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 ),
|
||||
.saturation_0 (saturation_0 ),
|
||||
.saturation_1 (saturation_1 ),
|
||||
|
|
|
@ -17,9 +17,9 @@ cs_wave(2:4:4*N) = dout1;
|
|||
cs_wave(3:4:4*N) = dout2;
|
||||
cs_wave(4:4:4*N) = dout3;
|
||||
|
||||
A = [0.025 0.015 0.0002 0.2];
|
||||
tau = -[1/250 1/650 1/1600 1/20];
|
||||
fs = 0.375e9;
|
||||
A = [0.025 0.015 0.0002 0];
|
||||
tau = -[1/250 1/650 1/1600 0];
|
||||
fs = 2e9;
|
||||
|
||||
coef_len = length(A);
|
||||
for i = 1:coef_len
|
||||
|
@ -36,11 +36,11 @@ wave_float_8 = interp1(1:wave_float_len,wave_float,1:1/8:(wave_float_len+1-1/8),
|
|||
[cs_wave_A,wave_float_8_A,Delay] = alignsignals(cs_wave,wave_float_8);
|
||||
N = min(length(wave_float_8_A),length(cs_wave_A));
|
||||
figure(2)
|
||||
diff_plot(wave_float_8_A(18:end), cs_wave_A(82:end),'float','verdi',[0 N]);
|
||||
diff_plot(wave_float_8_A(90:end), cs_wave_A(154:end),'float','verdi',[0 N]);
|
||||
%%
|
||||
[wave_float_A,wave_verdi_A,Delay] = alignsignals(wave_float,wave_verdi);
|
||||
N = min(length(wave_float_A),length(wave_verdi_A));
|
||||
figure(1)
|
||||
figure(1)git sh
|
||||
diff_plot(wave_float_A, wave_verdi_A,'float','verdi',[0 N]);
|
||||
%%
|
||||
signalAnalyzer(wave_float,wave_verdi,'SampleRate',1);
|
||||
|
@ -48,6 +48,13 @@ signalAnalyzer(wave_float,wave_verdi,'SampleRate',1);
|
|||
fprintf("a is %.10f\n",a)
|
||||
fprintf("b is %.10f\n",b)
|
||||
%%
|
||||
fprintf("a of 32 bit %d\n",round(a*2^31));
|
||||
fprintf("b of 32 bit %d\n",round(b*2^31));
|
||||
a_fix = round(a*2^31);
|
||||
b_fix = round(b*2^31);
|
||||
|
||||
dec2hex(a_fix,8)
|
||||
dec2hex(b_fix,8)
|
||||
|
||||
% dec2bin(a_fix,32)
|
||||
% dec2bin(b_fix,32)
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
../rtl/diff.v
|
||||
../rtl/DW_mult_pipe.v
|
||||
//../rtl/z_data_mux.v
|
||||
|
||||
../rtl/nco/coef_c.v
|
||||
../rtl/nco/pipe_acc_48bit.v
|
||||
../rtl/nco/pipe_add_48bit.v
|
||||
|
@ -10,7 +9,7 @@
|
|||
../rtl/nco/sin_op.v
|
||||
../rtl/nco/ph2amp.v
|
||||
../rtl/nco/cos_op.v
|
||||
../rtl/lsdacif.v
|
||||
|
||||
../rtl/TailCorr_top.v
|
||||
../rtl/z_dsp.v
|
||||
../rtl/z_dsp_en_Test.v
|
||||
|
@ -18,5 +17,6 @@
|
|||
../rtl/DW02_mult.v
|
||||
../rtl/DW_iir_dc.v
|
||||
../tb/clk_gen.v
|
||||
../tb/DW_mult_pipe.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