CLKs per bit added
diff --git a/verilog/dv/FPU_Bfloat/FPU_Bfloat.c b/verilog/dv/FPU_Bfloat/FPU_Bfloat.c index 7a575db..b9035ba 100644 --- a/verilog/dv/FPU_Bfloat/FPU_Bfloat.c +++ b/verilog/dv/FPU_Bfloat/FPU_Bfloat.c
@@ -65,8 +65,10 @@ // Configure LA probes as inputs to the cpu put zero // Configure LA probes as outputs from the cpu put one - reg_la0_oenb = reg_la0_iena = 0x00000000; // configuring as output + reg_la0_oenb = reg_la0_iena = 0xFFFF0000; // CLK per bit + reg_la1_oenb = reg_la1_iena = 0x00000000; // CLK per bit reg_la2_oenb = reg_la2_iena = 0x00000002; // 65 bit as input to user proj and output from cpu for reset + reg_la0_data = 0x015C0000; // CLKs per bit reg_la2_data = 0x00000000; // reset reg_la2_data = 0x00000002; reg_la2_oenb = reg_la2_iena = 0x00000000; // 64 anf 65 bit as input to user proj and output from cpu
diff --git a/verilog/dv/FPU_Bfloat/FPU_Bfloat_tb.v b/verilog/dv/FPU_Bfloat/FPU_Bfloat_tb.v index d6a7970..b8c7622 100644 --- a/verilog/dv/FPU_Bfloat/FPU_Bfloat_tb.v +++ b/verilog/dv/FPU_Bfloat/FPU_Bfloat_tb.v
@@ -74,7 +74,7 @@ wait(mprj_io_0 == 16'hC178); */ // Observe Output pins [23:8] for Fsign and I2F - + /* wait(mprj_io_0 == 16'h449A); wait(mprj_io_0 == 16'h3042); wait(mprj_io_0 == 16'h491E); @@ -90,7 +90,7 @@ wait(mprj_io_0 == 16'h475D); wait(mprj_io_0 == 16'h4641); wait(mprj_io_0 == 16'h475D); - + */ // Observe Output pins [23:8] for FClass and F2I /* wait(mprj_io_0 == 16'h04d0); @@ -125,16 +125,16 @@ wait(mprj_io_0 == 16'hBCF0); */ // Observe Output pins [23:8] for FMUL - /* - wait(mprj_io_0 == 16'h60C2); - wait(mprj_io_0 == 16'h30A7); - wait(mprj_io_0 == 16'h67FF); - wait(mprj_io_0 == 16'h78DF); - wait(mprj_io_0 == 16'h7C00); - wait(mprj_io_0 == 16'h5124); - wait(mprj_io_0 == 16'h6058); + + wait(mprj_io_0 == 16'h5D44); + wait(mprj_io_0 == 16'h2D29); + wait(mprj_io_0 == 16'h63ED); + wait(mprj_io_0 == 16'h7508); + wait(mprj_io_0 == 16'h79BA); + wait(mprj_io_0 == 16'h4DA1); + wait(mprj_io_0 == 16'h5C80); wait(mprj_io_0 == 16'h0000); - */ + $display("MPRJ-IO state = %h", mprj_io[23:8]); `ifdef GL
diff --git a/verilog/rtl/FPU/FPU_FSM_TOP.v b/verilog/rtl/FPU/FPU_FSM_TOP.v index b2f55b8..8095aac 100644 --- a/verilog/rtl/FPU/FPU_FSM_TOP.v +++ b/verilog/rtl/FPU/FPU_FSM_TOP.v
@@ -62,6 +62,7 @@ // FPU FSM input clk, input rst_l, + input [15:0] CLKS_PER_BIT, output [15:0] FPU_hp_result // FPU FSM @@ -148,7 +149,7 @@ .i_Clock(clk), .rst_ni(rst_l), .i_Rx_Serial(r_Rx_Serial), - .CLKS_PER_BIT(16'd348), + .CLKS_PER_BIT(CLKS_PER_BIT), .o_Rx_DV(o_Rx_DV), .o_Rx_Byte(o_Rx_Byte) );
diff --git a/verilog/rtl/user_proj_example.v b/verilog/rtl/user_proj_example.v index 49cc795..4e8077a 100644 --- a/verilog/rtl/user_proj_example.v +++ b/verilog/rtl/user_proj_example.v
@@ -73,6 +73,7 @@ wire rst; wire rx_i; wire [15:0] FPU_hp_result; + wire [15:0] CLKS_PER_BIT; wire [`MPRJ_IO_PADS-1:0] io_in; wire [`MPRJ_IO_PADS-1:0] io_out; @@ -91,14 +92,14 @@ assign irq = 3'b000; // Unused // Ouptut at LA bits [31:16] - assign la_data_out[15:0] = 16'h0000; - assign la_data_out[31:16] = (&la_oenb[31:16]) ? FPU_hp_result : 16'h0000; - assign la_data_out[127:32] = {(127-BITS){1'b0}}; + assign la_data_out[31:0] = 32'h00000000; + assign la_data_out[47:32] = (&la_oenb[47:32]) ? FPU_hp_result : 16'h0000; + assign la_data_out[127:48] = {79{1'b0}}; // Assuming LA probes [65:64] are for controlling the count clk & reset assign clk = (~la_oenb[64]) ? la_data_in[64] : wb_clk_i; assign rst = (~la_oenb[65]) ? la_data_in[65] : ~wb_rst_i; - + assign CLKS_PER_BIT = (la_oenb[31:16] == 16'h0000) ? la_data_in[31:16] : 16'd348; // Initiation of TOP Module FPU_FSM_TOP FPU_Bfloat16_Precision_Top ( @@ -109,6 +110,7 @@ .clk(clk), .rst_l(rst), .r_Rx_Serial(rx_i), + .CLKS_PER_BIT(CLKS_PER_BIT), .FPU_hp_result(FPU_hp_result) );