Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
module histRGB_fixpt
(rr,
gg,
bb,
nbins,
rhist [0:255],
ghist [0:255],
bhist [0:255]);
for (i=0;i<=255;i=i+1)
assign tmp_9[i] = tmp_8[i][0];
for (i=0;i<=255;i=i+1)
assign ghist[i] = tmp_9[i];
assign tmp_10 = {26'b0, bb};
always @* idx_2 = (tmp_10 * 255.0) + 0.5;
assign tmp_11 = idx_2 > 255.0;
for (i=0;i<=255;i=i+1)
assign y_y_6[i] = 8'sd0;
assign tmp_12 = $rtoi(idx_2);
always @* begin
for(p0y_t_04 = 32'sd0; p0y_t_04 <= 32'sd255; p0y_t_04 = p0y_t_04 + 32'sd1)
begin
y_y_7[p0y_t_04] = y_y_6[p0y_t_04];
end
y_y_7[tmp_12] = 8'sd1;
end
always @* begin
for(p0y_t_05 = 32'sd0; p0y_t_05 <= 32'sd255; p0y_t_05 = p0y_t_05 + 32'sd1)
begin
y_y_8[p0y_t_05] = y_y_6[p0y_t_05];
end
y_y_8[255] = 8'sd1;
end
for (i=0;i<=255;i=i+1)
assign tmp_13[i] = (tmp_11 == 1'b0 ? y_y_7[i] :
y_y_8[i]);
for (i=0;i<=255;i=i+1)
assign tmp_14[i] = tmp_13[i][0];
for (i=0;i<=255;i=i+1)
assign bhist[i] = tmp_14[i];
endmodule // histRGB_fixpt
TESTBENCH:
`timescale 1 ns / 1 ns
module histRGB_fixpt_tb;
reg clk;
reg reset_x;
wire enb;
wire bhist_0_done; // ufix1
wire rdEnb;
wire bhist_0_done_enb; // ufix1
reg [3:0] nbins_addr; // ufix4
wire bhist_0_lastAddr; // ufix1
wire resetn;
reg check4_done; // ufix1
wire ghist_0_done; // ufix1
wire ghist_0_done_enb; // ufix1
wire ghist_0_lastAddr; // ufix1
reg check3_done; // ufix1
wire rhist_0_done; // ufix1
wire rhist_0_done_enb; // ufix1
wire rhist_0_lastAddr; // ufix1
reg check2_done; // ufix1
wire nbins_done; // ufix1
wire nbins_done_enb; // ufix1
wire nbins_active; // ufix1
wire snkDone;
wire snkDonen;
wire tb_enb;
wire ce_out;
wire nbins_enb; // ufix1
wire nbins_lastAddr; // ufix1
reg check1_done; // ufix1
wire [7:0] rawData_rr; // uint8
reg [7:0] holdData_rr; // uint8
wire [6:0] rawData_gg; // ufix7
reg [6:0] holdData_gg; // ufix7
wire [5:0] rawData_bb; // ufix6
reg [5:0] holdData_bb; // ufix6
reg [7:0] rr_offset; // uint8
wire [7:0] rr_1; // uint8
reg [6:0] gg_offset; // ufix7
wire [6:0] gg_1; // ufix7
reg [5:0] bb_offset; // ufix6
wire [5:0] bb_1; // ufix6
wire [8:0] nbins_1; // ufix9
wire rhist [0:255]; // ufix1
wire ghist [0:255]; // ufix1
wire bhist [0:255]; // ufix1
wire [8:0] nbins_expected_1; // ufix9
wire [8:0] nbins_ref; // ufix9
reg nbins_testFailure; // ufix
wire rhist_expected_1 [0:255]; // ufix1
wire rhist_ref [0:255]; // ufix1
reg rhist_testFailure [0:255]; // ufix1
wire ghist_expected_1 [0:255]; // ufix1
wire ghist_ref [0:255]; // ufix1
reg ghist_testFailure [0:255]; // ufix1
wire bhist_expected_1 [0:255]; // ufix1
wire bhist_ref [0:255]; // ufix1
reg bhist_testFailure [0:255]; // ufix1
reg testFailure; // ufix1
reg or_t; // ufix1
assign bhist_0_done_enb = bhist_0_done & rdEnb;
assign bhist_0_lastAddr = nbins_addr >= 4'b1001;
assign bhist_0_done = bhist_0_lastAddr & resetn;
// Delay to allow last sim cycle to complete
always @(posedge clk or posedge reset_x)
begin : checkDone_4
if (reset_x) begin
check4_done <= 0;
end
else begin
if (bhist_0_done_enb) begin
check4_done <= bhist_0_done;
end
end
end
for (i=0;i<=255;i=i+1)
begin
assign rhist_expected_1 [i] = 1'b0;
assign rhist_ref[i] =rhist_expected_1 [i];
testFailure = or_t;
end
always @(posedge clk)
begin : completed_msg
if (snkDone == 1'b1) begin
if (testFailure == 1'b0) begin
$display("**************TEST COMPLETED (PASSED)**************");
end
else begin
$display("**************TEST COMPLETED (FAILED)**************");
end
end
end
endmodule // histRGB_fixpt_tb