Skip to content

Commit f0edcd3

Browse files
committed
Update formatting
1 parent 0475ea0 commit f0edcd3

File tree

1 file changed

+58
-54
lines changed

1 file changed

+58
-54
lines changed

lifo.sv

+58-54
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@ module lifo #( parameter
4747
// "FALSE" - normal fifo mode
4848

4949
DEPTH = 8, // max elements count == DEPTH, DEPTH MUST be power of 2
50-
DEPTH_W = $clog2(DEPTH)+1, // elements counter width, extra bit to store
51-
// "fifo full" state, see cnt[] variable comments
5250

5351
DATA_W = 32 // data field width
5452
)(
@@ -72,76 +70,82 @@ module lifo #( parameter
7270
output logic fail
7371
);
7472

75-
// lifo data
76-
logic [DEPTH-1:0][DATA_W-1:0] data = '0;
73+
// elements counter width, extra bit to store
74+
// "fifo full" state, see cnt[] variable comments
75+
localparam DEPTH_W = $clog2(DEPTH+1);
7776

78-
// data output buffer for normal fifo mode
79-
logic [DATA_W-1:0] data_buf = '0;
8077

81-
// cnt[] vector always holds lifo elements count
82-
// data[cnt[]] points to the first empty lifo slot
83-
// when lifo is full data[cnt[]] points "outside" of data[]
78+
// lifo data
79+
logic [DEPTH-1:0][DATA_W-1:0] data = '0;
8480

85-
// filtered requests
86-
logic w_req_f;
87-
assign w_req_f = w_req && ~full;
81+
// data output buffer for normal fifo mode
82+
logic [DATA_W-1:0] data_buf = '0;
8883

89-
logic r_req_f;
90-
assign r_req_f = r_req && ~empty;
84+
// cnt[] vector always holds lifo elements count
85+
// data[cnt[]] points to the first empty lifo slot
86+
// when lifo is full data[cnt[]] points "outside" of data[]
9187

88+
// filtered requests
89+
logic w_req_f;
90+
assign w_req_f = w_req && ~full;
9291

93-
integer i;
94-
always_ff @(posedge clk) begin
95-
if ( ~nrst ) begin
96-
data <= '0;
97-
cnt[DEPTH_W-1:0] <= '0;
98-
data_buf[DATA_W-1:0] <= '0;
99-
end else begin
100-
unique case ({w_req_f, r_req_f})
101-
2'b00: ; // nothing
92+
logic r_req_f;
93+
assign r_req_f = r_req && ~empty;
10294

103-
2'b01 : begin // reading out
104-
for ( i = (DEPTH-1); i > 0; i-- ) begin
105-
data[i-1] <= data[i];
95+
96+
integer i;
97+
always_ff @(posedge clk) begin
98+
if ( ~nrst ) begin
99+
data <= '0;
100+
cnt[DEPTH_W-1:0] <= '0;
101+
data_buf[DATA_W-1:0] <= '0;
102+
end else begin
103+
unique case ({w_req_f, r_req_f})
104+
2'b00: ; // nothing
105+
106+
2'b01 : begin // reading out
107+
for ( i = (DEPTH-1); i > 0; i-- ) begin
108+
data[i-1] <= data[i];
109+
end
110+
cnt[DEPTH_W-1:0] <= cnt[DEPTH_W-1:0] - 1'b1;
106111
end
107-
cnt[DEPTH_W-1:0] <= cnt[DEPTH_W-1:0] - 1'b1;
108-
end
109112

110-
2'b10 : begin // writing in
111-
data[cnt[DEPTH_W-1:0]] <= w_data[DATA_W-1:0];
112-
cnt[DEPTH_W-1:0] <= cnt[DEPTH_W-1:0] + 1'b1;
113-
end
113+
2'b10 : begin // writing in
114+
data[cnt[DEPTH_W-1:0]] <= w_data[DATA_W-1:0];
115+
cnt[DEPTH_W-1:0] <= cnt[DEPTH_W-1:0] + 1'b1;
116+
end
114117

115-
2'b11 : begin // simultaneously reading and writing
116-
data[cnt[DEPTH_W-1:0]-1] <= w_data[DATA_W-1:0];
117-
// data counter does not change here
118-
end
119-
endcase
118+
2'b11 : begin // simultaneously reading and writing
119+
data[cnt[DEPTH_W-1:0]-1] <= w_data[DATA_W-1:0];
120+
// data counter does not change here
121+
end
122+
endcase
120123

121-
// data buffer works only for normal lifo mode
122-
if( r_req_f ) begin
123-
data_buf[DATA_W-1:0] <= data[0];
124+
// data buffer works only for normal lifo mode
125+
if( r_req_f ) begin
126+
data_buf[DATA_W-1:0] <= data[0];
127+
end
124128
end
125129
end
126-
end
127130

128131

129-
always_comb begin
130-
empty = ( cnt[DEPTH_W-1:0] == '0 );
131-
full = ( cnt[DEPTH_W-1:0] == DEPTH );
132+
always_comb begin
133+
empty = ( cnt[DEPTH_W-1:0] == '0 );
134+
full = ( cnt[DEPTH_W-1:0] == DEPTH );
132135

133-
if( FWFT_MODE == "TRUE" ) begin
134-
if (~empty) begin
135-
r_data[DATA_W-1:0] = data[0]; // first-word fall-through mode
136+
if( FWFT_MODE == "TRUE" ) begin
137+
if (~empty) begin
138+
r_data[DATA_W-1:0] = data[0]; // first-word fall-through mode
139+
end else begin
140+
r_data[DATA_W-1:0] = '0;
141+
end
136142
end else begin
137-
r_data[DATA_W-1:0] = '0;
143+
r_data[DATA_W-1:0] = data_buf[DATA_W-1:0]; // normal mode
138144
end
139-
end else begin
140-
r_data[DATA_W-1:0] = data_buf[DATA_W-1:0]; // normal mode
141-
end
142145

143-
fail = ( empty && r_req ) ||
144-
( full && w_req );
145-
end
146+
fail = ( empty && r_req ) ||
147+
( full && w_req );
148+
end
146149

147150
endmodule
151+

0 commit comments

Comments
 (0)