| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-09-18 14:36:37 +0200 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-09-18 14:36:37 +0200 |
| commit | 80e9830758781e46a283e493a3c2f902969c0bea (patch) | |
| tree | dec63641551e93189905c98de004e4c3eb4c3f65 /data/test/combinational_processes/valid.vhd | |
| parent | 2e15b9f8a8be3bea2b0ed1cb633c2f35582e39b8 (diff) | |
Starting to work on test automation.
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; |


