.. include:: includes.rst Loop Statement Rules -------------------- loop_statement_001 ################## |phase_1| |error| |structure| This rule checks for code after the **loop** keyword. **Violation** .. code-block:: vhdl loop a <= b; **Fix** .. code-block:: vhdl loop a <= b; loop_statement_002 ################## |phase_1| |error| |structure| This rule checks the **end** keyword is on its own line. **Violation** .. code-block:: vhdl loop a <= b; end loop; **Fix** .. code-block:: vhdl loop a <= b; end loop; loop_statement_003 ################## |phase_1| |error| |structure| This rule checks the **end** keyword is on the same line as the **end loop** keyword. **Violation** .. code-block:: vhdl end loop; **Fix** .. code-block:: vhdl end loop; loop_statement_004 ################## |phase_1| |error| |structure| This rule checks the semicolon is on the same line as the **end loop** keyword. **Violation** .. code-block:: vhdl end loop ; end loop LOOP_LABEL ; **Fix** .. code-block:: vhdl end loop; end loop LOOP_LABEL; loop_statement_005 ################## |phase_1| |error| |structure| This rule checks the loop label and the **while**, **for** or **loop** keywords are on the same line. **Violation** .. code-block:: vhdl LOOP_LABEL: loop LOOP_LABEL: while condition loop LOOP_LABEL: for x in range(15 downto 0) loop **Fix** .. code-block:: vhdl LOOP_LABEL: loop LOOP_LABEL: while condition loop LOOP_LABEL: for x in range(15 downto 0) loop loop_statement_006 ################## |phase_1| |disabled| |error| |unfixable| |structure| This rule checks that loop statements have a label. **Violation** .. code-block:: vhdl loop while (condition) loop for x in range (31 downto 0) loop **Fix** .. code-block:: vhdl LOOP_LABEL : loop LOOP_LABEL : while (condition) loop LOOP_LABEL : for x in range (31 downto 0) loop loop_statement_007 ################## |phase_1| |disabled| |error| |structure| |structure_optional| This rule checks the **end loop_statement** line has a label. The closing label will be added if the opening loop_statement label exists. |configuring_optional_items_link| **Violation** .. code-block:: vhdl end loop; **Fix** .. code-block:: vhdl end loop LOOP_LABEL; loop_statement_100 ################## |phase_2| |error| |whitespace| This rule checks that a single space exists between the **end** and **loop** keywords |configuring_whitespace_rules_link| **Violation** .. code-block:: vhdl end loop; end loop; **Fix** .. code-block:: vhdl end loop; end loop; loop_statement_101 ################## |phase_2| |error| |whitespace| This rule checks for a single space before the ending loop label if it exists. |configuring_whitespace_rules_link| **Violation** .. code-block:: vhdl end loop END_LOOP_LABEL; **Fix** .. code-block:: vhdl end loop END_LOOP_LABEL; loop_statement_102 ################## |phase_2| |error| |whitespace| This rule checks for a single space before the **loop** keyword. |configuring_whitespace_rules_link| **Violation** .. code-block:: vhdl for x in (0 to 30)loop for x in (0 to 30) loop **Fix** .. code-block:: vhdl for x in (0 to 30) loop for x in (0 to 30) loop loop_statement_103 ################## |phase_2| |error| |whitespace| This rule checks if a label exists that a single space exists between the label and the colon. |configuring_whitespace_rules_link| **Violation** .. code-block:: vhdl label: for index in 4 to 23 loop label : for index in 0 to 100 loop **Fix** .. code-block:: vhdl label : for index in 4 to 23 loop label : for index in 0 to 100 loop loop_statement_104 ################## |phase_2| |error| |whitespace| This rule checks if a label exists that a single space exists after the colon. |configuring_whitespace_rules_link| **Violation** .. code-block:: vhdl label : for index in 4 to 23 loop label : for index in 0 to 100 loop **Fix** .. code-block:: vhdl label : for index in 4 to 23 loop label : for index in 0 to 100 loop loop_statement_200 ################## |phase_3| |error| |blank_line| This rule checks for blank lines or comments above loop statements. |configuring_previous_line_rules_link| The default style is :code:`no_code`. **Violation** .. code-block:: vhdl -- Comment LOOP_LABEL : loop wr_en <= wr_en; LOOP_LABEL : loop **Fix** .. code-block:: vhdl -- Comment LOOP_LABEL : loop wr_en <= wr_en; LOOP_LABEL : loop loop_statement_201 ################## |phase_3| |error| |blank_line| This rule checks for blank lines below the **loop** keyword. |configuring_blank_lines_link| **Violation** .. code-block:: vhdl loop a <= b; **Fix** .. code-block:: vhdl loop a <= b; loop_statement_202 ################## |phase_3| |error| |blank_line| This rule checks for blank lines or comments above the **end** keyword. |configuring_previous_line_rules_link| **Violation** .. code-block:: vhdl loop a <= b; end loop; **Fix** .. code-block:: vhdl loop a <= b; end loop; loop_statement_203 ################## |phase_3| |error| |blank_line| This rule checks for blank lines below the **end loop** keywords. |configuring_blank_lines_link| **Violation** .. code-block:: vhdl end loop; a <= b; **Fix** .. code-block:: vhdl end loop; a <= b; loop_statement_300 ################## |phase_4| |error| |indent| This rule checks the indentation of the **loop** keyword. **Violation** .. code-block:: vhdl fifo_proc : process () is begin loop end loop; end process; **Fix** .. code-block:: vhdl fifo_proc : process () is begin loop end loop; end process; loop_statement_301 ################## |phase_4| |error| |indent| This rule checks the indentation of the loop label if it exists. **Violation** .. code-block:: vhdl fifo_proc : process () is begin LOOP_LABEL : loop end loop; end process; **Fix** .. code-block:: vhdl fifo_proc : process () is begin LOOP_LABEL : loop end loop; end process; loop_statement_302 ################## |phase_4| |error| |indent| This rule checks the indentation of the **end** keyword. **Violation** .. code-block:: vhdl fifo_proc : process () is begin for index in 4 to 23 loop end loop; end process; **Fix** .. code-block:: vhdl fifo_proc : process () is begin for index in 4 to 23 loop end loop; end process; loop_statement_500 ################## |phase_6| |error| |case| |case_keyword| This rule checks the **loop** keyword has proper case. |configuring_uppercase_and_lowercase_rules_link| **Violation** .. code-block:: vhdl while (condition) LOOP **Fix** .. code-block:: vhdl while (condition) loop loop_statement_501 ################## |phase_6| |error| |case| |case_keyword| This rule checks the **end** keyword has proper case. |configuring_uppercase_and_lowercase_rules_link| **Violation** .. code-block:: vhdl while (condition) loop END loop; **Fix** .. code-block:: vhdl while (condition) loop end loop; loop_statement_502 ################## |phase_6| |error| |case| |case_keyword| This rule checks the **loop** keyword has proper case. |configuring_uppercase_and_lowercase_rules_link| **Violation** .. code-block:: vhdl while (condition) loop end LOOP; **Fix** .. code-block:: vhdl while (condition) loop end loop; loop_statement_503 ################## |phase_6| |error| |case| |case_label| This rule checks the proper case of the label on a loop statement. |configuring_uppercase_and_lowercase_rules_link| **Violation** .. code-block:: vhdl LABEL : for index in 4 to 23 loop Label : for index in 0 to 100 loop **Fix** .. code-block:: vhdl label : for index in 4 to 23 loop label : for index in 0 to 100 loop loop_statement_504 ################## |phase_6| |error| |case| |case_label| This rule checks the proper case of the end label on a loop statement. |configuring_uppercase_and_lowercase_rules_link| **Violation** .. code-block:: vhdl end loop LABEL; end loop Label; **Fix** .. code-block:: vhdl end loop label; end loop label; loop_statement_600 ################## |phase_7| |disabled| |error| |unfixable| |naming| This rule checks for valid prefixes on loop labels. The default prefix is *loop_*. |configuring_prefix_and_suffix_rules_link| **Violation** .. code-block:: vhdl label : for index in 4 to 23 loop **Fix** .. code-block:: vhdl loop_label : for index in 4 to 23 loop loop_statement_601 ################## |phase_7| |disabled| |error| |unfixable| |naming| This rule checks for valid suffixes on loop labels. The default prefix is *_loop*. |configuring_prefix_and_suffix_rules_link| **Violation** .. code-block:: vhdl label : for index in 4 to 23 loop **Fix** .. code-block:: vhdl label_loop : for index in 4 to 23 loop loop_statement_602 ################## |phase_7| |disabled| |error| |unfixable| |naming| This rule checks for valid prefixes on loop parameter identifiers. The default loop prefix is *lv_*. |configuring_prefix_and_suffix_rules_link| **Violation** .. code-block:: vhdl for index in t_range loop **Fix** .. code-block:: vhdl for lv_index in t_range loop loop_statement_603 ################## |phase_7| |disabled| |error| |unfixable| |naming| This rule checks for valid suffixes on loop parameter identifiers. The default loop suffix is *_lv*. |configuring_prefix_and_suffix_rules_link| **Violation** .. code-block:: vhdl for index in t_range loop **Fix** .. code-block:: vhdl for index_lv in t_range loop