parallel_case Verilog HDL Synthesis Attribute

A Verilog HDL synthesis attribute that directs Analysis & Synthesis to implement parallel logic rather than a priority scheme for all case item expressions in a Verilog Design File (.v) Definition Case Statement. You can use this synthesis attribute on Case Statements that do not contain mutually exclusive case item expressions to ensure that overlapping case items can be executed at the same time.

To use the parallel_case synthesis attribute, you can specify the parallel_case synthesis attribute in a comment following the case, casex, or casez keyword and the case expression. In the comment, precede the synthesis attribute with the synthesis keyword.

For example, in the following code, the parallel_case synthesis attribute directs Analysis & Synthesis to implement parallel logic on the 3'b1??, 3'b?1?, and 3'b??1 case items expressions:


module parallel_case (sel, a, b, c);
   input [2:0] sel;
   output a, b, c;
   reg a, b, c;
   always @(sel)                
   begin
      {a, b, c} = 3'b0;
      casez (sel)                // synthesis parallel_case 
         3'b1??: a = 1'b1;
         3'b?1?: b = 1'b1;
         3'b??1: c = 1'b1;
      endcase
   end
endmodule

Because the case item expressions are implemented with a priority scheme during design simulation, the functionality you simulate for a design may be different from the functionality Analysis & Synthesis creates for the design using the parallel_case synthesis attribute. In the previous example, the Simulator implements a priority scheme for the case item expressions where the bits of the input sel have a high-to-low priority order of sel[2], sel[1], and sel[0], while Analysis & Synthesis implements parallel logic where all the bits of sel have equal priority.