| summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'data/test/combinational_processes/valid.vhd')
| -rw-r--r-- | data/test/combinational_processes/valid.vhd | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/data/test/combinational_processes/valid.vhd b/data/test/combinational_processes/valid.vhd new file mode 100644 index 0000000..1703c6a --- /dev/null +++ b/data/test/combinational_processes/valid.vhd @@ -0,0 +1,173 @@ +library IEEE; + +use IEEE.std_logic_1164.all; + +entity valid is + port + ( + ip0, ip1, ip2, ip3: in std_logic; + op0, op1, op2, op3: out std_logic + ); +end; + +architecture RTL of valid is + type enum_t is (V0, V1, V2, V3); + signal s0, s1, s2, s3: std_logic; + signal st0: enum_t; + signal n0, n1, n2, n3: natural range 0 to 3; +begin + -- $SOL:0:0$ + s0 <= s1; + -- $SOL:1:0$ + s0 <= (s1 and s2); + + -- $SOL:2:0$ + process (s0, s1) + begin + case s1 is + when '0' => + op0 <= s0; + when others => + op0 <= s1; + end case; + end process; + + -- $SOL:3:0$ + process (s0, s1) + begin + case s1 is + when '0' => + op0 <= s0; + op1 <= (s0 or s1); + when others => + op1 <= (s1 or '0'); + op0 <= s1; + end case; + end process; + + -- $SOL:4:0$ + process (s0, s1) + begin + op2 <= '0'; + case s1 is + when '0' => + op0 <= s0; + op1 <= (s0 or s1); + when others => + op1 <= (s1 or '0'); + op0 <= s1; + op2 <= '1'; + end case; + end process; + + -- $SOL:5:0$ + process (s0, s1, s2) + begin + op2 <= '0'; + case s1 is + when '0' => + if (s2 = '0') + then + op0 <= s0; + else + op0 <= s1; + end if; + op1 <= (s0 or s1); + when others => + op1 <= (s1 or '0'); + op0 <= s1; + op2 <= '1'; + end case; + end process; + + -- $SOL:6:0$ + with ip0 select + s1 <= + ip1 when '0', + ip2 when '1', + ip3 when others; + + -- $SOL:7:0$ + with st0 select + s2 <= + ip1 when V0, + ip2 when V1, + ip3 when V2, + s1 when V3; + + -- $SOL:8:0$ + with st0 select + s2 <= + ip1 when V0, + ip2 when V1, + ip3 when others; + + -- $SOL:9:0$ + process (s0, s1, s2, s3) + begin + case st0 is + when V3 => + op0 <= s0; + when V2 => + op0 <= s1; + when V1 => + op0 <= s2; + when V0 => + op0 <= s3; + end case; + end process; + + -- $SOL:10:0$ + process (s0, s1, s2, s3) + begin + case st0 is + when V3 => + op0 <= s0; + when V2 => + op0 <= s1; + when others => + op0 <= s2; + end case; + end process; + + -- $SOL:11:0$ + process (n0, n2) + begin + case n0 is + when 0 => + n1 <= 0; + when 1 to 2 => + n1 <= n2; + when 3 => + n1 <= 2; + end case; + end process; + + -- $SOL:12:0$ + process (n0, n2) + begin + case n0 is + when 0 => + n1 <= 0; + when 1 => + n1 <= n3; + when 2 => + n1 <= n2; + when 3 => + n1 <= 2; + end case; + end process; + + -- $SOL:13:0$ + process (n0, n2) + begin + case n0 is + when 0 => + n1 <= 0; + when 1 => + n1 <= n3; + when others => + n1 <= n3; + end case; + end process; +end; |


