IEEE 200X Fast Track Change Proposal ID: FT-10 Proposer: Jim Lewis, jim@synthworks.com Status: Proposed Proposed: - Analyzed: Date Resolved: Date Enhancement Summary: Make Selected signal assignment constructs usable in sequential statements for both variables and signals. Related issues: Relevant LRM section: Enhancement Detail: ---------------------------- Current code: stateProc : process begin wait until rising_edge(Clk) ; if nReset = '0' then State <= S0 ; else case State is when S0 => State <= S1 ; when S1 => State <= S2 ; when S2 => State <= S3 ; when others => State <= S0 ; end case ; end if ; end process ; Replacement code: stateProc : process begin wait until rising_edge(Clk) ; if nReset = '0' then State <= S0 ; else with State select State <= S1 when S0, S2 when S1, S3 when S2, S0 when others ; end if ; end process ; Allow conditional_expression if it is included in parentheses. stateProc : process begin wait until rising_edge(Clk) ; if nReset = '0' then State <= S0 ; else with State select State <= (S1 when I='1' else S0) when S0, (S2 when I='1' else S1) when S1, (S3 when I='1' else S2) when S2, S0 when others ; end if ; end process ; Analysis: ---------------------------- Modifications to 1076-2002 Move clause 9.5.2 to clause 8.4 (signal assignment) Add similar copy clause 9.5.2 to clause 8.5 (variable assignment) and minor tweak it for variable assignment. This includes the following: selected_variable_assignment ::= with expression select target <= options selected_expression ; selected_expression ::= { expression when choices , } expression when choices Editors note, expression is intended to include conditional_expression if conditional_expression is included in parentheses. Resolution: ---------------------------- [To be performed by the 200X Fast Track Working Group]