title: Verilog ** Notation
body: <p>What does ** mean in verilog? </p>
  
  <p>I have the following logic provided for a testbench</p>
  
  <pre><code>localparam NUM_INPUT_BITS       = 1;
  localparam NUM_OUTPUT_BITS      = NUM_INPUT_BITS + 1;
  localparam MAX_OUTPUT_BIT       = NUM_OUTPUT_BITS - 1;
  localparam NUM_TEST_BITS        = (NUM_INPUT_BITS * 2) + 1;
  localparam MAX_TEST_BIT         = NUM_TEST_BITS - 1;
  localparam NUM_TEST_CASES       = 2 ** NUM_TEST_BITS;
  localparam MAX_TEST_VALUE       = NUM_TEST_CASES - 1;
  localparam TEST_A_BITTEST_A_BIT = 0;
  localparam TEST_B_BIT           = NUM_INPUT_BITS;
  localparam TEST_CARRY_IN_BIT    = MAX_TEST_BIT;
  localparam TEST_SUM_BIT         = 0;
  localparam TEST_CARRY_OUT_BIT   = MAX_OUTPUT_BIT;
  localparam TEST_DELAY           = 10;
  </code></pre>
  
  <p>And I cannot figure out what the NUM_TEST_CASES value will evaluate to.  The final answer should be 8, so I'm assumming ** means y ** x = y^x, but I want to confirm. </p>