scope refactoring: adding modules definitions to VCD trace
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
|
||||
`include "VX_platform.vh"
|
||||
|
||||
module VX_ipdom_stack #(
|
||||
@@ -17,33 +16,55 @@ module VX_ipdom_stack #(
|
||||
);
|
||||
localparam STACK_SIZE = 2 ** DEPTH;
|
||||
|
||||
`USE_FAST_BRAM reg [WIDTH-1:0] stack_1 [0:STACK_SIZE-1];
|
||||
`USE_FAST_BRAM reg [WIDTH-1:0] stack_2 [0:STACK_SIZE-1];
|
||||
`USE_FAST_BRAM reg is_part [0:STACK_SIZE-1];
|
||||
reg [WIDTH-1:0] stack_1 [0:STACK_SIZE-1];
|
||||
reg [WIDTH-1:0] stack_2 [0:STACK_SIZE-1];
|
||||
reg is_part [0:STACK_SIZE-1];
|
||||
|
||||
reg [DEPTH-1:0] rd_ptr, wr_ptr;
|
||||
|
||||
reg [WIDTH - 1:0] d1, d2;
|
||||
reg p;
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (reset) begin
|
||||
rd_ptr <= 0;
|
||||
wr_ptr <= 0;
|
||||
end else begin
|
||||
if (push) begin
|
||||
stack_1[wr_ptr] <= q1;
|
||||
stack_2[wr_ptr] <= q2;
|
||||
is_part[wr_ptr] <= 0;
|
||||
rd_ptr <= wr_ptr;
|
||||
wr_ptr <= wr_ptr + DEPTH'(1);
|
||||
end else if (pop) begin
|
||||
wr_ptr <= wr_ptr - DEPTH'(is_part[rd_ptr]);
|
||||
rd_ptr <= rd_ptr - DEPTH'(is_part[rd_ptr]);
|
||||
is_part[rd_ptr] <= 1;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
assign d = is_part[rd_ptr] ? stack_1[rd_ptr] : stack_2[rd_ptr];
|
||||
always @(posedge clk) begin
|
||||
if (push) begin
|
||||
stack_1[wr_ptr] <= q1;
|
||||
end
|
||||
end
|
||||
assign d1 = stack_1[rd_ptr];
|
||||
|
||||
assign empty = (0 == wr_ptr);
|
||||
always @(posedge clk) begin
|
||||
if (push) begin
|
||||
stack_2[wr_ptr] <= q2;
|
||||
end
|
||||
end
|
||||
assign d2 = stack_2[rd_ptr];
|
||||
|
||||
always @(posedge clk) begin
|
||||
if (push) begin
|
||||
is_part[wr_ptr] <= 0;
|
||||
end else if (pop) begin
|
||||
is_part[rd_ptr] <= 1;
|
||||
end
|
||||
end
|
||||
assign p = is_part[rd_ptr];
|
||||
|
||||
assign d = p ? d1 : d2;
|
||||
assign empty = ~(| wr_ptr);
|
||||
assign full = ((STACK_SIZE-1) == wr_ptr);
|
||||
|
||||
endmodule
|
||||
Reference in New Issue
Block a user