reset networks optimization
This commit is contained in:
@@ -32,10 +32,13 @@ module VX_bypass_buffer #(
|
||||
end
|
||||
if (valid_in && ~ready_out) begin
|
||||
assert(!buffer_valid);
|
||||
buffer <= data_in;
|
||||
buffer_valid <= 1;
|
||||
end
|
||||
end
|
||||
|
||||
if (valid_in && ~ready_out) begin
|
||||
buffer <= data_in;
|
||||
end
|
||||
end
|
||||
|
||||
assign ready_in = ready_out || !buffer_valid;
|
||||
|
||||
@@ -52,10 +52,6 @@ module VX_cam_buffer #(
|
||||
full_r <= 1'b0;
|
||||
write_addr_r <= ADDRW'(1'b0);
|
||||
end else begin
|
||||
if (acquire_slot) begin
|
||||
assert(1 == free_slots[write_addr]) else $display("%t: inused slot at port %d", $time, write_addr);
|
||||
entries[write_addr] <= write_data;
|
||||
end
|
||||
for (integer i = 0; i < CPORTS; i++) begin
|
||||
if (release_slot[i]) begin
|
||||
assert(0 == free_slots[release_addr[i]]) else $display("%t: freed slot at port %d", $time, release_addr[i]);
|
||||
@@ -65,6 +61,11 @@ module VX_cam_buffer #(
|
||||
write_addr_r <= free_index;
|
||||
full_r <= ~free_valid;
|
||||
end
|
||||
|
||||
if (acquire_slot) begin
|
||||
assert(1 == free_slots[write_addr]) else $display("%t: inused slot at port %d", $time, write_addr);
|
||||
entries[write_addr] <= write_data;
|
||||
end
|
||||
end
|
||||
|
||||
for (genvar i = 0; i < RPORTS; i++) begin
|
||||
|
||||
@@ -42,7 +42,6 @@ module VX_index_queue #(
|
||||
valid <= 0;
|
||||
end else begin
|
||||
if (enqueue) begin
|
||||
entries[wr_a] <= write_data;
|
||||
valid[wr_a] <= 1;
|
||||
wr_ptr <= wr_ptr + 1;
|
||||
end
|
||||
@@ -53,6 +52,10 @@ module VX_index_queue #(
|
||||
valid[read_addr] <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
if (enqueue) begin
|
||||
entries[wr_a] <= write_data;
|
||||
end
|
||||
end
|
||||
|
||||
assign write_addr = wr_a;
|
||||
|
||||
@@ -77,6 +77,7 @@ module VX_scope #(
|
||||
read_delta <= 0;
|
||||
data_valid <= 0;
|
||||
timestamp <= 0;
|
||||
start_time <= 0;
|
||||
end else begin
|
||||
|
||||
timestamp <= timestamp + 1;
|
||||
@@ -177,6 +178,20 @@ module VX_scope #(
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if (recording) begin
|
||||
if (UPDW_ENABLE) begin
|
||||
if (delta_flush
|
||||
|| changed
|
||||
|| (trigger_id != prev_trigger_id)) begin
|
||||
delta_store[waddr] <= delta;
|
||||
data_store[waddr] <= data_in;
|
||||
end
|
||||
end else begin
|
||||
delta_store[waddr] <= 0;
|
||||
data_store[waddr] <= data_in;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
always @(*) begin
|
||||
|
||||
@@ -58,32 +58,32 @@ module VX_serial_div #(
|
||||
if (reset) begin
|
||||
cntr <= 0;
|
||||
is_busy <= 0;
|
||||
end
|
||||
else begin
|
||||
end else begin
|
||||
if (push) begin
|
||||
for (integer i = 0; i < LANES; ++i) begin
|
||||
working[i] <= {{WIDTHD{1'b0}}, numer_qual[i], 1'b0};
|
||||
denom_r[i] <= denom_qual[i];
|
||||
inv_quot[i] <= (denom[i] != 0) && signed_mode && (numer[i][31] ^ denom[i][31]);
|
||||
inv_rem[i] <= signed_mode && numer[i][31];
|
||||
end
|
||||
tag_r <= tag_in;
|
||||
cntr <= WIDTHN;
|
||||
cntr <= WIDTHN;
|
||||
is_busy <= 1;
|
||||
end
|
||||
else begin
|
||||
if (!done) begin
|
||||
for (integer i = 0; i < LANES; ++i) begin
|
||||
working[i] <= sub_result[i][WIDTHD] ? {working[i][WIDTHN+MIN_ND-1:0], 1'b0} :
|
||||
{sub_result[i][WIDTHD-1:0], working[i][WIDTHN-1:0], 1'b1};
|
||||
end
|
||||
cntr <= cntr - CNTRW'(1);
|
||||
end
|
||||
end else if (!done) begin
|
||||
cntr <= cntr - CNTRW'(1);
|
||||
end
|
||||
if (pop) begin
|
||||
is_busy <= 0;
|
||||
end
|
||||
end
|
||||
|
||||
if (push) begin
|
||||
for (integer i = 0; i < LANES; ++i) begin
|
||||
working[i] <= {{WIDTHD{1'b0}}, numer_qual[i], 1'b0};
|
||||
denom_r[i] <= denom_qual[i];
|
||||
inv_quot[i] <= (denom[i] != 0) && signed_mode && (numer[i][31] ^ denom[i][31]);
|
||||
inv_rem[i] <= signed_mode && numer[i][31];
|
||||
end
|
||||
tag_r <= tag_in;
|
||||
end else if (!done) begin
|
||||
for (integer i = 0; i < LANES; ++i) begin
|
||||
working[i] <= sub_result[i][WIDTHD] ? {working[i][WIDTHN+MIN_ND-1:0], 1'b0} :
|
||||
{sub_result[i][WIDTHD-1:0], working[i][WIDTHN-1:0], 1'b1};
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for (genvar i = 0; i < LANES; ++i) begin
|
||||
|
||||
@@ -27,18 +27,22 @@ module VX_skid_buffer #(
|
||||
if (ready_out) begin
|
||||
use_buffer <= 0;
|
||||
end
|
||||
if (push) begin
|
||||
buffer <= data_in;
|
||||
if (valid_out_r && !ready_out) begin
|
||||
assert(!use_buffer);
|
||||
use_buffer <= 1;
|
||||
end
|
||||
if (push && valid_out_r && !ready_out) begin
|
||||
assert(!use_buffer);
|
||||
use_buffer <= 1;
|
||||
end
|
||||
if (!valid_out_r || ready_out) begin
|
||||
valid_out_r <= valid_in || use_buffer;
|
||||
data_out_r <= use_buffer ? buffer : data_in;
|
||||
end
|
||||
end
|
||||
|
||||
if (push) begin
|
||||
buffer <= data_in;
|
||||
end
|
||||
|
||||
if (!valid_out_r || ready_out) begin
|
||||
data_out_r <= use_buffer ? buffer : data_in;
|
||||
end
|
||||
end
|
||||
|
||||
assign ready_in = !use_buffer;
|
||||
|
||||
Reference in New Issue
Block a user