removed unused modules for rtl
diff --git a/verilog/rtl/azadi_soc_top.v b/verilog/rtl/azadi_soc_top.v index 177099b..4389a28 100644 --- a/verilog/rtl/azadi_soc_top.v +++ b/verilog/rtl/azadi_soc_top.v
@@ -11022,180 +11022,6 @@ .Fflags_SO(Fflags_SO) ); endmodule -module fifo_async ( - clk_wr_i, - rst_wr_ni, - wvalid_i, - wready_o, - wdata_i, - wdepth_o, - clk_rd_i, - rst_rd_ni, - rvalid_o, - rready_i, - rdata_o, - rdepth_o -); - parameter [31:0] Width = 16; - parameter [31:0] Depth = 3; - localparam [31:0] DepthW = $clog2(Depth + 1); - input wire clk_wr_i; - input wire rst_wr_ni; - input wire wvalid_i; - output wire wready_o; - input wire [Width - 1:0] wdata_i; - output wire [DepthW - 1:0] wdepth_o; - input wire clk_rd_i; - input wire rst_rd_ni; - output wire rvalid_o; - input wire rready_i; - output wire [Width - 1:0] rdata_o; - output wire [DepthW - 1:0] rdepth_o; - localparam [31:0] PTRV_W = $clog2(Depth); - function automatic [PTRV_W - 1:0] sv2v_cast_E27C2; - input reg [PTRV_W - 1:0] inp; - sv2v_cast_E27C2 = inp; - endfunction - localparam [PTRV_W - 1:0] DepthMinus1 = sv2v_cast_E27C2(Depth - 1); - localparam [31:0] PTR_WIDTH = PTRV_W + 1; - reg [PTR_WIDTH - 1:0] fifo_wptr; - reg [PTR_WIDTH - 1:0] fifo_rptr; - wire [PTR_WIDTH - 1:0] fifo_wptr_sync_combi; - reg [PTR_WIDTH - 1:0] fifo_rptr_sync; - wire [PTR_WIDTH - 1:0] fifo_wptr_gray_sync; - wire [PTR_WIDTH - 1:0] fifo_rptr_gray_sync; - reg [PTR_WIDTH - 1:0] fifo_wptr_gray; - reg [PTR_WIDTH - 1:0] fifo_rptr_gray; - wire fifo_incr_wptr; - wire fifo_incr_rptr; - wire empty; - wire full_wclk; - wire full_rclk; - assign wready_o = !full_wclk; - assign rvalid_o = !empty; - assign fifo_incr_wptr = wvalid_i & wready_o; - assign fifo_incr_rptr = rvalid_o & rready_i; - always @(posedge clk_wr_i or negedge rst_wr_ni) - if (!rst_wr_ni) - fifo_wptr <= {PTR_WIDTH {1'sb0}}; - else if (fifo_incr_wptr) - if (fifo_wptr[PTR_WIDTH - 2:0] == DepthMinus1) - fifo_wptr <= {~fifo_wptr[PTR_WIDTH - 1], {PTR_WIDTH - 1 {1'b0}}}; - else - fifo_wptr <= fifo_wptr + {{PTR_WIDTH - 1 {1'b0}}, 1'b1}; - function automatic [PTR_WIDTH - 1:0] sv2v_cast_88E25; - input reg [PTR_WIDTH - 1:0] inp; - sv2v_cast_88E25 = inp; - endfunction - function automatic [PTR_WIDTH - 1:0] dec2gray; - input reg [PTR_WIDTH - 1:0] decval; - reg [PTR_WIDTH - 1:0] decval_sub; - reg [PTR_WIDTH - 2:0] decval_in; - reg unused_decval_msb; - begin - decval_sub = (sv2v_cast_88E25(Depth) - {1'b0, decval[PTR_WIDTH - 2:0]}) - 1'b1; - {unused_decval_msb, decval_in} = (decval[PTR_WIDTH - 1] ? decval_sub : decval); - dec2gray = {decval[PTR_WIDTH - 1], {1'b0, decval_in[PTR_WIDTH - 2:1]} ^ decval_in[PTR_WIDTH - 2:0]}; - end - endfunction - always @(posedge clk_wr_i or negedge rst_wr_ni) - if (!rst_wr_ni) - fifo_wptr_gray <= {PTR_WIDTH {1'sb0}}; - else if (fifo_incr_wptr) - if (fifo_wptr[PTR_WIDTH - 2:0] == DepthMinus1) - fifo_wptr_gray <= dec2gray({~fifo_wptr[PTR_WIDTH - 1], {PTR_WIDTH - 1 {1'b0}}}); - else - fifo_wptr_gray <= dec2gray(fifo_wptr + {{PTR_WIDTH - 1 {1'b0}}, 1'b1}); - prim_generic_flop_2sync #(.Width(PTR_WIDTH)) sync_wptr( - .clk_i(clk_rd_i), - .rst_ni(rst_rd_ni), - .d_i(fifo_wptr_gray), - .q_o(fifo_wptr_gray_sync) - ); - function automatic [((PTR_WIDTH - 2) >= 0 ? PTR_WIDTH - 1 : 3 - PTR_WIDTH) - 1:0] sv2v_cast_F9964; - input reg [((PTR_WIDTH - 2) >= 0 ? PTR_WIDTH - 1 : 3 - PTR_WIDTH) - 1:0] inp; - sv2v_cast_F9964 = inp; - endfunction - function automatic [PTR_WIDTH - 1:0] gray2dec; - input reg [PTR_WIDTH - 1:0] grayval; - reg [PTR_WIDTH - 2:0] dec_tmp; - reg [PTR_WIDTH - 2:0] dec_tmp_sub; - reg unused_decsub_msb; - begin - dec_tmp[PTR_WIDTH - 2] = grayval[PTR_WIDTH - 2]; - begin : sv2v_autoblock_106 - reg signed [31:0] i; - for (i = PTR_WIDTH - 3; i >= 0; i = i - 1) - dec_tmp[i] = dec_tmp[i + 1] ^ grayval[i]; - end - {unused_decsub_msb, dec_tmp_sub} = (sv2v_cast_F9964(Depth) - {1'b0, dec_tmp}) - 1'b1; - if (grayval[PTR_WIDTH - 1]) - gray2dec = {1'b1, dec_tmp_sub}; - else - gray2dec = {1'b0, dec_tmp}; - end - endfunction - assign fifo_wptr_sync_combi = gray2dec(fifo_wptr_gray_sync); - always @(posedge clk_rd_i or negedge rst_rd_ni) - if (!rst_rd_ni) - fifo_rptr <= {PTR_WIDTH {1'sb0}}; - else if (fifo_incr_rptr) - if (fifo_rptr[PTR_WIDTH - 2:0] == DepthMinus1) - fifo_rptr <= {~fifo_rptr[PTR_WIDTH - 1], {PTR_WIDTH - 1 {1'b0}}}; - else - fifo_rptr <= fifo_rptr + {{PTR_WIDTH - 1 {1'b0}}, 1'b1}; - always @(posedge clk_rd_i or negedge rst_rd_ni) - if (!rst_rd_ni) - fifo_rptr_gray <= {PTR_WIDTH {1'sb0}}; - else if (fifo_incr_rptr) - if (fifo_rptr[PTR_WIDTH - 2:0] == DepthMinus1) - fifo_rptr_gray <= dec2gray({~fifo_rptr[PTR_WIDTH - 1], {PTR_WIDTH - 1 {1'b0}}}); - else - fifo_rptr_gray <= dec2gray(fifo_rptr + {{PTR_WIDTH - 1 {1'b0}}, 1'b1}); - prim_generic_flop_2sync #(.Width(PTR_WIDTH)) sync_rptr( - .clk_i(clk_wr_i), - .rst_ni(rst_wr_ni), - .d_i(fifo_rptr_gray), - .q_o(fifo_rptr_gray_sync) - ); - always @(posedge clk_wr_i or negedge rst_wr_ni) - if (!rst_wr_ni) - fifo_rptr_sync <= {PTR_WIDTH {1'sb0}}; - else - fifo_rptr_sync <= gray2dec(fifo_rptr_gray_sync); - assign full_wclk = fifo_wptr == (fifo_rptr_sync ^ {1'b1, {PTR_WIDTH - 1 {1'b0}}}); - assign full_rclk = fifo_wptr_sync_combi == (fifo_rptr ^ {1'b1, {PTR_WIDTH - 1 {1'b0}}}); - wire wptr_msb; - wire rptr_sync_msb; - wire [PTRV_W - 1:0] wptr_value; - wire [PTRV_W - 1:0] rptr_sync_value; - assign wptr_msb = fifo_wptr[PTR_WIDTH - 1]; - assign rptr_sync_msb = fifo_rptr_sync[PTR_WIDTH - 1]; - assign wptr_value = fifo_wptr[0+:PTRV_W]; - assign rptr_sync_value = fifo_rptr_sync[0+:PTRV_W]; - function automatic [DepthW - 1:0] sv2v_cast_703F8; - input reg [DepthW - 1:0] inp; - sv2v_cast_703F8 = inp; - endfunction - assign wdepth_o = (full_wclk ? sv2v_cast_703F8(Depth) : (wptr_msb == rptr_sync_msb ? sv2v_cast_703F8(wptr_value) - sv2v_cast_703F8(rptr_sync_value) : (sv2v_cast_703F8(Depth) - sv2v_cast_703F8(rptr_sync_value)) + sv2v_cast_703F8(wptr_value))); - assign empty = fifo_wptr_sync_combi == fifo_rptr; - wire rptr_msb; - wire wptr_sync_msb; - wire [PTRV_W - 1:0] rptr_value; - wire [PTRV_W - 1:0] wptr_sync_value; - assign wptr_sync_msb = fifo_wptr_sync_combi[PTR_WIDTH - 1]; - assign rptr_msb = fifo_rptr[PTR_WIDTH - 1]; - assign wptr_sync_value = fifo_wptr_sync_combi[0+:PTRV_W]; - assign rptr_value = fifo_rptr[0+:PTRV_W]; - assign rdepth_o = (full_rclk ? sv2v_cast_703F8(Depth) : (wptr_sync_msb == rptr_msb ? sv2v_cast_703F8(wptr_sync_value) - sv2v_cast_703F8(rptr_value) : (sv2v_cast_703F8(Depth) - sv2v_cast_703F8(rptr_value)) + sv2v_cast_703F8(wptr_sync_value))); - reg [Width - 1:0] storage [0:Depth - 1]; - always @(posedge clk_wr_i) - if (~rst_wr_ni) - storage[fifo_wptr[PTR_WIDTH - 2:0]] <= {Width {1'sb0}}; - else if (fifo_incr_wptr) - storage[fifo_wptr[PTR_WIDTH - 2:0]] <= wdata_i; - assign rdata_o = storage[fifo_rptr[PTR_WIDTH - 2:0]]; -endmodule module fifo_sync ( clk_i, rst_ni, @@ -17185,98 +17011,6 @@ assign NaN_b_SO = NaN_b_SP; assign SNaN_SO = SNaN_SP; endmodule -module prim_arbiter_ppc ( - clk_i, - rst_ni, - req_i, - data_i, - gnt_o, - idx_o, - valid_o, - data_o, - ready_i -); - parameter [31:0] N = 8; - parameter [31:0] DW = 32; - parameter [0:0] EnDataPort = 1; - parameter [0:0] EnReqStabA = 1; - localparam signed [31:0] IdxW = $clog2(N); - input wire clk_i; - input wire rst_ni; - input wire [N - 1:0] req_i; - input wire [(0 >= (N - 1) ? ((2 - N) * DW) + (((N - 1) * DW) - 1) : (N * DW) - 1):(0 >= (N - 1) ? (N - 1) * DW : 0)] data_i; - output wire [N - 1:0] gnt_o; - output reg [IdxW - 1:0] idx_o; - output wire valid_o; - output reg [DW - 1:0] data_o; - input wire ready_i; - generate - if (N == 1) begin : gen_degenerate_case - assign valid_o = req_i[0]; - wire [DW:1] sv2v_tmp_10CA1; - assign sv2v_tmp_10CA1 = data_i[(0 >= (N - 1) ? 0 : N - 1) * DW+:DW]; - always @(*) data_o = sv2v_tmp_10CA1; - assign gnt_o[0] = valid_o & ready_i; - wire [IdxW:1] sv2v_tmp_3D566; - assign sv2v_tmp_3D566 = {IdxW {1'sb0}}; - always @(*) idx_o = sv2v_tmp_3D566; - end - else begin : gen_normal_case - wire [N - 1:0] masked_req; - reg [N - 1:0] ppc_out; - wire [N - 1:0] arb_req; - reg [N - 1:0] mask; - wire [N - 1:0] mask_next; - wire [N - 1:0] winner; - assign masked_req = mask & req_i; - assign arb_req = (|masked_req ? masked_req : req_i); - always @(*) begin - ppc_out[0] = arb_req[0]; - begin : sv2v_autoblock_133 - reg signed [31:0] i; - for (i = 1; i < N; i = i + 1) - ppc_out[i] = ppc_out[i - 1] | arb_req[i]; - end - end - assign winner = ppc_out ^ {ppc_out[N - 2:0], 1'b0}; - assign gnt_o = (ready_i ? winner : {N {1'sb0}}); - assign valid_o = |req_i; - assign mask_next = {ppc_out[N - 2:0], 1'b0}; - always @(posedge clk_i or negedge rst_ni) - if (!rst_ni) - mask <= {N {1'sb0}}; - else if (valid_o && ready_i) - mask <= mask_next; - else if (valid_o && !ready_i) - mask <= ppc_out; - if (EnDataPort == 1) begin : gen_datapath - always @(*) begin - data_o = {DW {1'sb0}}; - begin : sv2v_autoblock_134 - reg signed [31:0] i; - for (i = 0; i < N; i = i + 1) - if (winner[i]) - data_o = data_i[(0 >= (N - 1) ? i : (N - 1) - i) * DW+:DW]; - end - end - end - else begin : gen_nodatapath - wire [DW:1] sv2v_tmp_546E1; - assign sv2v_tmp_546E1 = {DW {1'sb1}}; - always @(*) data_o = sv2v_tmp_546E1; - end - always @(*) begin - idx_o = {IdxW {1'sb0}}; - begin : sv2v_autoblock_135 - reg [31:0] i; - for (i = 0; i < N; i = i + 1) - if (winner[i]) - idx_o = i[IdxW - 1:0]; - end - end - end - endgenerate -endmodule module prim_clock_gating ( clk_i, en_i,