(* techmap_celltype = "$reduce_or" *) module my_opt_reduce_or(...); parameter A_SIGNED = 0; parameter A_WIDTH = 1; parameter Y_WIDTH = 1; input [A_WIDTH-1:0] A; output reg [Y_WIDTH-1:0] Y; parameter _TECHMAP_CONSTMSK_A_ = 0; parameter _TECHMAP_CONSTVAL_A_ = 0; wire _TECHMAP_FAIL_ = count_nonconst_bits() == A_WIDTH; wire [1024:0] _TECHMAP_DO_ = "proc;;"; function integer count_nonconst_bits; integer i; begin count_nonconst_bits = 0; for (i = 0; i < A_WIDTH; i=i+1) if (!_TECHMAP_CONSTMSK_A_[i]) count_nonconst_bits = count_nonconst_bits+1; end endfunction function has_const_one; integer i; begin has_const_one = 0; for (i = 0; i < A_WIDTH; i=i+1) if (_TECHMAP_CONSTMSK_A_[i] && _TECHMAP_CONSTVAL_A_[i] === 1'b1) has_const_one = 1; end endfunction integer i; reg [count_nonconst_bits()-1:0] tmp; always @* begin if (has_const_one()) begin Y = 1; end else begin for (i = 0; i < A_WIDTH; i=i+1) if (!_TECHMAP_CONSTMSK_A_[i]) tmp = {A[i], tmp[count_nonconst_bits()-1:1]}; Y = |tmp; end end endmodule