library ecpd10, IEEE; use IEEE.std_logic_1164.all; package CONV_PACK_drink is -- define attributes attribute ENUM_ENCODING : STRING; -- Declarations for conversion functions. function std_logic_to_BOOLEAN(arg : in std_logic) return BOOLEAN; function BOOLEAN_to_std_logic(arg : in BOOLEAN) return std_logic; end CONV_PACK_drink; package body CONV_PACK_drink is -- std_logic to enum type function function std_logic_to_BOOLEAN(arg : in std_logic) return BOOLEAN is -- synopsys built_in SYN_FEED_THRU; begin case arg is when '0' => return FALSE; when '1' => return TRUE; when others => assert FALSE -- this should not happen. report "un-convertible value" severity warning; return FALSE; end case; end; -- enum type to std_logic function function BOOLEAN_to_std_logic(arg : in BOOLEAN) return std_logic is -- synopsys built_in SYN_FEED_THRU; begin case arg is when FALSE => return '0'; when TRUE => return '1'; when others => assert FALSE -- this should not happen. report "un-convertible value" severity warning; return '0'; end case; end; end CONV_PACK_drink; library ecpd10, IEEE; use IEEE.std_logic_1164.all; use work.CONV_PACK_drink.all; entity drink is port( clk, reset : in std_logic; nickel_in, dime_in, quarter_in : in BOOLEAN; nickel_out, dime_out, dispense : out BOOLEAN); end drink; architecture SYN_behav of drink is component LIBAN2 port( Y : out std_logic; A, B : in std_logic); end component; component LIBDFFR port( Q, QZ : out std_logic; CK, RESETZ, D : in std_logic); end component; component LIBNO2 port( Y : out std_logic; A, B : in std_logic); end component; component LIBOAI21 port( Y : out std_logic; A1, A2, B1 : in std_logic); end component; component LIBAOI21 port( Y : out std_logic; A1, A2, B1 : in std_logic); end component; component LIBAOI22 port( Y : out std_logic; A1, A2, B1, B2 : in std_logic); end component; component LIBNO3S port( Y : out std_logic; A, B, C : in std_logic); end component; component LIBNA4 port( Y : out std_logic; A, B, C, D : in std_logic); end component; component LIBNA3 port( Y : out std_logic; A, B, C : in std_logic); end component; component LIBNA2 port( Y : out std_logic; A, B : in std_logic); end component; component LIBOR3 port( Y : out std_logic; A, B, C : in std_logic); end component; component LIBOR2 port( Y : out std_logic; A, B : in std_logic); end component; component LIBINV3 port( Y : out std_logic; A : in std_logic); end component; component LIBXNOR port( Y : out std_logic; A, B : in std_logic); end component; component LIBINV port( Y : out std_logic; A : in std_logic); end component; component LIBMUX21 port( Y : out std_logic; S, A, B : in std_logic); end component; signal quarter_in_port, net4, current_state_0_port, dispense_port, n480, n481, n482, n483, n484, n485, n486, n487, n488, n441, n442, n443, n444, n445, n446, n447, n448, n449, current_state_1_port, nickel_in_port, n450, n451, n452, n453, n454, n455, n456, n457, n458, n459, current_state_2_port, nickel_out_port, dime_out_port, n460, n461, n462, n463, n464, n465, n466, n467, n468, n469, dime_in_port, n470, n471, n472, n473, n474, n475, n476, n477, n478, n479 : std_logic; begin nickel_in_port <= BOOLEAN_to_std_logic(nickel_in); dime_in_port <= BOOLEAN_to_std_logic(dime_in); quarter_in_port <= BOOLEAN_to_std_logic(quarter_in); nickel_out <= std_logic_to_BOOLEAN(nickel_out_port); dime_out <= std_logic_to_BOOLEAN(dime_out_port); dispense <= std_logic_to_BOOLEAN(dispense_port); current_state_reg_2_label : LIBDFFR port map( Q => current_state_2_port, QZ => open, CK => clk, RESETZ => reset, D => n443); current_state_reg_1_label : LIBDFFR port map( Q => current_state_1_port, QZ => open, CK => clk, RESETZ => reset, D => n442); current_state_reg_0_label : LIBDFFR port map( Q => current_state_0_port, QZ => net4, CK => clk, RESETZ => reset, D => n441); U209 : LIBAOI22 port map( Y => n470, A1 => n462, A2 => net4, B1 => n469, B2 => current_state_0_port); U208 : LIBNA2 port map( Y => n469, A => n454, B => n450); U207 : LIBOR3 port map( Y => n443, A => n468, B => n460, C => n467); U206 : LIBAOI22 port map( Y => n467, A1 => n464, A2 => n446, B1 => n466, B2 => n454); U219 : LIBNA2 port map( Y => n480, A => n462, B => n446); U205 : LIBOAI21 port map( Y => n466, A1 => n465, A2 => nickel_in_port, B1 => n455); U218 : LIBOAI21 port map( Y => n479, A1 => n476, A2 => n478, B1 => n459); U204 : LIBAN2 port map( Y => n465, A => net4, B => dime_in_port); U217 : LIBNA2 port map( Y => n478, A => n477, B => n458); U203 : LIBNA2 port map( Y => n464, A => n459, B => n463); U216 : LIBOAI21 port map( Y => n477, A1 => n455, A2 => n446, B1 => nickel_in_port); U229 : LIBINV port map( Y => n453, A => n448); U202 : LIBOAI21 port map( Y => n463, A1 => n444, A2 => n450, B1 => n461); U215 : LIBNO3S port map( Y => n476, A => n454, B => n451, C => dime_in_port); U228 : LIBINV port map( Y => n450, A => nickel_in_port); U201 : LIBAOI22 port map( Y => n461, A1 => n448, A2 => n455, B1 => n462, B2 => n451); U214 : LIBOR2 port map( Y => n442, A => n475, B => n468); U227 : LIBNA2 port map( Y => dispense_port, A => n488, B => n487); U200 : LIBNO2 port map( Y => n460, A => n446, B => n459); U213 : LIBAOI22 port map( Y => n475, A1 => n472, A2 => n455, B1 => n474, B2 => n451); U226 : LIBOR2 port map( Y => n487, A => n447, B => n445); U212 : LIBNO2 port map( Y => n474, A => n473, B => n471); U225 : LIBAOI22 port map( Y => n486, A1 => n483, A2 => net4, B1 => n485, B2 => current_state_0_port); U211 : LIBOR2 port map( Y => n472, A => n470, B => n473); U224 : LIBNA3 port map( Y => n485, A => n462, B => n455, C => n454); U210 : LIBNO3S port map( Y => n471, A => current_state_0_port, B => n450, C => n454); U223 : LIBNA3 port map( Y => n483, A => current_state_1_port, B => n484, C => n454); U222 : LIBOAI21 port map( Y => n441, A1 => current_state_0_port, A2 => n479, B1 => n482); U221 : LIBNA2 port map( Y => n482, A => n481, B => current_state_0_port); U234 : LIBINV port map( Y => n488, A => n486); U220 : LIBNA2 port map( Y => n481, A => n480, B => n459); U233 : LIBINV port map( Y => n473, A => n459); U232 : LIBINV port map( Y => n468, A => n458); U231 : LIBINV port map( Y => n484, A => n452); U230 : LIBINV port map( Y => n462, A => n449); U189 : LIBNA2 port map( Y => n444, A => current_state_0_port, B => n451); U188 : LIBNA2 port map( Y => n449, A => dime_in_port, B => n450); U187 : LIBNA2 port map( Y => n445, A => quarter_in_port, B => n448); U186 : LIBNO2 port map( Y => n448, A => nickel_in_port, B => dime_in_port ); U199 : LIBOAI21 port map( Y => n459, A1 => n444, A2 => n446, B1 => n452); U185 : LIBXNOR port map( Y => n447, A => current_state_1_port, B => current_state_2_port); U198 : LIBNA4 port map( Y => n458, A => n454, B => n448, C => net4, D => n451); U184 : LIBAOI21 port map( Y => dime_out_port, A1 => n444, A2 => n445, B1 => n446); U197 : LIBMUX21 port map( Y => nickel_out_port, S => current_state_0_port , A => n456, B => n457); U196 : LIBNO2 port map( Y => n457, A => n447, B => n445); U195 : LIBNO3S port map( Y => n456, A => n446, B => n455, C => n449); U194 : LIBINV port map( Y => n451, A => n455); U193 : LIBINV port map( Y => n455, A => current_state_1_port); U192 : LIBINV3 port map( Y => n454, A => n446); U191 : LIBINV3 port map( Y => n446, A => current_state_2_port); U190 : LIBNO2 port map( Y => n452, A => n453, B => quarter_in_port); end SYN_behav;