Skip to content

Commit

Permalink
cleanup index parameters: row code length define the number of column…
Browse files Browse the repository at this point in the history
…s, col code code length define the number of rows. Fix handshake output buffer error
  • Loading branch information
dshekhalev committed Nov 16, 2023
1 parent 9b31f4a commit 6bb0555
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 37 deletions.
27 changes: 16 additions & 11 deletions rtl/btc/enc/btc_enc_ctrl.sv
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
logic btc_enc_ctrl__ocol_enc_eof ;
logic btc_enc_ctrl__ocol_enc_val ;
//
logic btc_enc_ctrl__iwrite_busy ;
logic btc_enc_ctrl__owrite ;
logic btc_enc_ctrl__owfull ;
Expand Down Expand Up @@ -73,6 +74,7 @@
.ocol_enc_eof ( btc_enc_ctrl__ocol_enc_eof ) ,
.ocol_enc_val ( btc_enc_ctrl__ocol_enc_val ) ,
//
.iwrite_busy ( btc_enc_ctrl__iwrite_busy ) ,
.owrite ( btc_enc_ctrl__owrite ) ,
.owfull ( btc_enc_ctrl__owfull )
);
Expand All @@ -88,6 +90,7 @@
assign btc_enc_ctrl__iwbuf_empty = '0 ;
assign btc_enc_ctrl__irow_enc_busy = '0 ;
assign btc_enc_ctrl__icol_enc_busy = '0 ;
assign btc_enc_ctrl__iwrite_busy = '0 ;
Expand Down Expand Up @@ -134,6 +137,7 @@ module btc_enc_ctrl
ocol_enc_eof ,
ocol_enc_val ,
//
iwrite_busy ,
owrite ,
owfull
);
Expand Down Expand Up @@ -172,6 +176,7 @@ module btc_enc_ctrl
output logic ocol_enc_eof ;
output logic ocol_enc_val ;
//
input logic iwrite_busy ;
output logic owrite ;
output logic owfull ;

Expand All @@ -180,7 +185,7 @@ module btc_enc_ctrl
//------------------------------------------------------------------------------------------------------

localparam int cLOG2_DAT_W = $clog2(pDAT_W);
localparam int cLOG2_USED_COL_MAX = cLOG2_COL_MAX - cLOG2_DAT_W; // rows store in pDAT_W memory
localparam int cLOG2_USED_ROW_MAX = cLOG2_ROW_MAX - cLOG2_DAT_W; // rows store in pDAT_W memory

//------------------------------------------------------------------------------------------------------
//
Expand All @@ -202,23 +207,23 @@ module btc_enc_ctrl
cDONE_STATE
} state /* synthesis syn_encoding = "sequential", fsm_encoding = "sequential" */;

logic [cLOG2_ROW_MAX-1 : 0] col_data_length_m2;
logic [cLOG2_ROW_MAX-1 : 0] col_code_length_m2;
logic [cLOG2_COL_MAX-1 : 0] col_data_length_m2;
logic [cLOG2_COL_MAX-1 : 0] col_code_length_m2;

struct packed {
logic zero;
logic data_done;
logic code_done;
logic [cLOG2_ROW_MAX-1 : 0] value;
logic [cLOG2_COL_MAX-1 : 0] value;
} row_idx;

logic [cLOG2_USED_COL_MAX : 0] row_length; // + 1 bit for 2^maximum(N);
logic [cLOG2_USED_COL_MAX-1 : 0] row_length_m2;
logic [cLOG2_USED_ROW_MAX : 0] row_length; // + 1 bit for 2^maximum(N);
logic [cLOG2_USED_ROW_MAX-1 : 0] row_length_m2;

struct packed {
logic zero;
logic done;
logic [cLOG2_USED_COL_MAX-1 : 0] value;
logic [cLOG2_USED_ROW_MAX-1 : 0] value;
} col_idx;

//------------------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -247,12 +252,12 @@ module btc_enc_ctrl
//
cDO_WRITE_STATE : state <= write_done ? cDONE_STATE : cDO_WRITE_STATE;
//
cDONE_STATE : state <= cWAIT_STATE;
cDONE_STATE : state <= !iwrite_busy ? cWAIT_STATE : cDONE_STATE;
endcase
end
end

assign orempty = (state == cDONE_STATE);
assign orempty = (state == cDO_WRITE_STATE) & write_done;

//------------------------------------------------------------------------------------------------------
// FSM counters
Expand Down Expand Up @@ -336,8 +341,8 @@ module btc_enc_ctrl
// output mapping
//------------------------------------------------------------------------------------------------------

assign obuf_addr[0 +: cLOG2_USED_COL_MAX] = col_idx.value;
assign obuf_addr[cLOG2_USED_COL_MAX +: cLOG2_ROW_MAX] = row_idx.value;
assign obuf_addr[0 +: cLOG2_USED_ROW_MAX] = col_idx.value;
assign obuf_addr[cLOG2_USED_ROW_MAX +: cLOG2_COL_MAX] = row_idx.value;

assign orow_mode = (state == cDO_ROW_STATE) | (state == cWAIT_ROW_STATE);

Expand Down
31 changes: 17 additions & 14 deletions rtl/btc/enc/btc_enc_engine.sv
Original file line number Diff line number Diff line change
Expand Up @@ -177,23 +177,24 @@ module btc_enc_engine

//
// ctrl
logic [cADDR_W-1 : 0] ctrl__obuf_addr ;
logic [cADDR_W-1 : 0] ctrl__obuf_addr ;
//
logic ctrl__orow_mode ;
logic ctrl__orow_mode ;
//
logic ctrl__irow_enc_busy;
logic ctrl__orow_enc_sop ;
logic ctrl__orow_enc_eop ;
logic ctrl__orow_enc_val ;
logic ctrl__irow_enc_busy ;
logic ctrl__orow_enc_sop ;
logic ctrl__orow_enc_eop ;
logic ctrl__orow_enc_val ;
//
logic ctrl__icol_enc_busy;
logic ctrl__ocol_enc_sop ;
logic ctrl__ocol_enc_eop ;
logic ctrl__ocol_enc_eof ;
logic ctrl__ocol_enc_val ;
logic ctrl__icol_enc_busy ;
logic ctrl__ocol_enc_sop ;
logic ctrl__ocol_enc_eop ;
logic ctrl__ocol_enc_eof ;
logic ctrl__ocol_enc_val ;
//
logic ctrl__owrite ;
logic ctrl__owfull ;
logic ctrl__iwrite_busy ;
logic ctrl__owrite ;
logic ctrl__owfull ;

//
// 1 row code, bitwidth = cDATW
Expand Down Expand Up @@ -267,12 +268,14 @@ module btc_enc_engine
.ocol_enc_eof ( ctrl__ocol_enc_eof ) ,
.ocol_enc_val ( ctrl__ocol_enc_val ) ,
//
.iwrite_busy ( ctrl__iwrite_busy ) ,
.owrite ( ctrl__owrite ) ,
.owfull ( ctrl__owfull )
);

assign ctrl__irow_enc_busy = row_code__oval;
assign ctrl__icol_enc_busy = col_code__oval;
assign ctrl__iwrite_busy = owrite;

//------------------------------------------------------------------------------------------------------
// address/controls align line
Expand Down Expand Up @@ -316,7 +319,7 @@ module btc_enc_engine
end

//------------------------------------------------------------------------------------------------------
// row encoder pDAT_W width
// row encoder cDAT_W width
//------------------------------------------------------------------------------------------------------

btc_enc_row_code
Expand Down
12 changes: 6 additions & 6 deletions rtl/btc/enc/btc_enc_sink.sv
Original file line number Diff line number Diff line change
Expand Up @@ -161,18 +161,18 @@ module btc_enc_sink
cDO_STATE
} state;

logic [cLOG2_ROW_MAX-1 : 0] col_length_m2;
logic [cLOG2_COL_MAX-1 : 0] col_length_m2;

struct packed {
logic done;
logic [cLOG2_ROW_MAX-1 : 0] value;
logic [cLOG2_COL_MAX-1 : 0] value;
} row_idx;

logic [cLOG2_COL_MAX-1 : 0] row_length_m2;
logic [cLOG2_ROW_MAX-1 : 0] row_length_m2;

struct packed {
logic done;
logic [cLOG2_COL_MAX-1 : 0] value;
logic [cLOG2_ROW_MAX-1 : 0] value;
} col_idx;

logic [2 : 0] val;
Expand Down Expand Up @@ -227,8 +227,8 @@ module btc_enc_sink

assign oread = 1'b1;

assign oraddr[0 +: cLOG2_COL_MAX] = col_idx.value;
assign oraddr[cLOG2_COL_MAX +: cLOG2_ROW_MAX] = row_idx.value;
assign oraddr[0 +: cLOG2_ROW_MAX] = col_idx.value;
assign oraddr[cLOG2_ROW_MAX +: cLOG2_COL_MAX] = row_idx.value;

//------------------------------------------------------------------------------------------------------
// output mapping
Expand Down
12 changes: 6 additions & 6 deletions rtl/btc/enc/btc_enc_source.sv
Original file line number Diff line number Diff line change
Expand Up @@ -155,18 +155,18 @@ module btc_enc_source
//
//------------------------------------------------------------------------------------------------------

logic [cLOG2_ROW_MAX-1 : 0] col_length_m2;
logic [cLOG2_COL_MAX-1 : 0] col_length_m2;

struct packed {
logic done;
logic [cLOG2_ROW_MAX-1 : 0] value;
logic [cLOG2_COL_MAX-1 : 0] value;
} row_idx;

logic [cLOG2_COL_MAX-1 : 0] row_length_m2;
logic [cLOG2_ROW_MAX-1 : 0] row_length_m2;

struct packed {
logic done;
logic [cLOG2_COL_MAX-1 : 0] value;
logic [cLOG2_ROW_MAX-1 : 0] value;
} col_idx;

//------------------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -208,8 +208,8 @@ module btc_enc_source
end // iclkena
end // iclk

assign owaddr[0 +: cLOG2_COL_MAX] = col_idx.value;
assign owaddr[cLOG2_COL_MAX +: cLOG2_ROW_MAX] = row_idx.value;
assign owaddr[0 +: cLOG2_ROW_MAX] = col_idx.value;
assign owaddr[cLOG2_ROW_MAX +: cLOG2_COL_MAX] = row_idx.value;

//------------------------------------------------------------------------------------------------------
//
Expand Down

0 comments on commit 6bb0555

Please sign in to comment.