--------------------------------------------------------------- ----- Design Unit : pops --------------------------------------------------------------- library VERILOG; use VERILOG.all; use VERILOG_STD.all; use STD.TEXTIO.all; use WORK.all; ---------- Entity Declaration ---------- entity pops is port ( PORT_1 : IN WIRE; D : IN WIRE; S : IN WIRE; R : IN WIRE; E : OUT WIRE; C : OUT WIRE ); signal PORT_1_temp : WIRE; signal D_temp : WIRE; signal S_temp : WIRE; signal R_temp : WIRE; signal E_temp : WIRE; signal C_temp : WIRE; end pops; ---------- Architecture Body ---------- architecture arch_pops of pops is component AND_GATE generic ( strength0 : STRENGTH := STRONG; strength1 : STRENGTH := STRONG; delay1 : INTEGER := NOT_SPECIFIED; delay2 : INTEGER := NOT_SPECIFIED; N : NATURAL := 2; delay_units : TIME := 1 ns ); port ( output : out MVL; inputs : in MVL_VECTOR (1 TO N) ); end component; for all: AND_GATE use entity VERILOG.AND_GATE(ARCH_AND_GATE); signal OK : WIRE; signal bank, bank_1, bank_2 : VLINT; begin TEMP_ASSIGN_1: PORT_1_temp <= PORT_1; TEMP_ASSIGN_2: D_temp <= D; TEMP_ASSIGN_3: S_temp <= S; TEMP_ASSIGN_4: R_temp <= R; TEMP_ASSIGN_5: E <= E_temp; TEMP_ASSIGN_6: C <= C_temp; E_temp <= gte (bank, "1111"); C_temp <= eq (bank, "10100"); AND_GATE_1: AND_GATE generic map ( N => 2 ) port map ( output => OK, inputs(1) => S_temp, inputs(2) => E_temp ) ; ALWAYS_1: process begin wait until bool ((not PORT_1_temp'STABLE and (GET_01X_VAL(PORT_1_temp) = '1' or GET_01X_VAL(PORT_1_temp'LAST_VALUE) = '0')) or (not D_temp'STABLE and (GET_01X_VAL(D_temp) = '1' or GET_01X_VAL(D_temp'LAST_VALUE) = '0'))); if bool (PORT_1_temp) then bank_1 <= align_size (bank + "101", bank'LENGTH); else if bool (D_temp) then bank_1 <= align_size (bank + "1010", bank'LENGTH); end if; end if; end process ALWAYS_1; ALWAYS_2: process begin wait until bool ((not OK'STABLE and (GET_01X_VAL(OK) = '1' or GET_01X_VAL(OK'LAST_VALUE) = '0')) or (not R_temp'STABLE and (GET_01X_VAL(R_temp) = '1' or GET_01X_VAL(R_temp'LAST_VALUE) = '0'))); bank_2 <= align_size ('0', bank'LENGTH); end process ALWAYS_2; bank <= bank_1 when not bank_1'quiet else bank_2 when not bank_2'quiet else bank; end arch_pops; --------------------------------------------------------------- ----- Design Unit : testBF --------------------------------------------------------------- library VERILOG; use VERILOG.all; use VERILOG_STD.all; use STD.TEXTIO.all; use WORK.all; ---------- Entity Declaration ---------- entity testBF is end testBF; ---------- Architecture Body ---------- architecture arch_testBF of testBF is signal Nickel, Dime, Sel, Ret, Nickel_1, Dime_1, Sel_1, Ret_1 : MVL := 'X'; signal enable, change : WIRE; component pops port ( PORT_1 : IN WIRE; D : IN WIRE; S : IN WIRE; R : IN WIRE; E : OUT WIRE; C : OUT WIRE ); end component; for all: pops use entity WORK.pops(arch_pops); begin ps: pops port map ( Nickel, Dime, Sel, Ret, enable, change ) ; INITIAL_1: process variable DISPLAY_1 : LINE; begin Nickel_1 <= align_size ('0', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); Dime_1 <= align_size ('0', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); Sel_1 <= align_size ('0', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); Ret_1 <= align_size ('0', 1); wait for 10 ns; Ret_1 <= align_size ('1', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); wait for 10 ns; Ret_1 <= align_size ('0', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); wait for 10 ns; Nickel_1 <= align_size ('1', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); wait for 10 ns; Nickel_1 <= align_size ('0', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); wait for 10 ns; Dime_1 <= align_size ('1', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); wait for 10 ns; Dime_1 <= align_size ('0', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); wait for 10 ns; Sel_1 <= align_size ('1', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); wait for 10 ns; Sel_1 <= align_size ('0', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); wait for 10 ns; Dime_1 <= align_size ('1', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); wait for 10 ns; Dime_1 <= align_size ('0', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); wait for 10 ns; Dime_1 <= align_size ('1', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); wait for 10 ns; Dime_1 <= align_size ('0', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); wait for 10 ns; Sel_1 <= align_size ('1', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); wait for 10 ns; Sel_1 <= align_size ('0', 1); wait for 0 ns; wait for 0 ns; write (DISPLAY_1, STRING' ("NICKEL =")); write (DISPLAY_1, MVL_STRING (Nickel)); write (DISPLAY_1, STRING' (" DIME = ")); write (DISPLAY_1, MVL_STRING (Dime)); write (DISPLAY_1, STRING' (" Sel = ")); write (DISPLAY_1, MVL_STRING (Sel)); write (DISPLAY_1, STRING' (" Ret = ")); write (DISPLAY_1, MVL_STRING (Ret)); write (DISPLAY_1, STRING' (" enable = ")); write (DISPLAY_1, MVL_STRING (enable)); write (DISPLAY_1, STRING' (" change = ")); write (DISPLAY_1, MVL_STRING (change)); writeline (OUTPUT, DISPLAY_1); wait for 10 ns; sys_finish; wait; end process INITIAL_1; Nickel <= Nickel_1 when not Nickel_1'quiet else Nickel; Dime <= Dime_1 when not Dime_1'quiet else Dime; Sel <= Sel_1 when not Sel_1'quiet else Sel; Ret <= Ret_1 when not Ret_1'quiet else Ret; end arch_testBF;