From 61ed88ce64dd94d566aa1eee0ff752a79a5cf427 Mon Sep 17 00:00:00 2001 From: Adrian Scripca Date: Thu, 31 Mar 2022 14:13:34 +0300 Subject: [PATCH] Fixed video, kbd and buzzer --- PLLJ_PLLSPE_INFO.txt | 5 + cpu/alu/alu.bdf | 4176 + cpu/alu/alu.bsf | 309 + cpu/alu/alu.v | 384 + cpu/alu/alu_bit_select.bdf | 848 + cpu/alu/alu_bit_select.bsf | 51 + cpu/alu/alu_bit_select.v | 64 + cpu/alu/alu_control.bdf | 2542 + cpu/alu/alu_control.bsf | 288 + cpu/alu/alu_control.v | 250 + cpu/alu/alu_core.bdf | 870 + cpu/alu/alu_core.bsf | 92 + cpu/alu/alu_core.v | 100 + cpu/alu/alu_flags.bdf | 4050 + cpu/alu/alu_flags.bsf | 302 + cpu/alu/alu_flags.v | 358 + cpu/alu/alu_mux_2.bdf | 275 + cpu/alu/alu_mux_2.bsf | 57 + cpu/alu/alu_mux_2.v | 48 + cpu/alu/alu_mux_2z.bdf | 299 + cpu/alu/alu_mux_2z.bsf | 64 + cpu/alu/alu_mux_2z.v | 49 + cpu/alu/alu_mux_3z.bdf | 445 + cpu/alu/alu_mux_3z.bsf | 78 + cpu/alu/alu_mux_3z.v | 59 + cpu/alu/alu_mux_4.bdf | 556 + cpu/alu/alu_mux_4.bsf | 71 + cpu/alu/alu_mux_4.v | 61 + cpu/alu/alu_mux_8.bdf | 1114 + cpu/alu/alu_mux_8.bsf | 99 + cpu/alu/alu_mux_8.v | 84 + cpu/alu/alu_prep_daa.bdf | 624 + cpu/alu/alu_prep_daa.bsf | 64 + cpu/alu/alu_prep_daa.v | 63 + cpu/alu/alu_select.bdf | 653 + cpu/alu/alu_select.bsf | 267 + cpu/alu/alu_select.v | 114 + cpu/alu/alu_shifter_core.bdf | 2140 + cpu/alu/alu_shifter_core.bsf | 86 + cpu/alu/alu_shifter_core.v | 142 + cpu/alu/alu_slice.bdf | 756 + cpu/alu/alu_slice.bsf | 85 + cpu/alu/alu_slice.v | 76 + cpu/alu/simulation/modelsim/r | 1 + cpu/alu/simulation/modelsim/test_alu.mpf | 539 + cpu/alu/simulation/modelsim/wave_alu.do | 74 + cpu/alu/simulation/modelsim/wave_core.do | 29 + cpu/alu/simulation/modelsim/wave_mux_3z.do | 27 + cpu/alu/simulation/modelsim/wave_prep_daa.do | 25 + .../simulation/modelsim/wave_shifter_core.do | 30 + cpu/alu/simulation/modelsim/wave_slice.do | 31 + cpu/alu/test_alu.qpf | 30 + cpu/alu/test_alu.qsf | 66 + cpu/alu/test_alu.sv | 229 + cpu/alu/test_core.sv | 135 + cpu/alu/test_mux_3z.sv | 73 + cpu/alu/test_prep_daa.sv | 86 + cpu/alu/test_shifter_core.sv | 169 + cpu/alu/test_slice.sv | 184 + cpu/bus/address_latch.bdf | 1103 + cpu/bus/address_latch.bsf | 120 + cpu/bus/address_latch.v | 128 + cpu/bus/address_mux.bdf | 292 + cpu/bus/address_mux.bsf | 62 + cpu/bus/address_mux.v | 48 + cpu/bus/address_pins.bdf | 261 + cpu/bus/address_pins.bsf | 64 + cpu/bus/address_pins.v | 69 + cpu/bus/bus_control.bdf | 243 + cpu/bus/bus_control.bsf | 50 + cpu/bus/bus_control.v | 53 + cpu/bus/bus_switch.bsf | 99 + cpu/bus/bus_switch.v | 41 + cpu/bus/control_pins_n.bdf | 963 + cpu/bus/control_pins_n.bsf | 232 + cpu/bus/control_pins_n.v | 112 + cpu/bus/data_pins.bdf | 612 + cpu/bus/data_pins.bsf | 78 + cpu/bus/data_pins.v | 86 + cpu/bus/data_pins_lattice.v | 39 + cpu/bus/data_switch.bdf | 230 + cpu/bus/data_switch.bsf | 57 + cpu/bus/data_switch.v | 55 + cpu/bus/data_switch_mask.bdf | 518 + cpu/bus/data_switch_mask.bsf | 64 + cpu/bus/data_switch_mask.v | 68 + cpu/bus/inc_dec.bdf | 2480 + cpu/bus/inc_dec.bsf | 64 + cpu/bus/inc_dec.v | 181 + cpu/bus/inc_dec_2bit.bdf | 378 + cpu/bus/inc_dec_2bit.bsf | 86 + cpu/bus/inc_dec_2bit.v | 54 + cpu/bus/simulation/modelsim/r | 1 + cpu/bus/simulation/modelsim/test_bus.mpf | 511 + cpu/bus/simulation/modelsim/wave_bus.do | 34 + cpu/bus/simulation/modelsim/wave_pins.do | 34 + cpu/bus/test_bus.qpf | 30 + cpu/bus/test_bus.qsf | 77 + cpu/bus/test_bus.sv | 109 + cpu/bus/test_pins.sv | 105 + cpu/control/Timings.csv | 1172 + cpu/control/Timings.xlsm | Bin 0 -> 92971 bytes cpu/control/clk_delay.bdf | 1201 + cpu/control/clk_delay.bsf | 141 + cpu/control/clk_delay.v | 159 + cpu/control/decode_state.bdf | 1198 + cpu/control/decode_state.bsf | 190 + cpu/control/decode_state.v | 182 + cpu/control/exec_matrix.vh | 3882 + cpu/control/exec_matrix_compiled.vh | 5812 ++ cpu/control/exec_module.vh | 127 + cpu/control/exec_zero.vh | 127 + cpu/control/execute.bsf | 946 + cpu/control/execute.v | 158 + cpu/control/gencompile.py | 146 + cpu/control/genmatrix.py | 189 + cpu/control/genref.py | 61 + cpu/control/interrupts.bdf | 1885 + cpu/control/interrupts.bsf | 141 + cpu/control/interrupts.v | 248 + cpu/control/interrupts.v.bak | 246 + cpu/control/ir.bdf | 260 + cpu/control/ir.bsf | 71 + cpu/control/ir.v | 58 + cpu/control/memory_ifc.bdf | 3677 + cpu/control/memory_ifc.bsf | 176 + cpu/control/memory_ifc.v | 430 + cpu/control/pin_control.bdf | 1087 + cpu/control/pin_control.bsf | 113 + cpu/control/pin_control.v | 89 + cpu/control/pla_decode.bsf | 50 + cpu/control/pla_decode.v | 121 + cpu/control/resets.bdf | 1114 + cpu/control/resets.bsf | 85 + cpu/control/resets.v | 144 + cpu/control/sequencer.bdf | 2320 + cpu/control/sequencer.bsf | 162 + cpu/control/sequencer.v | 279 + cpu/control/simulation/modelsim/r | 1 + .../simulation/modelsim/test_control.mpf | 524 + .../simulation/modelsim/wave_interrupts.do | 38 + .../simulation/modelsim/wave_pin_control.do | 33 + cpu/control/simulation/modelsim/wave_reset.do | 31 + .../simulation/modelsim/wave_sequencer.do | 40 + cpu/control/temp_wires.vh | 694 + cpu/control/test_control.qpf | 30 + cpu/control/test_control.qsf | 74 + cpu/control/test_decode.sv | 163 + cpu/control/test_interrupts.sv | 93 + cpu/control/test_pin_control.sv | 99 + cpu/control/test_reset.sv | 67 + cpu/control/test_sequencer.sv | 66 + cpu/control/timing_macros.i | 372 + cpu/copyleft.txt | 13 + cpu/export.py | 70 + cpu/readme.txt | 33 + cpu/registers/reg_control.bdf | 3666 + cpu/registers/reg_control.bsf | 337 + cpu/registers/reg_control.v | 325 + cpu/registers/reg_file.bdf | 7388 ++ cpu/registers/reg_file.bsf | 260 + cpu/registers/reg_file.v | 570 + cpu/registers/reg_latch.bdf | 239 + cpu/registers/reg_latch.bsf | 58 + cpu/registers/reg_latch.v | 56 + cpu/registers/simulation/modelsim/r | 1 + .../simulation/modelsim/test_registers.mpf | 510 + .../simulation/modelsim/wave_latch.do | 26 + .../simulation/modelsim/wave_regfile.do | 50 + .../simulation/modelsim/wave_registers.do | 62 + cpu/registers/test_latch.sv | 65 + cpu/registers/test_regfile.sv | 173 + cpu/registers/test_registers.qpf | 30 + cpu/registers/test_registers.qsf | 68 + cpu/registers/test_registers.sv | 250 + cpu/top-level-files.txt | 67 + cpu/toplevel/core.vh | 72 + cpu/toplevel/coremodules.vh | 566 + cpu/toplevel/fuse/README | 76 + cpu/toplevel/fuse/regress.expected | 263 + cpu/toplevel/fuse/regress.in | 197 + cpu/toplevel/fuse/tests.expected | 18416 +++++ cpu/toplevel/fuse/tests.in | 9023 +++ cpu/toplevel/gencoremodules.py | 124 + cpu/toplevel/genfuse.py | 303 + cpu/toplevel/genglobals.py | 63 + cpu/toplevel/globals.vh | 290 + cpu/toplevel/simulation/modelsim/io.hex | 1 + cpu/toplevel/simulation/modelsim/r | 1 + cpu/toplevel/simulation/modelsim/ram.hexdump | 24 + cpu/toplevel/simulation/modelsim/test_top.mpf | 594 + cpu/toplevel/simulation/modelsim/wave_fuse.do | 438 + cpu/toplevel/simulation/modelsim/wave_top.do | 438 + cpu/toplevel/tb_io.sv | 61 + cpu/toplevel/tb_iorq.sv | 32 + cpu/toplevel/tb_ram.sv | 41 + cpu/toplevel/test_fuse.sv | 42 + cpu/toplevel/test_fuse.vh | 5095 ++ cpu/toplevel/test_top.sv | 104 + cpu/toplevel/toplevel.bdf | 1407 + cpu/toplevel/toplevel.qpf | 30 + cpu/toplevel/toplevel.qsf | 603 + cpu/toplevel/z80.svh | 43 + cpu/toplevel/z80_top_direct_n.v | 85 + cpu/toplevel/z80_top_ifc_n.sv | 35 + db/.cmp.kpt | Bin 204 -> 714 bytes db/altsyncram_7ti2.tdf | 781 + db/altsyncram_bui2.tdf | 6 +- db/altsyncram_f2a1.tdf | 219 + db/logic_util_heursitic.dat | Bin 12848 -> 136224 bytes db/pll_altpll.v | 105 + db/pll_video_altpll.v | 97 + db/prev_cmp_spectrum.qmsg | 492 +- db/spectrum.(0).cnf.cdb | Bin 4651 -> 7821 bytes db/spectrum.(0).cnf.hdb | Bin 2376 -> 3209 bytes db/spectrum.(1).cnf.cdb | Bin 1928 -> 1929 bytes db/spectrum.(1).cnf.hdb | Bin 1101 -> 1109 bytes db/spectrum.(10).cnf.cdb | Bin 4033 -> 2194 bytes db/spectrum.(10).cnf.hdb | Bin 1467 -> 1177 bytes db/spectrum.(11).cnf.cdb | Bin 837 -> 1634 bytes db/spectrum.(11).cnf.hdb | Bin 597 -> 849 bytes db/spectrum.(12).cnf.cdb | Bin 1891 -> 4330 bytes db/spectrum.(12).cnf.hdb | Bin 845 -> 1302 bytes db/spectrum.(13).cnf.cdb | Bin 4118 -> 1159 bytes db/spectrum.(13).cnf.hdb | Bin 1486 -> 883 bytes db/spectrum.(14).cnf.cdb | Bin 1938 -> 1250 bytes db/spectrum.(14).cnf.hdb | Bin 844 -> 839 bytes db/spectrum.(15).cnf.cdb | Bin 6560 -> 3732 bytes db/spectrum.(15).cnf.hdb | Bin 1859 -> 986 bytes db/spectrum.(16).cnf.cdb | Bin 1738 -> 7079 bytes db/spectrum.(16).cnf.hdb | Bin 1108 -> 3009 bytes db/spectrum.(17).cnf.cdb | Bin 1883 -> 2043 bytes db/spectrum.(17).cnf.hdb | Bin 1072 -> 1279 bytes db/spectrum.(18).cnf.cdb | Bin 7609 -> 1804 bytes db/spectrum.(18).cnf.hdb | Bin 2146 -> 1096 bytes db/spectrum.(19).cnf.cdb | Bin 2193 -> 1440 bytes db/spectrum.(19).cnf.hdb | Bin 1167 -> 1001 bytes db/spectrum.(2).cnf.cdb | Bin 1395 -> 1538 bytes db/spectrum.(2).cnf.hdb | Bin 846 -> 848 bytes db/spectrum.(20).cnf.cdb | Bin 1634 -> 1187 bytes db/spectrum.(20).cnf.hdb | Bin 849 -> 750 bytes db/spectrum.(21).cnf.cdb | Bin 4331 -> 15374 bytes db/spectrum.(21).cnf.hdb | Bin 1303 -> 2142 bytes db/spectrum.(22).cnf.cdb | Bin 1163 -> 9198 bytes db/spectrum.(22).cnf.hdb | Bin 872 -> 2208 bytes db/spectrum.(23).cnf.cdb | Bin 1251 -> 9421 bytes db/spectrum.(23).cnf.hdb | Bin 835 -> 2794 bytes db/spectrum.(24).cnf.cdb | Bin 3732 -> 4520 bytes db/spectrum.(24).cnf.hdb | Bin 970 -> 1299 bytes db/spectrum.(25).cnf.cdb | Bin 0 -> 18523 bytes db/spectrum.(25).cnf.hdb | Bin 0 -> 1820 bytes db/spectrum.(26).cnf.cdb | Bin 0 -> 18027 bytes db/spectrum.(26).cnf.hdb | Bin 0 -> 8907 bytes db/spectrum.(27).cnf.cdb | Bin 0 -> 1855 bytes db/spectrum.(27).cnf.hdb | Bin 0 -> 1056 bytes db/spectrum.(28).cnf.cdb | Bin 0 -> 2129 bytes db/spectrum.(28).cnf.hdb | Bin 0 -> 1261 bytes db/spectrum.(29).cnf.cdb | Bin 0 -> 191922 bytes db/spectrum.(29).cnf.hdb | Bin 0 -> 13326 bytes db/spectrum.(3).cnf.cdb | Bin 1573 -> 19156 bytes db/spectrum.(3).cnf.hdb | Bin 720 -> 1068 bytes db/spectrum.(30).cnf.cdb | Bin 0 -> 2284 bytes db/spectrum.(30).cnf.hdb | Bin 0 -> 1361 bytes db/spectrum.(31).cnf.cdb | Bin 0 -> 1519 bytes db/spectrum.(31).cnf.hdb | Bin 0 -> 961 bytes db/spectrum.(32).cnf.cdb | Bin 0 -> 1581 bytes db/spectrum.(32).cnf.hdb | Bin 0 -> 919 bytes db/spectrum.(33).cnf.cdb | Bin 0 -> 11911 bytes db/spectrum.(33).cnf.hdb | Bin 0 -> 1692 bytes db/spectrum.(34).cnf.cdb | Bin 0 -> 1906 bytes db/spectrum.(34).cnf.hdb | Bin 0 -> 917 bytes db/spectrum.(35).cnf.cdb | Bin 0 -> 3565 bytes db/spectrum.(35).cnf.hdb | Bin 0 -> 1529 bytes db/spectrum.(36).cnf.cdb | Bin 0 -> 2251 bytes db/spectrum.(36).cnf.hdb | Bin 0 -> 1188 bytes db/spectrum.(37).cnf.cdb | Bin 0 -> 4108 bytes db/spectrum.(37).cnf.hdb | Bin 0 -> 2046 bytes db/spectrum.(38).cnf.cdb | Bin 0 -> 1177 bytes db/spectrum.(38).cnf.hdb | Bin 0 -> 842 bytes db/spectrum.(39).cnf.cdb | Bin 0 -> 1613 bytes db/spectrum.(39).cnf.hdb | Bin 0 -> 924 bytes db/spectrum.(4).cnf.cdb | Bin 1536 -> 847 bytes db/spectrum.(4).cnf.hdb | Bin 848 -> 590 bytes db/spectrum.(40).cnf.cdb | Bin 0 -> 1073 bytes db/spectrum.(40).cnf.hdb | Bin 0 -> 1198 bytes db/spectrum.(41).cnf.cdb | Bin 0 -> 4886 bytes db/spectrum.(41).cnf.hdb | Bin 0 -> 2233 bytes db/spectrum.(42).cnf.cdb | Bin 0 -> 909 bytes db/spectrum.(42).cnf.hdb | Bin 0 -> 698 bytes db/spectrum.(43).cnf.cdb | Bin 0 -> 10126 bytes db/spectrum.(43).cnf.hdb | Bin 0 -> 3388 bytes db/spectrum.(44).cnf.cdb | Bin 0 -> 1990 bytes db/spectrum.(44).cnf.hdb | Bin 0 -> 1165 bytes db/spectrum.(45).cnf.cdb | Bin 0 -> 1345 bytes db/spectrum.(45).cnf.hdb | Bin 0 -> 829 bytes db/spectrum.(46).cnf.cdb | Bin 0 -> 1320 bytes db/spectrum.(46).cnf.hdb | Bin 0 -> 891 bytes db/spectrum.(47).cnf.cdb | Bin 0 -> 2158 bytes db/spectrum.(47).cnf.hdb | Bin 0 -> 1216 bytes db/spectrum.(48).cnf.cdb | Bin 0 -> 1225 bytes db/spectrum.(48).cnf.hdb | Bin 0 -> 845 bytes db/spectrum.(49).cnf.cdb | Bin 0 -> 1555 bytes db/spectrum.(49).cnf.hdb | Bin 0 -> 949 bytes db/spectrum.(5).cnf.cdb | Bin 19154 -> 1507 bytes db/spectrum.(5).cnf.hdb | Bin 1055 -> 926 bytes db/spectrum.(50).cnf.cdb | Bin 0 -> 1288 bytes db/spectrum.(50).cnf.hdb | Bin 0 -> 877 bytes db/spectrum.(51).cnf.cdb | Bin 0 -> 10733 bytes db/spectrum.(51).cnf.hdb | Bin 0 -> 2809 bytes db/spectrum.(52).cnf.cdb | Bin 0 -> 1795 bytes db/spectrum.(52).cnf.hdb | Bin 0 -> 918 bytes db/spectrum.(53).cnf.cdb | Bin 0 -> 3641 bytes db/spectrum.(53).cnf.hdb | Bin 0 -> 1973 bytes db/spectrum.(54).cnf.cdb | Bin 0 -> 6411 bytes db/spectrum.(54).cnf.hdb | Bin 0 -> 1833 bytes db/spectrum.(55).cnf.cdb | Bin 0 -> 2033 bytes db/spectrum.(55).cnf.hdb | Bin 0 -> 1080 bytes db/spectrum.(56).cnf.cdb | Bin 0 -> 3960 bytes db/spectrum.(56).cnf.hdb | Bin 0 -> 1493 bytes db/spectrum.(57).cnf.cdb | Bin 0 -> 1076 bytes db/spectrum.(57).cnf.hdb | Bin 0 -> 771 bytes db/spectrum.(58).cnf.cdb | Bin 0 -> 1315 bytes db/spectrum.(58).cnf.hdb | Bin 0 -> 847 bytes db/spectrum.(59).cnf.cdb | Bin 0 -> 793 bytes db/spectrum.(59).cnf.hdb | Bin 0 -> 771 bytes db/spectrum.(6).cnf.cdb | Bin 847 -> 2720 bytes db/spectrum.(6).cnf.hdb | Bin 590 -> 1426 bytes db/spectrum.(60).cnf.cdb | Bin 0 -> 1520 bytes db/spectrum.(60).cnf.hdb | Bin 0 -> 798 bytes db/spectrum.(61).cnf.cdb | Bin 0 -> 1999 bytes db/spectrum.(61).cnf.hdb | Bin 0 -> 977 bytes db/spectrum.(62).cnf.cdb | Bin 0 -> 2288 bytes db/spectrum.(62).cnf.hdb | Bin 0 -> 1108 bytes db/spectrum.(63).cnf.cdb | Bin 0 -> 3075 bytes db/spectrum.(63).cnf.hdb | Bin 0 -> 1281 bytes db/spectrum.(64).cnf.cdb | Bin 0 -> 1415 bytes db/spectrum.(64).cnf.hdb | Bin 0 -> 1149 bytes db/spectrum.(65).cnf.cdb | Bin 0 -> 1890 bytes db/spectrum.(65).cnf.hdb | Bin 0 -> 850 bytes db/spectrum.(66).cnf.cdb | Bin 0 -> 9829 bytes db/spectrum.(66).cnf.hdb | Bin 0 -> 1500 bytes db/spectrum.(67).cnf.cdb | Bin 0 -> 1933 bytes db/spectrum.(67).cnf.hdb | Bin 0 -> 1100 bytes db/spectrum.(68).cnf.cdb | Bin 0 -> 1526 bytes db/spectrum.(68).cnf.hdb | Bin 0 -> 844 bytes db/spectrum.(69).cnf.cdb | Bin 0 -> 7390 bytes db/spectrum.(69).cnf.hdb | Bin 0 -> 777 bytes db/spectrum.(7).cnf.cdb | Bin 1507 -> 1892 bytes db/spectrum.(7).cnf.hdb | Bin 905 -> 854 bytes db/spectrum.(70).cnf.cdb | Bin 0 -> 1957 bytes db/spectrum.(70).cnf.hdb | Bin 0 -> 1238 bytes db/spectrum.(71).cnf.cdb | Bin 0 -> 1811 bytes db/spectrum.(71).cnf.hdb | Bin 0 -> 1092 bytes db/spectrum.(72).cnf.cdb | Bin 0 -> 1434 bytes db/spectrum.(72).cnf.hdb | Bin 0 -> 1004 bytes db/spectrum.(8).cnf.cdb | Bin 2717 -> 4120 bytes db/spectrum.(8).cnf.hdb | Bin 1432 -> 1497 bytes db/spectrum.(9).cnf.cdb | Bin 1890 -> 838 bytes db/spectrum.(9).cnf.hdb | Bin 845 -> 592 bytes db/spectrum.asm.qmsg | 12 +- db/spectrum.asm.rdb | Bin 1354 -> 1353 bytes db/spectrum.asm_labs.ddb | Bin 26522 -> 59602 bytes db/spectrum.cbx.xml | 3 +- db/spectrum.cmp.bpm | Bin 960 -> 2650 bytes db/spectrum.cmp.cdb | Bin 88655 -> 589865 bytes db/spectrum.cmp.hdb | Bin 30515 -> 94953 bytes db/spectrum.cmp.idb | Bin 7039 -> 59349 bytes db/spectrum.cmp.logdb | 111 +- db/spectrum.cmp.rdb | Bin 135175 -> 179309 bytes ...ve_io_sim_cache.45um_ff_1200mv_0c_fast.hsd | Bin 745543 -> 745366 bytes ...e_io_sim_cache.45um_tt_1200mv_85c_slow.hsd | Bin 746534 -> 747565 bytes db/spectrum.db_info | 2 +- db/spectrum.eda.qmsg | 24 +- db/spectrum.fit.qmsg | 120 +- db/spectrum.hier_info | 5852 +- db/spectrum.hif | Bin 3465 -> 11936 bytes db/spectrum.ipinfo | Bin 477 -> 524 bytes db/spectrum.lpc.html | 1418 +- db/spectrum.lpc.rdb | Bin 771 -> 2209 bytes db/spectrum.lpc.txt | 1330 +- db/spectrum.map.bpm | Bin 963 -> 2470 bytes db/spectrum.map.cdb | Bin 32742 -> 198350 bytes db/spectrum.map.hdb | Bin 29585 -> 92618 bytes db/spectrum.map.kpt | Bin 1273 -> 16645 bytes db/spectrum.map.qmsg | 210 +- db/spectrum.map.rdb | Bin 1320 -> 1336 bytes db/spectrum.map_bb.cdb | Bin 2043 -> 2364 bytes db/spectrum.map_bb.hdb | Bin 16443 -> 27081 bytes db/spectrum.pre_map.hdb | Bin 30662 -> 91474 bytes db/spectrum.qns | 1 - ...ock => spectrum.quiproj.1163158.rdr.flock} | 0 db/spectrum.root_partition.map.reg_db.cdb | Bin 479 -> 1012 bytes db/spectrum.routing.rdb | Bin 21151 -> 30739 bytes db/spectrum.rtlv.hdb | Bin 29820 -> 87629 bytes db/spectrum.rtlv_sg.cdb | Bin 43580 -> 394206 bytes db/spectrum.rtlv_sg_swap.cdb | Bin 4849 -> 23664 bytes db/spectrum.sgdiff.cdb | Bin 29014 -> 216535 bytes db/spectrum.sgdiff.hdb | Bin 25538 -> 70951 bytes db/spectrum.smp_dump.txt | 10 + db/spectrum.sta.qmsg | 100 +- db/spectrum.sta.rdb | Bin 28627 -> 65837 bytes db/spectrum.sta_cmp.6_slow_1200mv_85c.tdb | Bin 58727 -> 572210 bytes db/spectrum.tiscmp.fast_1200mv_0c.ddb | Bin 272119 -> 1189261 bytes db/spectrum.tiscmp.slow_1200mv_0c.ddb | Bin 272928 -> 1191255 bytes db/spectrum.tiscmp.slow_1200mv_85c.ddb | Bin 272994 -> 1191499 bytes db/spectrum.tmw_info | 2 - db/spectrum.vpr.ammdb | Bin 2125 -> 3026 bytes greybox_tmp/cbx_args.txt | 11 +- .../compiled_partitions/spectrum.db_info | 2 +- .../spectrum.root_partition.cmp.ammdb | Bin 2092 -> 3070 bytes .../spectrum.root_partition.cmp.cdb | Bin 36771 -> 238313 bytes .../spectrum.root_partition.cmp.hdb | Bin 30061 -> 94512 bytes .../spectrum.root_partition.cmp.kpt | Bin 0 -> 218 bytes .../spectrum.root_partition.cmp.rcfdb | Bin 48121 -> 308251 bytes .../spectrum.root_partition.map.cdb | Bin 32485 -> 198826 bytes .../spectrum.root_partition.map.dpi | Bin 3361 -> 10621 bytes .../spectrum.root_partition.map.hbdb.cdb | Bin 1440 -> 2660 bytes .../spectrum.root_partition.map.hbdb.hb_info | Bin 46 -> 50 bytes .../spectrum.root_partition.map.hbdb.hdb | Bin 29233 -> 92286 bytes .../spectrum.root_partition.map.hbdb.sig | 2 +- .../spectrum.root_partition.map.hdb | Bin 30719 -> 93824 bytes .../spectrum.root_partition.map.kpt | Bin 1282 -> 16747 bytes output_files/greybox_tmp/cbx_args.txt | 72 +- output_files/pll_i2s.qip | 0 output_files/pll_video.qip | 0 output_files/rom_scr.qip | 0 output_files/spectrum.asm.rpt | 14 +- output_files/spectrum.cdf | 2 +- output_files/spectrum.done | 2 +- output_files/spectrum.eda.rpt | 46 +- output_files/spectrum.fit.rpt | 19806 +++-- output_files/spectrum.fit.summary | 14 +- output_files/spectrum.flow.rpt | 116 +- output_files/spectrum.jdi | 2 +- output_files/spectrum.map.rpt | 3968 +- output_files/spectrum.map.smsg | 3 +- output_files/spectrum.map.summary | 14 +- output_files/spectrum.pin | 174 +- output_files/spectrum.sof | Bin 703948 -> 703948 bytes output_files/spectrum.sta.rpt | 42392 +++++++--- output_files/spectrum.sta.summary | 162 +- pll.ppf | 12 + pll.qip | 5 + pll.v | 365 + pll.v.bak | 340 + pll_bb.v | 243 + pll_i2s.ppf | 10 + pll_i2s.qip | 5 + pll_i2s.v | 309 + pll_i2s_bb.v | 199 + pll_video.ppf | 10 + pll_video.qip | 5 + pll_video.v | 309 + pll_video_bb.v | 199 + ram16.v | 2 +- ram16.v.bak | 244 + rom_scr.qip | 4 + rom_scr.v | 164 + rom_scr_bb.v | 110 + simulation/modelsim/spectrum.vo | 64225 ++++++++++++++-- .../modelsim/spectrum_6_1200mv_0c_slow.vo | 64225 ++++++++++++++-- .../modelsim/spectrum_6_1200mv_0c_v_slow.sdo | 62246 ++++++++++++--- .../modelsim/spectrum_6_1200mv_85c_slow.vo | 64225 ++++++++++++++-- .../modelsim/spectrum_6_1200mv_85c_v_slow.sdo | 62192 ++++++++++++--- .../modelsim/spectrum_min_1200mv_0c_fast.vo | 64225 ++++++++++++++-- .../spectrum_min_1200mv_0c_v_fast.sdo | 63134 ++++++++++++--- simulation/modelsim/spectrum_modelsim.xrf | 3364 +- simulation/modelsim/spectrum_v.sdo | 62192 ++++++++++++--- spectrum.qsf | 145 +- spectrum.sdc | 86 + spectrum.sdc.bak | 0 spectrum.sv | 269 + spectrum.sv.bak | 248 + spectrum.v | 72 - spectrum_assignment_defaults.qdf | 692 + ula/clocks.sv | 49 + ula/i2c_loader.vhd | 300 + ula/i2s_intf.vhd | 191 + ula/pll.ppf | 10 + ula/pll.qip | 5 + ula/pll.v | 326 + ula/ps2_kbd.sv | 110 + ula/ram8.qip | 3 + ula/ram8.v | 177 + ula/test_scr.hex | 217 + ula/test_scr.scr | Bin 0 -> 6912 bytes ula/test_ula.qpf | 30 + ula/test_ula.qsf | 578 + ula/test_ula.sv | 124 + ula/ula.sv | 179 + ula/ula.sv.bak | 154 + ula/video.sv | 201 + ula/zx_kbd.sv | 230 + 493 files changed, 633379 insertions(+), 79570 deletions(-) create mode 100644 PLLJ_PLLSPE_INFO.txt create mode 100644 cpu/alu/alu.bdf create mode 100644 cpu/alu/alu.bsf create mode 100644 cpu/alu/alu.v create mode 100644 cpu/alu/alu_bit_select.bdf create mode 100644 cpu/alu/alu_bit_select.bsf create mode 100644 cpu/alu/alu_bit_select.v create mode 100644 cpu/alu/alu_control.bdf create mode 100644 cpu/alu/alu_control.bsf create mode 100644 cpu/alu/alu_control.v create mode 100644 cpu/alu/alu_core.bdf create mode 100644 cpu/alu/alu_core.bsf create mode 100644 cpu/alu/alu_core.v create mode 100644 cpu/alu/alu_flags.bdf create mode 100644 cpu/alu/alu_flags.bsf create mode 100644 cpu/alu/alu_flags.v create mode 100644 cpu/alu/alu_mux_2.bdf create mode 100644 cpu/alu/alu_mux_2.bsf create mode 100644 cpu/alu/alu_mux_2.v create mode 100644 cpu/alu/alu_mux_2z.bdf create mode 100644 cpu/alu/alu_mux_2z.bsf create mode 100644 cpu/alu/alu_mux_2z.v create mode 100644 cpu/alu/alu_mux_3z.bdf create mode 100644 cpu/alu/alu_mux_3z.bsf create mode 100644 cpu/alu/alu_mux_3z.v create mode 100644 cpu/alu/alu_mux_4.bdf create mode 100644 cpu/alu/alu_mux_4.bsf create mode 100644 cpu/alu/alu_mux_4.v create mode 100644 cpu/alu/alu_mux_8.bdf create mode 100644 cpu/alu/alu_mux_8.bsf create mode 100644 cpu/alu/alu_mux_8.v create mode 100644 cpu/alu/alu_prep_daa.bdf create mode 100644 cpu/alu/alu_prep_daa.bsf create mode 100644 cpu/alu/alu_prep_daa.v create mode 100644 cpu/alu/alu_select.bdf create mode 100644 cpu/alu/alu_select.bsf create mode 100644 cpu/alu/alu_select.v create mode 100644 cpu/alu/alu_shifter_core.bdf create mode 100644 cpu/alu/alu_shifter_core.bsf create mode 100644 cpu/alu/alu_shifter_core.v create mode 100644 cpu/alu/alu_slice.bdf create mode 100644 cpu/alu/alu_slice.bsf create mode 100644 cpu/alu/alu_slice.v create mode 100644 cpu/alu/simulation/modelsim/r create mode 100644 cpu/alu/simulation/modelsim/test_alu.mpf create mode 100644 cpu/alu/simulation/modelsim/wave_alu.do create mode 100644 cpu/alu/simulation/modelsim/wave_core.do create mode 100644 cpu/alu/simulation/modelsim/wave_mux_3z.do create mode 100644 cpu/alu/simulation/modelsim/wave_prep_daa.do create mode 100644 cpu/alu/simulation/modelsim/wave_shifter_core.do create mode 100644 cpu/alu/simulation/modelsim/wave_slice.do create mode 100644 cpu/alu/test_alu.qpf create mode 100644 cpu/alu/test_alu.qsf create mode 100644 cpu/alu/test_alu.sv create mode 100644 cpu/alu/test_core.sv create mode 100644 cpu/alu/test_mux_3z.sv create mode 100644 cpu/alu/test_prep_daa.sv create mode 100644 cpu/alu/test_shifter_core.sv create mode 100644 cpu/alu/test_slice.sv create mode 100644 cpu/bus/address_latch.bdf create mode 100644 cpu/bus/address_latch.bsf create mode 100644 cpu/bus/address_latch.v create mode 100644 cpu/bus/address_mux.bdf create mode 100644 cpu/bus/address_mux.bsf create mode 100644 cpu/bus/address_mux.v create mode 100644 cpu/bus/address_pins.bdf create mode 100644 cpu/bus/address_pins.bsf create mode 100644 cpu/bus/address_pins.v create mode 100644 cpu/bus/bus_control.bdf create mode 100644 cpu/bus/bus_control.bsf create mode 100644 cpu/bus/bus_control.v create mode 100644 cpu/bus/bus_switch.bsf create mode 100644 cpu/bus/bus_switch.v create mode 100644 cpu/bus/control_pins_n.bdf create mode 100644 cpu/bus/control_pins_n.bsf create mode 100644 cpu/bus/control_pins_n.v create mode 100644 cpu/bus/data_pins.bdf create mode 100644 cpu/bus/data_pins.bsf create mode 100644 cpu/bus/data_pins.v create mode 100644 cpu/bus/data_pins_lattice.v create mode 100644 cpu/bus/data_switch.bdf create mode 100644 cpu/bus/data_switch.bsf create mode 100644 cpu/bus/data_switch.v create mode 100644 cpu/bus/data_switch_mask.bdf create mode 100644 cpu/bus/data_switch_mask.bsf create mode 100644 cpu/bus/data_switch_mask.v create mode 100644 cpu/bus/inc_dec.bdf create mode 100644 cpu/bus/inc_dec.bsf create mode 100644 cpu/bus/inc_dec.v create mode 100644 cpu/bus/inc_dec_2bit.bdf create mode 100644 cpu/bus/inc_dec_2bit.bsf create mode 100644 cpu/bus/inc_dec_2bit.v create mode 100644 cpu/bus/simulation/modelsim/r create mode 100644 cpu/bus/simulation/modelsim/test_bus.mpf create mode 100644 cpu/bus/simulation/modelsim/wave_bus.do create mode 100644 cpu/bus/simulation/modelsim/wave_pins.do create mode 100644 cpu/bus/test_bus.qpf create mode 100644 cpu/bus/test_bus.qsf create mode 100644 cpu/bus/test_bus.sv create mode 100644 cpu/bus/test_pins.sv create mode 100644 cpu/control/Timings.csv create mode 100644 cpu/control/Timings.xlsm create mode 100644 cpu/control/clk_delay.bdf create mode 100644 cpu/control/clk_delay.bsf create mode 100644 cpu/control/clk_delay.v create mode 100644 cpu/control/decode_state.bdf create mode 100644 cpu/control/decode_state.bsf create mode 100644 cpu/control/decode_state.v create mode 100644 cpu/control/exec_matrix.vh create mode 100644 cpu/control/exec_matrix_compiled.vh create mode 100644 cpu/control/exec_module.vh create mode 100644 cpu/control/exec_zero.vh create mode 100644 cpu/control/execute.bsf create mode 100644 cpu/control/execute.v create mode 100644 cpu/control/gencompile.py create mode 100644 cpu/control/genmatrix.py create mode 100644 cpu/control/genref.py create mode 100644 cpu/control/interrupts.bdf create mode 100644 cpu/control/interrupts.bsf create mode 100644 cpu/control/interrupts.v create mode 100644 cpu/control/interrupts.v.bak create mode 100644 cpu/control/ir.bdf create mode 100644 cpu/control/ir.bsf create mode 100644 cpu/control/ir.v create mode 100644 cpu/control/memory_ifc.bdf create mode 100644 cpu/control/memory_ifc.bsf create mode 100644 cpu/control/memory_ifc.v create mode 100644 cpu/control/pin_control.bdf create mode 100644 cpu/control/pin_control.bsf create mode 100644 cpu/control/pin_control.v create mode 100644 cpu/control/pla_decode.bsf create mode 100644 cpu/control/pla_decode.v create mode 100644 cpu/control/resets.bdf create mode 100644 cpu/control/resets.bsf create mode 100644 cpu/control/resets.v create mode 100644 cpu/control/sequencer.bdf create mode 100644 cpu/control/sequencer.bsf create mode 100644 cpu/control/sequencer.v create mode 100644 cpu/control/simulation/modelsim/r create mode 100644 cpu/control/simulation/modelsim/test_control.mpf create mode 100644 cpu/control/simulation/modelsim/wave_interrupts.do create mode 100644 cpu/control/simulation/modelsim/wave_pin_control.do create mode 100644 cpu/control/simulation/modelsim/wave_reset.do create mode 100644 cpu/control/simulation/modelsim/wave_sequencer.do create mode 100644 cpu/control/temp_wires.vh create mode 100644 cpu/control/test_control.qpf create mode 100644 cpu/control/test_control.qsf create mode 100644 cpu/control/test_decode.sv create mode 100644 cpu/control/test_interrupts.sv create mode 100644 cpu/control/test_pin_control.sv create mode 100644 cpu/control/test_reset.sv create mode 100644 cpu/control/test_sequencer.sv create mode 100644 cpu/control/timing_macros.i create mode 100644 cpu/copyleft.txt create mode 100644 cpu/export.py create mode 100644 cpu/readme.txt create mode 100644 cpu/registers/reg_control.bdf create mode 100644 cpu/registers/reg_control.bsf create mode 100644 cpu/registers/reg_control.v create mode 100644 cpu/registers/reg_file.bdf create mode 100644 cpu/registers/reg_file.bsf create mode 100644 cpu/registers/reg_file.v create mode 100644 cpu/registers/reg_latch.bdf create mode 100644 cpu/registers/reg_latch.bsf create mode 100644 cpu/registers/reg_latch.v create mode 100644 cpu/registers/simulation/modelsim/r create mode 100644 cpu/registers/simulation/modelsim/test_registers.mpf create mode 100644 cpu/registers/simulation/modelsim/wave_latch.do create mode 100644 cpu/registers/simulation/modelsim/wave_regfile.do create mode 100644 cpu/registers/simulation/modelsim/wave_registers.do create mode 100644 cpu/registers/test_latch.sv create mode 100644 cpu/registers/test_regfile.sv create mode 100644 cpu/registers/test_registers.qpf create mode 100644 cpu/registers/test_registers.qsf create mode 100644 cpu/registers/test_registers.sv create mode 100644 cpu/top-level-files.txt create mode 100644 cpu/toplevel/core.vh create mode 100644 cpu/toplevel/coremodules.vh create mode 100644 cpu/toplevel/fuse/README create mode 100644 cpu/toplevel/fuse/regress.expected create mode 100644 cpu/toplevel/fuse/regress.in create mode 100644 cpu/toplevel/fuse/tests.expected create mode 100644 cpu/toplevel/fuse/tests.in create mode 100644 cpu/toplevel/gencoremodules.py create mode 100644 cpu/toplevel/genfuse.py create mode 100644 cpu/toplevel/genglobals.py create mode 100644 cpu/toplevel/globals.vh create mode 100644 cpu/toplevel/simulation/modelsim/io.hex create mode 100644 cpu/toplevel/simulation/modelsim/r create mode 100644 cpu/toplevel/simulation/modelsim/ram.hexdump create mode 100644 cpu/toplevel/simulation/modelsim/test_top.mpf create mode 100644 cpu/toplevel/simulation/modelsim/wave_fuse.do create mode 100644 cpu/toplevel/simulation/modelsim/wave_top.do create mode 100644 cpu/toplevel/tb_io.sv create mode 100644 cpu/toplevel/tb_iorq.sv create mode 100644 cpu/toplevel/tb_ram.sv create mode 100644 cpu/toplevel/test_fuse.sv create mode 100644 cpu/toplevel/test_fuse.vh create mode 100644 cpu/toplevel/test_top.sv create mode 100644 cpu/toplevel/toplevel.bdf create mode 100644 cpu/toplevel/toplevel.qpf create mode 100644 cpu/toplevel/toplevel.qsf create mode 100644 cpu/toplevel/z80.svh create mode 100644 cpu/toplevel/z80_top_direct_n.v create mode 100644 cpu/toplevel/z80_top_ifc_n.sv create mode 100644 db/altsyncram_7ti2.tdf create mode 100644 db/altsyncram_f2a1.tdf create mode 100644 db/pll_altpll.v create mode 100644 db/pll_video_altpll.v create mode 100644 db/spectrum.(25).cnf.cdb create mode 100644 db/spectrum.(25).cnf.hdb create mode 100644 db/spectrum.(26).cnf.cdb create mode 100644 db/spectrum.(26).cnf.hdb create mode 100644 db/spectrum.(27).cnf.cdb create mode 100644 db/spectrum.(27).cnf.hdb create mode 100644 db/spectrum.(28).cnf.cdb create mode 100644 db/spectrum.(28).cnf.hdb create mode 100644 db/spectrum.(29).cnf.cdb create mode 100644 db/spectrum.(29).cnf.hdb create mode 100644 db/spectrum.(30).cnf.cdb create mode 100644 db/spectrum.(30).cnf.hdb create mode 100644 db/spectrum.(31).cnf.cdb create mode 100644 db/spectrum.(31).cnf.hdb create mode 100644 db/spectrum.(32).cnf.cdb create mode 100644 db/spectrum.(32).cnf.hdb create mode 100644 db/spectrum.(33).cnf.cdb create mode 100644 db/spectrum.(33).cnf.hdb create mode 100644 db/spectrum.(34).cnf.cdb create mode 100644 db/spectrum.(34).cnf.hdb create mode 100644 db/spectrum.(35).cnf.cdb create mode 100644 db/spectrum.(35).cnf.hdb create mode 100644 db/spectrum.(36).cnf.cdb create mode 100644 db/spectrum.(36).cnf.hdb create mode 100644 db/spectrum.(37).cnf.cdb create mode 100644 db/spectrum.(37).cnf.hdb create mode 100644 db/spectrum.(38).cnf.cdb create mode 100644 db/spectrum.(38).cnf.hdb create mode 100644 db/spectrum.(39).cnf.cdb create mode 100644 db/spectrum.(39).cnf.hdb create mode 100644 db/spectrum.(40).cnf.cdb create mode 100644 db/spectrum.(40).cnf.hdb create mode 100644 db/spectrum.(41).cnf.cdb create mode 100644 db/spectrum.(41).cnf.hdb create mode 100644 db/spectrum.(42).cnf.cdb create mode 100644 db/spectrum.(42).cnf.hdb create mode 100644 db/spectrum.(43).cnf.cdb create mode 100644 db/spectrum.(43).cnf.hdb create mode 100644 db/spectrum.(44).cnf.cdb create mode 100644 db/spectrum.(44).cnf.hdb create mode 100644 db/spectrum.(45).cnf.cdb create mode 100644 db/spectrum.(45).cnf.hdb create mode 100644 db/spectrum.(46).cnf.cdb create mode 100644 db/spectrum.(46).cnf.hdb create mode 100644 db/spectrum.(47).cnf.cdb create mode 100644 db/spectrum.(47).cnf.hdb create mode 100644 db/spectrum.(48).cnf.cdb create mode 100644 db/spectrum.(48).cnf.hdb create mode 100644 db/spectrum.(49).cnf.cdb create mode 100644 db/spectrum.(49).cnf.hdb create mode 100644 db/spectrum.(50).cnf.cdb create mode 100644 db/spectrum.(50).cnf.hdb create mode 100644 db/spectrum.(51).cnf.cdb create mode 100644 db/spectrum.(51).cnf.hdb create mode 100644 db/spectrum.(52).cnf.cdb create mode 100644 db/spectrum.(52).cnf.hdb create mode 100644 db/spectrum.(53).cnf.cdb create mode 100644 db/spectrum.(53).cnf.hdb create mode 100644 db/spectrum.(54).cnf.cdb create mode 100644 db/spectrum.(54).cnf.hdb create mode 100644 db/spectrum.(55).cnf.cdb create mode 100644 db/spectrum.(55).cnf.hdb create mode 100644 db/spectrum.(56).cnf.cdb create mode 100644 db/spectrum.(56).cnf.hdb create mode 100644 db/spectrum.(57).cnf.cdb create mode 100644 db/spectrum.(57).cnf.hdb create mode 100644 db/spectrum.(58).cnf.cdb create mode 100644 db/spectrum.(58).cnf.hdb create mode 100644 db/spectrum.(59).cnf.cdb create mode 100644 db/spectrum.(59).cnf.hdb create mode 100644 db/spectrum.(60).cnf.cdb create mode 100644 db/spectrum.(60).cnf.hdb create mode 100644 db/spectrum.(61).cnf.cdb create mode 100644 db/spectrum.(61).cnf.hdb create mode 100644 db/spectrum.(62).cnf.cdb create mode 100644 db/spectrum.(62).cnf.hdb create mode 100644 db/spectrum.(63).cnf.cdb create mode 100644 db/spectrum.(63).cnf.hdb create mode 100644 db/spectrum.(64).cnf.cdb create mode 100644 db/spectrum.(64).cnf.hdb create mode 100644 db/spectrum.(65).cnf.cdb create mode 100644 db/spectrum.(65).cnf.hdb create mode 100644 db/spectrum.(66).cnf.cdb create mode 100644 db/spectrum.(66).cnf.hdb create mode 100644 db/spectrum.(67).cnf.cdb create mode 100644 db/spectrum.(67).cnf.hdb create mode 100644 db/spectrum.(68).cnf.cdb create mode 100644 db/spectrum.(68).cnf.hdb create mode 100644 db/spectrum.(69).cnf.cdb create mode 100644 db/spectrum.(69).cnf.hdb create mode 100644 db/spectrum.(70).cnf.cdb create mode 100644 db/spectrum.(70).cnf.hdb create mode 100644 db/spectrum.(71).cnf.cdb create mode 100644 db/spectrum.(71).cnf.hdb create mode 100644 db/spectrum.(72).cnf.cdb create mode 100644 db/spectrum.(72).cnf.hdb delete mode 100644 db/spectrum.qns rename db/{spectrum.quiproj.1130762.rdr.flock => spectrum.quiproj.1163158.rdr.flock} (100%) create mode 100644 db/spectrum.smp_dump.txt delete mode 100644 db/spectrum.tmw_info create mode 100644 incremental_db/compiled_partitions/spectrum.root_partition.cmp.kpt create mode 100644 output_files/pll_i2s.qip create mode 100644 output_files/pll_video.qip create mode 100644 output_files/rom_scr.qip create mode 100644 pll.ppf create mode 100644 pll.qip create mode 100644 pll.v create mode 100644 pll.v.bak create mode 100644 pll_bb.v create mode 100644 pll_i2s.ppf create mode 100644 pll_i2s.qip create mode 100644 pll_i2s.v create mode 100644 pll_i2s_bb.v create mode 100644 pll_video.ppf create mode 100644 pll_video.qip create mode 100644 pll_video.v create mode 100644 pll_video_bb.v create mode 100644 ram16.v.bak create mode 100644 rom_scr.qip create mode 100644 rom_scr.v create mode 100644 rom_scr_bb.v create mode 100644 spectrum.sdc create mode 100644 spectrum.sdc.bak create mode 100644 spectrum.sv create mode 100644 spectrum.sv.bak delete mode 100644 spectrum.v create mode 100644 spectrum_assignment_defaults.qdf create mode 100644 ula/clocks.sv create mode 100644 ula/i2c_loader.vhd create mode 100644 ula/i2s_intf.vhd create mode 100644 ula/pll.ppf create mode 100644 ula/pll.qip create mode 100644 ula/pll.v create mode 100644 ula/ps2_kbd.sv create mode 100644 ula/ram8.qip create mode 100644 ula/ram8.v create mode 100644 ula/test_scr.hex create mode 100644 ula/test_scr.scr create mode 100644 ula/test_ula.qpf create mode 100644 ula/test_ula.qsf create mode 100644 ula/test_ula.sv create mode 100644 ula/ula.sv create mode 100644 ula/ula.sv.bak create mode 100644 ula/video.sv create mode 100644 ula/zx_kbd.sv diff --git a/PLLJ_PLLSPE_INFO.txt b/PLLJ_PLLSPE_INFO.txt new file mode 100644 index 0000000..e371ee0 --- /dev/null +++ b/PLLJ_PLLSPE_INFO.txt @@ -0,0 +1,5 @@ +PLL_Name ula:ula_|pll:pll_|altpll:altpll_component|pll_altpll:auto_generated|pll1 +PLLJITTER NA +PLLSPEmax 84 +PLLSPEmin -53 + diff --git a/cpu/alu/alu.bdf b/cpu/alu/alu.bdf new file mode 100644 index 0000000..84e8587 --- /dev/null +++ b/cpu/alu/alu.bdf @@ -0,0 +1,4176 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 1560 40 1576 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_core_R" (rect 4 9 16 64)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1576 40 1592 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_core_V" (rect 4 9 16 64)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1592 40 1608 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_core_S" (rect 4 9 16 63)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 3312 424 3488 440) + (text "INPUT" (rect 15 6 43 16)(font "Arial" (font_size 6))) + (text "bsel[2..0]" (rect 121 4 167 16)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 84 4)(pt 59 4)) + (line (pt 84 12)(pt 59 12)) + (line (pt 55 8)(pt 0 8)) + (line (pt 84 4)(pt 84 12)) + (line (pt 59 12)(pt 55 8)) + (line (pt 59 4)(pt 55 8)) + ) + (rotate180) + (text "VCC" (rect 20 -1 40 9)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 3024 40 3040 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_bs_oe" (rect 4 9 16 58)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1704 40 1720 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_parity_in" (rect 4 9 16 71)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 256 32 272 208) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_oe" (rect 4 9 16 40)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 640 40 656 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_shift_oe" (rect 4 9 16 69)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1616 40 1632 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_core_cf_in" (rect 4 9 16 80)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 696 40 712 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_op2_oe" (rect 4 9 16 64)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 2552 40 2568 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_op1_oe" (rect 4 9 16 64)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 2432 40 2448 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_res_oe" (rect 4 9 16 62)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 2952 40 2968 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_op1_sel_low" (rect 4 9 16 88)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 2968 40 2984 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_op1_sel_zero" (rect 4 9 16 92)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 2936 40 2952 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_op1_sel_bus" (rect 4 9 16 90)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1080 40 1096 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_op2_sel_zero" (rect 4 9 16 92)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1032 40 1048 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_op2_sel_bus" (rect 4 9 16 90)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1064 40 1080 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_op2_sel_lq" (rect 4 9 16 80)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 2280 40 2296 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_op_low" (rect 4 9 16 62)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 336 32 352 208) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_shift_in" (rect 4 9 16 65)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1208 40 1224 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_sel_op2_neg" (rect 4 9 16 90)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1384 40 1400 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_sel_op2_high" (rect 4 9 16 92)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 320 32 336 208) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_shift_left" (rect 4 9 16 73)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 304 32 320 208) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "alu_shift_right" (rect 4 9 16 78)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 832 40 848 216) + (text "INPUT" (rect 6 133 16 161)(font "Arial" (font_size 6))(vertical)) + (text "clk" (rect 4 9 16 23)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 4 92)(pt 4 117)) + (line (pt 12 92)(pt 12 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 4 92)(pt 12 92)) + (line (pt 12 117)(pt 8 121)) + (line (pt 4 117)(pt 8 121)) + ) + (rotate270) + (text "VCC" (rect -1 136 9 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (output) + (rect 2248 40 2264 216) + (text "OUTPUT" (rect 0 137 10 175)(font "Arial" (font_size 6))(vertical)) + (text "alu_zero" (rect 0 46 12 86)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 8 176)(pt 8 124)) + (line (pt 4 124)(pt 4 98)) + (line (pt 12 124)(pt 12 98)) + (line (pt 12 124)(pt 4 124)) + (line (pt 4 98)(pt 8 94)) + (line (pt 8 94)(pt 12 98)) + (line (pt 12 98)(pt 8 94)) + ) + (rotate90) +) +(pin + (output) + (rect 2040 40 2056 216) + (text "OUTPUT" (rect 0 137 10 175)(font "Arial" (font_size 6))(vertical)) + (text "alu_parity_out" (rect 0 17 12 86)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 8 176)(pt 8 124)) + (line (pt 4 124)(pt 4 98)) + (line (pt 12 124)(pt 12 98)) + (line (pt 12 124)(pt 4 124)) + (line (pt 4 98)(pt 8 94)) + (line (pt 8 94)(pt 12 98)) + (line (pt 12 98)(pt 8 94)) + ) + (rotate90) +) +(pin + (output) + (rect 2720 40 2736 216) + (text "OUTPUT" (rect 0 137 10 175)(font "Arial" (font_size 6))(vertical)) + (text "alu_high_eq_9" (rect 0 17 12 86)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 8 176)(pt 8 124)) + (line (pt 4 124)(pt 4 98)) + (line (pt 12 124)(pt 12 98)) + (line (pt 12 124)(pt 4 124)) + (line (pt 4 98)(pt 8 94)) + (line (pt 8 94)(pt 12 98)) + (line (pt 12 98)(pt 8 94)) + ) + (rotate90) +) +(pin + (output) + (rect 2704 40 2720 216) + (text "OUTPUT" (rect 0 137 10 175)(font "Arial" (font_size 6))(vertical)) + (text "alu_high_gt_9" (rect 0 19 12 86)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 8 176)(pt 8 124)) + (line (pt 4 124)(pt 4 98)) + (line (pt 12 124)(pt 12 98)) + (line (pt 12 124)(pt 4 124)) + (line (pt 4 98)(pt 8 94)) + (line (pt 8 94)(pt 12 98)) + (line (pt 12 98)(pt 8 94)) + ) + (rotate90) +) +(pin + (output) + (rect 2688 40 2704 216) + (text "OUTPUT" (rect 0 137 10 175)(font "Arial" (font_size 6))(vertical)) + (text "alu_low_gt_9" (rect 0 24 12 86)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 8 176)(pt 8 124)) + (line (pt 4 124)(pt 4 98)) + (line (pt 12 124)(pt 12 98)) + (line (pt 12 124)(pt 4 124)) + (line (pt 4 98)(pt 8 94)) + (line (pt 8 94)(pt 12 98)) + (line (pt 12 98)(pt 8 94)) + ) + (rotate90) +) +(pin + (output) + (rect 3088 240 3264 256) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "test_db_low[3..0]" (rect 90 0 173 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 3088 624 3264 640) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "test_db_high[3..0]" (rect 90 0 178 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 560 40 576 216) + (text "OUTPUT" (rect 0 137 10 175)(font "Arial" (font_size 6))(vertical)) + (text "alu_shift_db0" (rect 0 20 12 86)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 8 176)(pt 8 124)) + (line (pt 4 124)(pt 4 98)) + (line (pt 12 124)(pt 12 98)) + (line (pt 12 124)(pt 4 124)) + (line (pt 4 98)(pt 8 94)) + (line (pt 8 94)(pt 12 98)) + (line (pt 12 98)(pt 8 94)) + ) + (rotate90) +) +(pin + (output) + (rect 576 40 592 216) + (text "OUTPUT" (rect 0 137 10 175)(font "Arial" (font_size 6))(vertical)) + (text "alu_shift_db7" (rect 0 20 12 86)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 8 176)(pt 8 124)) + (line (pt 4 124)(pt 4 98)) + (line (pt 12 124)(pt 12 98)) + (line (pt 12 124)(pt 4 124)) + (line (pt 4 98)(pt 8 94)) + (line (pt 8 94)(pt 12 98)) + (line (pt 12 98)(pt 8 94)) + ) + (rotate90) +) +(pin + (output) + (rect 2064 40 2080 216) + (text "OUTPUT" (rect 0 137 10 175)(font "Arial" (font_size 6))(vertical)) + (text "alu_core_cf_out" (rect 0 7 12 86)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 8 176)(pt 8 124)) + (line (pt 4 124)(pt 4 98)) + (line (pt 12 124)(pt 12 98)) + (line (pt 12 124)(pt 4 124)) + (line (pt 4 98)(pt 8 94)) + (line (pt 8 94)(pt 12 98)) + (line (pt 12 98)(pt 8 94)) + ) + (rotate90) +) +(pin + (output) + (rect 1656 40 1672 216) + (text "OUTPUT" (rect 0 137 10 175)(font "Arial" (font_size 6))(vertical)) + (text "alu_sf_out" (rect 0 35 12 86)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 8 176)(pt 8 124)) + (line (pt 4 124)(pt 4 98)) + (line (pt 12 124)(pt 12 98)) + (line (pt 12 124)(pt 4 124)) + (line (pt 4 98)(pt 8 94)) + (line (pt 8 94)(pt 12 98)) + (line (pt 12 98)(pt 8 94)) + ) + (rotate90) +) +(pin + (output) + (rect 1680 40 1696 216) + (text "OUTPUT" (rect 0 137 10 175)(font "Arial" (font_size 6))(vertical)) + (text "alu_yf_out" (rect 0 33 12 86)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 8 176)(pt 8 124)) + (line (pt 4 124)(pt 4 98)) + (line (pt 12 124)(pt 12 98)) + (line (pt 12 124)(pt 4 124)) + (line (pt 4 98)(pt 8 94)) + (line (pt 8 94)(pt 12 98)) + (line (pt 12 98)(pt 8 94)) + ) + (rotate90) +) +(pin + (output) + (rect 1888 40 1904 216) + (text "OUTPUT" (rect 0 137 10 175)(font "Arial" (font_size 6))(vertical)) + (text "alu_xf_out" (rect 0 35 12 86)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 8 176)(pt 8 124)) + (line (pt 4 124)(pt 4 98)) + (line (pt 12 124)(pt 12 98)) + (line (pt 12 124)(pt 4 124)) + (line (pt 4 98)(pt 8 94)) + (line (pt 8 94)(pt 12 98)) + (line (pt 12 98)(pt 8 94)) + ) + (rotate90) +) +(pin + (output) + (rect 2080 40 2096 216) + (text "OUTPUT" (rect 0 137 10 175)(font "Arial" (font_size 6))(vertical)) + (text "alu_vf_out" (rect 0 33 12 86)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 8 176)(pt 8 124)) + (line (pt 4 124)(pt 4 98)) + (line (pt 12 124)(pt 12 98)) + (line (pt 12 124)(pt 4 124)) + (line (pt 4 98)(pt 8 94)) + (line (pt 8 94)(pt 12 98)) + (line (pt 12 98)(pt 8 94)) + ) + (rotate90) +) +(pin + (bidir) + (rect 32 416 208 432) + (text "BIDIR" (rect 151 0 175 10)(font "Arial" (font_size 6))) + (text "db[7..0]" (rect 49 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 120 4)(pt 98 4)) + (line (pt 176 8)(pt 124 8)) + (line (pt 120 12)(pt 98 12)) + (line (pt 98 4)(pt 94 8)) + (line (pt 98 12)(pt 94 8)) + (line (pt 120 4)(pt 124 8)) + (line (pt 124 8)(pt 120 12)) + ) + (flipy) + (text "VCC" (rect 152 7 172 17)(font "Arial" (font_size 6))) +) +(symbol + (rect 2304 496 2368 544) + (text "OR2" (rect 45 0 63 10)(font "Arial" (font_size 6))) + (text "inst10" (rect 32 37 61 49)(font "Arial" )) + (port + (pt 64 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 45 23 62 35)(font "Courier New" (bold))(invisible)) + (line (pt 64 32)(pt 49 32)) + ) + (port + (pt 64 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 45 7 62 19)(font "Courier New" (bold))(invisible)) + (line (pt 64 16)(pt 49 16)) + ) + (port + (pt 0 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 16 24)(pt 0 24)) + ) + (drawing + (line (pt 50 36)(pt 39 36)) + (line (pt 50 13)(pt 39 13)) + (arc (pt 57 19)(pt 57 29)(rect 45 8 78 41)) + (arc (pt 39 13)(pt 15 24)(rect 7 13 70 76)) + (arc (pt 15 24)(pt 39 35)(rect 7 -27 70 36)) + ) + (flipy) +) +(symbol + (rect 2384 472 2448 520) + (text "AND2" (rect 39 0 63 10)(font "Arial" (font_size 6))) + (text "inst8" (rect 38 37 61 49)(font "Arial" )) + (port + (pt 64 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 45 7 62 19)(font "Courier New" (bold))(invisible)) + (line (pt 64 16)(pt 50 16)) + ) + (port + (pt 64 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 45 23 62 35)(font "Courier New" (bold))(invisible)) + (line (pt 64 32)(pt 50 32)) + ) + (port + (pt 0 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 22 24)(pt 0 24)) + ) + (drawing + (line (pt 50 12)(pt 34 12)) + (line (pt 50 37)(pt 33 37)) + (line (pt 50 12)(pt 50 37)) + (arc (pt 34 12)(pt 33 37)(rect 21 12 46 37)) + ) + (flipy) +) +(symbol + (rect 2384 520 2448 568) + (text "AND2" (rect 39 0 63 10)(font "Arial" (font_size 6))) + (text "inst9" (rect 38 37 61 49)(font "Arial" )) + (port + (pt 64 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 45 7 62 19)(font "Courier New" (bold))(invisible)) + (line (pt 64 16)(pt 50 16)) + ) + (port + (pt 64 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 45 23 62 35)(font "Courier New" (bold))(invisible)) + (line (pt 64 32)(pt 50 32)) + ) + (port + (pt 0 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 22 24)(pt 0 24)) + ) + (drawing + (line (pt 50 12)(pt 34 12)) + (line (pt 50 37)(pt 33 37)) + (line (pt 50 12)(pt 50 37)) + (arc (pt 34 12)(pt 33 37)(rect 21 12 46 37)) + ) + (flipy) +) +(symbol + (rect 2472 272 2504 320) + (text "NOT" (rect 22 1 32 21)(font "Arial" (font_size 6))(vertical)) + (text "inst12" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 13)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 39)(pt 16 48)) + ) + (drawing + (line (pt 7 13)(pt 25 13)) + (line (pt 25 13)(pt 16 31)) + (line (pt 7 13)(pt 16 31)) + (circle (rect 12 31 20 39)) + ) + (rotate270) +) +(symbol + (rect 1136 472 1184 504) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst23" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 1136 568 1184 600) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst24" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 1224 408 1288 456) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst25" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1224 456 1288 504) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst26" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1224 504 1288 552) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst27" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1224 552 1288 600) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst28" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1400 456 1464 504) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst29" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1400 504 1464 552) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst30" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1304 432 1368 480) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst31" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 1304 528 1368 576) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst32" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 1480 480 1544 528) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst33" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 1376 272 1408 320) + (text "NOT" (rect 22 1 32 21)(font "Arial" (font_size 6))(vertical)) + (text "inst35" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 13)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 39)(pt 16 48)) + ) + (drawing + (line (pt 7 13)(pt 25 13)) + (line (pt 25 13)(pt 16 31)) + (line (pt 7 13)(pt 16 31)) + (circle (rect 12 31 20 39)) + ) + (rotate270) +) +(symbol + (rect 1200 272 1232 320) + (text "NOT" (rect 22 1 32 21)(font "Arial" (font_size 6))(vertical)) + (text "inst34" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 13)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 39)(pt 16 48)) + ) + (drawing + (line (pt 7 13)(pt 25 13)) + (line (pt 25 13)(pt 16 31)) + (line (pt 7 13)(pt 16 31)) + (circle (rect 12 31 20 39)) + ) + (rotate270) +) +(symbol + (rect 712 264 744 312) + (text "TRI" (rect 0 32 10 47)(font "Arial" (font_size 6))(vertical)) + (text "inst18" (rect 21 16 33 45)(font "Arial" )(vertical)) + (port + (pt 16 48) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 7 35 19 46)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 48)(pt 16 34)) + ) + (port + (pt 0 24) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 0 11 12 22)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 12 24)(pt 0 24)) + ) + (port + (pt 16 0) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 7 2 19 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 16)(pt 16 0)) + ) + (drawing + (line (pt 25 34)(pt 7 34)) + (line (pt 25 34)(pt 16 16)) + (line (pt 7 34)(pt 16 16)) + ) + (rotate90) +) +(symbol + (rect 712 568 744 616) + (text "TRI" (rect 0 1 10 16)(font "Arial" (font_size 6))(vertical)) + (text "inst19" (rect 21 3 33 32)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 7 2 19 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 0 24) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 0 26 12 37)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 12 24)(pt 0 24)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 7 32 19 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 32)(pt 16 48)) + ) + (drawing + (line (pt 25 14)(pt 7 14)) + (line (pt 25 14)(pt 16 32)) + (line (pt 7 14)(pt 16 32)) + ) + (flipy_rotate90) +) +(symbol + (rect 2568 568 2600 616) + (text "TRI" (rect 0 1 10 16)(font "Arial" (font_size 6))(vertical)) + (text "mm1" (rect 21 3 33 27)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 7 2 19 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 0 24) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 0 26 12 37)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 12 24)(pt 0 24)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 7 32 19 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 32)(pt 16 48)) + ) + (drawing + (line (pt 25 14)(pt 7 14)) + (line (pt 25 14)(pt 16 32)) + (line (pt 7 14)(pt 16 32)) + ) + (flipy_rotate90) +) +(symbol + (rect 2568 264 2600 312) + (text "TRI" (rect 0 32 10 47)(font "Arial" (font_size 6))(vertical)) + (text "mm0" (rect 21 21 33 45)(font "Arial" )(vertical)) + (port + (pt 16 48) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 7 35 19 46)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 48)(pt 16 34)) + ) + (port + (pt 0 24) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 0 11 12 22)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 12 24)(pt 0 24)) + ) + (port + (pt 16 0) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 7 2 19 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 16)(pt 16 0)) + ) + (drawing + (line (pt 25 34)(pt 7 34)) + (line (pt 25 34)(pt 16 16)) + (line (pt 7 34)(pt 16 16)) + ) + (rotate90) +) +(symbol + (rect 3040 264 3072 312) + (text "TRI" (rect 0 32 10 47)(font "Arial" (font_size 6))(vertical)) + (text "bsg0" (rect 21 22 33 45)(font "Arial" )(vertical)) + (port + (pt 16 48) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 7 35 19 46)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 48)(pt 16 34)) + ) + (port + (pt 0 24) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 0 11 12 22)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 12 24)(pt 0 24)) + ) + (port + (pt 16 0) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 7 2 19 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 16)(pt 16 0)) + ) + (drawing + (line (pt 25 34)(pt 7 34)) + (line (pt 25 34)(pt 16 16)) + (line (pt 7 34)(pt 16 16)) + ) + (rotate90) +) +(symbol + (rect 3040 568 3072 616) + (text "TRI" (rect 0 1 10 16)(font "Arial" (font_size 6))(vertical)) + (text "bsg1" (rect 21 3 33 26)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 7 2 19 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 0 24) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 0 26 12 37)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 12 24)(pt 0 24)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 7 32 19 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 32)(pt 16 48)) + ) + (drawing + (line (pt 25 14)(pt 7 14)) + (line (pt 25 14)(pt 16 32)) + (line (pt 7 14)(pt 16 32)) + ) + (flipy_rotate90) +) +(symbol + (rect 600 264 632 312) + (text "TRI" (rect 22 32 32 47)(font "Arial" (font_size 6))(vertical)) + (text "shg0" (rect -1 22 11 45)(font "Arial" )(vertical)) + (port + (pt 16 48) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 35 25 46)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 48)(pt 16 34)) + ) + (port + (pt 32 24) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 20 11 32 22)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 20 24)(pt 32 24)) + ) + (port + (pt 16 0) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 16)(pt 16 0)) + ) + (drawing + (line (pt 7 34)(pt 25 34)) + (line (pt 7 34)(pt 16 16)) + (line (pt 25 34)(pt 16 16)) + ) + (flipx_rotate90) +) +(symbol + (rect 600 568 632 616) + (text "TRI" (rect 22 1 32 16)(font "Arial" (font_size 6))(vertical)) + (text "shg1" (rect -1 3 11 26)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 32 24) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 20 26 32 37)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 20 24)(pt 32 24)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 32)(pt 16 48)) + ) + (drawing + (line (pt 7 14)(pt 25 14)) + (line (pt 7 14)(pt 16 32)) + (line (pt 25 14)(pt 16 32)) + ) + (rotate270) +) +(symbol + (rect 224 296 256 344) + (text "TRI" (rect 22 1 32 16)(font "Arial" (font_size 6))(vertical)) + (text "dbg0" (rect -1 3 11 26)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 32 24) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 20 26 32 37)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 20 24)(pt 32 24)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 32)(pt 16 48)) + ) + (drawing + (line (pt 7 14)(pt 25 14)) + (line (pt 7 14)(pt 16 32)) + (line (pt 25 14)(pt 16 32)) + ) + (rotate270) +) +(symbol + (rect 224 528 256 576) + (text "TRI" (rect 22 32 32 47)(font "Arial" (font_size 6))(vertical)) + (text "dbg1" (rect -1 22 11 45)(font "Arial" )(vertical)) + (port + (pt 16 48) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 35 25 46)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 48)(pt 16 34)) + ) + (port + (pt 32 24) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 20 11 32 22)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 20 24)(pt 32 24)) + ) + (port + (pt 16 0) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 16)(pt 16 0)) + ) + (drawing + (line (pt 7 34)(pt 25 34)) + (line (pt 7 34)(pt 16 16)) + (line (pt 25 34)(pt 16 16)) + ) + (flipx_rotate90) +) +(symbol + (rect 2520 392 2688 488) + (text "alu_prep_daa" (rect 5 0 82 14)(font "Arial" (font_size 8))) + (text "prep_daa" (rect 8 80 52 92)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "low[3..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "low[3..0]" (rect 21 27 70 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "high[3..0]" (rect 0 0 51 14)(font "Arial" (font_size 8))) + (text "high[3..0]" (rect 21 43 72 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 168 32) + (output) + (text "low_gt_9" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "low_gt_9" (rect 94 27 147 41)(font "Arial" (font_size 8))) + (line (pt 168 32)(pt 152 32)) + ) + (port + (pt 168 48) + (output) + (text "high_gt_9" (rect 0 0 55 14)(font "Arial" (font_size 8))) + (text "high_gt_9" (rect 92 43 147 57)(font "Arial" (font_size 8))) + (line (pt 168 48)(pt 152 48)) + ) + (port + (pt 168 64) + (output) + (text "high_eq_9" (rect 0 0 59 14)(font "Arial" (font_size 8))) + (text "high_eq_9" (rect 88 59 147 73)(font "Arial" (font_size 8))) + (line (pt 168 64)(pt 152 64)) + ) + (drawing + (rectangle (rect 16 16 152 80)) + ) +) +(symbol + (rect 1800 456 1960 616) + (text "alu_core" (rect 5 0 54 14)(font "Arial" (font_size 8))) + (text "core" (rect 8 144 29 156)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "op1[3..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "op1[3..0]" (rect 21 27 70 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "op2[3..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "op2[3..0]" (rect 21 43 70 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "cy_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "cy_in" (rect 21 59 51 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "S" (rect 0 0 8 14)(font "Arial" (font_size 8))) + (text "S" (rect 21 75 29 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "V" (rect 0 0 9 14)(font "Arial" (font_size 8))) + (text "V" (rect 21 91 30 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "R" (rect 0 0 8 14)(font "Arial" (font_size 8))) + (text "R" (rect 21 107 29 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 160 32) + (output) + (text "result[3..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "result[3..0]" (rect 79 27 139 41)(font "Arial" (font_size 8))) + (line (pt 160 32)(pt 144 32)(line_width 3)) + ) + (port + (pt 160 48) + (output) + (text "cy_out" (rect 0 0 38 14)(font "Arial" (font_size 8))) + (text "cy_out" (rect 101 43 139 57)(font "Arial" (font_size 8))) + (line (pt 160 48)(pt 144 48)) + ) + (port + (pt 160 64) + (output) + (text "vf_out" (rect 0 0 36 14)(font "Arial" (font_size 8))) + (text "vf_out" (rect 103 59 139 73)(font "Arial" (font_size 8))) + (line (pt 160 64)(pt 144 64)) + ) + (drawing + (rectangle (rect 16 16 144 144)) + ) +) +(symbol + (rect 2152 568 2184 616) + (text "TRI" (rect 22 1 32 16)(font "Arial" (font_size 6))(vertical)) + (text "inst5" (rect -1 3 11 26)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 32 24) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 20 26 32 37)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 20 24)(pt 32 24)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 32)(pt 16 48)) + ) + (drawing + (line (pt 7 14)(pt 25 14)) + (line (pt 7 14)(pt 16 32)) + (line (pt 25 14)(pt 16 32)) + ) + (rotate270) +) +(symbol + (rect 2392 264 2424 312) + (text "TRI" (rect 22 32 32 47)(font "Arial" (font_size 6))(vertical)) + (text "inst4" (rect -1 22 11 45)(font "Arial" )(vertical)) + (port + (pt 16 48) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 35 25 46)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 48)(pt 16 34)) + ) + (port + (pt 32 24) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 20 11 32 22)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 20 24)(pt 32 24)) + ) + (port + (pt 16 0) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 16)(pt 16 0)) + ) + (drawing + (line (pt 7 34)(pt 25 34)) + (line (pt 7 34)(pt 16 16)) + (line (pt 25 34)(pt 16 16)) + ) + (flipx_rotate90) +) +(symbol + (rect 1728 264 1792 312) + (text "XOR" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "parity3" (rect 3 37 37 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 11 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 11 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + (arc (pt 8 36)(pt 8 12)(rect -21 7 14 42)) + ) +) +(symbol + (rect 1808 272 1872 320) + (text "XOR" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "parity2" (rect 3 37 37 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 11 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 11 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + (arc (pt 8 36)(pt 8 12)(rect -21 7 14 42)) + ) +) +(symbol + (rect 1888 280 1952 328) + (text "XOR" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "parity1" (rect 3 37 37 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 11 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 11 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + (arc (pt 8 36)(pt 8 12)(rect -21 7 14 42)) + ) +) +(symbol + (rect 1968 288 2032 336) + (text "XOR" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "parity0" (rect 3 37 37 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 11 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 11 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + (arc (pt 8 36)(pt 8 12)(rect -21 7 14 42)) + ) +) +(symbol + (rect 2176 272 2240 416) + (text "BAND8" (rect 1 0 31 10)(font "Arial" (font_size 6))) + (text "zero_detect" (rect 3 133 59 145)(font "Arial" )) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 10 48)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 10 32)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 10 64)) + ) + (port + (pt 0 96) + (input) + (text "IN6" (rect 2 87 19 99)(font "Courier New" (bold))(invisible)) + (text "IN6" (rect 2 87 19 99)(font "Courier New" (bold))(invisible)) + (line (pt 0 96)(pt 10 96)) + ) + (port + (pt 0 80) + (input) + (text "IN5" (rect 2 71 19 83)(font "Courier New" (bold))(invisible)) + (text "IN5" (rect 2 71 19 83)(font "Courier New" (bold))(invisible)) + (line (pt 0 80)(pt 10 80)) + ) + (port + (pt 0 112) + (input) + (text "IN7" (rect 2 103 19 115)(font "Courier New" (bold))(invisible)) + (text "IN7" (rect 2 103 19 115)(font "Courier New" (bold))(invisible)) + (line (pt 0 112)(pt 10 112)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 10 16)) + ) + (port + (pt 0 128) + (input) + (text "IN8" (rect 2 119 19 131)(font "Courier New" (bold))(invisible)) + (text "IN8" (rect 2 119 19 131)(font "Courier New" (bold))(invisible)) + (line (pt 0 128)(pt 10 128)) + ) + (port + (pt 64 72) + (output) + (text "OUT" (rect 48 63 65 75)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 63 65 75)(font "Courier New" (bold))(invisible)) + (line (pt 46 72)(pt 64 72)) + ) + (drawing + (line (pt 18 131)(pt 18 13)) + (line (pt 18 85)(pt 34 85)) + (line (pt 18 60)(pt 34 60)) + (arc (pt 34 84)(pt 34 60)(rect 22 60 47 85)) + (circle (rect 10 12 18 20)) + (circle (rect 10 28 18 36)) + (circle (rect 10 44 18 52)) + (circle (rect 10 60 18 68)) + (circle (rect 10 76 18 84)) + (circle (rect 10 92 18 100)) + (circle (rect 10 108 18 116)) + (circle (rect 10 124 18 132)) + ) +) +(symbol + (rect 3080 400 3280 496) + (text "alu_bit_select" (rect 118 0 195 14)(font "Arial" (font_size 8))) + (text "input_bit_select" (rect 116 80 192 92)(font "Arial" )) + (port + (pt 200 32) + (input) + (text "bsel[2..0]" (rect 0 0 51 14)(font "Arial" (font_size 8))) + (text "bsel[2..0]" (rect 128 27 179 41)(font "Arial" (font_size 8))) + (line (pt 200 32)(pt 184 32)(line_width 3)) + ) + (port + (pt 0 32) + (output) + (text "bs_out_low[3..0]" (rect 0 0 95 14)(font "Arial" (font_size 8))) + (text "bs_out_low[3..0]" (rect 21 27 116 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (output) + (text "bs_out_high[3..0]" (rect 0 0 97 14)(font "Arial" (font_size 8))) + (text "bs_out_high[3..0]" (rect 21 43 118 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 184 80)) + ) + (flipy) + (fill (color 217 255 255)) +) +(symbol + (rect 368 392 552 520) + (text "alu_shifter_core" (rect 5 0 98 14)(font "Arial" (font_size 8))) + (text "input_shift" (rect 8 112 59 124)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 21 27 63 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "shift_in" (rect 0 0 41 14)(font "Arial" (font_size 8))) + (text "shift_in" (rect 21 43 62 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "shift_left" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "shift_left" (rect 21 59 70 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "shift_right" (rect 0 0 56 14)(font "Arial" (font_size 8))) + (text "shift_right" (rect 21 75 77 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 184 32) + (output) + (text "shift_db0" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "shift_db0" (rect 110 27 163 41)(font "Arial" (font_size 8))) + (line (pt 184 32)(pt 168 32)) + ) + (port + (pt 184 48) + (output) + (text "shift_db7" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "shift_db7" (rect 110 43 163 57)(font "Arial" (font_size 8))) + (line (pt 184 48)(pt 168 48)) + ) + (port + (pt 184 64) + (output) + (text "out_low[3..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "out_low[3..0]" (rect 89 59 163 73)(font "Arial" (font_size 8))) + (line (pt 184 64)(pt 168 64)(line_width 3)) + ) + (port + (pt 184 80) + (output) + (text "out_high[3..0]" (rect 0 0 76 14)(font "Arial" (font_size 8))) + (text "out_high[3..0]" (rect 87 75 163 89)(font "Arial" (font_size 8))) + (line (pt 184 80)(pt 168 80)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 168 112)) + ) + (fill (color 217 255 255)) +) +(symbol + (rect 2768 296 2912 424) + (text "alu_mux_3z" (rect 71 0 139 14)(font "Arial" (font_size 8))) + (text "op1_latch_mux_low" (rect 41 112 136 124)(font "Arial" )) + (port + (pt 144 32) + (input) + (text "a[3..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "a[3..0]" (rect 88 27 123 41)(font "Arial" (font_size 8))) + (line (pt 144 32)(pt 128 32)(line_width 3)) + ) + (port + (pt 144 48) + (input) + (text "sel_a" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "sel_a" (rect 93 43 123 57)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)) + ) + (port + (pt 144 64) + (input) + (text "b[3..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "b[3..0]" (rect 88 59 123 73)(font "Arial" (font_size 8))) + (line (pt 144 64)(pt 128 64)(line_width 3)) + ) + (port + (pt 144 80) + (input) + (text "sel_b" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "sel_b" (rect 93 75 123 89)(font "Arial" (font_size 8))) + (line (pt 144 80)(pt 128 80)) + ) + (port + (pt 144 96) + (input) + (text "sel_zero" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "sel_zero" (rect 74 91 123 105)(font "Arial" (font_size 8))) + (line (pt 144 96)(pt 128 96)) + ) + (port + (pt 0 32) + (output) + (text "Q[3..0]" (rect 0 0 37 14)(font "Arial" (font_size 8))) + (text "Q[3..0]" (rect 21 27 58 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (output) + (text "ena" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "ena" (rect 21 43 42 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (drawing + (rectangle (rect 16 16 128 112)) + ) + (flipy) +) +(symbol + (rect 2768 496 2912 592) + (text "alu_mux_2z" (rect 71 0 139 14)(font "Arial" (font_size 8))) + (text "op1_latch_mux_high" (rect 36 80 136 92)(font "Arial" )) + (port + (pt 144 32) + (input) + (text "a[3..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "a[3..0]" (rect 88 27 123 41)(font "Arial" (font_size 8))) + (line (pt 144 32)(pt 128 32)(line_width 3)) + ) + (port + (pt 144 48) + (input) + (text "sel_a" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "sel_a" (rect 93 43 123 57)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)) + ) + (port + (pt 144 64) + (input) + (text "sel_zero" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "sel_zero" (rect 74 59 123 73)(font "Arial" (font_size 8))) + (line (pt 144 64)(pt 128 64)) + ) + (port + (pt 0 32) + (output) + (text "Q[3..0]" (rect 0 0 37 14)(font "Arial" (font_size 8))) + (text "Q[3..0]" (rect 21 27 58 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (output) + (text "ena" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "ena" (rect 21 43 42 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (drawing + (rectangle (rect 16 16 128 80)) + ) + (flipy) +) +(symbol + (rect 864 280 1008 408) + (text "alu_mux_3z" (rect 71 0 139 14)(font "Arial" (font_size 8))) + (text "op2_latch_mux_low" (rect 41 112 136 124)(font "Arial" )) + (port + (pt 144 32) + (input) + (text "a[3..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "a[3..0]" (rect 88 27 123 41)(font "Arial" (font_size 8))) + (line (pt 144 32)(pt 128 32)(line_width 3)) + ) + (port + (pt 144 48) + (input) + (text "sel_a" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "sel_a" (rect 93 43 123 57)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)) + ) + (port + (pt 144 64) + (input) + (text "b[3..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "b[3..0]" (rect 88 59 123 73)(font "Arial" (font_size 8))) + (line (pt 144 64)(pt 128 64)(line_width 3)) + ) + (port + (pt 144 80) + (input) + (text "sel_b" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "sel_b" (rect 93 75 123 89)(font "Arial" (font_size 8))) + (line (pt 144 80)(pt 128 80)) + ) + (port + (pt 144 96) + (input) + (text "sel_zero" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "sel_zero" (rect 74 91 123 105)(font "Arial" (font_size 8))) + (line (pt 144 96)(pt 128 96)) + ) + (port + (pt 0 32) + (output) + (text "Q[3..0]" (rect 0 0 37 14)(font "Arial" (font_size 8))) + (text "Q[3..0]" (rect 21 27 58 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (output) + (text "ena" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "ena" (rect 21 43 42 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (drawing + (rectangle (rect 16 16 128 112)) + ) + (flipy) +) +(symbol + (rect 864 472 1008 600) + (text "alu_mux_3z" (rect 71 0 139 14)(font "Arial" (font_size 8))) + (text "op2_latch_mux_high" (rect 36 112 136 124)(font "Arial" )) + (port + (pt 144 32) + (input) + (text "a[3..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "a[3..0]" (rect 88 27 123 41)(font "Arial" (font_size 8))) + (line (pt 144 32)(pt 128 32)(line_width 3)) + ) + (port + (pt 144 48) + (input) + (text "sel_a" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "sel_a" (rect 93 43 123 57)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)) + ) + (port + (pt 144 64) + (input) + (text "b[3..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "b[3..0]" (rect 88 59 123 73)(font "Arial" (font_size 8))) + (line (pt 144 64)(pt 128 64)(line_width 3)) + ) + (port + (pt 144 80) + (input) + (text "sel_b" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "sel_b" (rect 93 75 123 89)(font "Arial" (font_size 8))) + (line (pt 144 80)(pt 128 80)) + ) + (port + (pt 144 96) + (input) + (text "sel_zero" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "sel_zero" (rect 74 91 123 105)(font "Arial" (font_size 8))) + (line (pt 144 96)(pt 128 96)) + ) + (port + (pt 0 32) + (output) + (text "Q[3..0]" (rect 0 0 37 14)(font "Arial" (font_size 8))) + (text "Q[3..0]" (rect 21 27 58 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (output) + (text "ena" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "ena" (rect 21 43 42 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (drawing + (rectangle (rect 16 16 128 112)) + ) + (flipy) +) +(symbol + (rect 760 304 824 384) + (text "DFFE" (rect 39 0 63 10)(font "Arial" (font_size 6))) + (text "latch_op2_low" (rect -7 68 61 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 23 11 40 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 20 58 43 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 64 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 45 20 50 32)(font "Courier New" (bold))) + (line (pt 64 24)(pt 52 24)) + ) + (port + (pt 64 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 45 28 62 40)(font "Courier New" (bold))(invisible)) + (line (pt 64 40)(pt 52 40)) + ) + (port + (pt 64 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 33 50 50 62)(font "Courier New" (bold))) + (line (pt 64 56)(pt 52 56)) + ) + (port + (pt 0 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 16 20 21 32)(font "Courier New" (bold))) + (line (pt 11 24)(pt 0 24)) + ) + (drawing + (line (pt 52 68)(pt 12 68)) + (line (pt 52 12)(pt 12 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 52 34)(pt 45 41)) + (line (pt 46 41)(pt 52 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) + (flipy) +) +(symbol + (rect 760 480 824 560) + (text "DFFE" (rect 39 0 63 10)(font "Arial" (font_size 6))) + (text "latch_op2_high" (rect -12 68 61 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 23 11 40 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 20 58 43 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 64 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 45 20 50 32)(font "Courier New" (bold))) + (line (pt 64 24)(pt 52 24)) + ) + (port + (pt 64 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 45 28 62 40)(font "Courier New" (bold))(invisible)) + (line (pt 64 40)(pt 52 40)) + ) + (port + (pt 64 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 33 50 50 62)(font "Courier New" (bold))) + (line (pt 64 56)(pt 52 56)) + ) + (port + (pt 0 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 16 20 21 32)(font "Courier New" (bold))) + (line (pt 11 24)(pt 0 24)) + ) + (drawing + (line (pt 52 68)(pt 12 68)) + (line (pt 52 12)(pt 12 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 52 34)(pt 45 41)) + (line (pt 46 41)(pt 52 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) + (flipy) +) +(symbol + (rect 2312 280 2376 360) + (text "DFFE" (rect 1 70 25 80)(font "Arial" (font_size 6))) + (text "inst" (rect 3 0 20 12)(font "Arial" )) + (port + (pt 32 80) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 57 41 69)(font "Courier New" (bold))) + (line (pt 32 76)(pt 32 80)) + ) + (port + (pt 32 0) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 10 44 22)(font "Courier New" (bold))) + (line (pt 32 0)(pt 32 4)) + ) + (port + (pt 0 56) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 48 19 60)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 40 19 52)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 24) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 18 31 30)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 64 56) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 48 49 60)(font "Courier New" (bold))) + (line (pt 53 56)(pt 64 56)) + ) + (drawing + (line (pt 12 12)(pt 52 12)) + (line (pt 12 68)(pt 52 68)) + (line (pt 52 12)(pt 52 68)) + (line (pt 12 12)(pt 12 68)) + (line (pt 12 46)(pt 19 39)) + (line (pt 18 39)(pt 12 33)) + (circle (rect 28 68 36 76)) + (circle (rect 28 4 36 12)) + ) + (flipx) +) +(symbol + (rect 2616 304 2680 384) + (text "DFFE" (rect 39 0 63 10)(font "Arial" (font_size 6))) + (text "latch_op1_low" (rect -7 68 61 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 23 11 40 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 20 58 43 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 64 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 45 20 50 32)(font "Courier New" (bold))) + (line (pt 64 24)(pt 52 24)) + ) + (port + (pt 64 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 45 28 62 40)(font "Courier New" (bold))(invisible)) + (line (pt 64 40)(pt 52 40)) + ) + (port + (pt 64 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 33 50 50 62)(font "Courier New" (bold))) + (line (pt 64 56)(pt 52 56)) + ) + (port + (pt 0 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 16 20 21 32)(font "Courier New" (bold))) + (line (pt 11 24)(pt 0 24)) + ) + (drawing + (line (pt 52 68)(pt 12 68)) + (line (pt 52 12)(pt 12 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 52 34)(pt 45 41)) + (line (pt 46 41)(pt 52 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) + (flipy) +) +(symbol + (rect 2616 504 2680 584) + (text "DFFE" (rect 39 0 63 10)(font "Arial" (font_size 6))) + (text "latch_op1_high" (rect -12 68 61 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 23 11 40 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 20 58 43 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 64 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 45 20 50 32)(font "Courier New" (bold))) + (line (pt 64 24)(pt 52 24)) + ) + (port + (pt 64 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 45 28 62 40)(font "Courier New" (bold))(invisible)) + (line (pt 64 40)(pt 52 40)) + ) + (port + (pt 64 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 33 50 50 62)(font "Courier New" (bold))) + (line (pt 64 56)(pt 52 56)) + ) + (port + (pt 0 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 16 20 21 32)(font "Courier New" (bold))) + (line (pt 11 24)(pt 0 24)) + ) + (drawing + (line (pt 52 68)(pt 12 68)) + (line (pt 52 12)(pt 12 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 52 34)(pt 45 41)) + (line (pt 46 41)(pt 52 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) + (flipy) +) +(symbol + (rect 824 248 856 296) + (text "NOT" (rect 22 1 32 21)(font "Arial" (font_size 6))(vertical)) + (text "nclk2" (rect -1 3 11 28)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 13)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 39)(pt 16 48)) + ) + (drawing + (line (pt 7 13)(pt 25 13)) + (line (pt 25 13)(pt 16 31)) + (line (pt 7 13)(pt 16 31)) + (circle (rect 12 31 20 39)) + ) + (rotate270) +) +(symbol + (rect 2728 256 2760 304) + (text "NOT" (rect 22 1 32 21)(font "Arial" (font_size 6))(vertical)) + (text "nclk1" (rect -1 3 11 28)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 13)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 39)(pt 16 48)) + ) + (drawing + (line (pt 7 13)(pt 25 13)) + (line (pt 25 13)(pt 16 31)) + (line (pt 7 13)(pt 16 31)) + (circle (rect 12 31 20 39)) + ) + (rotate270) +) +(connector + (pt 728 640) + (pt 728 616) + (bus) +) +(connector + (pt 704 592) + (pt 712 592) +) +(connector + (pt 728 240) + (pt 728 264) + (bus) +) +(connector + (pt 704 288) + (pt 712 288) +) +(connector + (pt 616 240) + (pt 616 264) + (bus) +) +(connector + (pt 616 616) + (pt 616 640) + (bus) +) +(connector + (pt 256 552) + (pt 264 552) +) +(connector + (pt 256 320) + (pt 264 320) +) +(connector + (pt 264 208) + (pt 264 320) +) +(connector + (pt 264 320) + (pt 264 552) +) +(connector + (pt 704 216) + (pt 704 288) +) +(connector + (pt 704 288) + (pt 704 592) +) +(connector + (pt 240 296) + (pt 240 240) + (bus) +) +(connector + (pt 240 576) + (pt 240 640) + (bus) +) +(connector + (pt 632 592) + (pt 648 592) +) +(connector + (pt 632 288) + (pt 648 288) +) +(connector + (pt 648 216) + (pt 648 288) +) +(connector + (pt 648 288) + (pt 648 592) +) +(connector + (pt 1120 424) + (pt 1120 488) + (bus) +) +(connector + (pt 1288 432) + (pt 1296 432) + (bus) +) +(connector + (pt 1296 432) + (pt 1296 448) + (bus) +) +(connector + (pt 1296 448) + (pt 1304 448) + (bus) +) +(connector + (pt 1288 480) + (pt 1296 480) + (bus) +) +(connector + (pt 1296 480) + (pt 1296 464) + (bus) +) +(connector + (pt 1296 464) + (pt 1304 464) + (bus) +) +(connector + (pt 1288 528) + (pt 1296 528) + (bus) +) +(connector + (pt 1296 528) + (pt 1296 544) + (bus) +) +(connector + (pt 1296 544) + (pt 1304 544) + (bus) +) +(connector + (pt 1288 576) + (pt 1296 576) + (bus) +) +(connector + (pt 1296 576) + (pt 1296 560) + (bus) +) +(connector + (pt 1296 560) + (pt 1304 560) + (bus) +) +(connector + (pt 1224 440) + (pt 1216 440) +) +(connector + (pt 1224 536) + (pt 1216 536) +) +(connector + (pt 1200 256) + (pt 1216 256) +) +(connector + (pt 1392 256) + (pt 1376 256) +) +(connector + (pt 1368 456) + (pt 1384 456) + (bus) +) +(connector + (pt 1368 552) + (pt 1384 552) + (bus) +) +(connector + (pt 1392 488) + (pt 1400 488) +) +(connector + (pt 1384 456) + (pt 1384 472) + (bus) +) +(connector + (pt 1384 552) + (pt 1384 536) + (bus) +) +(connector + (pt 1480 496) + (pt 1472 496) + (bus) +) +(connector + (pt 1472 496) + (pt 1472 480) + (bus) +) +(connector + (pt 1464 480) + (pt 1472 480) + (bus) +) +(connector + (pt 1480 512) + (pt 1472 512) + (bus) +) +(connector + (pt 1472 512) + (pt 1472 528) + (bus) +) +(connector + (pt 1464 528) + (pt 1472 528) + (bus) +) +(connector + (pt 1376 256) + (pt 1376 520) +) +(connector + (text "db_high[1]" (rect 1672 581 1684 631)(font "Arial" )(vertical)) + (pt 1688 640) + (pt 1688 216) +) +(connector + (text "db_high[3]" (rect 1648 581 1660 631)(font "Arial" )(vertical)) + (pt 1664 640) + (pt 1664 216) +) +(connector + (pt 1624 216) + (pt 1624 520) +) +(connector + (pt 1584 216) + (pt 1584 552) +) +(connector + (pt 1568 216) + (pt 1568 568) +) +(connector + (pt 1600 216) + (pt 1600 536) +) +(connector + (pt 2088 216) + (pt 2088 520) +) +(connector + (pt 2072 504) + (pt 1960 504) +) +(connector + (pt 2088 520) + (pt 1960 520) +) +(connector + (pt 2072 216) + (pt 2072 504) +) +(connector + (pt 1968 320) + (pt 1960 320) +) +(connector + (pt 1808 304) + (pt 1800 304) +) +(connector + (pt 2048 312) + (pt 2032 312) +) +(connector + (pt 2048 216) + (pt 2048 312) +) +(connector + (pt 1888 312) + (pt 1880 312) +) +(connector + (text "result_hi[3]" (rect 1696 341 1708 395)(font "Arial" )(vertical)) + (pt 1712 400) + (pt 1712 296) +) +(connector + (text "result_hi[2]" (rect 1784 341 1796 395)(font "Arial" )(vertical)) + (pt 1800 400) + (pt 1800 304) +) +(connector + (text "result_hi[1]" (rect 1864 341 1876 395)(font "Arial" )(vertical)) + (pt 1880 400) + (pt 1880 312) +) +(connector + (text "result_hi[0]" (rect 1944 341 1956 395)(font "Arial" )(vertical)) + (pt 1960 400) + (pt 1960 320) +) +(connector + (pt 2048 400) + (pt 2048 488) + (bus) + (color 0 0 255) +) +(connector + (text "db_low[3]" (rect 1872 169 1884 215)(font "Arial" )(vertical)) + (pt 1896 216) + (pt 1896 240) +) +(connector + (pt 2256 344) + (pt 2256 216) +) +(connector + (pt 2240 344) + (pt 2256 344) +) +(connector + (pt 1712 216) + (pt 1712 280) +) +(connector + (pt 1712 432) + (pt 1712 488) + (bus) +) +(connector + (pt 2168 640) + (pt 2168 616) + (bus) +) +(connector + (pt 2168 488) + (pt 2168 568) + (bus) +) +(connector + (pt 1216 216) + (pt 1216 256) +) +(connector + (pt 1216 256) + (pt 1216 272) +) +(connector + (pt 1200 256) + (pt 1200 472) +) +(connector + (pt 1200 472) + (pt 1200 568) +) +(connector + (pt 1392 216) + (pt 1392 256) +) +(connector + (pt 1392 256) + (pt 1392 272) +) +(connector + (pt 1712 400) + (pt 1800 400) + (bus) + (color 0 0 255) +) +(connector + (pt 1800 400) + (pt 1880 400) + (bus) + (color 0 0 255) +) +(connector + (pt 1880 400) + (pt 1960 400) + (bus) + (color 0 0 255) +) +(connector + (pt 1960 400) + (pt 2048 400) + (bus) + (color 0 0 255) +) +(connector + (pt 1480 432) + (pt 1712 432) + (bus) + (color 255 0 0) +) +(connector + (pt 1712 432) + (pt 2192 432) + (bus) + (color 255 0 0) +) +(connector + (text "result_hi[3..0]" (rect 1974 472 2041 484)(font "Arial" )) + (pt 1960 488) + (pt 2048 488) + (bus) +) +(connector + (pt 2048 488) + (pt 2168 488) + (bus) +) +(connector + (pt 2168 488) + (pt 2272 488) + (bus) +) +(connector + (pt 2120 320) + (pt 2120 336) + (bus) + (color 0 0 255) +) +(connector + (pt 2120 304) + (pt 2120 320) + (bus) + (color 0 0 255) +) +(connector + (pt 2120 352) + (pt 2120 368) + (bus) + (color 0 0 255) +) +(connector + (pt 2120 368) + (pt 2120 384) + (bus) + (color 0 0 255) +) +(connector + (pt 2120 240) + (pt 2120 288) + (bus) + (color 0 0 255) +) +(connector + (pt 2120 288) + (pt 2120 304) + (bus) + (color 0 0 255) +) +(connector + (pt 2120 384) + (pt 2120 400) + (bus) + (color 0 0 255) +) +(connector + (pt 2120 400) + (pt 2120 640) + (bus) + (color 0 0 255) +) +(connector + (pt 1120 488) + (pt 1136 488) + (bus) +) +(connector + (pt 1104 584) + (pt 1136 584) + (bus) +) +(connector + (pt 1200 568) + (pt 1224 568) +) +(connector + (pt 1184 584) + (pt 1224 584) + (bus) +) +(connector + (pt 1376 520) + (pt 1400 520) +) +(connector + (pt 1384 536) + (pt 1400 536) + (bus) +) +(connector + (text "alu_op1[3..0]" (rect 1726 472 1789 484)(font "Arial" )) + (pt 1712 488) + (pt 1800 488) + (bus) +) +(connector + (text "alu_op2[3..0]" (rect 1727 488 1790 500)(font "Arial" )) + (pt 1544 504) + (pt 1800 504) + (bus) +) +(connector + (pt 1624 520) + (pt 1800 520) +) +(connector + (pt 1600 536) + (pt 1800 536) +) +(connector + (pt 1584 552) + (pt 1800 552) +) +(connector + (pt 1568 568) + (pt 1800 568) +) +(connector + (pt 1712 280) + (pt 1728 280) +) +(connector + (pt 1712 296) + (pt 1728 296) +) +(connector + (pt 1792 288) + (pt 1808 288) +) +(connector + (pt 1872 296) + (pt 1888 296) +) +(connector + (pt 1952 304) + (pt 1968 304) +) +(connector + (text "db_low[2]" (rect 2127 304 2173 316)(font "Arial" )) + (pt 2120 320) + (pt 2176 320) +) +(connector + (text "db_low[1]" (rect 2129 288 2175 300)(font "Arial" )) + (pt 2120 304) + (pt 2176 304) +) +(connector + (text "db_low[3]" (rect 2128 320 2174 332)(font "Arial" )) + (pt 2120 336) + (pt 2176 336) +) +(connector + (text "db_high[1]" (rect 2129 352 2179 364)(font "Arial" )) + (pt 2120 368) + (pt 2176 368) +) +(connector + (text "db_high[0]" (rect 2127 336 2177 348)(font "Arial" )) + (pt 2120 352) + (pt 2176 352) +) +(connector + (text "db_high[2]" (rect 2129 368 2179 380)(font "Arial" )) + (pt 2120 384) + (pt 2176 384) +) +(connector + (text "db_low[0]" (rect 2129 272 2175 284)(font "Arial" )) + (pt 2120 288) + (pt 2176 288) +) +(connector + (text "db_high[3]" (rect 2129 384 2179 396)(font "Arial" )) + (pt 2120 400) + (pt 2176 400) +) +(connector + (pt 1216 320) + (pt 1216 440) +) +(connector + (pt 1200 472) + (pt 1224 472) +) +(connector + (pt 1184 488) + (pt 1224 488) + (bus) +) +(connector + (pt 1104 520) + (pt 1224 520) + (bus) +) +(connector + (pt 1216 440) + (pt 1216 536) +) +(connector + (pt 1384 472) + (pt 1400 472) + (bus) +) +(connector + (pt 1392 320) + (pt 1392 488) +) +(connector + (pt 1024 504) + (pt 1008 504) + (bus) +) +(connector + (pt 1040 520) + (pt 1008 520) +) +(connector + (pt 1072 552) + (pt 1008 552) +) +(connector + (pt 1056 536) + (pt 1008 536) + (bus) + (color 255 0 0) +) +(connector + (pt 672 240) + (pt 672 440) + (bus) + (color 255 0 0) +) +(connector + (pt 1056 440) + (pt 1056 536) + (bus) + (color 255 0 0) +) +(connector + (pt 672 440) + (pt 1056 440) + (bus) + (color 255 0 0) +) +(connector + (pt 1024 504) + (pt 1024 640) + (bus) +) +(connector + (pt 1008 568) + (pt 1088 568) +) +(connector + (text "db_low[3..0]" (rect 432 248 521 264)(font "Arial" (font_size 10)(bold))) + (pt 240 240) + (pt 616 240) + (bus) +) +(connector + (pt 616 240) + (pt 672 240) + (bus) +) +(connector + (pt 1104 456) + (pt 1104 520) + (bus) +) +(connector + (pt 1104 520) + (pt 1104 584) + (bus) +) +(connector + (pt 672 240) + (pt 728 240) + (bus) +) +(connector + (text "db_high[3..0]" (rect 426 616 521 632)(font "Arial" (font_size 10)(bold))) + (pt 240 640) + (pt 616 640) + (bus) +) +(connector + (pt 616 640) + (pt 728 640) + (bus) +) +(connector + (pt 728 640) + (pt 1024 640) + (bus) +) +(connector + (pt 1024 640) + (pt 1664 640) + (bus) +) +(connector + (pt 1664 640) + (pt 1688 640) + (bus) +) +(connector + (pt 1688 640) + (pt 2120 640) + (bus) +) +(connector + (pt 824 504) + (pt 864 504) + (bus) +) +(connector + (pt 864 520) + (pt 848 520) +) +(connector + (pt 848 520) + (pt 848 536) +) +(connector + (pt 848 536) + (pt 824 536) +) +(connector + (text "op2_high[3..0]" (rect 781 464 850 476)(font "Arial" )) + (pt 1104 456) + (pt 728 456) + (bus) +) +(connector + (pt 728 504) + (pt 760 504) + (bus) +) +(connector + (pt 728 456) + (pt 728 504) + (bus) +) +(connector + (pt 728 504) + (pt 728 568) + (bus) +) +(connector + (text "op2_low[3..0]" (rect 781 408 845 420)(font "Arial" )) + (pt 728 424) + (pt 1120 424) + (bus) +) +(connector + (pt 1120 424) + (pt 1224 424) + (bus) +) +(connector + (pt 848 360) + (pt 824 360) +) +(connector + (pt 832 328) + (pt 824 328) + (bus) +) +(connector + (pt 728 328) + (pt 760 328) + (bus) +) +(connector + (pt 728 312) + (pt 728 328) + (bus) +) +(connector + (pt 728 328) + (pt 728 424) + (bus) +) +(connector + (pt 824 520) + (pt 840 520) +) +(connector + (pt 824 344) + (pt 840 344) +) +(connector + (pt 584 216) + (pt 584 440) +) +(connector + (pt 616 312) + (pt 616 456) + (bus) +) +(connector + (pt 616 568) + (pt 616 472) + (bus) +) +(connector + (pt 568 216) + (pt 568 424) +) +(connector + (pt 568 424) + (pt 552 424) +) +(connector + (pt 584 440) + (pt 552 440) +) +(connector + (pt 616 456) + (pt 552 456) + (bus) +) +(connector + (pt 616 472) + (pt 552 472) + (bus) +) +(connector + (pt 344 440) + (pt 344 208) +) +(connector + (pt 344 440) + (pt 368 440) +) +(connector + (pt 328 456) + (pt 328 208) +) +(connector + (pt 328 456) + (pt 368 456) +) +(connector + (pt 312 472) + (pt 312 208) +) +(connector + (pt 312 472) + (pt 368 472) +) +(connector + (pt 208 424) + (pt 240 424) + (bus) +) +(connector + (pt 240 424) + (pt 368 424) + (bus) +) +(connector + (text "db[3..0]" (rect 224 376 236 413)(font "Arial" )(vertical)) + (pt 240 344) + (pt 240 424) + (bus) +) +(connector + (text "db[7..4]" (rect 224 480 236 517)(font "Arial" )(vertical)) + (pt 240 424) + (pt 240 528) + (bus) +) +(connector + (pt 1024 240) + (pt 1024 312) + (bus) +) +(connector + (pt 1024 312) + (pt 1008 312) + (bus) +) +(connector + (pt 1040 328) + (pt 1008 328) +) +(connector + (pt 1072 360) + (pt 1008 360) +) +(connector + (pt 1088 376) + (pt 1008 376) +) +(connector + (pt 1480 344) + (pt 1008 344) + (bus) + (color 255 0 0) +) +(connector + (pt 1480 432) + (pt 1480 344) + (bus) + (color 255 0 0) +) +(connector + (pt 848 328) + (pt 864 328) +) +(connector + (pt 832 312) + (pt 864 312) + (bus) +) +(connector + (pt 848 360) + (pt 848 328) +) +(connector + (pt 832 328) + (pt 832 312) + (bus) +) +(connector + (pt 728 240) + (pt 1024 240) + (bus) +) +(connector + (pt 1024 240) + (pt 1896 240) + (bus) +) +(connector + (pt 1040 216) + (pt 1040 328) +) +(connector + (pt 1040 328) + (pt 1040 520) +) +(connector + (pt 1072 216) + (pt 1072 360) +) +(connector + (pt 1072 360) + (pt 1072 552) +) +(connector + (pt 1088 216) + (pt 1088 376) +) +(connector + (pt 1088 376) + (pt 1088 568) +) +(connector + (pt 840 216) + (pt 840 248) +) +(connector + (pt 840 344) + (pt 840 520) +) +(connector + (pt 840 296) + (pt 840 344) +) +(connector + (pt 2368 512) + (pt 2376 512) + (bus) +) +(connector + (pt 2376 512) + (pt 2376 496) + (bus) +) +(connector + (pt 2376 496) + (pt 2384 496) + (bus) +) +(connector + (pt 2368 528) + (pt 2376 528) + (bus) +) +(connector + (pt 2376 528) + (pt 2376 544) + (bus) +) +(connector + (pt 2376 544) + (pt 2384 544) + (bus) +) +(connector + (pt 2448 488) + (pt 2456 488) + (bus) +) +(connector + (pt 2408 240) + (pt 2408 264) + (bus) +) +(connector + (pt 2584 240) + (pt 2584 264) + (bus) +) +(connector + (pt 2560 288) + (pt 2568 288) +) +(connector + (pt 2584 640) + (pt 2584 616) + (bus) +) +(connector + (pt 2560 592) + (pt 2568 592) +) +(connector + (pt 2584 312) + (pt 2584 328) + (bus) +) +(connector + (pt 2504 552) + (pt 2504 512) + (bus) +) +(connector + (pt 2512 424) + (pt 2512 360) + (bus) + (color 85 0 255) +) +(connector + (pt 2688 424) + (pt 2696 424) +) +(connector + (pt 2696 424) + (pt 2696 216) +) +(connector + (pt 2712 440) + (pt 2712 216) +) +(connector + (pt 2728 456) + (pt 2728 216) +) +(connector + (pt 2520 424) + (pt 2512 424) + (bus) + (color 0 0 255) +) +(connector + (pt 2520 440) + (pt 2512 440) + (bus) + (color 0 0 255) +) +(connector + (pt 2512 440) + (pt 2512 512) + (bus) + (color 0 0 255) +) +(connector + (pt 2488 256) + (pt 2488 272) +) +(connector + (pt 2488 320) + (pt 2488 536) +) +(connector + (pt 2472 256) + (pt 2472 504) +) +(connector + (pt 2456 360) + (pt 2456 488) + (bus) +) +(connector + (pt 2192 432) + (pt 2192 520) + (bus) + (color 255 0 0) +) +(connector + (pt 2440 392) + (pt 2288 392) +) +(connector + (pt 2288 392) + (pt 2288 592) +) +(connector + (pt 2184 592) + (pt 2288 592) +) +(connector + (pt 2192 520) + (pt 2304 520) + (bus) + (color 255 0 0) +) +(connector + (pt 2288 304) + (pt 2312 304) +) +(connector + (pt 2408 312) + (pt 2408 336) + (bus) +) +(connector + (pt 2272 488) + (pt 2272 336) + (bus) +) +(connector + (pt 2272 336) + (pt 2312 336) + (bus) + (color 128 0 128) +) +(connector + (pt 2600 328) + (pt 2600 360) + (bus) +) +(connector + (pt 2584 528) + (pt 2616 528) + (bus) +) +(connector + (pt 2928 528) + (pt 2928 640) + (bus) +) +(connector + (pt 3040 592) + (pt 3032 592) +) +(connector + (pt 3032 288) + (pt 3040 288) +) +(connector + (pt 3056 568) + (pt 3056 448) + (bus) +) +(connector + (pt 3056 312) + (pt 3056 432) + (bus) +) +(connector + (pt 2928 240) + (pt 2928 328) + (bus) +) +(connector + (pt 2960 216) + (pt 2960 376) +) +(connector + (pt 3008 640) + (pt 3008 360) + (bus) + (color 255 0 0) +) +(connector + (pt 2760 344) + (pt 2768 344) +) +(connector + (pt 2760 360) + (pt 2760 344) +) +(connector + (pt 2760 560) + (pt 2760 544) +) +(connector + (pt 2768 544) + (pt 2760 544) +) +(connector + (pt 3056 432) + (pt 3080 432) + (bus) +) +(connector + (pt 3056 448) + (pt 3080 448) + (bus) +) +(connector + (pt 3056 248) + (pt 3088 248) + (bus) +) +(connector + (pt 3056 632) + (pt 3088 632) + (bus) +) +(connector + (text "clk" (rect 2736 172 2748 186)(font "Arial" )(vertical)) + (pt 2744 200) + (pt 2744 256) +) +(connector + (pt 2272 320) + (pt 2312 320) +) +(connector + (text "clk" (rect 2264 172 2276 186)(font "Arial" )(vertical)) + (pt 2272 200) + (pt 2272 320) +) +(connector + (pt 2560 216) + (pt 2560 288) +) +(connector + (pt 2560 288) + (pt 2560 592) +) +(connector + (pt 2456 360) + (pt 2512 360) + (bus) +) +(connector + (text "op1_low[3..0]" (rect 2524 344 2588 356)(font "Arial" )) + (pt 2512 360) + (pt 2600 360) + (bus) +) +(connector + (pt 2440 216) + (pt 2440 288) +) +(connector + (pt 2440 288) + (pt 2440 392) +) +(connector + (pt 2288 256) + (pt 2472 256) +) +(connector + (pt 2472 256) + (pt 2488 256) +) +(connector + (pt 2288 216) + (pt 2288 256) +) +(connector + (pt 2288 256) + (pt 2288 304) +) +(connector + (pt 2584 328) + (pt 2600 328) + (bus) +) +(connector + (pt 2600 328) + (pt 2616 328) + (bus) +) +(connector + (pt 2504 512) + (pt 2512 512) + (bus) +) +(connector + (text "op1_high[3..0]" (rect 2526 496 2595 508)(font "Arial" )) + (pt 2512 512) + (pt 2584 512) + (bus) +) +(connector + (pt 2584 512) + (pt 2584 528) + (bus) +) +(connector + (pt 2584 528) + (pt 2584 568) + (bus) +) +(connector + (pt 3032 216) + (pt 3032 288) +) +(connector + (pt 3032 288) + (pt 3032 592) +) +(connector + (pt 1896 240) + (pt 2120 240) + (bus) +) +(connector + (pt 2120 240) + (pt 2408 240) + (bus) +) +(connector + (pt 2408 240) + (pt 2584 240) + (bus) +) +(connector + (pt 2584 240) + (pt 2928 240) + (bus) +) +(connector + (pt 2928 240) + (pt 3056 240) + (bus) +) +(connector + (pt 2120 640) + (pt 2168 640) + (bus) +) +(connector + (pt 2168 640) + (pt 2584 640) + (bus) +) +(connector + (pt 2584 640) + (pt 2928 640) + (bus) +) +(connector + (pt 2928 640) + (pt 3008 640) + (bus) +) +(connector + (pt 3008 640) + (pt 3056 640) + (bus) +) +(connector + (pt 2944 216) + (pt 2944 344) +) +(connector + (pt 2944 344) + (pt 2944 544) +) +(connector + (pt 2976 216) + (pt 2976 392) +) +(connector + (pt 2976 392) + (pt 2976 560) +) +(connector + (pt 3056 240) + (pt 3056 248) + (bus) +) +(connector + (pt 3056 248) + (pt 3056 264) + (bus) +) +(connector + (pt 3056 616) + (pt 3056 632) + (bus) +) +(connector + (pt 3056 632) + (pt 3056 640) + (bus) +) +(connector + (pt 2744 304) + (pt 2744 344) +) +(connector + (pt 2744 344) + (pt 2744 544) +) +(connector + (pt 2448 504) + (pt 2472 504) +) +(connector + (pt 2448 536) + (pt 2488 536) +) +(connector + (pt 2448 552) + (pt 2504 552) + (bus) +) +(connector + (pt 2688 440) + (pt 2712 440) +) +(connector + (pt 2688 456) + (pt 2728 456) +) +(connector + (pt 2424 288) + (pt 2440 288) +) +(connector + (pt 3280 432) + (pt 3312 432) + (bus) +) +(connector + (pt 2912 328) + (pt 2928 328) + (bus) +) +(connector + (pt 2912 344) + (pt 2944 344) +) +(connector + (pt 2912 360) + (pt 3008 360) + (bus) + (color 255 0 0) +) +(connector + (pt 2912 376) + (pt 2960 376) +) +(connector + (pt 2912 392) + (pt 2976 392) +) +(connector + (pt 2912 528) + (pt 2928 528) + (bus) +) +(connector + (pt 2912 544) + (pt 2944 544) +) +(connector + (pt 2912 560) + (pt 2976 560) +) +(connector + (text "result_lo[3..0]" (rect 2384 344 2451 356)(font "Arial" )) + (pt 2376 336) + (pt 2408 336) + (bus) +) +(connector + (pt 2680 328) + (pt 2768 328) + (bus) +) +(connector + (pt 2680 344) + (pt 2744 344) +) +(connector + (pt 2680 360) + (pt 2760 360) +) +(connector + (pt 2680 528) + (pt 2768 528) + (bus) +) +(connector + (pt 2680 544) + (pt 2744 544) +) +(connector + (pt 2680 560) + (pt 2760 560) +) +(junction (pt 616 240)) +(junction (pt 672 240)) +(junction (pt 728 240)) +(junction (pt 616 640)) +(junction (pt 728 640)) +(junction (pt 264 320)) +(junction (pt 704 288)) +(junction (pt 648 288)) +(junction (pt 1216 256)) +(junction (pt 1216 440)) +(junction (pt 1200 472)) +(junction (pt 1392 256)) +(junction (pt 1104 520)) +(junction (pt 1120 424)) +(junction (pt 1664 640)) +(junction (pt 1688 640)) +(junction (pt 1800 400)) +(junction (pt 1880 400)) +(junction (pt 1960 400)) +(junction (pt 2120 240)) +(junction (pt 1896 240)) +(junction (pt 1712 432)) +(junction (pt 2048 488)) +(junction (pt 2120 640)) +(junction (pt 2168 640)) +(junction (pt 2168 488)) +(junction (pt 2120 320)) +(junction (pt 2120 304)) +(junction (pt 2120 368)) +(junction (pt 2120 384)) +(junction (pt 2120 288)) +(junction (pt 2120 400)) +(junction (pt 1024 240)) +(junction (pt 1024 640)) +(junction (pt 728 504)) +(junction (pt 728 328)) +(junction (pt 840 344)) +(junction (pt 240 424)) +(junction (pt 1040 328)) +(junction (pt 1072 360)) +(junction (pt 1088 376)) +(junction (pt 2560 288)) +(junction (pt 2512 360)) +(junction (pt 2440 288)) +(junction (pt 2472 256)) +(junction (pt 2288 256)) +(junction (pt 2600 328)) +(junction (pt 2512 512)) +(junction (pt 2584 528)) +(junction (pt 3032 288)) +(junction (pt 2408 240)) +(junction (pt 2584 240)) +(junction (pt 2928 240)) +(junction (pt 2584 640)) +(junction (pt 2928 640)) +(junction (pt 3008 640)) +(junction (pt 2944 344)) +(junction (pt 2976 392)) +(junction (pt 3056 248)) +(junction (pt 3056 632)) +(junction (pt 2744 344)) +(title_block + (rect 3136 40 3457 101) + (name "title-custom-medium") + (section (rect 0 0 320 20)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 106 21)(font "Arial" (font_size 12)(bold)))(border)) + (section (rect 130 0 320 20)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "alu" (rect 43 2 70 21)(font "Arial" (font_size 12)(bold)))(border)) + (section (rect 0 21 320 40)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 151 19)(font "Arial" (font_size 11)))(border)) + (section (rect 0 41 240 60)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 18, 2014" (rect 56 3 149 19)(font "Arial" (font_size 10)))(border)) + (section (rect 241 41 320 60)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.4" (rect 43 3 64 19)(font "Arial" (font_size 10)))(border)) + (drawing + ) +) diff --git a/cpu/alu/alu.bsf b/cpu/alu/alu.bsf new file mode 100644 index 0000000..7215032 --- /dev/null +++ b/cpu/alu/alu.bsf @@ -0,0 +1,309 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 272 464) + (text "alu" (rect 5 0 21 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 432 25 444)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "alu_oe" (rect 0 0 37 14)(font "Arial" (font_size 8))) + (text "alu_oe" (rect 21 27 58 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "alu_shift_in" (rect 0 0 64 14)(font "Arial" (font_size 8))) + (text "alu_shift_in" (rect 21 43 85 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "alu_shift_left" (rect 0 0 73 14)(font "Arial" (font_size 8))) + (text "alu_shift_left" (rect 21 59 94 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "alu_shift_right" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "alu_shift_right" (rect 21 75 101 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "alu_core_R" (rect 0 0 64 14)(font "Arial" (font_size 8))) + (text "alu_core_R" (rect 21 91 85 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "alu_core_V" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "alu_core_V" (rect 21 107 87 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 0 128) + (input) + (text "alu_core_S" (rect 0 0 64 14)(font "Arial" (font_size 8))) + (text "alu_core_S" (rect 21 123 85 137)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)) + ) + (port + (pt 0 144) + (input) + (text "alu_bs_oe" (rect 0 0 59 14)(font "Arial" (font_size 8))) + (text "alu_bs_oe" (rect 21 139 80 153)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)) + ) + (port + (pt 0 160) + (input) + (text "alu_parity_in" (rect 0 0 71 14)(font "Arial" (font_size 8))) + (text "alu_parity_in" (rect 21 155 92 169)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 16 160)) + ) + (port + (pt 0 176) + (input) + (text "alu_shift_oe" (rect 0 0 69 14)(font "Arial" (font_size 8))) + (text "alu_shift_oe" (rect 21 171 90 185)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 16 176)) + ) + (port + (pt 0 192) + (input) + (text "alu_core_cf_in" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "alu_core_cf_in" (rect 21 187 105 201)(font "Arial" (font_size 8))) + (line (pt 0 192)(pt 16 192)) + ) + (port + (pt 0 208) + (input) + (text "alu_op2_oe" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "alu_op2_oe" (rect 21 203 87 217)(font "Arial" (font_size 8))) + (line (pt 0 208)(pt 16 208)) + ) + (port + (pt 0 224) + (input) + (text "alu_op1_oe" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "alu_op1_oe" (rect 21 219 87 233)(font "Arial" (font_size 8))) + (line (pt 0 224)(pt 16 224)) + ) + (port + (pt 0 240) + (input) + (text "alu_res_oe" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "alu_res_oe" (rect 21 235 84 249)(font "Arial" (font_size 8))) + (line (pt 0 240)(pt 16 240)) + ) + (port + (pt 0 256) + (input) + (text "alu_op1_sel_low" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "alu_op1_sel_low" (rect 21 251 117 265)(font "Arial" (font_size 8))) + (line (pt 0 256)(pt 16 256)) + ) + (port + (pt 0 272) + (input) + (text "alu_op1_sel_zero" (rect 0 0 101 14)(font "Arial" (font_size 8))) + (text "alu_op1_sel_zero" (rect 21 267 122 281)(font "Arial" (font_size 8))) + (line (pt 0 272)(pt 16 272)) + ) + (port + (pt 0 288) + (input) + (text "alu_op1_sel_bus" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "alu_op1_sel_bus" (rect 21 283 117 297)(font "Arial" (font_size 8))) + (line (pt 0 288)(pt 16 288)) + ) + (port + (pt 0 304) + (input) + (text "alu_op2_sel_zero" (rect 0 0 101 14)(font "Arial" (font_size 8))) + (text "alu_op2_sel_zero" (rect 21 299 122 313)(font "Arial" (font_size 8))) + (line (pt 0 304)(pt 16 304)) + ) + (port + (pt 0 320) + (input) + (text "alu_op2_sel_bus" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "alu_op2_sel_bus" (rect 21 315 117 329)(font "Arial" (font_size 8))) + (line (pt 0 320)(pt 16 320)) + ) + (port + (pt 0 336) + (input) + (text "alu_op2_sel_lq" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "alu_op2_sel_lq" (rect 21 331 105 345)(font "Arial" (font_size 8))) + (line (pt 0 336)(pt 16 336)) + ) + (port + (pt 0 352) + (input) + (text "alu_op_low" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "alu_op_low" (rect 21 347 87 361)(font "Arial" (font_size 8))) + (line (pt 0 352)(pt 16 352)) + ) + (port + (pt 0 368) + (input) + (text "alu_sel_op2_neg" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "alu_sel_op2_neg" (rect 21 363 117 377)(font "Arial" (font_size 8))) + (line (pt 0 368)(pt 16 368)) + ) + (port + (pt 0 384) + (input) + (text "alu_sel_op2_high" (rect 0 0 99 14)(font "Arial" (font_size 8))) + (text "alu_sel_op2_high" (rect 21 379 120 393)(font "Arial" (font_size 8))) + (line (pt 0 384)(pt 16 384)) + ) + (port + (pt 0 400) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 21 395 36 409)(font "Arial" (font_size 8))) + (line (pt 0 400)(pt 16 400)) + ) + (port + (pt 0 416) + (input) + (text "bsel[2..0]" (rect 0 0 51 14)(font "Arial" (font_size 8))) + (text "bsel[2..0]" (rect 21 411 72 425)(font "Arial" (font_size 8))) + (line (pt 0 416)(pt 16 416)(line_width 3)) + ) + (port + (pt 256 32) + (output) + (text "alu_zero" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "alu_zero" (rect 186 27 235 41)(font "Arial" (font_size 8))) + (line (pt 256 32)(pt 240 32)) + ) + (port + (pt 256 48) + (output) + (text "alu_parity_out" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "alu_parity_out" (rect 155 43 235 57)(font "Arial" (font_size 8))) + (line (pt 256 48)(pt 240 48)) + ) + (port + (pt 256 64) + (output) + (text "alu_high_eq_9" (rect 0 0 82 14)(font "Arial" (font_size 8))) + (text "alu_high_eq_9" (rect 153 59 235 73)(font "Arial" (font_size 8))) + (line (pt 256 64)(pt 240 64)) + ) + (port + (pt 256 80) + (output) + (text "alu_high_gt_9" (rect 0 0 79 14)(font "Arial" (font_size 8))) + (text "alu_high_gt_9" (rect 156 75 235 89)(font "Arial" (font_size 8))) + (line (pt 256 80)(pt 240 80)) + ) + (port + (pt 256 96) + (output) + (text "alu_low_gt_9" (rect 0 0 76 14)(font "Arial" (font_size 8))) + (text "alu_low_gt_9" (rect 159 91 235 105)(font "Arial" (font_size 8))) + (line (pt 256 96)(pt 240 96)) + ) + (port + (pt 256 112) + (output) + (text "alu_shift_db0" (rect 0 0 76 14)(font "Arial" (font_size 8))) + (text "alu_shift_db0" (rect 159 107 235 121)(font "Arial" (font_size 8))) + (line (pt 256 112)(pt 240 112)) + ) + (port + (pt 256 128) + (output) + (text "alu_shift_db7" (rect 0 0 76 14)(font "Arial" (font_size 8))) + (text "alu_shift_db7" (rect 159 123 235 137)(font "Arial" (font_size 8))) + (line (pt 256 128)(pt 240 128)) + ) + (port + (pt 256 144) + (output) + (text "alu_core_cf_out" (rect 0 0 93 14)(font "Arial" (font_size 8))) + (text "alu_core_cf_out" (rect 142 139 235 153)(font "Arial" (font_size 8))) + (line (pt 256 144)(pt 240 144)) + ) + (port + (pt 256 160) + (output) + (text "alu_sf_out" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "alu_sf_out" (rect 175 155 235 169)(font "Arial" (font_size 8))) + (line (pt 256 160)(pt 240 160)) + ) + (port + (pt 256 176) + (output) + (text "alu_yf_out" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "alu_yf_out" (rect 175 171 235 185)(font "Arial" (font_size 8))) + (line (pt 256 176)(pt 240 176)) + ) + (port + (pt 256 192) + (output) + (text "alu_xf_out" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "alu_xf_out" (rect 175 187 235 201)(font "Arial" (font_size 8))) + (line (pt 256 192)(pt 240 192)) + ) + (port + (pt 256 208) + (output) + (text "alu_vf_out" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "alu_vf_out" (rect 175 203 235 217)(font "Arial" (font_size 8))) + (line (pt 256 208)(pt 240 208)) + ) + (port + (pt 256 224) + (output) + (text "test_db_low[3..0]" (rect 0 0 99 14)(font "Arial" (font_size 8))) + (text "test_db_low[3..0]" (rect 136 219 235 233)(font "Arial" (font_size 8))) + (line (pt 256 224)(pt 240 224)(line_width 3)) + ) + (port + (pt 256 256) + (output) + (text "test_db_high[3..0]" (rect 0 0 101 14)(font "Arial" (font_size 8))) + (text "test_db_high[3..0]" (rect 134 251 235 265)(font "Arial" (font_size 8))) + (line (pt 256 256)(pt 240 256)(line_width 3)) + ) + (port + (pt 256 240) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 193 235 235 249)(font "Arial" (font_size 8))) + (line (pt 256 240)(pt 240 240)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 240 432)) + ) +) diff --git a/cpu/alu/alu.v b/cpu/alu/alu.v new file mode 100644 index 0000000..54d07f0 --- /dev/null +++ b/cpu/alu/alu.v @@ -0,0 +1,384 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Fri Nov 07 19:44:45 2014" + +module alu( + alu_core_R, + alu_core_V, + alu_core_S, + alu_bs_oe, + alu_parity_in, + alu_oe, + alu_shift_oe, + alu_core_cf_in, + alu_op2_oe, + alu_op1_oe, + alu_res_oe, + alu_op1_sel_low, + alu_op1_sel_zero, + alu_op1_sel_bus, + alu_op2_sel_zero, + alu_op2_sel_bus, + alu_op2_sel_lq, + alu_op_low, + alu_shift_in, + alu_sel_op2_neg, + alu_sel_op2_high, + alu_shift_left, + alu_shift_right, + clk, + bsel, + alu_zero, + alu_parity_out, + alu_high_eq_9, + alu_high_gt_9, + alu_low_gt_9, + alu_shift_db0, + alu_shift_db7, + alu_core_cf_out, + alu_sf_out, + alu_yf_out, + alu_xf_out, + alu_vf_out, + db, + test_db_high, + test_db_low +); + + +input wire alu_core_R; +input wire alu_core_V; +input wire alu_core_S; +input wire alu_bs_oe; +input wire alu_parity_in; +input wire alu_oe; +input wire alu_shift_oe; +input wire alu_core_cf_in; +input wire alu_op2_oe; +input wire alu_op1_oe; +input wire alu_res_oe; +input wire alu_op1_sel_low; +input wire alu_op1_sel_zero; +input wire alu_op1_sel_bus; +input wire alu_op2_sel_zero; +input wire alu_op2_sel_bus; +input wire alu_op2_sel_lq; +input wire alu_op_low; +input wire alu_shift_in; +input wire alu_sel_op2_neg; +input wire alu_sel_op2_high; +input wire alu_shift_left; +input wire alu_shift_right; +input wire clk; +input wire [2:0] bsel; +output wire alu_zero; +output wire alu_parity_out; +output wire alu_high_eq_9; +output wire alu_high_gt_9; +output wire alu_low_gt_9; +output wire alu_shift_db0; +output wire alu_shift_db7; +output wire alu_core_cf_out; +output wire alu_sf_out; +output wire alu_yf_out; +output wire alu_xf_out; +output wire alu_vf_out; +inout wire [7:0] db; +output wire [3:0] test_db_high; +output wire [3:0] test_db_low; + +wire [3:0] alu_op1; +wire [3:0] alu_op2; +wire [3:0] db_high; +wire [3:0] db_low; +reg [3:0] op1_high; +reg [3:0] op1_low; +reg [3:0] op2_high; +reg [3:0] op2_low; +wire [3:0] result_hi; +reg [3:0] result_lo; +wire [3:0] SYNTHESIZED_WIRE_0; +wire [3:0] SYNTHESIZED_WIRE_1; +wire [3:0] SYNTHESIZED_WIRE_2; +wire [3:0] SYNTHESIZED_WIRE_3; +wire SYNTHESIZED_WIRE_35; +wire [3:0] SYNTHESIZED_WIRE_5; +wire [3:0] SYNTHESIZED_WIRE_7; +wire [3:0] SYNTHESIZED_WIRE_8; +wire SYNTHESIZED_WIRE_9; +wire [3:0] SYNTHESIZED_WIRE_10; +wire [3:0] SYNTHESIZED_WIRE_11; +wire [3:0] SYNTHESIZED_WIRE_12; +wire [3:0] SYNTHESIZED_WIRE_13; +wire [3:0] SYNTHESIZED_WIRE_14; +wire [3:0] SYNTHESIZED_WIRE_15; +wire [3:0] SYNTHESIZED_WIRE_16; +wire SYNTHESIZED_WIRE_17; +wire [3:0] SYNTHESIZED_WIRE_18; +wire SYNTHESIZED_WIRE_36; +wire SYNTHESIZED_WIRE_20; +wire [3:0] SYNTHESIZED_WIRE_21; +wire SYNTHESIZED_WIRE_23; +wire [3:0] SYNTHESIZED_WIRE_24; +wire SYNTHESIZED_WIRE_37; +wire SYNTHESIZED_WIRE_26; +wire [3:0] SYNTHESIZED_WIRE_27; +wire SYNTHESIZED_WIRE_29; +wire SYNTHESIZED_WIRE_30; +wire SYNTHESIZED_WIRE_31; +wire SYNTHESIZED_WIRE_32; +wire [3:0] SYNTHESIZED_WIRE_33; +wire [3:0] SYNTHESIZED_WIRE_34; + + + + +assign db_low[3] = alu_bs_oe ? SYNTHESIZED_WIRE_0[3] : 1'bz; +assign db_low[2] = alu_bs_oe ? SYNTHESIZED_WIRE_0[2] : 1'bz; +assign db_low[1] = alu_bs_oe ? SYNTHESIZED_WIRE_0[1] : 1'bz; +assign db_low[0] = alu_bs_oe ? SYNTHESIZED_WIRE_0[0] : 1'bz; + +assign db_high[3] = alu_bs_oe ? SYNTHESIZED_WIRE_1[3] : 1'bz; +assign db_high[2] = alu_bs_oe ? SYNTHESIZED_WIRE_1[2] : 1'bz; +assign db_high[1] = alu_bs_oe ? SYNTHESIZED_WIRE_1[1] : 1'bz; +assign db_high[0] = alu_bs_oe ? SYNTHESIZED_WIRE_1[0] : 1'bz; + + +alu_core b2v_core( + .cy_in(alu_core_cf_in), + .S(alu_core_S), + .V(alu_core_V), + .R(alu_core_R), + .op1(alu_op1), + .op2(alu_op2), + .cy_out(alu_core_cf_out), + .vf_out(alu_vf_out), + .result(result_hi)); + +assign db[3] = alu_oe ? db_low[3] : 1'bz; +assign db[2] = alu_oe ? db_low[2] : 1'bz; +assign db[1] = alu_oe ? db_low[1] : 1'bz; +assign db[0] = alu_oe ? db_low[0] : 1'bz; + +assign db[7] = alu_oe ? db_high[3] : 1'bz; +assign db[6] = alu_oe ? db_high[2] : 1'bz; +assign db[5] = alu_oe ? db_high[1] : 1'bz; +assign db[4] = alu_oe ? db_high[0] : 1'bz; + + +alu_bit_select b2v_input_bit_select( + .bsel(bsel), + .bs_out_high(SYNTHESIZED_WIRE_1), + .bs_out_low(SYNTHESIZED_WIRE_0)); + + +alu_shifter_core b2v_input_shift( + .shift_in(alu_shift_in), + .shift_left(alu_shift_left), + .shift_right(alu_shift_right), + .db(db), + .shift_db0(alu_shift_db0), + .shift_db7(alu_shift_db7), + .out_high(SYNTHESIZED_WIRE_34), + .out_low(SYNTHESIZED_WIRE_33)); + + +always@(posedge clk) +begin +if (alu_op_low) + begin + result_lo[3:0] <= result_hi[3:0]; + end +end + +assign alu_op1 = SYNTHESIZED_WIRE_2 | SYNTHESIZED_WIRE_3; + +assign SYNTHESIZED_WIRE_17 = ~alu_op_low; + +assign db_low[3] = alu_op2_oe ? op2_low[3] : 1'bz; +assign db_low[2] = alu_op2_oe ? op2_low[2] : 1'bz; +assign db_low[1] = alu_op2_oe ? op2_low[1] : 1'bz; +assign db_low[0] = alu_op2_oe ? op2_low[0] : 1'bz; + +assign db_high[3] = alu_op2_oe ? op2_high[3] : 1'bz; +assign db_high[2] = alu_op2_oe ? op2_high[2] : 1'bz; +assign db_high[1] = alu_op2_oe ? op2_high[1] : 1'bz; +assign db_high[0] = alu_op2_oe ? op2_high[0] : 1'bz; + +assign SYNTHESIZED_WIRE_5 = ~op2_low; + +assign SYNTHESIZED_WIRE_7 = ~op2_high; + +assign SYNTHESIZED_WIRE_12 = op2_low & {SYNTHESIZED_WIRE_35,SYNTHESIZED_WIRE_35,SYNTHESIZED_WIRE_35,SYNTHESIZED_WIRE_35}; + +assign SYNTHESIZED_WIRE_11 = {alu_sel_op2_neg,alu_sel_op2_neg,alu_sel_op2_neg,alu_sel_op2_neg} & SYNTHESIZED_WIRE_5; + +assign SYNTHESIZED_WIRE_14 = op2_high & {SYNTHESIZED_WIRE_35,SYNTHESIZED_WIRE_35,SYNTHESIZED_WIRE_35,SYNTHESIZED_WIRE_35}; + +assign SYNTHESIZED_WIRE_13 = {alu_sel_op2_neg,alu_sel_op2_neg,alu_sel_op2_neg,alu_sel_op2_neg} & SYNTHESIZED_WIRE_7; + +assign SYNTHESIZED_WIRE_16 = SYNTHESIZED_WIRE_8 & {SYNTHESIZED_WIRE_9,SYNTHESIZED_WIRE_9,SYNTHESIZED_WIRE_9,SYNTHESIZED_WIRE_9}; + +assign SYNTHESIZED_WIRE_15 = {alu_sel_op2_high,alu_sel_op2_high,alu_sel_op2_high,alu_sel_op2_high} & SYNTHESIZED_WIRE_10; + +assign SYNTHESIZED_WIRE_8 = SYNTHESIZED_WIRE_11 | SYNTHESIZED_WIRE_12; + +assign SYNTHESIZED_WIRE_10 = SYNTHESIZED_WIRE_13 | SYNTHESIZED_WIRE_14; + +assign alu_op2 = SYNTHESIZED_WIRE_15 | SYNTHESIZED_WIRE_16; + +assign SYNTHESIZED_WIRE_35 = ~alu_sel_op2_neg; + +assign SYNTHESIZED_WIRE_9 = ~alu_sel_op2_high; + +assign db_low[3] = alu_res_oe ? result_lo[3] : 1'bz; +assign db_low[2] = alu_res_oe ? result_lo[2] : 1'bz; +assign db_low[1] = alu_res_oe ? result_lo[1] : 1'bz; +assign db_low[0] = alu_res_oe ? result_lo[0] : 1'bz; + +assign db_high[3] = alu_res_oe ? result_hi[3] : 1'bz; +assign db_high[2] = alu_res_oe ? result_hi[2] : 1'bz; +assign db_high[1] = alu_res_oe ? result_hi[1] : 1'bz; +assign db_high[0] = alu_res_oe ? result_hi[0] : 1'bz; + +assign SYNTHESIZED_WIRE_3 = op1_low & {alu_op_low,alu_op_low,alu_op_low,alu_op_low}; + +assign SYNTHESIZED_WIRE_2 = {SYNTHESIZED_WIRE_17,SYNTHESIZED_WIRE_17,SYNTHESIZED_WIRE_17,SYNTHESIZED_WIRE_17} & op1_high; + + +always@(posedge SYNTHESIZED_WIRE_36) +begin +if (SYNTHESIZED_WIRE_20) + begin + op1_high[3:0] <= SYNTHESIZED_WIRE_18[3:0]; + end +end + + +always@(posedge SYNTHESIZED_WIRE_36) +begin +if (SYNTHESIZED_WIRE_23) + begin + op1_low[3:0] <= SYNTHESIZED_WIRE_21[3:0]; + end +end + + +always@(posedge SYNTHESIZED_WIRE_37) +begin +if (SYNTHESIZED_WIRE_26) + begin + op2_high[3:0] <= SYNTHESIZED_WIRE_24[3:0]; + end +end + + +always@(posedge SYNTHESIZED_WIRE_37) +begin +if (SYNTHESIZED_WIRE_29) + begin + op2_low[3:0] <= SYNTHESIZED_WIRE_27[3:0]; + end +end + +assign db_low[3] = alu_op1_oe ? op1_low[3] : 1'bz; +assign db_low[2] = alu_op1_oe ? op1_low[2] : 1'bz; +assign db_low[1] = alu_op1_oe ? op1_low[1] : 1'bz; +assign db_low[0] = alu_op1_oe ? op1_low[0] : 1'bz; + +assign db_high[3] = alu_op1_oe ? op1_high[3] : 1'bz; +assign db_high[2] = alu_op1_oe ? op1_high[2] : 1'bz; +assign db_high[1] = alu_op1_oe ? op1_high[1] : 1'bz; +assign db_high[0] = alu_op1_oe ? op1_high[0] : 1'bz; + +assign SYNTHESIZED_WIRE_36 = ~clk; + +assign SYNTHESIZED_WIRE_37 = ~clk; + + +alu_mux_2z b2v_op1_latch_mux_high( + .sel_a(alu_op1_sel_bus), + .sel_zero(alu_op1_sel_zero), + .a(db_high), + .ena(SYNTHESIZED_WIRE_20), + .Q(SYNTHESIZED_WIRE_18)); + + +alu_mux_3z b2v_op1_latch_mux_low( + .sel_a(alu_op1_sel_bus), + .sel_b(alu_op1_sel_low), + .sel_zero(alu_op1_sel_zero), + .a(db_low), + .b(db_high), + .ena(SYNTHESIZED_WIRE_23), + .Q(SYNTHESIZED_WIRE_21)); + + +alu_mux_3z b2v_op2_latch_mux_high( + .sel_a(alu_op2_sel_bus), + .sel_b(alu_op2_sel_lq), + .sel_zero(alu_op2_sel_zero), + .a(db_high), + .b(db_low), + .ena(SYNTHESIZED_WIRE_26), + .Q(SYNTHESIZED_WIRE_24)); + + +alu_mux_3z b2v_op2_latch_mux_low( + .sel_a(alu_op2_sel_bus), + .sel_b(alu_op2_sel_lq), + .sel_zero(alu_op2_sel_zero), + .a(db_low), + .b(alu_op1), + .ena(SYNTHESIZED_WIRE_29), + .Q(SYNTHESIZED_WIRE_27)); + +assign alu_parity_out = SYNTHESIZED_WIRE_30 ^ result_hi[0]; + +assign SYNTHESIZED_WIRE_30 = SYNTHESIZED_WIRE_31 ^ result_hi[1]; + +assign SYNTHESIZED_WIRE_31 = SYNTHESIZED_WIRE_32 ^ result_hi[2]; + +assign SYNTHESIZED_WIRE_32 = alu_parity_in ^ result_hi[3]; + + +alu_prep_daa b2v_prep_daa( + .high(op1_high), + .low(op1_low), + .low_gt_9(alu_low_gt_9), + .high_gt_9(alu_high_gt_9), + .high_eq_9(alu_high_eq_9)); + +assign db_low[3] = alu_shift_oe ? SYNTHESIZED_WIRE_33[3] : 1'bz; +assign db_low[2] = alu_shift_oe ? SYNTHESIZED_WIRE_33[2] : 1'bz; +assign db_low[1] = alu_shift_oe ? SYNTHESIZED_WIRE_33[1] : 1'bz; +assign db_low[0] = alu_shift_oe ? SYNTHESIZED_WIRE_33[0] : 1'bz; + +assign db_high[3] = alu_shift_oe ? SYNTHESIZED_WIRE_34[3] : 1'bz; +assign db_high[2] = alu_shift_oe ? SYNTHESIZED_WIRE_34[2] : 1'bz; +assign db_high[1] = alu_shift_oe ? SYNTHESIZED_WIRE_34[1] : 1'bz; +assign db_high[0] = alu_shift_oe ? SYNTHESIZED_WIRE_34[0] : 1'bz; + +assign alu_zero = ~(db_low[2] | db_low[1] | db_low[3] | db_high[1] | db_high[0] | db_high[2] | db_low[0] | db_high[3]); + +assign alu_sf_out = db_high[3]; +assign alu_yf_out = db_high[1]; +assign alu_xf_out = db_low[3]; +assign test_db_high = db_high; +assign test_db_low = db_low; + +endmodule diff --git a/cpu/alu/alu_bit_select.bdf b/cpu/alu/alu_bit_select.bdf new file mode 100644 index 0000000..746086d --- /dev/null +++ b/cpu/alu/alu_bit_select.bdf @@ -0,0 +1,848 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 24 32 200 48) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "bsel[2..0]" (rect 9 0 55 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 712 136 888 152) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "bs_out_low[3..0]" (rect 90 0 170 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 720 328 896 344) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "bs_out_high[3..0]" (rect 90 0 174 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 448 120 512 168) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and0" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 448 168 512 216) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and1" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 448 216 512 264) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and2" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 448 264 512 312) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and3" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 448 312 512 360) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and4" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 448 360 512 408) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and5" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 448 408 512 456) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and6" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 448 456 512 504) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and7" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 272 40 320 72) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "not0" (rect 3 21 24 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 272 80 320 112) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "not1" (rect 3 21 24 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 272 120 320 152) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "not2" (rect 3 21 24 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(connector + (pt 256 40) + (pt 256 56) +) +(connector + (pt 256 80) + (pt 256 96) +) +(connector + (pt 256 120) + (pt 256 136) +) +(connector + (pt 400 136) + (pt 448 136) +) +(connector + (pt 368 144) + (pt 448 144) +) +(connector + (pt 336 152) + (pt 448 152) +) +(connector + (pt 416 184) + (pt 448 184) +) +(connector + (pt 368 192) + (pt 448 192) +) +(connector + (pt 336 200) + (pt 448 200) +) +(connector + (pt 400 232) + (pt 448 232) +) +(connector + (pt 384 240) + (pt 448 240) +) +(connector + (pt 336 248) + (pt 448 248) +) +(connector + (pt 416 280) + (pt 448 280) +) +(connector + (pt 384 288) + (pt 448 288) +) +(connector + (pt 336 296) + (pt 448 296) +) +(connector + (pt 400 328) + (pt 448 328) +) +(connector + (pt 368 336) + (pt 448 336) +) +(connector + (pt 352 344) + (pt 448 344) +) +(connector + (pt 416 376) + (pt 448 376) +) +(connector + (pt 368 384) + (pt 448 384) +) +(connector + (pt 352 392) + (pt 448 392) +) +(connector + (pt 400 424) + (pt 448 424) +) +(connector + (pt 384 432) + (pt 448 432) +) +(connector + (pt 352 440) + (pt 448 440) +) +(connector + (pt 416 472) + (pt 448 472) +) +(connector + (pt 384 480) + (pt 448 480) +) +(connector + (pt 352 488) + (pt 448 488) +) +(connector + (pt 256 56) + (pt 272 56) +) +(connector + (pt 256 96) + (pt 272 96) +) +(connector + (pt 256 136) + (pt 272 136) +) +(connector + (text "bs_out_low[3..0]" (rect 647 128 727 140)(font "Arial" )) + (pt 632 144) + (pt 712 144) + (bus) +) +(connector + (text "bs_out_high[3..0]" (rect 644 320 728 332)(font "Arial" )) + (pt 632 336) + (pt 720 336) + (bus) +) +(connector + (text "bs_out_low[0]" (rect 562 128 629 140)(font "Arial" )) + (pt 512 144) + (pt 632 144) +) +(connector + (text "bs_out_low[1]" (rect 564 176 631 188)(font "Arial" )) + (pt 512 192) + (pt 632 192) +) +(connector + (text "bs_out_low[2]" (rect 563 224 630 236)(font "Arial" )) + (pt 512 240) + (pt 632 240) +) +(connector + (text "bs_out_low[3]" (rect 563 272 630 284)(font "Arial" )) + (pt 512 288) + (pt 632 288) +) +(connector + (text "bs_out_high[0]" (rect 563 320 634 332)(font "Arial" )) + (pt 512 336) + (pt 632 336) +) +(connector + (text "bs_out_high[1]" (rect 563 368 634 380)(font "Arial" )) + (pt 512 384) + (pt 632 384) +) +(connector + (text "bs_out_high[2]" (rect 564 416 635 428)(font "Arial" )) + (pt 512 432) + (pt 632 432) +) +(connector + (text "bs_out_high[3]" (rect 563 464 634 476)(font "Arial" )) + (pt 512 480) + (pt 632 480) +) +(connector + (pt 320 56) + (pt 400 56) +) +(connector + (pt 320 96) + (pt 368 96) +) +(connector + (pt 320 136) + (pt 336 136) +) +(connector + (pt 400 56) + (pt 400 136) +) +(connector + (pt 400 136) + (pt 400 232) +) +(connector + (pt 400 232) + (pt 400 328) +) +(connector + (pt 400 328) + (pt 400 424) +) +(connector + (pt 368 96) + (pt 368 144) +) +(connector + (pt 368 144) + (pt 368 192) +) +(connector + (pt 368 192) + (pt 368 336) +) +(connector + (pt 368 336) + (pt 368 384) +) +(connector + (pt 336 136) + (pt 336 152) +) +(connector + (pt 336 152) + (pt 336 200) +) +(connector + (pt 336 200) + (pt 336 248) +) +(connector + (pt 336 248) + (pt 336 296) +) +(connector + (pt 352 120) + (pt 352 344) +) +(connector + (pt 352 344) + (pt 352 392) +) +(connector + (pt 352 392) + (pt 352 440) +) +(connector + (pt 352 440) + (pt 352 488) +) +(connector + (pt 416 40) + (pt 416 184) +) +(connector + (pt 416 184) + (pt 416 280) +) +(connector + (pt 416 280) + (pt 416 376) +) +(connector + (pt 416 376) + (pt 416 472) +) +(connector + (pt 384 80) + (pt 384 240) +) +(connector + (pt 384 240) + (pt 384 288) +) +(connector + (pt 384 288) + (pt 384 432) +) +(connector + (pt 384 432) + (pt 384 480) +) +(connector + (text "bsel[0]" (rect 222 24 255 36)(font "Arial" )) + (pt 216 40) + (pt 256 40) +) +(connector + (pt 256 40) + (pt 416 40) +) +(connector + (pt 216 40) + (pt 216 80) + (bus) +) +(connector + (pt 216 80) + (pt 216 120) + (bus) +) +(connector + (text "bsel[1]" (rect 221 64 254 76)(font "Arial" )) + (pt 216 80) + (pt 256 80) +) +(connector + (pt 256 80) + (pt 384 80) +) +(connector + (text "bsel[2]" (rect 220 104 253 116)(font "Arial" )) + (pt 216 120) + (pt 256 120) +) +(connector + (pt 256 120) + (pt 352 120) +) +(connector + (pt 632 144) + (pt 632 192) + (bus) +) +(connector + (pt 632 192) + (pt 632 240) + (bus) +) +(connector + (pt 632 240) + (pt 632 288) + (bus) +) +(connector + (pt 632 336) + (pt 632 384) + (bus) +) +(connector + (pt 632 384) + (pt 632 432) + (bus) +) +(connector + (pt 632 432) + (pt 632 480) + (bus) +) +(connector + (pt 200 40) + (pt 216 40) + (bus) +) +(junction (pt 400 136)) +(junction (pt 400 232)) +(junction (pt 400 328)) +(junction (pt 368 144)) +(junction (pt 368 192)) +(junction (pt 368 336)) +(junction (pt 336 152)) +(junction (pt 336 200)) +(junction (pt 336 248)) +(junction (pt 352 344)) +(junction (pt 352 392)) +(junction (pt 352 440)) +(junction (pt 416 184)) +(junction (pt 416 280)) +(junction (pt 416 376)) +(junction (pt 384 240)) +(junction (pt 384 288)) +(junction (pt 384 432)) +(junction (pt 256 40)) +(junction (pt 216 40)) +(junction (pt 256 80)) +(junction (pt 216 80)) +(junction (pt 256 120)) +(junction (pt 632 144)) +(junction (pt 632 192)) +(junction (pt 632 240)) +(junction (pt 632 336)) +(junction (pt 632 384)) +(junction (pt 632 432)) +(title_block + (rect 24 536 281 588) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "alu_bit_select" (rect 43 2 137 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 18, 2014" (rect 56 3 132 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.0" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/alu/alu_bit_select.bsf b/cpu/alu/alu_bit_select.bsf new file mode 100644 index 0000000..de647ab --- /dev/null +++ b/cpu/alu/alu_bit_select.bsf @@ -0,0 +1,51 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 216 112) + (text "alu_bit_select" (rect 5 0 82 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 80 25 92)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "bsel[2..0]" (rect 0 0 51 14)(font "Arial" (font_size 8))) + (text "bsel[2..0]" (rect 21 27 72 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 200 32) + (output) + (text "bs_out_low[3..0]" (rect 0 0 95 14)(font "Arial" (font_size 8))) + (text "bs_out_low[3..0]" (rect 84 27 179 41)(font "Arial" (font_size 8))) + (line (pt 200 32)(pt 184 32)(line_width 3)) + ) + (port + (pt 200 48) + (output) + (text "bs_out_high[3..0]" (rect 0 0 97 14)(font "Arial" (font_size 8))) + (text "bs_out_high[3..0]" (rect 82 43 179 57)(font "Arial" (font_size 8))) + (line (pt 200 48)(pt 184 48)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 184 80)) + ) + (fill (color 217 255 255)) +) diff --git a/cpu/alu/alu_bit_select.v b/cpu/alu/alu_bit_select.v new file mode 100644 index 0000000..7a16bcd --- /dev/null +++ b/cpu/alu/alu_bit_select.v @@ -0,0 +1,64 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Mon Oct 13 12:21:31 2014" + +module alu_bit_select( + bsel, + bs_out_high, + bs_out_low +); + + +input wire [2:0] bsel; +output wire [3:0] bs_out_high; +output wire [3:0] bs_out_low; + +wire [3:0] bs_out_high_ALTERA_SYNTHESIZED; +wire [3:0] bs_out_low_ALTERA_SYNTHESIZED; +wire SYNTHESIZED_WIRE_12; +wire SYNTHESIZED_WIRE_13; +wire SYNTHESIZED_WIRE_14; + + + + +assign bs_out_low_ALTERA_SYNTHESIZED[0] = SYNTHESIZED_WIRE_12 & SYNTHESIZED_WIRE_13 & SYNTHESIZED_WIRE_14; + +assign bs_out_low_ALTERA_SYNTHESIZED[1] = bsel[0] & SYNTHESIZED_WIRE_13 & SYNTHESIZED_WIRE_14; + +assign bs_out_low_ALTERA_SYNTHESIZED[2] = SYNTHESIZED_WIRE_12 & bsel[1] & SYNTHESIZED_WIRE_14; + +assign bs_out_low_ALTERA_SYNTHESIZED[3] = bsel[0] & bsel[1] & SYNTHESIZED_WIRE_14; + +assign bs_out_high_ALTERA_SYNTHESIZED[0] = SYNTHESIZED_WIRE_12 & SYNTHESIZED_WIRE_13 & bsel[2]; + +assign bs_out_high_ALTERA_SYNTHESIZED[1] = bsel[0] & SYNTHESIZED_WIRE_13 & bsel[2]; + +assign bs_out_high_ALTERA_SYNTHESIZED[2] = SYNTHESIZED_WIRE_12 & bsel[1] & bsel[2]; + +assign bs_out_high_ALTERA_SYNTHESIZED[3] = bsel[0] & bsel[1] & bsel[2]; + +assign SYNTHESIZED_WIRE_12 = ~bsel[0]; + +assign SYNTHESIZED_WIRE_13 = ~bsel[1]; + +assign SYNTHESIZED_WIRE_14 = ~bsel[2]; + +assign bs_out_high = bs_out_high_ALTERA_SYNTHESIZED; +assign bs_out_low = bs_out_low_ALTERA_SYNTHESIZED; + +endmodule diff --git a/cpu/alu/alu_control.bdf b/cpu/alu/alu_control.bdf new file mode 100644 index 0000000..637f538 --- /dev/null +++ b/cpu/alu/alu_control.bdf @@ -0,0 +1,2542 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 256 208 272) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "op543[2..0]" (rect 9 0 64 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 88 208 104) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "alu_shift_db0" (rect 9 0 75 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 40 208 56) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "alu_shift_db7" (rect 9 0 75 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 144 208 160) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_shift_en" (rect 9 0 66 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 872 208 888) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "alu_low_gt_9" (rect 9 0 71 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 992 208 1008) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "alu_high_gt_9" (rect 9 0 76 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 968 208 984) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "alu_high_eq_9" (rect 9 0 78 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 800 208 816) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_daa_oe" (rect 9 0 62 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1192 208 1208) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_op_low" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1160 208 1176) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "alu_parity_out" (rect 9 0 78 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 648 208 664) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "flags_cf" (rect 9 0 50 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 632 208 648) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "flags_zf" (rect 9 0 49 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 664 208 680) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "flags_pf" (rect 9 0 50 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 680 208 696) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "flags_sf" (rect 9 0 50 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 600 208 616) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_cond_short" (rect 9 0 80 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1416 208 1432) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "alu_vf_out" (rect 9 0 62 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1432 208 1448) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "iff2" (rect 9 0 26 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1384 208 1400) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_pf_sel[1..0]" (rect 9 0 83 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1552 208 1568) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_core_hf" (rect 9 0 84 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 728 208 744) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_eval_cond" (rect 9 0 77 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1448 208 1464) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "repeat_en" (rect 9 0 57 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 304 208 320) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "flags_cf_latch" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 888 208 904) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "flags_hf2" (rect 9 0 56 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1592 208 1608) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "flags_hf" (rect 9 0 50 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 840 208 856) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_66_oe" (rect 9 0 56 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1176 208 1192) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "clk" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 648 256 824 272) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_shift_in" (rect 90 0 146 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 648 200 824 216) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_shift_right" (rect 90 0 159 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 648 152 824 168) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_shift_left" (rect 90 0 154 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 648 72 824 88) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "shift_cf_out" (rect 90 0 150 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 792 872 968 888) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "db[7..0]" (rect 90 0 127 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 576 1248 752 1264) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_parity_in" (rect 90 0 152 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 800 608 976 624) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "flags_cond_true" (rect 90 0 169 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 792 1072 968 1088) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "daa_cf_out" (rect 90 0 145 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 584 1384 760 1400) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "pf_sel" (rect 90 0 120 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 576 1288 752 1304) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_op_low" (rect 90 0 143 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 528 1608 704 1624) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_core_cf_in" (rect 90 0 161 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 336 352 368 368) + (text "VCC" (rect 7 0 27 10)(font "Arial" (font_size 6))) + (text "vcc_inst" (rect 3 5 45 17)(font "Arial" )(invisible)) + (port + (pt 16 16) + (output) + (text "1" (rect 19 7 24 19)(font "Courier New" (bold))(invisible)) + (text "1" (rect 19 7 24 19)(font "Courier New" (bold))(invisible)) + (line (pt 16 16)(pt 16 8)) + ) + (drawing + (line (pt 8 8)(pt 24 8)) + ) +) +(symbol + (rect 384 408 416 440) + (text "GND" (rect 8 16 29 26)(font "Arial" (font_size 6))) + (text "gnd_inst" (rect 3 21 44 33)(font "Arial" )(invisible)) + (port + (pt 16 0) + (output) + (text "1" (rect 18 0 23 12)(font "Courier New" (bold))(invisible)) + (text "1" (rect 18 0 23 12)(font "Courier New" (bold))(invisible)) + (line (pt 16 8)(pt 16 0)) + ) + (drawing + (line (pt 8 8)(pt 16 16)) + (line (pt 16 16)(pt 24 8)) + (line (pt 8 8)(pt 24 8)) + ) +) +(symbol + (rect 448 232 560 424) + (text "alu_mux_8" (rect 5 0 66 14)(font "Arial" (font_size 8))) + (text "inst_shift_mux" (rect 8 176 81 188)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "sel[2..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[2..0]" (rect 21 27 65 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "in0" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in0" (rect 21 43 37 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "in1" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in1" (rect 21 59 37 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "in2" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in2" (rect 21 75 37 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "in3" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in3" (rect 21 91 37 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "in4" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in4" (rect 21 107 37 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 0 128) + (input) + (text "in5" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in5" (rect 21 123 37 137)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)) + ) + (port + (pt 0 144) + (input) + (text "in6" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in6" (rect 21 139 37 153)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)) + ) + (port + (pt 0 160) + (input) + (text "in7" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in7" (rect 21 155 37 169)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 16 160)) + ) + (port + (pt 112 32) + (output) + (text "out" (rect 0 0 17 14)(font "Arial" (font_size 8))) + (text "out" (rect 74 27 91 41)(font "Arial" (font_size 8))) + (line (pt 112 32)(pt 96 32)) + ) + (drawing + (rectangle (rect 16 16 96 176)) + ) +) +(symbol + (rect 480 136 544 184) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst2" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 480 184 544 232) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst1" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 384 152 432 184) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "not1" (rect 3 21 24 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 384 48 432 80) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "not2" (rect 3 21 24 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 480 80 544 128) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst3" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 480 32 544 80) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst4" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 576 56 640 104) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst5" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 704 864 752 896) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 21 20 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 320 864 384 912) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst22" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 320 944 384 992) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst23" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 584 1096 616 1128) + (text "GND" (rect 8 16 29 26)(font "Arial" (font_size 6))) + (text "gnd_inst8" (rect 3 21 50 33)(font "Arial" )(invisible)) + (port + (pt 16 0) + (output) + (text "1" (rect 18 0 23 12)(font "Courier New" (bold))(invisible)) + (text "1" (rect 18 0 23 12)(font "Courier New" (bold))(invisible)) + (line (pt 16 8)(pt 16 0)) + ) + (drawing + (line (pt 8 8)(pt 16 16)) + (line (pt 16 16)(pt 24 8)) + (line (pt 8 8)(pt 24 8)) + ) +) +(symbol + (rect 224 592 272 624) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "notcc" (rect 3 21 30 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 288 536 336 568) + (text "WIRE" (rect 1 0 24 10)(font "Arial" (font_size 6))) + (text "inst15" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 7)(pt 32 16)) + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + ) +) +(symbol + (rect 432 856 496 904) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst24" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 536 888 584 920) + (text "WIRE" (rect 1 0 24 10)(font "Arial" (font_size 6))) + (text "inst16" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 7)(pt 32 16)) + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + ) +) +(symbol + (rect 536 920 584 952) + (text "WIRE" (rect 1 0 24 10)(font "Arial" (font_size 6))) + (text "inst17" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 7)(pt 32 16)) + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + ) +) +(symbol + (rect 536 992 584 1024) + (text "WIRE" (rect 1 0 24 10)(font "Arial" (font_size 6))) + (text "inst18" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 7)(pt 32 16)) + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + ) +) +(symbol + (rect 536 1024 584 1056) + (text "WIRE" (rect 1 0 24 10)(font "Arial" (font_size 6))) + (text "inst19" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 7)(pt 32 16)) + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + ) +) +(symbol + (rect 360 1360 472 1488) + (text "alu_mux_4" (rect 5 0 66 14)(font "Arial" (font_size 8))) + (text "inst_pf_sel" (rect 8 112 62 124)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "sel[1..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[1..0]" (rect 21 27 65 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "in0" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in0" (rect 21 43 37 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "in1" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in1" (rect 21 59 37 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "in2" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in2" (rect 21 75 37 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "in3" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in3" (rect 21 91 37 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 112 32) + (output) + (text "out" (rect 0 0 17 14)(font "Arial" (font_size 8))) + (text "out" (rect 74 27 91 41)(font "Arial" (font_size 8))) + (line (pt 112 32)(pt 96 32)) + ) + (drawing + (rectangle (rect 16 16 96 112)) + ) +) +(symbol + (rect 416 1232 480 1280) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst10" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 336 1568 400 1616) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst6" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 336 1616 400 1664) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst7" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 432 1592 496 1640) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst8" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 256 1616 304 1648) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst9" (rect 3 21 26 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 432 952 496 1032) + (text "OR4" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst20" (rect 3 69 32 81)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 15 48)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 13 64)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 62 43)(font "Courier New" (bold))(invisible)) + (line (pt 48 40)(pt 64 40)) + ) + (drawing + (line (pt 13 67)(pt 13 51)) + (line (pt 25 52)(pt 13 52)) + (line (pt 13 12)(pt 13 29)) + (line (pt 13 29)(pt 25 29)) + (arc (pt 7 45)(pt 7 35)(rect -14 24 19 57)) + (arc (pt 49 40)(pt 25 29)(rect -6 29 57 92)) + (arc (pt 25 51)(pt 49 40)(rect -6 -11 57 52)) + ) +) +(symbol + (rect 320 792 384 840) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst11" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 448 592 560 720) + (text "alu_mux_4" (rect 5 0 66 14)(font "Arial" (font_size 8))) + (text "inst_cond_mux" (rect 8 112 82 124)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "sel[1..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[1..0]" (rect 21 27 65 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "in0" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in0" (rect 21 43 37 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "in1" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in1" (rect 21 59 37 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "in2" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in2" (rect 21 75 37 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "in3" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in3" (rect 21 91 37 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 112 32) + (output) + (text "out" (rect 0 0 17 14)(font "Arial" (font_size 8))) + (text "out" (rect 74 27 91 41)(font "Arial" (font_size 8))) + (line (pt 112 32)(pt 96 32)) + ) + (drawing + (rectangle (rect 16 16 96 112)) + ) +) +(symbol + (rect 288 496 336 528) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst27" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 288 576 352 624) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst28" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 592 592 656 640) + (text "XOR" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "cond_neg" (rect 3 37 50 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 11 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 11 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + (arc (pt 8 36)(pt 8 12)(rect -21 7 14 42)) + ) +) +(symbol + (rect 728 592 792 672) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst_cond" (rect 3 68 50 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 48 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 320 1144 384 1224) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "latch_pf_tmp" (rect 3 68 67 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 48 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(connector + (pt 320 168) + (pt 384 168) +) +(connector + (pt 320 64) + (pt 384 64) +) +(connector + (pt 456 200) + (pt 456 152) +) +(connector + (pt 560 56) + (pt 560 72) +) +(connector + (pt 560 104) + (pt 560 88) +) +(connector + (pt 640 80) + (pt 648 80) +) +(connector + (pt 456 200) + (pt 480 200) +) +(connector + (pt 320 216) + (pt 480 216) +) +(connector + (pt 560 88) + (pt 576 88) +) +(connector + (pt 560 72) + (pt 576 72) +) +(connector + (pt 400 392) + (pt 448 392) +) +(connector + (pt 448 344) + (pt 400 344) +) +(connector + (pt 400 312) + (pt 400 328) +) +(connector + (pt 448 328) + (pt 400 328) +) +(connector + (pt 376 280) + (pt 376 360) +) +(connector + (pt 448 360) + (pt 376 360) +) +(connector + (pt 352 376) + (pt 352 368) +) +(connector + (pt 448 376) + (pt 352 376) +) +(connector + (pt 288 96) + (pt 288 296) +) +(connector + (pt 448 296) + (pt 288 296) +) +(connector + (pt 264 48) + (pt 264 280) +) +(connector + (pt 416 872) + (pt 432 872) +) +(connector + (text "out[3]" (rect 612 944 640 956)(font "Arial" )) + (pt 600 960) + (pt 656 960) +) +(connector + (text "out[7]" (rect 614 1048 642 1060)(font "Arial" )) + (pt 600 1064) + (pt 656 1064) +) +(connector + (text "out[7..0]" (rect 659 864 700 876)(font "Arial" )) + (pt 656 880) + (pt 704 880) + (bus) +) +(connector + (pt 520 904) + (pt 536 904) +) +(connector + (pt 520 936) + (pt 536 936) +) +(connector + (pt 520 1008) + (pt 536 1008) +) +(connector + (pt 520 1040) + (pt 536 1040) +) +(connector + (pt 400 1248) + (pt 416 1248) +) +(connector + (pt 320 112) + (pt 480 112) +) +(connector + (text "out[0]" (rect 616 864 644 876)(font "Arial" )) + (pt 600 880) + (pt 656 880) +) +(connector + (text "out[4]" (rect 614 968 642 980)(font "Arial" )) + (pt 600 984) + (pt 656 984) +) +(connector + (pt 416 1264) + (pt 288 1264) +) +(connector + (pt 360 1408) + (pt 264 1408) +) +(connector + (pt 264 1168) + (pt 264 1408) +) +(connector + (pt 288 1296) + (pt 576 1296) +) +(connector + (text "op543[0]" (rect 304 212 316 254)(font "Arial" )(vertical)) + (pt 320 216) + (pt 320 264) +) +(connector + (pt 400 344) + (pt 400 392) +) +(connector + (pt 400 392) + (pt 400 408) +) +(connector + (pt 264 280) + (pt 376 280) +) +(connector + (pt 376 280) + (pt 448 280) +) +(connector + (pt 320 264) + (pt 448 264) + (bus) +) +(connector + (pt 320 64) + (pt 320 112) +) +(connector + (pt 320 112) + (pt 320 168) +) +(connector + (pt 320 168) + (pt 320 216) +) +(connector + (pt 288 1264) + (pt 288 1296) +) +(connector + (pt 288 96) + (pt 480 96) +) +(connector + (pt 264 48) + (pt 480 48) +) +(connector + (pt 456 152) + (pt 480 152) +) +(connector + (pt 264 1168) + (pt 320 1168) +) +(connector + (pt 560 264) + (pt 648 264) +) +(connector + (pt 544 160) + (pt 648 160) +) +(connector + (pt 544 208) + (pt 648 208) +) +(connector + (pt 432 168) + (pt 480 168) +) +(connector + (pt 432 64) + (pt 480 64) +) +(connector + (pt 544 104) + (pt 560 104) +) +(connector + (pt 544 56) + (pt 560 56) +) +(connector + (pt 752 880) + (pt 792 880) + (bus) +) +(connector + (pt 496 880) + (pt 520 880) +) +(connector + (text "out[1]" (rect 610 888 638 900)(font "Arial" )) + (pt 584 904) + (pt 656 904) +) +(connector + (text "out[2]" (rect 613 920 641 932)(font "Arial" )) + (pt 584 936) + (pt 656 936) +) +(connector + (text "out[5]" (rect 611 992 639 1004)(font "Arial" )) + (pt 584 1008) + (pt 656 1008) +) +(connector + (text "out[6]" (rect 614 1024 642 1036)(font "Arial" )) + (pt 584 1040) + (pt 656 1040) +) +(connector + (pt 472 1392) + (pt 584 1392) +) +(connector + (pt 480 1256) + (pt 576 1256) +) +(connector + (pt 208 96) + (pt 288 96) +) +(connector + (pt 208 48) + (pt 264 48) +) +(connector + (pt 208 152) + (pt 456 152) +) +(connector + (pt 208 1168) + (pt 264 1168) +) +(connector + (pt 208 1424) + (pt 360 1424) +) +(connector + (pt 208 1440) + (pt 360 1440) +) +(connector + (pt 208 1392) + (pt 360 1392) + (bus) +) +(connector + (pt 496 1616) + (pt 528 1616) +) +(connector + (pt 400 1592) + (pt 416 1592) +) +(connector + (pt 416 1592) + (pt 416 1608) +) +(connector + (pt 416 1608) + (pt 432 1608) +) +(connector + (pt 400 1640) + (pt 416 1640) +) +(connector + (pt 416 1640) + (pt 416 1624) +) +(connector + (pt 416 1624) + (pt 432 1624) +) +(connector + (pt 232 1560) + (pt 208 1560) +) +(connector + (text "flags_cf" (rect 124 1632 165 1644)(font "Arial" )) + (pt 120 1648) + (pt 336 1648) +) +(connector + (pt 232 1584) + (pt 336 1584) +) +(connector + (pt 232 1560) + (pt 232 1584) +) +(connector + (pt 232 1584) + (pt 232 1632) +) +(connector + (pt 304 1632) + (pt 336 1632) +) +(connector + (pt 256 1632) + (pt 232 1632) +) +(connector + (pt 208 1456) + (pt 360 1456) +) +(connector + (pt 208 312) + (pt 400 312) +) +(connector + (pt 400 312) + (pt 448 312) +) +(connector + (pt 520 992) + (pt 496 992) +) +(connector + (pt 520 1080) + (pt 792 1080) +) +(connector + (pt 432 888) + (pt 384 888) +) +(connector + (pt 208 976) + (pt 320 976) +) +(connector + (pt 240 880) + (pt 240 960) +) +(connector + (pt 240 960) + (pt 320 960) +) +(connector + (pt 432 968) + (pt 416 968) +) +(connector + (pt 432 984) + (pt 400 984) +) +(connector + (pt 400 984) + (pt 400 968) +) +(connector + (pt 384 968) + (pt 400 968) +) +(connector + (pt 432 1000) + (pt 208 1000) +) +(connector + (pt 432 1016) + (pt 400 1016) +) +(connector + (pt 400 1016) + (pt 400 1032) +) +(connector + (text "flags_cf_latch" (rect 136 1016 206 1028)(font "Arial" )) + (pt 400 1032) + (pt 128 1032) +) +(connector + (pt 208 896) + (pt 320 896) +) +(connector + (pt 208 1600) + (pt 336 1600) +) +(connector + (pt 520 880) + (pt 520 904) +) +(connector + (pt 520 904) + (pt 520 936) +) +(connector + (pt 600 880) + (pt 600 960) +) +(connector + (pt 600 960) + (pt 600 984) +) +(connector + (pt 600 984) + (pt 600 1064) +) +(connector + (pt 600 1064) + (pt 600 1096) +) +(connector + (pt 656 880) + (pt 656 904) + (bus) +) +(connector + (pt 656 904) + (pt 656 936) + (bus) +) +(connector + (pt 656 936) + (pt 656 960) + (bus) +) +(connector + (pt 656 960) + (pt 656 984) + (bus) +) +(connector + (pt 656 984) + (pt 656 1008) + (bus) +) +(connector + (pt 656 1008) + (pt 656 1040) + (bus) +) +(connector + (pt 656 1040) + (pt 656 1064) + (bus) +) +(connector + (pt 208 880) + (pt 240 880) +) +(connector + (pt 240 880) + (pt 320 880) +) +(connector + (pt 416 848) + (pt 416 872) +) +(connector + (pt 416 872) + (pt 416 968) +) +(connector + (pt 520 992) + (pt 520 1008) +) +(connector + (pt 520 1008) + (pt 520 1040) +) +(connector + (pt 520 1040) + (pt 520 1080) +) +(connector + (pt 728 864) + (pt 728 816) +) +(connector + (pt 384 816) + (pt 728 816) +) +(connector + (pt 208 808) + (pt 320 808) +) +(connector + (pt 320 824) + (pt 240 824) +) +(connector + (pt 240 824) + (pt 240 848) +) +(connector + (pt 240 848) + (pt 416 848) +) +(connector + (pt 208 848) + (pt 240 848) +) +(connector + (text "op543[0]" (rect 243 496 285 508)(font "Arial" )) + (pt 232 512) + (pt 288 512) +) +(connector + (text "op543[2]" (rect 238 576 280 588)(font "Arial" )) + (pt 288 592) + (pt 232 592) +) +(connector + (text "op543[1]" (rect 242 536 284 548)(font "Arial" )) + (pt 232 552) + (pt 288 552) +) +(connector + (pt 272 608) + (pt 288 608) +) +(connector + (pt 208 608) + (pt 224 608) +) +(connector + (pt 208 264) + (pt 232 264) + (bus) +) +(connector + (pt 232 264) + (pt 320 264) + (bus) +) +(connector + (pt 232 264) + (pt 232 512) + (bus) +) +(connector + (pt 232 512) + (pt 232 552) + (bus) +) +(connector + (pt 232 552) + (pt 232 592) + (bus) +) +(connector + (text "sel[0]" (rect 357 536 384 548)(font "Arial" )) + (pt 336 552) + (pt 392 552) +) +(connector + (text "sel[1]" (rect 358 584 385 596)(font "Arial" )) + (pt 352 600) + (pt 392 600) +) +(connector + (text "sel[1..0]" (rect 407 608 447 620)(font "Arial" )) + (pt 392 624) + (pt 448 624) + (bus) +) +(connector + (pt 392 552) + (pt 392 600) + (bus) +) +(connector + (pt 392 600) + (pt 392 624) + (bus) +) +(connector + (pt 208 656) + (pt 448 656) +) +(connector + (pt 208 640) + (pt 448 640) +) +(connector + (pt 208 672) + (pt 448 672) +) +(connector + (pt 208 688) + (pt 448 688) +) +(connector + (text "condition" (rect 669 600 712 612)(font "Arial" )) + (pt 656 616) + (pt 728 616) +) +(connector + (pt 560 624) + (pt 592 624) +) +(connector + (pt 336 512) + (pt 576 512) +) +(connector + (pt 576 512) + (pt 576 608) +) +(connector + (pt 576 608) + (pt 592 608) +) +(connector + (pt 792 616) + (pt 800 616) +) +(connector + (pt 728 648) + (pt 680 648) +) +(connector + (pt 680 648) + (pt 680 736) +) +(connector + (pt 680 736) + (pt 208 736) +) +(connector + (text "clk" (rect 686 616 700 628)(font "Arial" )) + (pt 728 632) + (pt 680 632) +) +(connector + (pt 400 1248) + (pt 400 1168) +) +(connector + (pt 400 1168) + (pt 384 1168) +) +(connector + (pt 288 1200) + (pt 288 1264) +) +(connector + (pt 208 1200) + (pt 288 1200) +) +(connector + (pt 288 1200) + (pt 320 1200) +) +(connector + (pt 208 1184) + (pt 320 1184) +) +(junction (pt 456 152)) +(junction (pt 320 216)) +(junction (pt 320 168)) +(junction (pt 400 392)) +(junction (pt 264 48)) +(junction (pt 376 280)) +(junction (pt 320 264)) +(junction (pt 232 264)) +(junction (pt 320 112)) +(junction (pt 288 96)) +(junction (pt 264 1168)) +(junction (pt 288 1264)) +(junction (pt 232 1584)) +(junction (pt 400 312)) +(junction (pt 520 904)) +(junction (pt 600 960)) +(junction (pt 600 984)) +(junction (pt 600 1064)) +(junction (pt 656 960)) +(junction (pt 656 984)) +(junction (pt 656 880)) +(junction (pt 656 904)) +(junction (pt 656 936)) +(junction (pt 656 1008)) +(junction (pt 656 1040)) +(junction (pt 240 880)) +(junction (pt 416 872)) +(junction (pt 520 1008)) +(junction (pt 520 1040)) +(junction (pt 240 848)) +(junction (pt 232 512)) +(junction (pt 232 552)) +(junction (pt 392 600)) +(junction (pt 288 1200)) +(text "Bit that is shifted in depends on the opcode:" (rect 576 288 824 302)(font "Arial" (font_size 8))) +(text "000 RLC -> old D[7]" (rect 576 304 685 318)(font "Arial" (font_size 8))) +(text "001 RRC -> old D[0]" (rect 576 320 686 334)(font "Arial" (font_size 8))) +(text "010 RL -> CF" (rect 576 336 650 350)(font "Arial" (font_size 8))) +(text "011 RR -> CF" (rect 576 352 651 366)(font "Arial" (font_size 8))) +(text "100 SLA -> 0" (rect 576 368 651 382)(font "Arial" (font_size 8))) +(text "101 SRA -> D[7]" (rect 576 384 668 398)(font "Arial" (font_size 8))) +(text "110 SLL -> 1" (rect 576 400 649 414)(font "Arial" (font_size 8))) +(text "111 SRL -> 0" (rect 576 416 650 430)(font "Arial" (font_size 8))) +(text "Select cf out based on the shift direction" (rect 560 32 790 46)(font "Arial" (font_size 8))) +(text "Low nibble 0x6" (rect 432 832 519 846)(font "Arial" (font_size 8))) +(text "High nibble 0x6" (rect 432 912 518 926)(font "Arial" (font_size 8))) +(text "Shifter control" (rect 352 16 446 32)(font "Arial" (font_size 10))) +(text "DAA + bus(66) logic" (rect 336 768 474 784)(font "Arial" (font_size 10))) +(text "Half-parity control" (rect 352 1104 471 1120)(font "Arial" (font_size 10))) +(text "Flag condition mux" (rect 440 536 569 552)(font "Arial" (font_size 10))) +(text "Parity / Overflow input selector" (rect 336 1328 543 1344)(font "Arial" (font_size 10))) +(text "Mux: when op is low, \"1\"; else pf_tmp" (rect 432 1192 647 1206)(font "Arial" (font_size 8))) +(text "Carry flag into ALU core" (rect 352 1520 514 1536)(font "Arial" (font_size 10))) +(title_block + (rect 32 1696 289 1748) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "alu_control" (rect 43 2 118 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "June 28, 2014" (rect 56 3 136 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.6" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/alu/alu_control.bsf b/cpu/alu/alu_control.bsf new file mode 100644 index 0000000..8d1018a --- /dev/null +++ b/cpu/alu/alu_control.bsf @@ -0,0 +1,288 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 248 496) + (text "alu_control" (rect 5 0 67 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 464 25 476)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "alu_shift_db7" (rect 0 0 76 14)(font "Arial" (font_size 8))) + (text "alu_shift_db7" (rect 21 27 97 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "alu_shift_db0" (rect 0 0 76 14)(font "Arial" (font_size 8))) + (text "alu_shift_db0" (rect 21 43 97 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "ctl_shift_en" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "ctl_shift_en" (rect 21 59 87 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "op543[2..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "op543[2..0]" (rect 21 75 84 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)(line_width 3)) + ) + (port + (pt 0 96) + (input) + (text "flags_cf_latch" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "flags_cf_latch" (rect 21 91 102 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "ctl_cond_short" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "ctl_cond_short" (rect 21 107 105 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 0 128) + (input) + (text "flags_zf" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "flags_zf" (rect 21 123 68 137)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)) + ) + (port + (pt 0 144) + (input) + (text "flags_cf" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "flags_cf" (rect 21 139 68 153)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)) + ) + (port + (pt 0 160) + (input) + (text "flags_pf" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "flags_pf" (rect 21 155 68 169)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 16 160)) + ) + (port + (pt 0 176) + (input) + (text "flags_sf" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "flags_sf" (rect 21 171 68 185)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 16 176)) + ) + (port + (pt 0 192) + (input) + (text "ctl_eval_cond" (rect 0 0 79 14)(font "Arial" (font_size 8))) + (text "ctl_eval_cond" (rect 21 187 100 201)(font "Arial" (font_size 8))) + (line (pt 0 192)(pt 16 192)) + ) + (port + (pt 0 208) + (input) + (text "ctl_daa_oe" (rect 0 0 62 14)(font "Arial" (font_size 8))) + (text "ctl_daa_oe" (rect 21 203 83 217)(font "Arial" (font_size 8))) + (line (pt 0 208)(pt 16 208)) + ) + (port + (pt 0 224) + (input) + (text "ctl_66_oe" (rect 0 0 55 14)(font "Arial" (font_size 8))) + (text "ctl_66_oe" (rect 21 219 76 233)(font "Arial" (font_size 8))) + (line (pt 0 224)(pt 16 224)) + ) + (port + (pt 0 240) + (input) + (text "alu_low_gt_9" (rect 0 0 76 14)(font "Arial" (font_size 8))) + (text "alu_low_gt_9" (rect 21 235 97 249)(font "Arial" (font_size 8))) + (line (pt 0 240)(pt 16 240)) + ) + (port + (pt 0 256) + (input) + (text "flags_hf2" (rect 0 0 54 14)(font "Arial" (font_size 8))) + (text "flags_hf2" (rect 21 251 75 265)(font "Arial" (font_size 8))) + (line (pt 0 256)(pt 16 256)) + ) + (port + (pt 0 272) + (input) + (text "alu_high_eq_9" (rect 0 0 82 14)(font "Arial" (font_size 8))) + (text "alu_high_eq_9" (rect 21 267 103 281)(font "Arial" (font_size 8))) + (line (pt 0 272)(pt 16 272)) + ) + (port + (pt 0 288) + (input) + (text "alu_high_gt_9" (rect 0 0 79 14)(font "Arial" (font_size 8))) + (text "alu_high_gt_9" (rect 21 283 100 297)(font "Arial" (font_size 8))) + (line (pt 0 288)(pt 16 288)) + ) + (port + (pt 0 304) + (input) + (text "alu_parity_out" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "alu_parity_out" (rect 21 299 101 313)(font "Arial" (font_size 8))) + (line (pt 0 304)(pt 16 304)) + ) + (port + (pt 0 320) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 21 315 36 329)(font "Arial" (font_size 8))) + (line (pt 0 320)(pt 16 320)) + ) + (port + (pt 0 336) + (input) + (text "ctl_alu_op_low" (rect 0 0 86 14)(font "Arial" (font_size 8))) + (text "ctl_alu_op_low" (rect 21 331 107 345)(font "Arial" (font_size 8))) + (line (pt 0 336)(pt 16 336)) + ) + (port + (pt 0 352) + (input) + (text "ctl_pf_sel[1..0]" (rect 0 0 83 14)(font "Arial" (font_size 8))) + (text "ctl_pf_sel[1..0]" (rect 21 347 104 361)(font "Arial" (font_size 8))) + (line (pt 0 352)(pt 16 352)(line_width 3)) + ) + (port + (pt 0 368) + (input) + (text "alu_vf_out" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "alu_vf_out" (rect 21 363 81 377)(font "Arial" (font_size 8))) + (line (pt 0 368)(pt 16 368)) + ) + (port + (pt 0 384) + (input) + (text "iff2" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "iff2" (rect 21 379 39 393)(font "Arial" (font_size 8))) + (line (pt 0 384)(pt 16 384)) + ) + (port + (pt 0 400) + (input) + (text "repeat_en" (rect 0 0 57 14)(font "Arial" (font_size 8))) + (text "repeat_en" (rect 21 395 78 409)(font "Arial" (font_size 8))) + (line (pt 0 400)(pt 16 400)) + ) + (port + (pt 0 416) + (input) + (text "ctl_alu_core_hf" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "ctl_alu_core_hf" (rect 21 411 109 425)(font "Arial" (font_size 8))) + (line (pt 0 416)(pt 16 416)) + ) + (port + (pt 0 432) + (input) + (text "flags_hf" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "flags_hf" (rect 21 427 68 441)(font "Arial" (font_size 8))) + (line (pt 0 432)(pt 16 432)) + ) + (port + (pt 232 32) + (output) + (text "shift_cf_out" (rect 0 0 68 14)(font "Arial" (font_size 8))) + (text "shift_cf_out" (rect 143 27 211 41)(font "Arial" (font_size 8))) + (line (pt 232 32)(pt 216 32)) + ) + (port + (pt 232 48) + (output) + (text "alu_shift_left" (rect 0 0 73 14)(font "Arial" (font_size 8))) + (text "alu_shift_left" (rect 138 43 211 57)(font "Arial" (font_size 8))) + (line (pt 232 48)(pt 216 48)) + ) + (port + (pt 232 64) + (output) + (text "alu_shift_right" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "alu_shift_right" (rect 131 59 211 73)(font "Arial" (font_size 8))) + (line (pt 232 64)(pt 216 64)) + ) + (port + (pt 232 80) + (output) + (text "alu_shift_in" (rect 0 0 64 14)(font "Arial" (font_size 8))) + (text "alu_shift_in" (rect 147 75 211 89)(font "Arial" (font_size 8))) + (line (pt 232 80)(pt 216 80)) + ) + (port + (pt 232 96) + (output) + (text "flags_cond_true" (rect 0 0 93 14)(font "Arial" (font_size 8))) + (text "flags_cond_true" (rect 118 91 211 105)(font "Arial" (font_size 8))) + (line (pt 232 96)(pt 216 96)) + ) + (port + (pt 232 112) + (output) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 169 107 211 121)(font "Arial" (font_size 8))) + (line (pt 232 112)(pt 216 112)(line_width 3)) + ) + (port + (pt 232 128) + (output) + (text "daa_cf_out" (rect 0 0 64 14)(font "Arial" (font_size 8))) + (text "daa_cf_out" (rect 147 123 211 137)(font "Arial" (font_size 8))) + (line (pt 232 128)(pt 216 128)) + ) + (port + (pt 232 144) + (output) + (text "alu_parity_in" (rect 0 0 71 14)(font "Arial" (font_size 8))) + (text "alu_parity_in" (rect 140 139 211 153)(font "Arial" (font_size 8))) + (line (pt 232 144)(pt 216 144)) + ) + (port + (pt 232 160) + (output) + (text "alu_op_low" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "alu_op_low" (rect 145 155 211 169)(font "Arial" (font_size 8))) + (line (pt 232 160)(pt 216 160)) + ) + (port + (pt 232 176) + (output) + (text "pf_sel" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "pf_sel" (rect 176 171 211 185)(font "Arial" (font_size 8))) + (line (pt 232 176)(pt 216 176)) + ) + (port + (pt 232 192) + (output) + (text "alu_core_cf_in" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "alu_core_cf_in" (rect 127 187 211 201)(font "Arial" (font_size 8))) + (line (pt 232 192)(pt 216 192)) + ) + (drawing + (rectangle (rect 16 16 216 464)) + ) +) diff --git a/cpu/alu/alu_control.v b/cpu/alu/alu_control.v new file mode 100644 index 0000000..108d0ed --- /dev/null +++ b/cpu/alu/alu_control.v @@ -0,0 +1,250 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Tue Oct 21 20:41:52 2014" + +module alu_control( + alu_shift_db0, + alu_shift_db7, + ctl_shift_en, + alu_low_gt_9, + alu_high_gt_9, + alu_high_eq_9, + ctl_daa_oe, + ctl_alu_op_low, + alu_parity_out, + flags_cf, + flags_zf, + flags_pf, + flags_sf, + ctl_cond_short, + alu_vf_out, + iff2, + ctl_alu_core_hf, + ctl_eval_cond, + repeat_en, + flags_cf_latch, + flags_hf2, + flags_hf, + ctl_66_oe, + clk, + ctl_pf_sel, + op543, + alu_shift_in, + alu_shift_right, + alu_shift_left, + shift_cf_out, + alu_parity_in, + flags_cond_true, + daa_cf_out, + pf_sel, + alu_op_low, + alu_core_cf_in, + db +); + + +input wire alu_shift_db0; +input wire alu_shift_db7; +input wire ctl_shift_en; +input wire alu_low_gt_9; +input wire alu_high_gt_9; +input wire alu_high_eq_9; +input wire ctl_daa_oe; +input wire ctl_alu_op_low; +input wire alu_parity_out; +input wire flags_cf; +input wire flags_zf; +input wire flags_pf; +input wire flags_sf; +input wire ctl_cond_short; +input wire alu_vf_out; +input wire iff2; +input wire ctl_alu_core_hf; +input wire ctl_eval_cond; +input wire repeat_en; +input wire flags_cf_latch; +input wire flags_hf2; +input wire flags_hf; +input wire ctl_66_oe; +input wire clk; +input wire [1:0] ctl_pf_sel; +input wire [2:0] op543; +output wire alu_shift_in; +output wire alu_shift_right; +output wire alu_shift_left; +output wire shift_cf_out; +output wire alu_parity_in; +output reg flags_cond_true; +output wire daa_cf_out; +output wire pf_sel; +output wire alu_op_low; +output wire alu_core_cf_in; +output wire [7:0] db; + +wire condition; +wire [7:0] out; +wire [1:0] sel; +wire SYNTHESIZED_WIRE_0; +wire SYNTHESIZED_WIRE_1; +wire SYNTHESIZED_WIRE_2; +reg DFFE_latch_pf_tmp; +wire SYNTHESIZED_WIRE_20; +wire SYNTHESIZED_WIRE_21; +wire SYNTHESIZED_WIRE_7; +wire SYNTHESIZED_WIRE_8; +wire SYNTHESIZED_WIRE_9; +wire SYNTHESIZED_WIRE_10; +wire SYNTHESIZED_WIRE_11; +wire SYNTHESIZED_WIRE_12; +wire SYNTHESIZED_WIRE_13; +wire SYNTHESIZED_WIRE_14; +wire SYNTHESIZED_WIRE_15; +wire SYNTHESIZED_WIRE_16; +wire SYNTHESIZED_WIRE_22; +wire SYNTHESIZED_WIRE_18; + +assign alu_op_low = ctl_alu_op_low; +assign daa_cf_out = SYNTHESIZED_WIRE_21; +assign SYNTHESIZED_WIRE_22 = 0; +assign SYNTHESIZED_WIRE_18 = 1; + + + +assign condition = SYNTHESIZED_WIRE_0 ^ SYNTHESIZED_WIRE_1; + + + +assign db[7] = SYNTHESIZED_WIRE_2 ? out[7] : 1'bz; +assign db[6] = SYNTHESIZED_WIRE_2 ? out[6] : 1'bz; +assign db[5] = SYNTHESIZED_WIRE_2 ? out[5] : 1'bz; +assign db[4] = SYNTHESIZED_WIRE_2 ? out[4] : 1'bz; +assign db[3] = SYNTHESIZED_WIRE_2 ? out[3] : 1'bz; +assign db[2] = SYNTHESIZED_WIRE_2 ? out[2] : 1'bz; +assign db[1] = SYNTHESIZED_WIRE_2 ? out[1] : 1'bz; +assign db[0] = SYNTHESIZED_WIRE_2 ? out[0] : 1'bz; + +assign alu_shift_right = ctl_shift_en & op543[0]; + +assign alu_parity_in = ctl_alu_op_low | DFFE_latch_pf_tmp; + +assign SYNTHESIZED_WIRE_2 = ctl_66_oe | ctl_daa_oe; + +assign sel[0] = op543[1]; + + +assign out[1] = SYNTHESIZED_WIRE_20; + + +assign out[2] = SYNTHESIZED_WIRE_20; + + +assign out[5] = SYNTHESIZED_WIRE_21; + + +assign out[6] = SYNTHESIZED_WIRE_21; + + +assign alu_shift_left = ctl_shift_en & SYNTHESIZED_WIRE_7; + +assign SYNTHESIZED_WIRE_21 = ctl_66_oe | alu_high_gt_9 | flags_cf_latch | SYNTHESIZED_WIRE_8; + +assign SYNTHESIZED_WIRE_9 = flags_hf2 | alu_low_gt_9; + +assign SYNTHESIZED_WIRE_8 = alu_low_gt_9 & alu_high_eq_9; + +assign SYNTHESIZED_WIRE_20 = SYNTHESIZED_WIRE_9 | ctl_66_oe; + +assign SYNTHESIZED_WIRE_0 = ~op543[0]; + +assign sel[1] = op543[2] & SYNTHESIZED_WIRE_10; + +assign SYNTHESIZED_WIRE_12 = alu_shift_db0 & op543[0]; + +assign SYNTHESIZED_WIRE_13 = alu_shift_db7 & SYNTHESIZED_WIRE_11; + +assign shift_cf_out = SYNTHESIZED_WIRE_12 | SYNTHESIZED_WIRE_13; + +assign SYNTHESIZED_WIRE_16 = ctl_alu_core_hf & flags_hf; + +assign SYNTHESIZED_WIRE_15 = SYNTHESIZED_WIRE_14 & flags_cf; + +assign alu_core_cf_in = SYNTHESIZED_WIRE_15 | SYNTHESIZED_WIRE_16; + +assign SYNTHESIZED_WIRE_14 = ~ctl_alu_core_hf; + + +always@(posedge clk) +begin +if (ctl_eval_cond) + begin + flags_cond_true <= condition; + end +end + + +alu_mux_4 b2v_inst_cond_mux( + .in0(flags_zf), + .in1(flags_cf), + .in2(flags_pf), + .in3(flags_sf), + .sel(sel), + .out(SYNTHESIZED_WIRE_1)); + + +alu_mux_4 b2v_inst_pf_sel( + .in0(alu_parity_out), + .in1(alu_vf_out), + .in2(iff2), + .in3(repeat_en), + .sel(ctl_pf_sel), + .out(pf_sel)); + + +alu_mux_8 b2v_inst_shift_mux( + .in0(alu_shift_db7), + .in1(alu_shift_db0), + .in2(flags_cf_latch), + .in3(flags_cf_latch), + .in4(SYNTHESIZED_WIRE_22), + .in5(alu_shift_db7), + .in6(SYNTHESIZED_WIRE_18), + .in7(SYNTHESIZED_WIRE_22), + .sel(op543), + .out(alu_shift_in)); + + +always@(posedge clk) +begin +if (ctl_alu_op_low) + begin + DFFE_latch_pf_tmp <= alu_parity_out; + end +end + +assign SYNTHESIZED_WIRE_7 = ~op543[0]; + +assign SYNTHESIZED_WIRE_11 = ~op543[0]; + +assign SYNTHESIZED_WIRE_10 = ~ctl_cond_short; + + +assign out[3] = 0; +assign out[7] = 0; +assign out[0] = 0; +assign out[4] = 0; + +endmodule diff --git a/cpu/alu/alu_core.bdf b/cpu/alu/alu_core.bdf new file mode 100644 index 0000000..e4c92aa --- /dev/null +++ b/cpu/alu/alu_core.bdf @@ -0,0 +1,870 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 40 168 216 184) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "cy_in" (rect 9 0 36 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 32 216 48) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "op1[3..0]" (rect 9 0 52 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 56 216 72) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "op2[3..0]" (rect 9 0 52 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 328 216 344) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "S" (rect 9 0 16 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 344 216 360) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "V" (rect 9 0 17 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 360 216 376) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "R" (rect 9 0 17 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 1128 184 1304 200) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "cy_out" (rect 90 0 124 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1128 96 1304 112) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "result[3..0]" (rect 90 0 143 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1128 304 1304 320) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "vf_out" (rect 90 0 123 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 888 144 1008 304) + (text "alu_slice" (rect 5 0 54 14)(font "Arial" (font_size 8))) + (text "alu_slice_bit_3" (rect 8 144 79 156)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "cy_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "cy_in" (rect 21 27 51 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "op1" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "op1" (rect 21 43 42 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "op2" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "op2" (rect 21 59 42 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "S" (rect 0 0 8 14)(font "Arial" (font_size 8))) + (text "S" (rect 21 75 29 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "V" (rect 0 0 9 14)(font "Arial" (font_size 8))) + (text "V" (rect 21 91 30 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "R" (rect 0 0 8 14)(font "Arial" (font_size 8))) + (text "R" (rect 21 107 29 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 120 32) + (output) + (text "result" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "result" (rect 68 27 99 41)(font "Arial" (font_size 8))) + (line (pt 120 32)(pt 104 32)) + ) + (port + (pt 120 48) + (output) + (text "cy_out" (rect 0 0 38 14)(font "Arial" (font_size 8))) + (text "cy_out" (rect 61 43 99 57)(font "Arial" (font_size 8))) + (line (pt 120 48)(pt 104 48)) + ) + (drawing + (rectangle (rect 16 16 104 144)) + ) +) +(symbol + (rect 688 144 808 304) + (text "alu_slice" (rect 5 0 54 14)(font "Arial" (font_size 8))) + (text "alu_slice_bit_2" (rect 8 144 79 156)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "cy_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "cy_in" (rect 21 27 51 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "op1" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "op1" (rect 21 43 42 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "op2" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "op2" (rect 21 59 42 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "S" (rect 0 0 8 14)(font "Arial" (font_size 8))) + (text "S" (rect 21 75 29 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "V" (rect 0 0 9 14)(font "Arial" (font_size 8))) + (text "V" (rect 21 91 30 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "R" (rect 0 0 8 14)(font "Arial" (font_size 8))) + (text "R" (rect 21 107 29 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 120 32) + (output) + (text "result" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "result" (rect 68 27 99 41)(font "Arial" (font_size 8))) + (line (pt 120 32)(pt 104 32)) + ) + (port + (pt 120 48) + (output) + (text "cy_out" (rect 0 0 38 14)(font "Arial" (font_size 8))) + (text "cy_out" (rect 61 43 99 57)(font "Arial" (font_size 8))) + (line (pt 120 48)(pt 104 48)) + ) + (drawing + (rectangle (rect 16 16 104 144)) + ) +) +(symbol + (rect 480 144 600 304) + (text "alu_slice" (rect 5 0 54 14)(font "Arial" (font_size 8))) + (text "alu_slice_bit_1" (rect 8 144 79 156)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "cy_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "cy_in" (rect 21 27 51 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "op1" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "op1" (rect 21 43 42 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "op2" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "op2" (rect 21 59 42 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "S" (rect 0 0 8 14)(font "Arial" (font_size 8))) + (text "S" (rect 21 75 29 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "V" (rect 0 0 9 14)(font "Arial" (font_size 8))) + (text "V" (rect 21 91 30 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "R" (rect 0 0 8 14)(font "Arial" (font_size 8))) + (text "R" (rect 21 107 29 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 120 32) + (output) + (text "result" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "result" (rect 68 27 99 41)(font "Arial" (font_size 8))) + (line (pt 120 32)(pt 104 32)) + ) + (port + (pt 120 48) + (output) + (text "cy_out" (rect 0 0 38 14)(font "Arial" (font_size 8))) + (text "cy_out" (rect 61 43 99 57)(font "Arial" (font_size 8))) + (line (pt 120 48)(pt 104 48)) + ) + (drawing + (rectangle (rect 16 16 104 144)) + ) +) +(symbol + (rect 280 144 400 304) + (text "alu_slice" (rect 5 0 54 14)(font "Arial" (font_size 8))) + (text "alu_slice_bit_0" (rect 8 144 79 156)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "cy_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "cy_in" (rect 21 27 51 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "op1" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "op1" (rect 21 43 42 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "op2" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "op2" (rect 21 59 42 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "S" (rect 0 0 8 14)(font "Arial" (font_size 8))) + (text "S" (rect 21 75 29 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "V" (rect 0 0 9 14)(font "Arial" (font_size 8))) + (text "V" (rect 21 91 30 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "R" (rect 0 0 8 14)(font "Arial" (font_size 8))) + (text "R" (rect 21 107 29 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 120 32) + (output) + (text "result" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "result" (rect 68 27 99 41)(font "Arial" (font_size 8))) + (line (pt 120 32)(pt 104 32)) + ) + (port + (pt 120 48) + (output) + (text "cy_out" (rect 0 0 38 14)(font "Arial" (font_size 8))) + (text "cy_out" (rect 61 43 99 57)(font "Arial" (font_size 8))) + (line (pt 120 48)(pt 104 48)) + ) + (drawing + (rectangle (rect 16 16 104 144)) + ) +) +(symbol + (rect 1048 288 1112 336) + (text "XOR" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 37 20 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 11 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 11 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + (arc (pt 8 36)(pt 8 12)(rect -21 7 14 42)) + ) +) +(connector + (pt 432 192) + (pt 432 176) +) +(connector + (pt 632 192) + (pt 632 176) +) +(connector + (pt 840 192) + (pt 840 176) +) +(connector + (pt 872 368) + (pt 872 256) +) +(connector + (pt 856 352) + (pt 856 240) +) +(connector + (pt 840 336) + (pt 840 224) +) +(connector + (text "op2[0]" (rect 216 110 228 140)(font "Arial" )(vertical)) + (pt 232 64) + (pt 232 208) +) +(connector + (text "op1[0]" (rect 232 107 244 137)(font "Arial" )(vertical)) + (pt 248 40) + (pt 248 192) +) +(connector + (text "result[0]" (rect 400 126 412 166)(font "Arial" )(vertical)) + (pt 416 176) + (pt 416 104) +) +(connector + (text "op2[1]" (rect 432 110 444 140)(font "Arial" )(vertical)) + (pt 448 208) + (pt 448 64) +) +(connector + (text "op1[1]" (rect 448 110 460 140)(font "Arial" )(vertical)) + (pt 464 192) + (pt 464 40) +) +(connector + (text "result[1]" (rect 600 126 612 166)(font "Arial" )(vertical)) + (pt 616 104) + (pt 616 176) +) +(connector + (text "op2[2]" (rect 632 110 644 140)(font "Arial" )(vertical)) + (pt 648 208) + (pt 648 64) +) +(connector + (text "op1[2]" (rect 648 110 660 140)(font "Arial" )(vertical)) + (pt 664 192) + (pt 664 40) +) +(connector + (text "result[2]" (rect 808 126 820 166)(font "Arial" )(vertical)) + (pt 824 104) + (pt 824 176) +) +(connector + (text "op2[3]" (rect 840 110 852 140)(font "Arial" )(vertical)) + (pt 856 208) + (pt 856 64) +) +(connector + (text "op1[3]" (rect 856 110 868 140)(font "Arial" )(vertical)) + (pt 872 192) + (pt 872 40) +) +(connector + (text "result[3]" (rect 1008 126 1020 166)(font "Arial" )(vertical)) + (pt 1024 104) + (pt 1024 176) +) +(connector + (pt 672 256) + (pt 672 368) +) +(connector + (pt 656 240) + (pt 656 352) +) +(connector + (pt 640 224) + (pt 640 336) +) +(connector + (pt 464 256) + (pt 464 368) +) +(connector + (pt 448 240) + (pt 448 352) +) +(connector + (pt 432 224) + (pt 432 336) +) +(connector + (pt 264 256) + (pt 264 368) +) +(connector + (pt 248 240) + (pt 248 352) +) +(connector + (pt 232 224) + (pt 232 336) +) +(connector + (pt 824 320) + (pt 824 192) +) +(connector + (pt 1024 304) + (pt 1024 192) +) +(connector + (pt 840 176) + (pt 888 176) +) +(connector + (pt 872 192) + (pt 888 192) +) +(connector + (pt 856 208) + (pt 888 208) +) +(connector + (pt 840 224) + (pt 888 224) +) +(connector + (pt 856 240) + (pt 888 240) +) +(connector + (pt 872 256) + (pt 888 256) +) +(connector + (pt 632 176) + (pt 688 176) +) +(connector + (pt 664 192) + (pt 688 192) +) +(connector + (pt 648 208) + (pt 688 208) +) +(connector + (pt 640 224) + (pt 688 224) +) +(connector + (pt 656 240) + (pt 688 240) +) +(connector + (pt 672 256) + (pt 688 256) +) +(connector + (pt 432 176) + (pt 480 176) +) +(connector + (pt 464 192) + (pt 480 192) +) +(connector + (pt 448 208) + (pt 480 208) +) +(connector + (pt 432 224) + (pt 480 224) +) +(connector + (pt 448 240) + (pt 480 240) +) +(connector + (pt 464 256) + (pt 480 256) +) +(connector + (pt 248 192) + (pt 280 192) +) +(connector + (pt 232 208) + (pt 280 208) +) +(connector + (pt 232 224) + (pt 280 224) +) +(connector + (pt 248 240) + (pt 280 240) +) +(connector + (pt 264 256) + (pt 280 256) +) +(connector + (pt 1024 304) + (pt 1048 304) +) +(connector + (pt 824 320) + (pt 1048 320) +) +(connector + (pt 1008 176) + (pt 1024 176) +) +(connector + (pt 808 176) + (pt 824 176) +) +(connector + (pt 600 176) + (pt 616 176) +) +(connector + (pt 600 192) + (pt 632 192) +) +(connector + (pt 400 176) + (pt 416 176) +) +(connector + (pt 400 192) + (pt 432 192) +) +(connector + (pt 1112 312) + (pt 1128 312) +) +(connector + (pt 216 176) + (pt 280 176) +) +(connector + (pt 416 104) + (pt 616 104) + (bus) +) +(connector + (pt 616 104) + (pt 824 104) + (bus) +) +(connector + (pt 824 104) + (pt 1024 104) + (bus) +) +(connector + (pt 1024 104) + (pt 1128 104) + (bus) +) +(connector + (pt 664 40) + (pt 872 40) + (bus) +) +(connector + (pt 648 64) + (pt 856 64) + (bus) +) +(connector + (pt 640 336) + (pt 840 336) +) +(connector + (pt 656 352) + (pt 856 352) +) +(connector + (pt 672 368) + (pt 872 368) +) +(connector + (pt 1008 192) + (pt 1024 192) +) +(connector + (pt 1024 192) + (pt 1128 192) +) +(connector + (pt 808 192) + (pt 824 192) +) +(connector + (pt 824 192) + (pt 840 192) +) +(connector + (pt 216 40) + (pt 248 40) + (bus) +) +(connector + (pt 248 40) + (pt 464 40) + (bus) +) +(connector + (pt 464 40) + (pt 664 40) + (bus) +) +(connector + (pt 216 64) + (pt 232 64) + (bus) +) +(connector + (pt 232 64) + (pt 448 64) + (bus) +) +(connector + (pt 448 64) + (pt 648 64) + (bus) +) +(connector + (pt 216 336) + (pt 232 336) +) +(connector + (pt 232 336) + (pt 432 336) +) +(connector + (pt 432 336) + (pt 640 336) +) +(connector + (pt 216 352) + (pt 248 352) +) +(connector + (pt 248 352) + (pt 448 352) +) +(connector + (pt 448 352) + (pt 656 352) +) +(connector + (pt 216 368) + (pt 264 368) +) +(connector + (pt 264 368) + (pt 464 368) +) +(connector + (pt 464 368) + (pt 672 368) +) +(junction (pt 648 64)) +(junction (pt 664 40)) +(junction (pt 640 336)) +(junction (pt 656 352)) +(junction (pt 672 368)) +(junction (pt 616 104)) +(junction (pt 824 104)) +(junction (pt 1024 104)) +(junction (pt 464 40)) +(junction (pt 448 64)) +(junction (pt 432 336)) +(junction (pt 448 352)) +(junction (pt 464 368)) +(junction (pt 1024 192)) +(junction (pt 824 192)) +(junction (pt 248 40)) +(junction (pt 232 64)) +(junction (pt 232 336)) +(junction (pt 248 352)) +(junction (pt 264 368)) +(title_block + (rect 40 408 297 460) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "alu_core" (rect 43 2 102 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 18, 2014" (rect 56 3 132 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.2" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/alu/alu_core.bsf b/cpu/alu/alu_core.bsf new file mode 100644 index 0000000..dc0b7f6 --- /dev/null +++ b/cpu/alu/alu_core.bsf @@ -0,0 +1,92 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 176 176) + (text "alu_core" (rect 5 0 54 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 144 25 156)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "op1[3..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "op1[3..0]" (rect 21 27 70 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "op2[3..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "op2[3..0]" (rect 21 43 70 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "cy_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "cy_in" (rect 21 59 51 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "S" (rect 0 0 8 14)(font "Arial" (font_size 8))) + (text "S" (rect 21 75 29 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "V" (rect 0 0 9 14)(font "Arial" (font_size 8))) + (text "V" (rect 21 91 30 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "R" (rect 0 0 8 14)(font "Arial" (font_size 8))) + (text "R" (rect 21 107 29 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 160 32) + (output) + (text "result[3..0]" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "result[3..0]" (rect 79 27 139 41)(font "Arial" (font_size 8))) + (line (pt 160 32)(pt 144 32)(line_width 3)) + ) + (port + (pt 160 48) + (output) + (text "cy_out" (rect 0 0 38 14)(font "Arial" (font_size 8))) + (text "cy_out" (rect 101 43 139 57)(font "Arial" (font_size 8))) + (line (pt 160 48)(pt 144 48)) + ) + (port + (pt 160 64) + (output) + (text "vf_out" (rect 0 0 36 14)(font "Arial" (font_size 8))) + (text "vf_out" (rect 103 59 139 73)(font "Arial" (font_size 8))) + (line (pt 160 64)(pt 144 64)) + ) + (drawing + (rectangle (rect 16 16 144 144)) + ) +) diff --git a/cpu/alu/alu_core.v b/cpu/alu/alu_core.v new file mode 100644 index 0000000..91475b3 --- /dev/null +++ b/cpu/alu/alu_core.v @@ -0,0 +1,100 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Mon Oct 13 12:17:04 2014" + +module alu_core( + cy_in, + S, + V, + R, + op1, + op2, + cy_out, + vf_out, + result +); + + +input wire cy_in; +input wire S; +input wire V; +input wire R; +input wire [3:0] op1; +input wire [3:0] op2; +output wire cy_out; +output wire vf_out; +output wire [3:0] result; + +wire [3:0] result_ALTERA_SYNTHESIZED; +wire SYNTHESIZED_WIRE_0; +wire SYNTHESIZED_WIRE_1; +wire SYNTHESIZED_WIRE_5; +wire SYNTHESIZED_WIRE_3; + +assign cy_out = SYNTHESIZED_WIRE_3; + + + + +alu_slice b2v_alu_slice_bit_0( + .cy_in(cy_in), + .op1(op1[0]), + .op2(op2[0]), + .S(S), + .V(V), + .R(R), + .result(result_ALTERA_SYNTHESIZED[0]), + .cy_out(SYNTHESIZED_WIRE_0)); + + +alu_slice b2v_alu_slice_bit_1( + .cy_in(SYNTHESIZED_WIRE_0), + .op1(op1[1]), + .op2(op2[1]), + .S(S), + .V(V), + .R(R), + .result(result_ALTERA_SYNTHESIZED[1]), + .cy_out(SYNTHESIZED_WIRE_1)); + + +alu_slice b2v_alu_slice_bit_2( + .cy_in(SYNTHESIZED_WIRE_1), + .op1(op1[2]), + .op2(op2[2]), + .S(S), + .V(V), + .R(R), + .result(result_ALTERA_SYNTHESIZED[2]), + .cy_out(SYNTHESIZED_WIRE_5)); + + +alu_slice b2v_alu_slice_bit_3( + .cy_in(SYNTHESIZED_WIRE_5), + .op1(op1[3]), + .op2(op2[3]), + .S(S), + .V(V), + .R(R), + .result(result_ALTERA_SYNTHESIZED[3]), + .cy_out(SYNTHESIZED_WIRE_3)); + +assign vf_out = SYNTHESIZED_WIRE_3 ^ SYNTHESIZED_WIRE_5; + +assign result = result_ALTERA_SYNTHESIZED; + +endmodule diff --git a/cpu/alu/alu_flags.bdf b/cpu/alu/alu_flags.bdf new file mode 100644 index 0000000..1eeefab --- /dev/null +++ b/cpu/alu/alu_flags.bdf @@ -0,0 +1,4050 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 24 32 200 48) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_oe" (rect 9 0 69 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 48 200 64) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_bus" (rect 9 0 75 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 64 200 80) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_alu" (rect 9 0 71 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 136 200 152) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "alu_sf_out" (rect 9 0 60 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 448 200 464) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "alu_yf_out" (rect 9 0 62 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 824 200 840) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "alu_xf_out" (rect 9 0 60 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1080 200 1096) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_nf_set" (rect 9 0 89 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 288 200 304) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "alu_zero" (rect 9 0 49 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1440 200 1456) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "shift_cf_out" (rect 9 0 69 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1256 200 1272) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "alu_core_cf_out" (rect 9 0 88 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1456 200 1472) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "daa_cf_out" (rect 9 0 64 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1568 200 1584) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_cf_set" (rect 9 0 89 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1592 200 1608) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_cf_cpl" (rect 9 0 88 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 960 200 976) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "pf_sel" (rect 9 0 39 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1304 200 1320) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_cf_we" (rect 9 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 184 200 200) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_sz_we" (rect 9 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 496 200 512) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_xy_we" (rect 9 0 89 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 624 200 640) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_hf_we" (rect 9 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1008 200 1024) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_pf_we" (rect 9 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1144 200 1160) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_nf_we" (rect 9 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1352 200 1368) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_cf2_we" (rect 9 0 92 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 640 200 656) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_hf_cpl" (rect 9 0 88 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1544 200 1560) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_use_cf2" (rect 9 0 97 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 720 200 736) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_hf2_we" (rect 9 0 92 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1128 200 1144) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_nf_clr" (rect 9 0 85 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 336 200 352) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_zero_16bit" (rect 9 0 96 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1520 200 1536) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "clk" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1384 200 1400) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_cf2_sel_shift" (rect 9 0 122 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1408 200 1424) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_flags_cf2_sel_daa" (rect 9 0 117 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1624 200 1640) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nhold_clk_wait" (rect 5 0 76 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 912 160 1088 176) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "flags_sf" (rect 90 0 131 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 912 360 1088 376) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "flags_zf" (rect 90 0 130 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 912 632 1088 648) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "flags_hf" (rect 90 0 131 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 912 984 1088 1000) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "flags_pf" (rect 90 0 131 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 952 1408 1128 1424) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "flags_cf" (rect 90 0 131 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 912 1136 1088 1152) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "flags_nf" (rect 90 0 131 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 912 1280 1088 1296) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "flags_cf_latch" (rect 90 0 160 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 912 688 1088 704) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "flags_hf2" (rect 90 0 137 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (bidir) + (rect 912 32 1088 48) + (text "BIDIR" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "db[7..0]" (rect 90 0 127 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)) + (line (pt 0 8)(pt 52 8)) + (line (pt 56 12)(pt 78 12)) + (line (pt 78 4)(pt 82 8)) + (line (pt 78 12)(pt 82 8)) + (line (pt 56 4)(pt 52 8)) + (line (pt 52 8)(pt 56 12)) + ) + (text "VCC" (rect 4 7 24 17)(font "Arial" (font_size 6))) +) +(symbol + (rect 304 80 368 128) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst1" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 304 128 368 176) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst2" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 304 232 368 280) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst3" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 304 280 368 328) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst4" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 304 392 368 440) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst5" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 304 440 368 488) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst6" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 304 528 368 576) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst7" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 304 576 368 624) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst8" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 304 768 368 816) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst9" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 304 816 368 864) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst10" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 304 904 368 952) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst11" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 304 952 368 1000) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst12" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 304 1040 368 1088) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst13" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 304 1184 368 1232) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst15" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 304 1232 368 1280) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst16" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 400 104 464 152) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst33" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 400 240 464 288) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst34" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 400 416 464 464) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst35" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 400 552 464 600) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst36" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 400 792 464 840) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst37" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 400 928 464 976) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst38" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 400 1208 464 1256) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst40" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 744 112 792 144) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst49" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 744 256 792 288) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst50" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 744 424 792 456) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst51" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 760 552 808 584) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst52" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 744 800 792 832) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst53" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 744 936 792 968) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst54" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 744 1080 792 1112) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst55" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 744 1224 792 1256) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst56" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 760 1384 824 1432) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst64" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 320 1312 368 1344) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst17" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 856 1392 920 1440) + (text "XOR" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst18" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 11 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 11 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + (arc (pt 8 36)(pt 8 12)(rect -21 7 14 42)) + ) +) +(symbol + (rect 752 616 816 664) + (text "XOR" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst14" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 11 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 11 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + (arc (pt 8 36)(pt 8 12)(rect -21 7 14 42)) + ) +) +(symbol + (rect 216 1488 248 1520) + (text "GND" (rect 8 16 29 26)(font "Arial" (font_size 6))) + (text "inst22" (rect 3 21 32 33)(font "Arial" )(invisible)) + (port + (pt 16 0) + (output) + (text "1" (rect 18 0 23 12)(font "Courier New" (bold))(invisible)) + (text "1" (rect 18 0 23 12)(font "Courier New" (bold))(invisible)) + (line (pt 16 8)(pt 16 0)) + ) + (drawing + (line (pt 8 8)(pt 16 16)) + (line (pt 16 16)(pt 24 8)) + (line (pt 8 8)(pt 24 8)) + ) +) +(symbol + (rect 632 1368 728 1464) + (text "alu_mux_2" (rect 5 0 66 14)(font "Arial" (font_size 8))) + (text "inst_mux_cf" (rect 8 80 69 92)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "in0" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in0" (rect 21 27 37 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "in1" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in1" (rect 21 43 37 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "sel1" (rect 0 0 23 14)(font "Arial" (font_size 8))) + (text "sel1" (rect 21 59 44 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 96 32) + (output) + (text "out" (rect 0 0 17 14)(font "Arial" (font_size 8))) + (text "out" (rect 58 27 75 41)(font "Arial" (font_size 8))) + (line (pt 96 32)(pt 80 32)) + ) + (drawing + (rectangle (rect 16 16 80 80)) + ) +) +(symbol + (rect 288 1384 400 1512) + (text "alu_mux_4" (rect 5 0 66 14)(font "Arial" (font_size 8))) + (text "inst_mux_cf2" (rect 8 112 75 124)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "sel[1..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[1..0]" (rect 21 27 65 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "in0" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in0" (rect 21 43 37 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "in1" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in1" (rect 21 59 37 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "in2" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in2" (rect 21 75 37 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "in3" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in3" (rect 21 91 37 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 112 32) + (output) + (text "out" (rect 0 0 17 14)(font "Arial" (font_size 8))) + (text "out" (rect 74 27 91 41)(font "Arial" (font_size 8))) + (line (pt 112 32)(pt 96 32)) + ) + (drawing + (rectangle (rect 16 16 96 112)) + ) +) +(symbol + (rect 496 1072 560 1120) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst23" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 408 1120 456 1152) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst24" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 304 1088 368 1136) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst19" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 400 1064 464 1112) + (text "OR3" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst20" (rect 3 37 37 51)(font "Arial" (font_size 8))) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 18 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 496 248 560 296) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst21" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 312 328 360 360) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst25" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 400 312 464 360) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst26" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 624 104 688 184) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst_latch_sf" (rect 3 68 66 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 624 248 688 328) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst_latch_zf" (rect 3 68 65 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 624 416 688 496) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst_latch_yf" (rect 3 68 67 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 624 552 688 632) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst_latch_hf" (rect 3 68 66 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 624 672 688 752) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst_latch_hf2" (rect 3 68 72 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 624 792 688 872) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst_latch_xf" (rect 3 68 66 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 624 928 688 1008) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst_latch_pf" (rect 3 68 66 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 624 1072 688 1152) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst_latch_nf" (rect 3 68 66 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 536 1264 600 1344) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst_latch_cf" (rect 3 68 66 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 536 1392 600 1472) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst_latch_cf2" (rect 3 68 72 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 440 1296 504 1344) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst28" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 440 1424 504 1472) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst29" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(connector + (pt 368 416) + (pt 384 416) +) +(connector + (pt 384 416) + (pt 384 432) +) +(connector + (pt 368 464) + (pt 384 464) +) +(connector + (pt 384 464) + (pt 384 448) +) +(connector + (pt 400 448) + (pt 384 448) +) +(connector + (pt 400 432) + (pt 384 432) +) +(connector + (pt 368 600) + (pt 384 600) +) +(connector + (pt 304 424) + (pt 272 424) +) +(connector + (pt 304 472) + (pt 256 472) +) +(connector + (pt 304 560) + (pt 272 560) +) +(connector + (pt 304 608) + (pt 256 608) +) +(connector + (pt 304 408) + (pt 288 408) +) +(connector + (pt 304 544) + (pt 288 544) +) +(connector + (pt 304 456) + (pt 200 456) +) +(connector + (pt 368 792) + (pt 384 792) +) +(connector + (pt 384 792) + (pt 384 808) +) +(connector + (pt 368 840) + (pt 384 840) +) +(connector + (pt 384 840) + (pt 384 824) +) +(connector + (pt 400 824) + (pt 384 824) +) +(connector + (pt 400 808) + (pt 384 808) +) +(connector + (pt 368 928) + (pt 384 928) +) +(connector + (pt 384 928) + (pt 384 944) +) +(connector + (pt 368 976) + (pt 384 976) +) +(connector + (pt 384 976) + (pt 384 960) +) +(connector + (pt 384 960) + (pt 400 960) +) +(connector + (pt 384 944) + (pt 400 944) +) +(connector + (pt 368 1064) + (pt 384 1064) +) +(connector + (pt 304 800) + (pt 272 800) +) +(connector + (pt 304 848) + (pt 256 848) +) +(connector + (pt 304 936) + (pt 272 936) +) +(connector + (pt 304 984) + (pt 256 984) +) +(connector + (pt 304 1072) + (pt 272 1072) +) +(connector + (pt 304 784) + (pt 288 784) +) +(connector + (pt 304 920) + (pt 288 920) +) +(connector + (pt 304 1056) + (pt 288 1056) +) +(connector + (pt 304 832) + (pt 200 832) +) +(connector + (pt 200 968) + (pt 304 968) +) +(connector + (pt 288 408) + (pt 288 384) +) +(connector + (pt 288 384) + (pt 816 384) +) +(connector + (pt 288 544) + (pt 288 520) +) +(connector + (pt 288 520) + (pt 816 520) +) +(connector + (pt 288 784) + (pt 288 760) +) +(connector + (pt 288 760) + (pt 816 760) +) +(connector + (pt 288 920) + (pt 288 896) +) +(connector + (pt 288 896) + (pt 816 896) +) +(connector + (pt 288 1056) + (pt 288 1032) +) +(connector + (pt 288 1032) + (pt 816 1032) +) +(connector + (pt 464 440) + (pt 624 440) +) +(connector + (pt 464 816) + (pt 624 816) +) +(connector + (pt 464 952) + (pt 624 952) +) +(connector + (pt 704 992) + (pt 912 992) +) +(connector + (pt 704 1144) + (pt 912 1144) +) +(connector + (pt 752 648) + (pt 200 648) +) +(connector + (pt 912 696) + (pt 688 696) +) +(connector + (pt 752 632) + (pt 704 632) +) +(connector + (pt 816 520) + (pt 816 568) +) +(connector + (pt 728 536) + (pt 784 536) +) +(connector + (pt 760 568) + (pt 744 568) +) +(connector + (pt 744 568) + (pt 744 600) +) +(connector + (pt 744 600) + (pt 840 600) +) +(connector + (pt 840 600) + (pt 840 640) +) +(connector + (pt 200 504) + (pt 496 504) +) +(connector + (pt 200 1016) + (pt 496 1016) +) +(connector + (pt 368 1208) + (pt 384 1208) +) +(connector + (pt 384 1208) + (pt 384 1224) +) +(connector + (pt 368 1256) + (pt 384 1256) +) +(connector + (pt 384 1256) + (pt 384 1240) +) +(connector + (pt 384 1240) + (pt 400 1240) +) +(connector + (pt 384 1224) + (pt 400 1224) +) +(connector + (pt 272 1216) + (pt 304 1216) +) +(connector + (pt 304 1200) + (pt 288 1200) +) +(connector + (pt 304 1248) + (pt 256 1248) +) +(connector + (pt 304 592) + (pt 232 592) +) +(connector + (pt 288 1200) + (pt 288 1176) +) +(connector + (pt 288 1176) + (pt 816 1176) +) +(connector + (pt 816 1176) + (pt 816 1240) +) +(connector + (pt 304 1328) + (pt 304 1360) +) +(connector + (pt 320 1328) + (pt 304 1328) +) +(connector + (pt 704 1240) + (pt 704 1352) +) +(connector + (pt 704 1352) + (pt 936 1352) +) +(connector + (pt 936 1416) + (pt 936 1352) +) +(connector + (pt 744 1240) + (pt 704 1240) +) +(connector + (pt 728 1400) + (pt 760 1400) +) +(connector + (pt 824 1408) + (pt 856 1408) +) +(connector + (pt 304 1120) + (pt 256 1120) +) +(connector + (pt 384 1064) + (pt 384 1080) +) +(connector + (pt 384 1080) + (pt 400 1080) +) +(connector + (pt 368 1112) + (pt 384 1112) +) +(connector + (pt 384 1112) + (pt 384 1096) +) +(connector + (pt 384 1096) + (pt 400 1096) +) +(connector + (pt 400 1088) + (pt 200 1088) +) +(connector + (pt 200 1136) + (pt 408 1136) +) +(connector + (pt 456 1136) + (pt 480 1136) +) +(connector + (pt 480 1104) + (pt 496 1104) +) +(connector + (pt 480 1136) + (pt 480 1104) +) +(connector + (pt 464 1088) + (pt 496 1088) +) +(connector + (pt 560 1096) + (pt 624 1096) +) +(connector + (pt 368 104) + (pt 384 104) +) +(connector + (pt 384 104) + (pt 384 120) +) +(connector + (pt 368 152) + (pt 384 152) +) +(connector + (pt 384 152) + (pt 384 136) +) +(connector + (pt 384 120) + (pt 400 120) +) +(connector + (pt 384 136) + (pt 400 136) +) +(connector + (pt 304 96) + (pt 288 96) +) +(connector + (pt 304 112) + (pt 272 112) +) +(connector + (pt 304 160) + (pt 256 160) +) +(connector + (pt 200 56) + (pt 272 56) +) +(connector + (pt 200 72) + (pt 256 72) +) +(connector + (pt 288 96) + (pt 288 72) +) +(connector + (pt 288 72) + (pt 816 72) +) +(connector + (pt 200 192) + (pt 600 192) +) +(connector + (pt 464 128) + (pt 624 128) +) +(connector + (pt 704 168) + (pt 912 168) +) +(connector + (pt 200 40) + (pt 728 40) +) +(connector + (pt 872 40) + (pt 912 40) + (bus) +) +(connector + (pt 304 1104) + (pt 216 1104) +) +(connector + (pt 216 1104) + (pt 216 144) +) +(connector + (pt 384 272) + (pt 400 272) +) +(connector + (pt 272 264) + (pt 304 264) +) +(connector + (pt 288 248) + (pt 304 248) +) +(connector + (pt 288 208) + (pt 288 248) +) +(connector + (pt 368 256) + (pt 400 256) +) +(connector + (pt 384 304) + (pt 368 304) +) +(connector + (pt 256 312) + (pt 304 312) +) +(connector + (pt 384 272) + (pt 384 304) +) +(connector + (pt 200 296) + (pt 304 296) +) +(connector + (pt 464 264) + (pt 496 264) +) +(connector + (pt 808 568) + (pt 816 568) +) +(connector + (text "db[4]" (rect 839 552 863 564)(font "Arial" )) + (pt 816 568) + (pt 872 568) +) +(connector + (pt 816 640) + (pt 840 640) +) +(connector + (pt 840 640) + (pt 912 640) +) +(connector + (pt 792 1240) + (pt 816 1240) +) +(connector + (text "db[0]" (rect 836 1224 860 1236)(font "Arial" )) + (pt 816 1240) + (pt 872 1240) +) +(connector + (pt 200 1264) + (pt 232 1264) +) +(connector + (pt 232 1264) + (pt 304 1264) +) +(connector + (pt 920 1416) + (pt 936 1416) +) +(connector + (pt 936 1416) + (pt 952 1416) +) +(connector + (pt 272 936) + (pt 272 1072) +) +(connector + (pt 272 1072) + (pt 272 1216) +) +(connector + (pt 200 144) + (pt 216 144) +) +(connector + (pt 216 144) + (pt 304 144) +) +(connector + (pt 256 984) + (pt 256 1120) +) +(connector + (pt 256 1120) + (pt 256 1248) +) +(connector + (pt 272 56) + (pt 272 112) +) +(connector + (pt 272 112) + (pt 272 264) +) +(connector + (pt 272 264) + (pt 272 424) +) +(connector + (pt 272 424) + (pt 272 560) +) +(connector + (pt 272 560) + (pt 272 800) +) +(connector + (pt 272 800) + (pt 272 936) +) +(connector + (pt 256 72) + (pt 256 160) +) +(connector + (pt 256 160) + (pt 256 312) +) +(connector + (pt 256 312) + (pt 256 472) +) +(connector + (pt 256 472) + (pt 256 608) +) +(connector + (pt 256 608) + (pt 256 848) +) +(connector + (pt 256 848) + (pt 256 984) +) +(connector + (pt 784 536) + (pt 784 552) +) +(connector + (pt 496 280) + (pt 480 280) +) +(connector + (pt 200 344) + (pt 312 344) +) +(connector + (pt 480 280) + (pt 480 336) +) +(connector + (pt 480 336) + (pt 464 336) +) +(connector + (pt 360 344) + (pt 400 344) +) +(connector + (pt 384 368) + (pt 384 328) +) +(connector + (pt 384 328) + (pt 400 328) +) +(connector + (pt 728 104) + (pt 768 104) +) +(connector + (pt 768 104) + (pt 768 112) +) +(connector + (pt 816 72) + (pt 816 128) +) +(connector + (pt 704 128) + (pt 704 168) +) +(connector + (pt 688 128) + (pt 704 128) +) +(connector + (pt 704 128) + (pt 744 128) +) +(connector + (pt 792 128) + (pt 816 128) +) +(connector + (text "db[7]" (rect 838 112 862 124)(font "Arial" )) + (pt 816 128) + (pt 872 128) +) +(connector + (pt 624 160) + (pt 600 160) +) +(connector + (pt 768 248) + (pt 768 256) +) +(connector + (pt 728 248) + (pt 768 248) +) +(connector + (pt 704 368) + (pt 704 272) +) +(connector + (pt 288 208) + (pt 816 208) +) +(connector + (pt 816 208) + (pt 816 272) +) +(connector + (pt 384 368) + (pt 704 368) +) +(connector + (pt 704 368) + (pt 912 368) +) +(connector + (pt 792 272) + (pt 816 272) +) +(connector + (text "db[6]" (rect 838 256 862 268)(font "Arial" )) + (pt 816 272) + (pt 872 272) +) +(connector + (pt 688 272) + (pt 704 272) +) +(connector + (pt 704 272) + (pt 744 272) +) +(connector + (pt 728 40) + (pt 728 104) +) +(connector + (pt 728 104) + (pt 728 248) +) +(connector + (pt 872 40) + (pt 872 128) + (bus) +) +(connector + (pt 872 128) + (pt 872 272) + (bus) +) +(connector + (pt 600 160) + (pt 600 192) +) +(connector + (pt 560 272) + (pt 624 272) +) +(connector + (pt 624 304) + (pt 600 304) +) +(connector + (pt 600 192) + (pt 600 304) +) +(connector + (pt 728 416) + (pt 768 416) +) +(connector + (pt 768 416) + (pt 768 424) +) +(connector + (pt 728 248) + (pt 728 416) +) +(connector + (pt 728 416) + (pt 728 536) +) +(connector + (pt 816 384) + (pt 816 440) +) +(connector + (text "flags_yf" (rect 700 424 742 436)(font "Arial" )) + (pt 688 440) + (pt 744 440) +) +(connector + (pt 872 272) + (pt 872 440) + (bus) +) +(connector + (pt 872 440) + (pt 872 568) + (bus) +) +(connector + (pt 792 440) + (pt 816 440) +) +(connector + (text "db[5]" (rect 841 424 865 436)(font "Arial" )) + (pt 816 440) + (pt 872 440) +) +(connector + (pt 496 472) + (pt 624 472) +) +(connector + (pt 624 728) + (pt 200 728) +) +(connector + (pt 624 696) + (pt 520 696) +) +(connector + (pt 496 848) + (pt 624 848) +) +(connector + (pt 496 472) + (pt 496 504) +) +(connector + (pt 496 504) + (pt 496 848) +) +(connector + (pt 728 792) + (pt 768 792) +) +(connector + (pt 768 792) + (pt 768 800) +) +(connector + (pt 728 536) + (pt 728 792) +) +(connector + (pt 816 760) + (pt 816 816) +) +(connector + (text "flags_xf" (rect 696 800 737 812)(font "Arial" )) + (pt 688 816) + (pt 744 816) +) +(connector + (pt 872 568) + (pt 872 816) + (bus) +) +(connector + (pt 792 816) + (pt 816 816) +) +(connector + (text "db[3]" (rect 838 800 862 812)(font "Arial" )) + (pt 816 816) + (pt 872 816) +) +(connector + (pt 496 1016) + (pt 496 984) +) +(connector + (pt 496 984) + (pt 624 984) +) +(connector + (pt 728 928) + (pt 768 928) +) +(connector + (pt 768 928) + (pt 768 936) +) +(connector + (pt 728 792) + (pt 728 928) +) +(connector + (pt 816 896) + (pt 816 952) +) +(connector + (pt 704 952) + (pt 704 992) +) +(connector + (pt 688 952) + (pt 704 952) +) +(connector + (pt 704 952) + (pt 744 952) +) +(connector + (pt 872 816) + (pt 872 952) + (bus) +) +(connector + (pt 792 952) + (pt 816 952) +) +(connector + (text "db[2]" (rect 837 936 861 948)(font "Arial" )) + (pt 816 952) + (pt 872 952) +) +(connector + (pt 704 1096) + (pt 704 1144) +) +(connector + (pt 688 1096) + (pt 704 1096) +) +(connector + (pt 704 1096) + (pt 744 1096) +) +(connector + (pt 816 1032) + (pt 816 1096) +) +(connector + (pt 872 952) + (pt 872 1096) + (bus) +) +(connector + (pt 872 1096) + (pt 872 1240) + (bus) +) +(connector + (pt 792 1096) + (pt 816 1096) +) +(connector + (text "db[1]" (rect 836 1080 860 1092)(font "Arial" )) + (pt 816 1096) + (pt 872 1096) +) +(connector + (pt 728 1072) + (pt 768 1072) +) +(connector + (pt 768 1080) + (pt 768 1072) +) +(connector + (pt 200 1152) + (pt 592 1152) +) +(connector + (pt 592 1152) + (pt 592 1128) +) +(connector + (pt 624 1128) + (pt 592 1128) +) +(connector + (pt 200 632) + (pt 592 632) +) +(connector + (pt 232 1432) + (pt 288 1432) +) +(connector + (pt 232 1480) + (pt 288 1480) +) +(connector + (pt 232 1488) + (pt 232 1480) +) +(connector + (pt 232 592) + (pt 232 1264) +) +(connector + (pt 232 1264) + (pt 232 1432) +) +(connector + (pt 200 1464) + (pt 288 1464) +) +(connector + (pt 200 1448) + (pt 288 1448) +) +(connector + (text "clk" (rect 583 128 597 140)(font "Arial" )) + (pt 624 144) + (pt 576 144) +) +(connector + (text "clk" (rect 582 272 596 284)(font "Arial" )) + (pt 624 288) + (pt 576 288) +) +(connector + (text "clk" (rect 583 440 597 452)(font "Arial" )) + (pt 624 456) + (pt 576 456) +) +(connector + (text "clk" (rect 584 696 598 708)(font "Arial" )) + (pt 624 712) + (pt 576 712) +) +(connector + (text "clk" (rect 583 816 597 828)(font "Arial" )) + (pt 624 832) + (pt 576 832) +) +(connector + (text "clk" (rect 583 952 597 964)(font "Arial" )) + (pt 624 968) + (pt 576 968) +) +(connector + (text "clk" (rect 584 1096 598 1108)(font "Arial" )) + (pt 624 1112) + (pt 576 1112) +) +(connector + (pt 728 1216) + (pt 768 1216) +) +(connector + (pt 768 1224) + (pt 768 1216) +) +(connector + (pt 728 928) + (pt 728 1072) +) +(connector + (pt 728 1072) + (pt 728 1216) +) +(connector + (pt 384 600) + (pt 384 584) +) +(connector + (pt 384 584) + (pt 400 584) +) +(connector + (pt 368 552) + (pt 384 552) +) +(connector + (pt 384 552) + (pt 384 568) +) +(connector + (pt 400 568) + (pt 384 568) +) +(connector + (pt 704 632) + (pt 704 576) +) +(connector + (pt 704 576) + (pt 688 576) +) +(connector + (pt 592 608) + (pt 624 608) +) +(connector + (pt 592 632) + (pt 592 608) +) +(connector + (text "clk" (rect 583 576 597 588)(font "Arial" )) + (pt 624 592) + (pt 576 592) +) +(connector + (pt 520 576) + (pt 520 696) +) +(connector + (pt 464 576) + (pt 520 576) +) +(connector + (pt 520 576) + (pt 624 576) +) +(connector + (pt 200 1576) + (pt 744 1576) +) +(connector + (pt 744 1416) + (pt 744 1576) +) +(connector + (pt 200 1600) + (pt 840 1600) +) +(connector + (pt 840 1424) + (pt 840 1600) +) +(connector + (pt 760 1416) + (pt 744 1416) +) +(connector + (pt 856 1424) + (pt 840 1424) +) +(connector + (pt 248 1392) + (pt 248 1416) +) +(connector + (text "sel[0]" (rect 206 1376 233 1388)(font "Arial" )) + (pt 200 1392) + (pt 248 1392) +) +(connector + (text "sel[1]" (rect 204 1400 231 1412)(font "Arial" )) + (pt 200 1416) + (pt 248 1416) +) +(connector + (text "sel[1..0]" (rect 251 1400 291 1412)(font "Arial" )) + (pt 288 1416) + (pt 248 1416) + (bus) +) +(connector + (pt 632 1400) + (pt 616 1400) +) +(connector + (pt 616 1288) + (pt 616 1400) +) +(connector + (pt 200 1552) + (pt 616 1552) +) +(connector + (pt 616 1432) + (pt 616 1552) +) +(connector + (pt 632 1432) + (pt 616 1432) +) +(connector + (pt 600 1288) + (pt 616 1288) +) +(connector + (pt 616 1288) + (pt 912 1288) +) +(connector + (pt 632 1416) + (pt 600 1416) +) +(connector + (pt 400 1416) + (pt 536 1416) +) +(connector + (pt 200 1360) + (pt 304 1360) +) +(connector + (pt 304 1360) + (pt 408 1360) +) +(connector + (pt 536 1304) + (pt 520 1304) +) +(connector + (pt 520 1432) + (pt 536 1432) +) +(connector + (pt 200 1528) + (pt 520 1528) +) +(connector + (pt 520 1304) + (pt 520 1432) +) +(connector + (pt 520 1432) + (pt 520 1528) +) +(connector + (pt 464 1232) + (pt 520 1232) +) +(connector + (pt 520 1232) + (pt 520 1288) +) +(connector + (pt 536 1288) + (pt 520 1288) +) +(connector + (pt 536 1448) + (pt 504 1448) +) +(connector + (pt 408 1360) + (pt 408 1440) +) +(connector + (pt 408 1440) + (pt 440 1440) +) +(connector + (pt 536 1320) + (pt 504 1320) +) +(connector + (pt 200 1312) + (pt 440 1312) +) +(connector + (pt 368 1328) + (pt 440 1328) +) +(connector + (pt 424 1456) + (pt 440 1456) +) +(connector + (pt 440 1320) + (pt 424 1320) +) +(connector + (pt 424 1632) + (pt 200 1632) +) +(connector + (pt 424 1320) + (pt 424 1456) +) +(connector + (pt 424 1456) + (pt 424 1632) +) +(junction (pt 816 568)) +(junction (pt 840 640)) +(junction (pt 496 504)) +(junction (pt 816 1240)) +(junction (pt 232 1264)) +(junction (pt 304 1360)) +(junction (pt 936 1416)) +(junction (pt 272 1072)) +(junction (pt 272 800)) +(junction (pt 272 936)) +(junction (pt 704 368)) +(junction (pt 216 144)) +(junction (pt 256 848)) +(junction (pt 256 984)) +(junction (pt 256 1120)) +(junction (pt 728 104)) +(junction (pt 728 416)) +(junction (pt 728 536)) +(junction (pt 728 792)) +(junction (pt 728 928)) +(junction (pt 872 568)) +(junction (pt 272 112)) +(junction (pt 272 264)) +(junction (pt 272 424)) +(junction (pt 272 560)) +(junction (pt 256 160)) +(junction (pt 256 312)) +(junction (pt 256 472)) +(junction (pt 256 608)) +(junction (pt 816 128)) +(junction (pt 704 128)) +(junction (pt 872 128)) +(junction (pt 600 192)) +(junction (pt 704 272)) +(junction (pt 816 272)) +(junction (pt 728 248)) +(junction (pt 872 272)) +(junction (pt 816 440)) +(junction (pt 872 440)) +(junction (pt 816 816)) +(junction (pt 872 816)) +(junction (pt 816 952)) +(junction (pt 704 952)) +(junction (pt 872 952)) +(junction (pt 704 1096)) +(junction (pt 816 1096)) +(junction (pt 872 1096)) +(junction (pt 728 1072)) +(junction (pt 520 576)) +(junction (pt 248 1416)) +(junction (pt 616 1288)) +(junction (pt 520 1432)) +(junction (pt 424 1456)) +(text "Connect flags directly to other modules" (rect 912 128 1133 142)(font "Arial" (font_size 8))) +(text "Carry Flag" (rect 512 1184 582 1200)(font "Arial" (font_size 10))) +(text "Parity Flag" (rect 512 904 586 920)(font "Arial" (font_size 10))) +(text "Zero Flag" (rect 512 192 575 208)(font "Arial" (font_size 10))) +(text "N Flag" (rect 512 1040 556 1056)(font "Arial" (font_size 10))) +(text "Sign Flag" (rect 512 80 576 96)(font "Arial" (font_size 10))) +(text "Y Flag" (rect 512 392 556 408)(font "Arial" (font_size 10))) +(text "X Flag" (rect 512 768 554 784)(font "Arial" (font_size 10))) +(text "H Flag" (rect 512 528 556 544)(font "Arial" (font_size 10))) +(text "Force set" (rect 768 1440 822 1454)(font "Arial" (font_size 8))) +(text "Force complement" (rect 856 1448 959 1462)(font "Arial" (font_size 8))) +(text "Primary latch" (rect 536 1240 609 1254)(font "Arial" (font_size 8))) +(text "Secondary latch" (rect 528 1368 621 1382)(font "Arial" (font_size 8))) +(title_block + (rect 808 1624 1065 1676) + (name "title-custom-small") + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "June 21, 2014, 2016" (rect 56 3 171 17)(font "Arial" (font_size 8)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "alu_flags" (rect 43 2 104 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.8" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/alu/alu_flags.bsf b/cpu/alu/alu_flags.bsf new file mode 100644 index 0000000..4d6faa8 --- /dev/null +++ b/cpu/alu/alu_flags.bsf @@ -0,0 +1,302 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 280 560) + (text "alu_flags" (rect 5 0 56 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 528 25 540)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "ctl_flags_oe" (rect 0 0 69 14)(font "Arial" (font_size 8))) + (text "ctl_flags_oe" (rect 21 27 90 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "ctl_flags_bus" (rect 0 0 76 14)(font "Arial" (font_size 8))) + (text "ctl_flags_bus" (rect 21 43 97 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "ctl_flags_alu" (rect 0 0 71 14)(font "Arial" (font_size 8))) + (text "ctl_flags_alu" (rect 21 59 92 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "alu_sf_out" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "alu_sf_out" (rect 21 75 81 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "ctl_flags_sz_we" (rect 0 0 95 14)(font "Arial" (font_size 8))) + (text "ctl_flags_sz_we" (rect 21 91 116 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "alu_zero" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "alu_zero" (rect 21 107 70 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 0 128) + (input) + (text "ctl_alu_zero_16bit" (rect 0 0 103 14)(font "Arial" (font_size 8))) + (text "ctl_alu_zero_16bit" (rect 21 123 124 137)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)) + ) + (port + (pt 0 144) + (input) + (text "alu_yf_out" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "alu_yf_out" (rect 21 139 81 153)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)) + ) + (port + (pt 0 160) + (input) + (text "ctl_flags_xy_we" (rect 0 0 95 14)(font "Arial" (font_size 8))) + (text "ctl_flags_xy_we" (rect 21 155 116 169)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 16 160)) + ) + (port + (pt 0 176) + (input) + (text "ctl_flags_hf_we" (rect 0 0 93 14)(font "Arial" (font_size 8))) + (text "ctl_flags_hf_we" (rect 21 171 114 185)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 16 176)) + ) + (port + (pt 0 192) + (input) + (text "ctl_flags_hf_cpl" (rect 0 0 90 14)(font "Arial" (font_size 8))) + (text "ctl_flags_hf_cpl" (rect 21 187 111 201)(font "Arial" (font_size 8))) + (line (pt 0 192)(pt 16 192)) + ) + (port + (pt 0 208) + (input) + (text "ctl_flags_hf2_we" (rect 0 0 100 14)(font "Arial" (font_size 8))) + (text "ctl_flags_hf2_we" (rect 21 203 121 217)(font "Arial" (font_size 8))) + (line (pt 0 208)(pt 16 208)) + ) + (port + (pt 0 224) + (input) + (text "alu_xf_out" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "alu_xf_out" (rect 21 219 81 233)(font "Arial" (font_size 8))) + (line (pt 0 224)(pt 16 224)) + ) + (port + (pt 0 240) + (input) + (text "pf_sel" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "pf_sel" (rect 21 235 56 249)(font "Arial" (font_size 8))) + (line (pt 0 240)(pt 16 240)) + ) + (port + (pt 0 256) + (input) + (text "ctl_flags_pf_we" (rect 0 0 93 14)(font "Arial" (font_size 8))) + (text "ctl_flags_pf_we" (rect 21 251 114 265)(font "Arial" (font_size 8))) + (line (pt 0 256)(pt 16 256)) + ) + (port + (pt 0 272) + (input) + (text "ctl_flags_nf_set" (rect 0 0 92 14)(font "Arial" (font_size 8))) + (text "ctl_flags_nf_set" (rect 21 267 113 281)(font "Arial" (font_size 8))) + (line (pt 0 272)(pt 16 272)) + ) + (port + (pt 0 288) + (input) + (text "ctl_flags_nf_clr" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "ctl_flags_nf_clr" (rect 21 283 109 297)(font "Arial" (font_size 8))) + (line (pt 0 288)(pt 16 288)) + ) + (port + (pt 0 304) + (input) + (text "ctl_flags_nf_we" (rect 0 0 93 14)(font "Arial" (font_size 8))) + (text "ctl_flags_nf_we" (rect 21 299 114 313)(font "Arial" (font_size 8))) + (line (pt 0 304)(pt 16 304)) + ) + (port + (pt 0 320) + (input) + (text "alu_core_cf_out" (rect 0 0 93 14)(font "Arial" (font_size 8))) + (text "alu_core_cf_out" (rect 21 315 114 329)(font "Arial" (font_size 8))) + (line (pt 0 320)(pt 16 320)) + ) + (port + (pt 0 336) + (input) + (text "ctl_flags_cf_we" (rect 0 0 93 14)(font "Arial" (font_size 8))) + (text "ctl_flags_cf_we" (rect 21 331 114 345)(font "Arial" (font_size 8))) + (line (pt 0 336)(pt 16 336)) + ) + (port + (pt 0 352) + (input) + (text "ctl_flags_cf2_we" (rect 0 0 100 14)(font "Arial" (font_size 8))) + (text "ctl_flags_cf2_we" (rect 21 347 121 361)(font "Arial" (font_size 8))) + (line (pt 0 352)(pt 16 352)) + ) + (port + (pt 0 368) + (input) + (text "ctl_flags_cf2_sel_shift" (rect 0 0 129 14)(font "Arial" (font_size 8))) + (text "ctl_flags_cf2_sel_shift" (rect 21 363 150 377)(font "Arial" (font_size 8))) + (line (pt 0 368)(pt 16 368)) + ) + (port + (pt 0 384) + (input) + (text "ctl_flags_cf2_sel_daa" (rect 0 0 126 14)(font "Arial" (font_size 8))) + (text "ctl_flags_cf2_sel_daa" (rect 21 379 147 393)(font "Arial" (font_size 8))) + (line (pt 0 384)(pt 16 384)) + ) + (port + (pt 0 400) + (input) + (text "shift_cf_out" (rect 0 0 68 14)(font "Arial" (font_size 8))) + (text "shift_cf_out" (rect 21 395 89 409)(font "Arial" (font_size 8))) + (line (pt 0 400)(pt 16 400)) + ) + (port + (pt 0 416) + (input) + (text "daa_cf_out" (rect 0 0 64 14)(font "Arial" (font_size 8))) + (text "daa_cf_out" (rect 21 411 85 425)(font "Arial" (font_size 8))) + (line (pt 0 416)(pt 16 416)) + ) + (port + (pt 0 432) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 21 427 36 441)(font "Arial" (font_size 8))) + (line (pt 0 432)(pt 16 432)) + ) + (port + (pt 0 448) + (input) + (text "ctl_flags_use_cf2" (rect 0 0 102 14)(font "Arial" (font_size 8))) + (text "ctl_flags_use_cf2" (rect 21 443 123 457)(font "Arial" (font_size 8))) + (line (pt 0 448)(pt 16 448)) + ) + (port + (pt 0 464) + (input) + (text "ctl_flags_cf_set" (rect 0 0 92 14)(font "Arial" (font_size 8))) + (text "ctl_flags_cf_set" (rect 21 459 113 473)(font "Arial" (font_size 8))) + (line (pt 0 464)(pt 16 464)) + ) + (port + (pt 0 480) + (input) + (text "ctl_flags_cf_cpl" (rect 0 0 90 14)(font "Arial" (font_size 8))) + (text "ctl_flags_cf_cpl" (rect 21 475 111 489)(font "Arial" (font_size 8))) + (line (pt 0 480)(pt 16 480)) + ) + (port + (pt 0 496) + (input) + (text "nhold_clk_wait" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "nhold_clk_wait" (rect 21 491 105 505)(font "Arial" (font_size 8))) + (line (pt 0 496)(pt 16 496)) + ) + (port + (pt 264 48) + (output) + (text "flags_sf" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "flags_sf" (rect 196 43 243 57)(font "Arial" (font_size 8))) + (line (pt 264 48)(pt 248 48)) + ) + (port + (pt 264 64) + (output) + (text "flags_zf" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "flags_zf" (rect 196 59 243 73)(font "Arial" (font_size 8))) + (line (pt 264 64)(pt 248 64)) + ) + (port + (pt 264 80) + (output) + (text "flags_hf" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "flags_hf" (rect 196 75 243 89)(font "Arial" (font_size 8))) + (line (pt 264 80)(pt 248 80)) + ) + (port + (pt 264 96) + (output) + (text "flags_hf2" (rect 0 0 54 14)(font "Arial" (font_size 8))) + (text "flags_hf2" (rect 189 91 243 105)(font "Arial" (font_size 8))) + (line (pt 264 96)(pt 248 96)) + ) + (port + (pt 264 112) + (output) + (text "flags_pf" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "flags_pf" (rect 196 107 243 121)(font "Arial" (font_size 8))) + (line (pt 264 112)(pt 248 112)) + ) + (port + (pt 264 128) + (output) + (text "flags_nf" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "flags_nf" (rect 196 123 243 137)(font "Arial" (font_size 8))) + (line (pt 264 128)(pt 248 128)) + ) + (port + (pt 264 144) + (output) + (text "flags_cf_latch" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "flags_cf_latch" (rect 162 139 243 153)(font "Arial" (font_size 8))) + (line (pt 264 144)(pt 248 144)) + ) + (port + (pt 264 160) + (output) + (text "flags_cf" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "flags_cf" (rect 196 155 243 169)(font "Arial" (font_size 8))) + (line (pt 264 160)(pt 248 160)) + ) + (port + (pt 264 32) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 201 27 243 41)(font "Arial" (font_size 8))) + (line (pt 264 32)(pt 248 32)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 248 528)) + ) +) diff --git a/cpu/alu/alu_flags.v b/cpu/alu/alu_flags.v new file mode 100644 index 0000000..5d8dd8c --- /dev/null +++ b/cpu/alu/alu_flags.v @@ -0,0 +1,358 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Sat Dec 10 09:01:30 2016" + +module alu_flags( + ctl_flags_oe, + ctl_flags_bus, + ctl_flags_alu, + alu_sf_out, + alu_yf_out, + alu_xf_out, + ctl_flags_nf_set, + alu_zero, + shift_cf_out, + alu_core_cf_out, + daa_cf_out, + ctl_flags_cf_set, + ctl_flags_cf_cpl, + pf_sel, + ctl_flags_cf_we, + ctl_flags_sz_we, + ctl_flags_xy_we, + ctl_flags_hf_we, + ctl_flags_pf_we, + ctl_flags_nf_we, + ctl_flags_cf2_we, + ctl_flags_hf_cpl, + ctl_flags_use_cf2, + ctl_flags_hf2_we, + ctl_flags_nf_clr, + ctl_alu_zero_16bit, + clk, + ctl_flags_cf2_sel_shift, + ctl_flags_cf2_sel_daa, + nhold_clk_wait, + flags_sf, + flags_zf, + flags_hf, + flags_pf, + flags_cf, + flags_nf, + flags_cf_latch, + flags_hf2, + db +); + + +input wire ctl_flags_oe; +input wire ctl_flags_bus; +input wire ctl_flags_alu; +input wire alu_sf_out; +input wire alu_yf_out; +input wire alu_xf_out; +input wire ctl_flags_nf_set; +input wire alu_zero; +input wire shift_cf_out; +input wire alu_core_cf_out; +input wire daa_cf_out; +input wire ctl_flags_cf_set; +input wire ctl_flags_cf_cpl; +input wire pf_sel; +input wire ctl_flags_cf_we; +input wire ctl_flags_sz_we; +input wire ctl_flags_xy_we; +input wire ctl_flags_hf_we; +input wire ctl_flags_pf_we; +input wire ctl_flags_nf_we; +input wire ctl_flags_cf2_we; +input wire ctl_flags_hf_cpl; +input wire ctl_flags_use_cf2; +input wire ctl_flags_hf2_we; +input wire ctl_flags_nf_clr; +input wire ctl_alu_zero_16bit; +input wire clk; +input wire ctl_flags_cf2_sel_shift; +input wire ctl_flags_cf2_sel_daa; +input wire nhold_clk_wait; +output wire flags_sf; +output wire flags_zf; +output wire flags_hf; +output wire flags_pf; +output wire flags_cf; +output wire flags_nf; +output wire flags_cf_latch; +output reg flags_hf2; +inout wire [7:0] db; + +reg flags_xf; +reg flags_yf; +wire [1:0] sel; +reg DFFE_inst_latch_hf; +wire SYNTHESIZED_WIRE_0; +wire SYNTHESIZED_WIRE_1; +wire SYNTHESIZED_WIRE_2; +wire SYNTHESIZED_WIRE_3; +wire SYNTHESIZED_WIRE_4; +wire SYNTHESIZED_WIRE_5; +wire SYNTHESIZED_WIRE_6; +wire SYNTHESIZED_WIRE_7; +reg SYNTHESIZED_WIRE_39; +wire SYNTHESIZED_WIRE_8; +wire SYNTHESIZED_WIRE_9; +wire SYNTHESIZED_WIRE_10; +wire SYNTHESIZED_WIRE_11; +wire SYNTHESIZED_WIRE_12; +wire SYNTHESIZED_WIRE_13; +wire SYNTHESIZED_WIRE_14; +wire SYNTHESIZED_WIRE_15; +wire SYNTHESIZED_WIRE_16; +wire SYNTHESIZED_WIRE_17; +wire SYNTHESIZED_WIRE_18; +wire SYNTHESIZED_WIRE_19; +wire SYNTHESIZED_WIRE_20; +wire SYNTHESIZED_WIRE_21; +wire SYNTHESIZED_WIRE_22; +reg DFFE_inst_latch_sf; +wire SYNTHESIZED_WIRE_23; +reg DFFE_inst_latch_pf; +reg DFFE_inst_latch_nf; +wire SYNTHESIZED_WIRE_24; +wire SYNTHESIZED_WIRE_25; +wire SYNTHESIZED_WIRE_26; +wire SYNTHESIZED_WIRE_27; +wire SYNTHESIZED_WIRE_28; +wire SYNTHESIZED_WIRE_29; +wire SYNTHESIZED_WIRE_40; +wire SYNTHESIZED_WIRE_32; +wire SYNTHESIZED_WIRE_33; +wire SYNTHESIZED_WIRE_34; +wire SYNTHESIZED_WIRE_35; +wire SYNTHESIZED_WIRE_36; +wire SYNTHESIZED_WIRE_37; +reg DFFE_inst_latch_cf; +reg DFFE_inst_latch_cf2; +wire SYNTHESIZED_WIRE_38; + +assign flags_sf = DFFE_inst_latch_sf; +assign flags_zf = SYNTHESIZED_WIRE_39; +assign flags_hf = SYNTHESIZED_WIRE_23; +assign flags_pf = DFFE_inst_latch_pf; +assign flags_cf = SYNTHESIZED_WIRE_24; +assign flags_nf = DFFE_inst_latch_nf; +assign flags_cf_latch = DFFE_inst_latch_cf; +assign SYNTHESIZED_WIRE_38 = 0; + + + +assign SYNTHESIZED_WIRE_10 = db[7] & ctl_flags_bus; + +assign SYNTHESIZED_WIRE_17 = alu_xf_out & ctl_flags_alu; + +assign SYNTHESIZED_WIRE_20 = db[2] & ctl_flags_bus; + +assign SYNTHESIZED_WIRE_19 = pf_sel & ctl_flags_alu; + +assign SYNTHESIZED_WIRE_2 = db[1] & ctl_flags_bus; + +assign SYNTHESIZED_WIRE_23 = DFFE_inst_latch_hf ^ ctl_flags_hf_cpl; + +assign SYNTHESIZED_WIRE_22 = db[0] & ctl_flags_bus; + +assign SYNTHESIZED_WIRE_21 = ctl_flags_alu & alu_core_cf_out; + +assign SYNTHESIZED_WIRE_8 = ~ctl_flags_cf2_we; + +assign SYNTHESIZED_WIRE_24 = SYNTHESIZED_WIRE_0 ^ ctl_flags_cf_cpl; + +assign SYNTHESIZED_WIRE_1 = alu_sf_out & ctl_flags_alu; + +assign SYNTHESIZED_WIRE_9 = alu_sf_out & ctl_flags_alu; + +assign SYNTHESIZED_WIRE_5 = ctl_flags_nf_set | SYNTHESIZED_WIRE_1 | SYNTHESIZED_WIRE_2; + +assign SYNTHESIZED_WIRE_37 = SYNTHESIZED_WIRE_3 & SYNTHESIZED_WIRE_4; + + +assign SYNTHESIZED_WIRE_32 = SYNTHESIZED_WIRE_5 & SYNTHESIZED_WIRE_6; + +assign SYNTHESIZED_WIRE_6 = ~ctl_flags_nf_clr; + +assign SYNTHESIZED_WIRE_7 = ~ctl_alu_zero_16bit; + +assign SYNTHESIZED_WIRE_4 = SYNTHESIZED_WIRE_7 | SYNTHESIZED_WIRE_39; + +assign SYNTHESIZED_WIRE_27 = ctl_flags_cf_we & nhold_clk_wait & SYNTHESIZED_WIRE_8; + +assign SYNTHESIZED_WIRE_29 = ctl_flags_cf2_we & nhold_clk_wait; + +assign SYNTHESIZED_WIRE_12 = db[6] & ctl_flags_bus; + +assign SYNTHESIZED_WIRE_34 = SYNTHESIZED_WIRE_9 | SYNTHESIZED_WIRE_10; + +assign SYNTHESIZED_WIRE_3 = SYNTHESIZED_WIRE_11 | SYNTHESIZED_WIRE_12; + +assign SYNTHESIZED_WIRE_36 = SYNTHESIZED_WIRE_13 | SYNTHESIZED_WIRE_14; + +assign SYNTHESIZED_WIRE_40 = SYNTHESIZED_WIRE_15 | SYNTHESIZED_WIRE_16; + +assign SYNTHESIZED_WIRE_35 = SYNTHESIZED_WIRE_17 | SYNTHESIZED_WIRE_18; + +assign SYNTHESIZED_WIRE_33 = SYNTHESIZED_WIRE_19 | SYNTHESIZED_WIRE_20; + +assign SYNTHESIZED_WIRE_11 = alu_zero & ctl_flags_alu; + +assign SYNTHESIZED_WIRE_26 = SYNTHESIZED_WIRE_21 | SYNTHESIZED_WIRE_22; + +assign db[7] = ctl_flags_oe ? DFFE_inst_latch_sf : 1'bz; + +assign SYNTHESIZED_WIRE_14 = db[5] & ctl_flags_bus; + +assign db[6] = ctl_flags_oe ? SYNTHESIZED_WIRE_39 : 1'bz; + +assign db[5] = ctl_flags_oe ? flags_yf : 1'bz; + +assign db[4] = ctl_flags_oe ? SYNTHESIZED_WIRE_23 : 1'bz; + +assign db[3] = ctl_flags_oe ? flags_xf : 1'bz; + +assign db[2] = ctl_flags_oe ? DFFE_inst_latch_pf : 1'bz; + +assign db[1] = ctl_flags_oe ? DFFE_inst_latch_nf : 1'bz; + +assign db[0] = ctl_flags_oe ? SYNTHESIZED_WIRE_24 : 1'bz; + +assign SYNTHESIZED_WIRE_13 = alu_yf_out & ctl_flags_alu; + +assign SYNTHESIZED_WIRE_0 = ctl_flags_cf_set | SYNTHESIZED_WIRE_25; + +assign SYNTHESIZED_WIRE_16 = db[4] & ctl_flags_bus; + +assign SYNTHESIZED_WIRE_15 = alu_core_cf_out & ctl_flags_alu; + +assign SYNTHESIZED_WIRE_18 = db[3] & ctl_flags_bus; + + +always@(posedge clk) +begin +if (SYNTHESIZED_WIRE_27) + begin + DFFE_inst_latch_cf <= SYNTHESIZED_WIRE_26; + end +end + + +always@(posedge clk) +begin +if (SYNTHESIZED_WIRE_29) + begin + DFFE_inst_latch_cf2 <= SYNTHESIZED_WIRE_28; + end +end + + +always@(posedge clk) +begin +if (ctl_flags_hf_we) + begin + DFFE_inst_latch_hf <= SYNTHESIZED_WIRE_40; + end +end + + +always@(posedge clk) +begin +if (ctl_flags_hf2_we) + begin + flags_hf2 <= SYNTHESIZED_WIRE_40; + end +end + + +always@(posedge clk) +begin +if (ctl_flags_nf_we) + begin + DFFE_inst_latch_nf <= SYNTHESIZED_WIRE_32; + end +end + + +always@(posedge clk) +begin +if (ctl_flags_pf_we) + begin + DFFE_inst_latch_pf <= SYNTHESIZED_WIRE_33; + end +end + + +always@(posedge clk) +begin +if (ctl_flags_sz_we) + begin + DFFE_inst_latch_sf <= SYNTHESIZED_WIRE_34; + end +end + + +always@(posedge clk) +begin +if (ctl_flags_xy_we) + begin + flags_xf <= SYNTHESIZED_WIRE_35; + end +end + + +always@(posedge clk) +begin +if (ctl_flags_xy_we) + begin + flags_yf <= SYNTHESIZED_WIRE_36; + end +end + + +always@(posedge clk) +begin +if (ctl_flags_sz_we) + begin + SYNTHESIZED_WIRE_39 <= SYNTHESIZED_WIRE_37; + end +end + + +alu_mux_2 b2v_inst_mux_cf( + .in0(DFFE_inst_latch_cf), + .in1(DFFE_inst_latch_cf2), + .sel1(ctl_flags_use_cf2), + .out(SYNTHESIZED_WIRE_25)); + + +alu_mux_4 b2v_inst_mux_cf2( + .in0(alu_core_cf_out), + .in1(shift_cf_out), + .in2(daa_cf_out), + .in3(SYNTHESIZED_WIRE_38), + .sel(sel), + .out(SYNTHESIZED_WIRE_28)); + +assign sel[0] = ctl_flags_cf2_sel_shift; +assign sel[1] = ctl_flags_cf2_sel_daa; + +endmodule diff --git a/cpu/alu/alu_mux_2.bdf b/cpu/alu/alu_mux_2.bdf new file mode 100644 index 0000000..ba61038 --- /dev/null +++ b/cpu/alu/alu_mux_2.bdf @@ -0,0 +1,275 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 104 208 120) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "sel1" (rect 9 0 29 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 88 208 104) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in1" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 40 208 56) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in0" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 480 72 656 88) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "out" (rect 90 0 105 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 248 48 296 80) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst3" (rect 3 21 26 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 320 32 384 80) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst0" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 320 80 384 128) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst1" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 400 56 464 104) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst2" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(connector + (pt 248 64) + (pt 232 64) +) +(connector + (pt 400 72) + (pt 392 72) +) +(connector + (pt 400 88) + (pt 392 88) +) +(connector + (pt 392 88) + (pt 392 104) +) +(connector + (pt 392 104) + (pt 384 104) +) +(connector + (pt 392 56) + (pt 384 56) +) +(connector + (pt 392 56) + (pt 392 72) +) +(connector + (pt 232 64) + (pt 232 112) +) +(connector + (pt 232 112) + (pt 320 112) +) +(connector + (pt 296 64) + (pt 320 64) +) +(connector + (pt 464 80) + (pt 480 80) +) +(connector + (pt 208 112) + (pt 232 112) +) +(connector + (pt 208 96) + (pt 320 96) +) +(connector + (pt 208 48) + (pt 320 48) +) +(junction (pt 232 112)) +(title_block + (rect 32 168 289 220) + (name "title-custom-small") + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "June 21, 2014" (rect 56 3 136 17)(font "Arial" (font_size 8)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "alu_mux_2" (rect 43 2 117 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.0" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/alu/alu_mux_2.bsf b/cpu/alu/alu_mux_2.bsf new file mode 100644 index 0000000..44a33c4 --- /dev/null +++ b/cpu/alu/alu_mux_2.bsf @@ -0,0 +1,57 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 112 112) + (text "alu_mux_2" (rect 5 0 66 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 80 25 92)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "in0" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in0" (rect 21 27 37 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "in1" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in1" (rect 21 43 37 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "sel1" (rect 0 0 23 14)(font "Arial" (font_size 8))) + (text "sel1" (rect 21 59 44 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 96 32) + (output) + (text "out" (rect 0 0 17 14)(font "Arial" (font_size 8))) + (text "out" (rect 58 27 75 41)(font "Arial" (font_size 8))) + (line (pt 96 32)(pt 80 32)) + ) + (drawing + (rectangle (rect 16 16 80 80)) + ) +) diff --git a/cpu/alu/alu_mux_2.v b/cpu/alu/alu_mux_2.v new file mode 100644 index 0000000..66a7496 --- /dev/null +++ b/cpu/alu/alu_mux_2.v @@ -0,0 +1,48 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Mon Oct 13 12:10:35 2014" + +module alu_mux_2( + sel1, + in1, + in0, + out +); + + +input wire sel1; +input wire in1; +input wire in0; +output wire out; + +wire SYNTHESIZED_WIRE_0; +wire SYNTHESIZED_WIRE_1; +wire SYNTHESIZED_WIRE_2; + + + + +assign SYNTHESIZED_WIRE_2 = in0 & SYNTHESIZED_WIRE_0; + +assign SYNTHESIZED_WIRE_1 = in1 & sel1; + +assign out = SYNTHESIZED_WIRE_1 | SYNTHESIZED_WIRE_2; + +assign SYNTHESIZED_WIRE_0 = ~sel1; + + +endmodule diff --git a/cpu/alu/alu_mux_2z.bdf b/cpu/alu/alu_mux_2z.bdf new file mode 100644 index 0000000..779f42e --- /dev/null +++ b/cpu/alu/alu_mux_2z.bdf @@ -0,0 +1,299 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 24 32 200 48) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "a[3..0]" (rect 9 0 40 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 48 200 64) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "sel_a" (rect 9 0 34 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 96 200 112) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "sel_zero" (rect 9 0 49 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 480 48 656 64) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "Q[3..0]" (rect 90 0 124 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 144 656 160) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "ena" (rect 90 0 107 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 280 24 344 72) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 37 20 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 392 32 456 80) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst10" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 296 88 344 120) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst11" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 392 128 456 176) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst1" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(connector + (pt 368 64) + (pt 392 64) +) +(connector + (pt 344 48) + (pt 392 48) + (bus) +) +(connector + (pt 456 56) + (pt 480 56) + (bus) +) +(connector + (pt 200 40) + (pt 280 40) + (bus) +) +(connector + (pt 456 152) + (pt 480 152) +) +(connector + (pt 368 64) + (pt 368 104) +) +(connector + (pt 368 104) + (pt 344 104) +) +(connector + (pt 232 56) + (pt 232 160) +) +(connector + (pt 200 56) + (pt 232 56) +) +(connector + (pt 232 56) + (pt 280 56) +) +(connector + (pt 232 160) + (pt 392 160) +) +(connector + (pt 264 104) + (pt 264 144) +) +(connector + (pt 264 144) + (pt 392 144) +) +(connector + (pt 200 104) + (pt 264 104) +) +(connector + (pt 264 104) + (pt 296 104) +) +(junction (pt 232 56)) +(junction (pt 264 104)) +(title_block + (rect 24 192 281 244) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "alu_mux_2z" (rect 43 2 124 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 18, 2014" (rect 56 3 132 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.2" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/alu/alu_mux_2z.bsf b/cpu/alu/alu_mux_2z.bsf new file mode 100644 index 0000000..16ad4ec --- /dev/null +++ b/cpu/alu/alu_mux_2z.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 160 112) + (text "alu_mux_2z" (rect 5 0 73 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 80 25 92)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "a[3..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "a[3..0]" (rect 21 27 56 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "sel_a" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "sel_a" (rect 21 43 51 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "sel_zero" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "sel_zero" (rect 21 59 70 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 144 32) + (output) + (text "Q[3..0]" (rect 0 0 37 14)(font "Arial" (font_size 8))) + (text "Q[3..0]" (rect 86 27 123 41)(font "Arial" (font_size 8))) + (line (pt 144 32)(pt 128 32)(line_width 3)) + ) + (port + (pt 144 48) + (output) + (text "ena" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "ena" (rect 102 43 123 57)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)) + ) + (drawing + (rectangle (rect 16 16 128 80)) + ) +) diff --git a/cpu/alu/alu_mux_2z.v b/cpu/alu/alu_mux_2z.v new file mode 100644 index 0000000..86fe9e3 --- /dev/null +++ b/cpu/alu/alu_mux_2z.v @@ -0,0 +1,49 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Fri Oct 31 21:18:33 2014" + +module alu_mux_2z( + sel_a, + sel_zero, + a, + ena, + Q +); + + +input wire sel_a; +input wire sel_zero; +input wire [3:0] a; +output wire ena; +output wire [3:0] Q; + +wire [3:0] SYNTHESIZED_WIRE_0; +wire SYNTHESIZED_WIRE_1; + + + + +assign SYNTHESIZED_WIRE_0 = a & {sel_a,sel_a,sel_a,sel_a}; + +assign ena = sel_a | sel_zero; + +assign Q = SYNTHESIZED_WIRE_0 & {SYNTHESIZED_WIRE_1,SYNTHESIZED_WIRE_1,SYNTHESIZED_WIRE_1,SYNTHESIZED_WIRE_1}; + +assign SYNTHESIZED_WIRE_1 = ~sel_zero; + + +endmodule diff --git a/cpu/alu/alu_mux_3z.bdf b/cpu/alu/alu_mux_3z.bdf new file mode 100644 index 0000000..b47e61d --- /dev/null +++ b/cpu/alu/alu_mux_3z.bdf @@ -0,0 +1,445 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 24 160 200 176) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "sel_zero" (rect 9 0 49 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 48 200 64) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "sel_a" (rect 9 0 34 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 96 200 112) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "b[3..0]" (rect 9 0 40 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 112 200 128) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "sel_b" (rect 9 0 34 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 32 200 48) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "a[3..0]" (rect 9 0 40 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 592 104 768 120) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "Q[3..0]" (rect 90 0 124 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 592 216 768 232) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "ena" (rect 90 0 107 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 296 24 360 72) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 37 20 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 296 88 360 136) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst6" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 504 88 568 136) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst10" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 408 80 472 128) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst13" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 416 152 464 184) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst11" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 504 200 568 248) + (text "OR3" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst4" (rect 3 37 30 51)(font "Arial" (font_size 8))) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 18 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 47 15 61 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(connector + (pt 360 48) + (pt 384 48) + (bus) +) +(connector + (pt 384 48) + (pt 384 96) + (bus) +) +(connector + (pt 472 104) + (pt 504 104) + (bus) +) +(connector + (pt 488 120) + (pt 504 120) +) +(connector + (pt 360 112) + (pt 408 112) + (bus) +) +(connector + (pt 384 96) + (pt 408 96) + (bus) +) +(connector + (pt 568 112) + (pt 592 112) + (bus) +) +(connector + (pt 200 40) + (pt 296 40) + (bus) +) +(connector + (pt 200 104) + (pt 296 104) + (bus) +) +(connector + (pt 568 224) + (pt 592 224) +) +(connector + (pt 488 168) + (pt 464 168) +) +(connector + (pt 488 120) + (pt 488 168) +) +(connector + (pt 264 120) + (pt 264 232) +) +(connector + (pt 200 120) + (pt 264 120) +) +(connector + (pt 264 120) + (pt 296 120) +) +(connector + (pt 264 232) + (pt 504 232) +) +(connector + (pt 280 56) + (pt 280 224) +) +(connector + (pt 200 56) + (pt 280 56) +) +(connector + (pt 280 56) + (pt 296 56) +) +(connector + (pt 280 224) + (pt 504 224) +) +(connector + (pt 384 168) + (pt 384 216) +) +(connector + (pt 384 216) + (pt 504 216) +) +(connector + (pt 200 168) + (pt 384 168) +) +(connector + (pt 384 168) + (pt 416 168) +) +(junction (pt 280 56)) +(junction (pt 264 120)) +(junction (pt 384 168)) +(title_block + (rect 24 272 281 324) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "alu_mux_3z" (rect 43 2 124 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 18, 2014" (rect 56 3 132 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.1" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/alu/alu_mux_3z.bsf b/cpu/alu/alu_mux_3z.bsf new file mode 100644 index 0000000..f81fc0d --- /dev/null +++ b/cpu/alu/alu_mux_3z.bsf @@ -0,0 +1,78 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 160 144) + (text "alu_mux_3z" (rect 5 0 73 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 112 25 124)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "a[3..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "a[3..0]" (rect 21 27 56 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "sel_a" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "sel_a" (rect 21 43 51 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "b[3..0]" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "b[3..0]" (rect 21 59 56 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "sel_b" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "sel_b" (rect 21 75 51 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "sel_zero" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "sel_zero" (rect 21 91 70 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 144 32) + (output) + (text "Q[3..0]" (rect 0 0 37 14)(font "Arial" (font_size 8))) + (text "Q[3..0]" (rect 86 27 123 41)(font "Arial" (font_size 8))) + (line (pt 144 32)(pt 128 32)(line_width 3)) + ) + (port + (pt 144 48) + (output) + (text "ena" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "ena" (rect 102 43 123 57)(font "Arial" (font_size 8))) + (line (pt 144 48)(pt 128 48)) + ) + (drawing + (rectangle (rect 16 16 128 112)) + ) +) diff --git a/cpu/alu/alu_mux_3z.v b/cpu/alu/alu_mux_3z.v new file mode 100644 index 0000000..67d3bd4 --- /dev/null +++ b/cpu/alu/alu_mux_3z.v @@ -0,0 +1,59 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Fri Oct 31 21:08:42 2014" + +module alu_mux_3z( + sel_zero, + sel_a, + sel_b, + a, + b, + ena, + Q +); + + +input wire sel_zero; +input wire sel_a; +input wire sel_b; +input wire [3:0] a; +input wire [3:0] b; +output wire ena; +output wire [3:0] Q; + +wire [3:0] SYNTHESIZED_WIRE_0; +wire SYNTHESIZED_WIRE_1; +wire [3:0] SYNTHESIZED_WIRE_2; +wire [3:0] SYNTHESIZED_WIRE_3; + + + + +assign SYNTHESIZED_WIRE_3 = a & {sel_a,sel_a,sel_a,sel_a}; + +assign Q = SYNTHESIZED_WIRE_0 & {SYNTHESIZED_WIRE_1,SYNTHESIZED_WIRE_1,SYNTHESIZED_WIRE_1,SYNTHESIZED_WIRE_1}; + +assign SYNTHESIZED_WIRE_1 = ~sel_zero; + +assign SYNTHESIZED_WIRE_0 = SYNTHESIZED_WIRE_2 | SYNTHESIZED_WIRE_3; + +assign ena = sel_a | sel_b | sel_zero; + +assign SYNTHESIZED_WIRE_2 = b & {sel_b,sel_b,sel_b,sel_b}; + + +endmodule diff --git a/cpu/alu/alu_mux_4.bdf b/cpu/alu/alu_mux_4.bdf new file mode 100644 index 0000000..8f1603c --- /dev/null +++ b/cpu/alu/alu_mux_4.bdf @@ -0,0 +1,556 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 192 208 208) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in0" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 240 208 256) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in1" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 288 208 304) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in2" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 336 208 352) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in3" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 32 208 48) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "sel[1..0]" (rect 9 0 49 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 568 256 744 272) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "out" (rect 90 0 105 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 264 88 296 136) + (text "NOT" (rect 22 1 32 21)(font "Arial" (font_size 6))(vertical)) + (text "not1" (rect -1 3 11 24)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 13)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 39)(pt 16 48)) + ) + (drawing + (line (pt 7 13)(pt 25 13)) + (line (pt 25 13)(pt 16 31)) + (line (pt 7 13)(pt 16 31)) + (circle (rect 12 31 20 39)) + ) + (rotate270) +) +(symbol + (rect 312 88 344 136) + (text "NOT" (rect 22 1 32 21)(font "Arial" (font_size 6))(vertical)) + (text "not0" (rect -1 3 11 24)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 13)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 39)(pt 16 48)) + ) + (drawing + (line (pt 7 13)(pt 25 13)) + (line (pt 25 13)(pt 16 31)) + (line (pt 7 13)(pt 16 31)) + (circle (rect 12 31 20 39)) + ) + (rotate270) +) +(symbol + (rect 376 168 440 216) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 37 20 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 376 216 440 264) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst1" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 376 264 440 312) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst2" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 376 312 440 360) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst3" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 488 224 552 304) + (text "OR4" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst4" (rect 3 69 26 81)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 15 48)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 13 64)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (line (pt 48 40)(pt 64 40)) + ) + (drawing + (line (pt 13 67)(pt 13 51)) + (line (pt 25 52)(pt 13 52)) + (line (pt 13 12)(pt 13 29)) + (line (pt 13 29)(pt 25 29)) + (arc (pt 7 45)(pt 7 35)(rect -14 24 19 57)) + (arc (pt 49 40)(pt 25 29)(rect -6 29 57 92)) + (arc (pt 25 51)(pt 49 40)(rect -6 -11 57 52)) + ) +) +(connector + (text "sel[0]" (rect 312 49 324 76)(font "Arial" )(vertical)) + (pt 328 88) + (pt 328 40) +) +(connector + (text "sel[1]" (rect 264 49 276 76)(font "Arial" )(vertical)) + (pt 280 88) + (pt 280 40) +) +(connector + (pt 328 40) + (pt 352 40) + (bus) +) +(connector + (pt 304 40) + (pt 328 40) + (bus) +) +(connector + (pt 376 184) + (pt 328 184) +) +(connector + (pt 376 192) + (pt 280 192) +) +(connector + (pt 472 192) + (pt 472 240) +) +(connector + (pt 472 240) + (pt 488 240) +) +(connector + (pt 440 192) + (pt 472 192) +) +(connector + (pt 488 288) + (pt 472 288) +) +(connector + (pt 472 288) + (pt 472 336) +) +(connector + (pt 472 336) + (pt 440 336) +) +(connector + (pt 488 256) + (pt 456 256) +) +(connector + (pt 456 256) + (pt 456 240) +) +(connector + (pt 488 272) + (pt 456 272) +) +(connector + (pt 456 272) + (pt 456 288) +) +(connector + (pt 456 240) + (pt 440 240) +) +(connector + (pt 456 288) + (pt 440 288) +) +(connector + (pt 552 264) + (pt 568 264) +) +(connector + (pt 376 232) + (pt 352 232) +) +(connector + (pt 376 240) + (pt 280 240) +) +(connector + (pt 280 136) + (pt 280 192) +) +(connector + (pt 280 192) + (pt 280 240) +) +(connector + (pt 376 280) + (pt 328 280) +) +(connector + (pt 328 136) + (pt 328 184) +) +(connector + (pt 328 184) + (pt 328 280) +) +(connector + (pt 376 288) + (pt 304 288) +) +(connector + (pt 376 328) + (pt 352 328) +) +(connector + (text "sel[0]" (rect 336 48 348 75)(font "Arial" )(vertical)) + (pt 352 40) + (pt 352 232) +) +(connector + (pt 352 232) + (pt 352 328) +) +(connector + (pt 376 336) + (pt 304 336) +) +(connector + (text "sel[1]" (rect 288 49 300 76)(font "Arial" )(vertical)) + (pt 304 40) + (pt 304 288) +) +(connector + (pt 304 288) + (pt 304 336) +) +(connector + (pt 280 40) + (pt 304 40) + (bus) +) +(connector + (pt 208 40) + (pt 280 40) + (bus) +) +(connector + (pt 208 200) + (pt 376 200) +) +(connector + (pt 208 248) + (pt 376 248) +) +(connector + (pt 208 296) + (pt 376 296) +) +(connector + (pt 208 344) + (pt 376 344) +) +(junction (pt 328 40)) +(junction (pt 304 40)) +(junction (pt 280 40)) +(junction (pt 280 192)) +(junction (pt 328 184)) +(junction (pt 352 232)) +(junction (pt 304 288)) +(title_block + (rect 32 392 289 444) + (name "title-custom-small") + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "June 21, 2014" (rect 56 3 136 17)(font "Arial" (font_size 8)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "alu_mux_4" (rect 43 2 117 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.0" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/alu/alu_mux_4.bsf b/cpu/alu/alu_mux_4.bsf new file mode 100644 index 0000000..9a4f0f2 --- /dev/null +++ b/cpu/alu/alu_mux_4.bsf @@ -0,0 +1,71 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 128 144) + (text "alu_mux_4" (rect 5 0 66 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 112 25 124)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "sel[1..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[1..0]" (rect 21 27 65 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "in0" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in0" (rect 21 43 37 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "in1" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in1" (rect 21 59 37 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "in2" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in2" (rect 21 75 37 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "in3" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in3" (rect 21 91 37 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 112 32) + (output) + (text "out" (rect 0 0 17 14)(font "Arial" (font_size 8))) + (text "out" (rect 74 27 91 41)(font "Arial" (font_size 8))) + (line (pt 112 32)(pt 96 32)) + ) + (drawing + (rectangle (rect 16 16 96 112)) + ) +) diff --git a/cpu/alu/alu_mux_4.v b/cpu/alu/alu_mux_4.v new file mode 100644 index 0000000..27f7823 --- /dev/null +++ b/cpu/alu/alu_mux_4.v @@ -0,0 +1,61 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Mon Oct 13 12:05:38 2014" + +module alu_mux_4( + in0, + in1, + in2, + in3, + sel, + out +); + + +input wire in0; +input wire in1; +input wire in2; +input wire in3; +input wire [1:0] sel; +output wire out; + +wire SYNTHESIZED_WIRE_8; +wire SYNTHESIZED_WIRE_9; +wire SYNTHESIZED_WIRE_4; +wire SYNTHESIZED_WIRE_5; +wire SYNTHESIZED_WIRE_6; +wire SYNTHESIZED_WIRE_7; + + + + +assign SYNTHESIZED_WIRE_4 = SYNTHESIZED_WIRE_8 & SYNTHESIZED_WIRE_9 & in0; + +assign SYNTHESIZED_WIRE_7 = sel[0] & SYNTHESIZED_WIRE_9 & in1; + +assign SYNTHESIZED_WIRE_5 = SYNTHESIZED_WIRE_8 & sel[1] & in2; + +assign SYNTHESIZED_WIRE_6 = sel[0] & sel[1] & in3; + +assign out = SYNTHESIZED_WIRE_4 | SYNTHESIZED_WIRE_5 | SYNTHESIZED_WIRE_6 | SYNTHESIZED_WIRE_7; + +assign SYNTHESIZED_WIRE_8 = ~sel[0]; + +assign SYNTHESIZED_WIRE_9 = ~sel[1]; + + +endmodule diff --git a/cpu/alu/alu_mux_8.bdf b/cpu/alu/alu_mux_8.bdf new file mode 100644 index 0000000..18ba069 --- /dev/null +++ b/cpu/alu/alu_mux_8.bdf @@ -0,0 +1,1114 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 24 208 40) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "sel[2..0]" (rect 9 0 49 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 184 208 200) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in0" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 264 208 280) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in1" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 344 208 360) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in2" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 424 208 440) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in3" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 504 208 520) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in4" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 584 208 600) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in5" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 664 208 680) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in6" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 744 208 760) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in7" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 632 440 808 456) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "out" (rect 90 0 105 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 424 128 488 208) + (text "AND4" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and0" (rect 3 69 26 81)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 18 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 18 32)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 18 48)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 18 64)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (line (pt 46 40)(pt 64 40)) + ) + (drawing + (line (pt 18 28)(pt 34 28)) + (line (pt 18 52)(pt 18 28)) + (line (pt 18 67)(pt 18 13)) + (line (pt 34 53)(pt 18 53)) + (arc (pt 34 52)(pt 34 28)(rect 22 28 47 53)) + ) +) +(symbol + (rect 424 208 488 288) + (text "AND4" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and1" (rect 3 69 26 81)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 18 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 18 32)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 18 48)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 18 64)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (line (pt 46 40)(pt 64 40)) + ) + (drawing + (line (pt 18 28)(pt 34 28)) + (line (pt 18 52)(pt 18 28)) + (line (pt 18 67)(pt 18 13)) + (line (pt 34 53)(pt 18 53)) + (arc (pt 34 52)(pt 34 28)(rect 22 28 47 53)) + ) +) +(symbol + (rect 424 288 488 368) + (text "AND4" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and2" (rect 3 69 26 81)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 18 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 18 32)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 18 48)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 18 64)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (line (pt 46 40)(pt 64 40)) + ) + (drawing + (line (pt 18 28)(pt 34 28)) + (line (pt 18 52)(pt 18 28)) + (line (pt 18 67)(pt 18 13)) + (line (pt 34 53)(pt 18 53)) + (arc (pt 34 52)(pt 34 28)(rect 22 28 47 53)) + ) +) +(symbol + (rect 424 368 488 448) + (text "AND4" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and3" (rect 3 69 26 81)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 18 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 18 32)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 18 48)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 18 64)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (line (pt 46 40)(pt 64 40)) + ) + (drawing + (line (pt 18 28)(pt 34 28)) + (line (pt 18 52)(pt 18 28)) + (line (pt 18 67)(pt 18 13)) + (line (pt 34 53)(pt 18 53)) + (arc (pt 34 52)(pt 34 28)(rect 22 28 47 53)) + ) +) +(symbol + (rect 424 448 488 528) + (text "AND4" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and4" (rect 3 69 26 81)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 18 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 18 32)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 18 48)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 18 64)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (line (pt 46 40)(pt 64 40)) + ) + (drawing + (line (pt 18 28)(pt 34 28)) + (line (pt 18 52)(pt 18 28)) + (line (pt 18 67)(pt 18 13)) + (line (pt 34 53)(pt 18 53)) + (arc (pt 34 52)(pt 34 28)(rect 22 28 47 53)) + ) +) +(symbol + (rect 424 528 488 608) + (text "AND4" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and5" (rect 3 69 26 81)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 18 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 18 32)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 18 48)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 18 64)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (line (pt 46 40)(pt 64 40)) + ) + (drawing + (line (pt 18 28)(pt 34 28)) + (line (pt 18 52)(pt 18 28)) + (line (pt 18 67)(pt 18 13)) + (line (pt 34 53)(pt 18 53)) + (arc (pt 34 52)(pt 34 28)(rect 22 28 47 53)) + ) +) +(symbol + (rect 424 608 488 688) + (text "AND4" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and6" (rect 3 69 26 81)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 18 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 18 32)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 18 48)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 18 64)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (line (pt 46 40)(pt 64 40)) + ) + (drawing + (line (pt 18 28)(pt 34 28)) + (line (pt 18 52)(pt 18 28)) + (line (pt 18 67)(pt 18 13)) + (line (pt 34 53)(pt 18 53)) + (arc (pt 34 52)(pt 34 28)(rect 22 28 47 53)) + ) +) +(symbol + (rect 424 688 488 768) + (text "AND4" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and7" (rect 3 69 26 81)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 18 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 18 32)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 18 48)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 18 64)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (line (pt 46 40)(pt 64 40)) + ) + (drawing + (line (pt 18 28)(pt 34 28)) + (line (pt 18 52)(pt 18 28)) + (line (pt 18 67)(pt 18 13)) + (line (pt 34 53)(pt 18 53)) + (arc (pt 34 52)(pt 34 28)(rect 22 28 47 53)) + ) +) +(symbol + (rect 216 80 248 128) + (text "NOT" (rect 22 1 32 21)(font "Arial" (font_size 6))(vertical)) + (text "not2" (rect -1 3 11 24)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 13)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 39)(pt 16 48)) + ) + (drawing + (line (pt 7 13)(pt 25 13)) + (line (pt 25 13)(pt 16 31)) + (line (pt 7 13)(pt 16 31)) + (circle (rect 12 31 20 39)) + ) + (rotate270) +) +(symbol + (rect 264 80 296 128) + (text "NOT" (rect 22 1 32 21)(font "Arial" (font_size 6))(vertical)) + (text "not1" (rect -1 3 11 24)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 13)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 39)(pt 16 48)) + ) + (drawing + (line (pt 7 13)(pt 25 13)) + (line (pt 25 13)(pt 16 31)) + (line (pt 7 13)(pt 16 31)) + (circle (rect 12 31 20 39)) + ) + (rotate270) +) +(symbol + (rect 312 80 344 128) + (text "NOT" (rect 22 1 32 21)(font "Arial" (font_size 6))(vertical)) + (text "not0" (rect -1 3 11 24)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 13)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 39)(pt 16 48)) + ) + (drawing + (line (pt 7 13)(pt 25 13)) + (line (pt 25 13)(pt 16 31)) + (line (pt 7 13)(pt 16 31)) + (circle (rect 12 31 20 39)) + ) + (rotate270) +) +(symbol + (rect 568 376 632 520) + (text "OR8" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 133 20 145)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 14 48)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 96) + (input) + (text "IN6" (rect 2 87 19 99)(font "Courier New" (bold))(invisible)) + (text "IN6" (rect 2 87 19 99)(font "Courier New" (bold))(invisible)) + (line (pt 0 96)(pt 14 96)) + ) + (port + (pt 0 80) + (input) + (text "IN5" (rect 2 71 19 83)(font "Courier New" (bold))(invisible)) + (text "IN5" (rect 2 71 19 83)(font "Courier New" (bold))(invisible)) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 112) + (input) + (text "IN7" (rect 2 103 19 115)(font "Courier New" (bold))(invisible)) + (text "IN7" (rect 2 103 19 115)(font "Courier New" (bold))(invisible)) + (line (pt 0 112)(pt 14 112)) + ) + (port + (pt 0 128) + (input) + (text "IN8" (rect 2 119 19 131)(font "Courier New" (bold))(invisible)) + (text "IN8" (rect 2 119 19 131)(font "Courier New" (bold))(invisible)) + (line (pt 0 128)(pt 14 128)) + ) + (port + (pt 64 72) + (output) + (text "OUT" (rect 48 63 65 75)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 63 65 75)(font "Courier New" (bold))(invisible)) + (line (pt 48 72)(pt 64 72)) + ) + (drawing + (line (pt 14 131)(pt 14 83)) + (line (pt 14 84)(pt 25 84)) + (line (pt 14 61)(pt 25 61)) + (line (pt 14 61)(pt 14 13)) + (arc (pt 25 83)(pt 49 72)(rect -6 21 57 84)) + (arc (pt 49 72)(pt 25 61)(rect -6 61 57 124)) + (arc (pt 7 77)(pt 7 67)(rect -14 56 19 89)) + ) +) +(connector + (text "sel[0]" (rect 312 41 324 68)(font "Arial" )(vertical)) + (pt 328 80) + (pt 328 32) +) +(connector + (text "sel[1]" (rect 264 41 276 68)(font "Arial" )(vertical)) + (pt 280 80) + (pt 280 32) +) +(connector + (text "sel[2]" (rect 216 41 228 68)(font "Arial" )(vertical)) + (pt 232 80) + (pt 232 32) +) +(connector + (pt 424 144) + (pt 328 144) +) +(connector + (pt 424 160) + (pt 280 160) +) +(connector + (pt 424 176) + (pt 232 176) +) +(connector + (pt 424 256) + (pt 232 256) +) +(connector + (pt 424 336) + (pt 232 336) +) +(connector + (pt 424 416) + (pt 232 416) +) +(connector + (pt 424 496) + (pt 256 496) +) +(connector + (pt 424 576) + (pt 256 576) +) +(connector + (pt 424 656) + (pt 256 656) +) +(connector + (pt 424 736) + (pt 256 736) +) +(connector + (pt 424 240) + (pt 280 240) +) +(connector + (pt 424 320) + (pt 304 320) +) +(connector + (pt 424 400) + (pt 304 400) +) +(connector + (pt 424 480) + (pt 280 480) +) +(connector + (pt 424 560) + (pt 280 560) +) +(connector + (pt 424 640) + (pt 304 640) +) +(connector + (pt 424 720) + (pt 304 720) +) +(connector + (pt 424 224) + (pt 352 224) +) +(connector + (pt 424 304) + (pt 328 304) +) +(connector + (pt 424 384) + (pt 352 384) +) +(connector + (pt 424 464) + (pt 328 464) +) +(connector + (pt 424 544) + (pt 352 544) +) +(connector + (pt 424 624) + (pt 328 624) +) +(connector + (pt 424 704) + (pt 352 704) +) +(connector + (pt 488 168) + (pt 552 168) +) +(connector + (pt 488 248) + (pt 536 248) +) +(connector + (pt 488 328) + (pt 520 328) +) +(connector + (pt 488 568) + (pt 520 568) +) +(connector + (pt 488 648) + (pt 536 648) +) +(connector + (pt 488 728) + (pt 552 728) +) +(connector + (pt 552 168) + (pt 552 392) +) +(connector + (pt 536 248) + (pt 536 408) +) +(connector + (pt 552 728) + (pt 552 504) +) +(connector + (pt 536 648) + (pt 536 488) +) +(connector + (pt 520 568) + (pt 520 472) +) +(connector + (pt 520 328) + (pt 520 424) +) +(connector + (pt 488 408) + (pt 504 408) +) +(connector + (pt 504 408) + (pt 504 440) +) +(connector + (pt 488 488) + (pt 504 488) +) +(connector + (pt 504 488) + (pt 504 456) +) +(connector + (pt 552 392) + (pt 568 392) +) +(connector + (pt 520 424) + (pt 568 424) +) +(connector + (pt 536 408) + (pt 568 408) +) +(connector + (pt 504 440) + (pt 568 440) +) +(connector + (pt 520 472) + (pt 568 472) +) +(connector + (pt 504 456) + (pt 568 456) +) +(connector + (pt 536 488) + (pt 568 488) +) +(connector + (pt 552 504) + (pt 568 504) +) +(connector + (pt 208 192) + (pt 424 192) +) +(connector + (pt 208 272) + (pt 424 272) +) +(connector + (pt 208 352) + (pt 424 352) +) +(connector + (pt 208 432) + (pt 424 432) +) +(connector + (pt 208 512) + (pt 424 512) +) +(connector + (pt 208 592) + (pt 424 592) +) +(connector + (pt 208 672) + (pt 424 672) +) +(connector + (pt 208 752) + (pt 424 752) +) +(connector + (text "sel[2]" (rect 240 41 252 68)(font "Arial" )(vertical)) + (pt 256 32) + (pt 256 496) +) +(connector + (pt 256 496) + (pt 256 576) +) +(connector + (pt 256 576) + (pt 256 656) +) +(connector + (pt 256 656) + (pt 256 736) +) +(connector + (text "sel[1]" (rect 288 41 300 68)(font "Arial" )(vertical)) + (pt 304 32) + (pt 304 320) +) +(connector + (pt 304 320) + (pt 304 400) +) +(connector + (pt 304 400) + (pt 304 640) +) +(connector + (pt 304 640) + (pt 304 720) +) +(connector + (text "sel[0]" (rect 336 40 348 67)(font "Arial" )(vertical)) + (pt 352 32) + (pt 352 224) +) +(connector + (pt 352 224) + (pt 352 384) +) +(connector + (pt 352 384) + (pt 352 544) +) +(connector + (pt 352 544) + (pt 352 704) +) +(connector + (pt 304 32) + (pt 328 32) + (bus) +) +(connector + (pt 328 32) + (pt 352 32) + (bus) +) +(connector + (pt 232 128) + (pt 232 176) +) +(connector + (pt 232 176) + (pt 232 256) +) +(connector + (pt 232 256) + (pt 232 336) +) +(connector + (pt 232 336) + (pt 232 416) +) +(connector + (pt 280 128) + (pt 280 160) +) +(connector + (pt 280 160) + (pt 280 240) +) +(connector + (pt 280 240) + (pt 280 480) +) +(connector + (pt 280 480) + (pt 280 560) +) +(connector + (pt 328 128) + (pt 328 144) +) +(connector + (pt 328 144) + (pt 328 304) +) +(connector + (pt 328 304) + (pt 328 464) +) +(connector + (pt 328 464) + (pt 328 624) +) +(connector + (pt 280 32) + (pt 304 32) + (bus) +) +(connector + (pt 208 32) + (pt 232 32) + (bus) +) +(connector + (pt 232 32) + (pt 256 32) + (bus) +) +(connector + (pt 256 32) + (pt 280 32) + (bus) +) +(junction (pt 256 496)) +(junction (pt 256 576)) +(junction (pt 256 656)) +(junction (pt 304 320)) +(junction (pt 304 400)) +(junction (pt 304 640)) +(junction (pt 352 224)) +(junction (pt 352 384)) +(junction (pt 352 544)) +(junction (pt 328 32)) +(junction (pt 280 32)) +(junction (pt 304 32)) +(junction (pt 232 176)) +(junction (pt 232 256)) +(junction (pt 232 336)) +(junction (pt 280 160)) +(junction (pt 280 240)) +(junction (pt 280 480)) +(junction (pt 328 144)) +(junction (pt 328 304)) +(junction (pt 328 464)) +(junction (pt 256 32)) +(junction (pt 232 32)) +(title_block + (rect 32 800 289 852) + (name "title-custom-small") + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 18, 2014" (rect 56 3 132 17)(font "Arial" (font_size 8)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "alu_mux_8" (rect 43 2 117 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.0" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/alu/alu_mux_8.bsf b/cpu/alu/alu_mux_8.bsf new file mode 100644 index 0000000..4cdb030 --- /dev/null +++ b/cpu/alu/alu_mux_8.bsf @@ -0,0 +1,99 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 128 208) + (text "alu_mux_8" (rect 5 0 66 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 176 25 188)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "sel[2..0]" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "sel[2..0]" (rect 21 27 65 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "in0" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in0" (rect 21 43 37 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "in1" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in1" (rect 21 59 37 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "in2" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in2" (rect 21 75 37 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "in3" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in3" (rect 21 91 37 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "in4" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in4" (rect 21 107 37 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 0 128) + (input) + (text "in5" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in5" (rect 21 123 37 137)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)) + ) + (port + (pt 0 144) + (input) + (text "in6" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in6" (rect 21 139 37 153)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)) + ) + (port + (pt 0 160) + (input) + (text "in7" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "in7" (rect 21 155 37 169)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 16 160)) + ) + (port + (pt 112 32) + (output) + (text "out" (rect 0 0 17 14)(font "Arial" (font_size 8))) + (text "out" (rect 74 27 91 41)(font "Arial" (font_size 8))) + (line (pt 112 32)(pt 96 32)) + ) + (drawing + (rectangle (rect 16 16 96 176)) + ) +) diff --git a/cpu/alu/alu_mux_8.v b/cpu/alu/alu_mux_8.v new file mode 100644 index 0000000..37d01c6 --- /dev/null +++ b/cpu/alu/alu_mux_8.v @@ -0,0 +1,84 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Mon Oct 13 12:04:13 2014" + +module alu_mux_8( + in0, + in1, + in2, + in3, + in4, + in5, + in6, + in7, + sel, + out +); + + +input wire in0; +input wire in1; +input wire in2; +input wire in3; +input wire in4; +input wire in5; +input wire in6; +input wire in7; +input wire [2:0] sel; +output wire out; + +wire SYNTHESIZED_WIRE_20; +wire SYNTHESIZED_WIRE_21; +wire SYNTHESIZED_WIRE_22; +wire SYNTHESIZED_WIRE_12; +wire SYNTHESIZED_WIRE_13; +wire SYNTHESIZED_WIRE_14; +wire SYNTHESIZED_WIRE_15; +wire SYNTHESIZED_WIRE_16; +wire SYNTHESIZED_WIRE_17; +wire SYNTHESIZED_WIRE_18; +wire SYNTHESIZED_WIRE_19; + + + + +assign SYNTHESIZED_WIRE_12 = SYNTHESIZED_WIRE_20 & SYNTHESIZED_WIRE_21 & SYNTHESIZED_WIRE_22 & in0; + +assign SYNTHESIZED_WIRE_14 = sel[0] & SYNTHESIZED_WIRE_21 & SYNTHESIZED_WIRE_22 & in1; + +assign SYNTHESIZED_WIRE_13 = SYNTHESIZED_WIRE_20 & sel[1] & SYNTHESIZED_WIRE_22 & in2; + +assign SYNTHESIZED_WIRE_15 = sel[0] & sel[1] & SYNTHESIZED_WIRE_22 & in3; + +assign SYNTHESIZED_WIRE_17 = SYNTHESIZED_WIRE_20 & SYNTHESIZED_WIRE_21 & sel[2] & in4; + +assign SYNTHESIZED_WIRE_16 = sel[0] & SYNTHESIZED_WIRE_21 & sel[2] & in5; + +assign SYNTHESIZED_WIRE_18 = SYNTHESIZED_WIRE_20 & sel[1] & sel[2] & in6; + +assign SYNTHESIZED_WIRE_19 = sel[0] & sel[1] & sel[2] & in7; + +assign out = SYNTHESIZED_WIRE_12 | SYNTHESIZED_WIRE_13 | SYNTHESIZED_WIRE_14 | SYNTHESIZED_WIRE_15 | SYNTHESIZED_WIRE_16 | SYNTHESIZED_WIRE_17 | SYNTHESIZED_WIRE_18 | SYNTHESIZED_WIRE_19; + +assign SYNTHESIZED_WIRE_20 = ~sel[0]; + +assign SYNTHESIZED_WIRE_21 = ~sel[1]; + +assign SYNTHESIZED_WIRE_22 = ~sel[2]; + + +endmodule diff --git a/cpu/alu/alu_prep_daa.bdf b/cpu/alu/alu_prep_daa.bdf new file mode 100644 index 0000000..58c347e --- /dev/null +++ b/cpu/alu/alu_prep_daa.bdf @@ -0,0 +1,624 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 24 48 200 64) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "low[3..0]" (rect 9 0 50 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 192 200 208) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "high[3..0]" (rect 9 0 55 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 552 80 728 96) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "low_gt_9" (rect 90 0 132 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 552 304 728 320) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "high_eq_9" (rect 90 0 139 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 552 224 728 240) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "high_gt_9" (rect 90 0 137 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 384 88 448 136) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst3" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 464 64 528 112) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst4" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 384 40 448 88) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst1" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 384 232 448 280) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst5" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 464 208 528 256) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst6" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 384 184 448 232) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst2" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 384 304 432 336) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 21 20 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 384 336 432 368) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst7" (rect 3 21 26 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 464 272 528 352) + (text "AND4" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst8" (rect 3 69 26 81)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 18 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 18 32)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 18 48)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 18 64)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 62 43)(font "Courier New" (bold))(invisible)) + (line (pt 46 40)(pt 64 40)) + ) + (drawing + (line (pt 18 28)(pt 34 28)) + (line (pt 18 52)(pt 18 28)) + (line (pt 18 67)(pt 18 13)) + (line (pt 34 53)(pt 18 53)) + (arc (pt 34 52)(pt 34 28)(rect 22 28 47 53)) + ) +) +(connector + (pt 448 64) + (pt 456 64) +) +(connector + (pt 456 64) + (pt 456 80) +) +(connector + (pt 456 80) + (pt 464 80) +) +(connector + (pt 448 112) + (pt 456 112) +) +(connector + (pt 456 112) + (pt 456 96) +) +(connector + (pt 456 96) + (pt 464 96) +) +(connector + (text "low[2]" (rect 233 56 261 68)(font "Arial" )) + (pt 224 72) + (pt 384 72) +) +(connector + (pt 384 104) + (pt 360 104) +) +(connector + (pt 360 104) + (pt 360 56) +) +(connector + (text "low[1]" (rect 233 104 261 116)(font "Arial" )) + (pt 384 120) + (pt 224 120) +) +(connector + (pt 448 208) + (pt 456 208) +) +(connector + (pt 456 208) + (pt 456 224) +) +(connector + (pt 456 224) + (pt 464 224) +) +(connector + (pt 448 256) + (pt 456 256) +) +(connector + (pt 456 256) + (pt 456 240) +) +(connector + (pt 456 240) + (pt 464 240) +) +(connector + (pt 384 248) + (pt 360 248) +) +(connector + (text "high[0]" (rect 231 288 264 300)(font "Arial" )) + (pt 464 304) + (pt 224 304) +) +(connector + (pt 464 288) + (pt 360 288) +) +(connector + (pt 336 320) + (pt 384 320) +) +(connector + (pt 336 216) + (pt 336 320) +) +(connector + (pt 312 352) + (pt 384 352) +) +(connector + (pt 312 264) + (pt 312 352) +) +(connector + (pt 448 352) + (pt 448 336) +) +(connector + (pt 448 336) + (pt 464 336) +) +(connector + (pt 224 56) + (pt 224 72) + (bus) +) +(connector + (pt 224 72) + (pt 224 120) + (bus) +) +(connector + (text "low[3]" (rect 233 40 261 52)(font "Arial" )) + (pt 224 56) + (pt 360 56) +) +(connector + (pt 360 56) + (pt 384 56) +) +(connector + (text "high[3]" (rect 233 184 266 196)(font "Arial" )) + (pt 224 200) + (pt 360 200) +) +(connector + (pt 360 200) + (pt 384 200) +) +(connector + (pt 360 200) + (pt 360 248) +) +(connector + (pt 360 248) + (pt 360 288) +) +(connector + (text "high[2]" (rect 233 200 266 212)(font "Arial" )) + (pt 224 216) + (pt 336 216) +) +(connector + (pt 336 216) + (pt 384 216) +) +(connector + (pt 224 200) + (pt 224 216) + (bus) +) +(connector + (pt 224 216) + (pt 224 264) + (bus) +) +(connector + (pt 224 264) + (pt 224 304) + (bus) +) +(connector + (text "high[1]" (rect 233 248 266 260)(font "Arial" )) + (pt 224 264) + (pt 312 264) +) +(connector + (pt 312 264) + (pt 384 264) +) +(connector + (pt 528 88) + (pt 552 88) +) +(connector + (pt 528 232) + (pt 552 232) +) +(connector + (pt 432 320) + (pt 464 320) +) +(connector + (pt 432 352) + (pt 448 352) +) +(connector + (pt 528 312) + (pt 552 312) +) +(connector + (pt 200 56) + (pt 224 56) + (bus) +) +(connector + (pt 224 200) + (pt 200 200) + (bus) +) +(junction (pt 224 72)) +(junction (pt 360 56)) +(junction (pt 224 56)) +(junction (pt 360 248)) +(junction (pt 360 200)) +(junction (pt 336 216)) +(junction (pt 224 200)) +(junction (pt 224 216)) +(junction (pt 312 264)) +(junction (pt 224 264)) +(text "A" (rect 272 40 281 54)(font "Arial" (font_size 8))) +(text "B" (rect 272 56 280 70)(font "Arial" (font_size 8))) +(text "C" (rect 272 104 280 118)(font "Arial" (font_size 8))) +(text "A" (rect 272 184 281 198)(font "Arial" (font_size 8))) +(text "B" (rect 272 200 280 214)(font "Arial" (font_size 8))) +(text "C" (rect 272 248 280 262)(font "Arial" (font_size 8))) +(text "D" (rect 272 288 280 302)(font "Arial" (font_size 8))) +(text "n>9 : A * B + A * C" (rect 560 152 668 166)(font "Arial" (font_size 8))) +(text "n==9 : A * /B * /C * D" (rect 560 280 682 294)(font "Arial" (font_size 8))) +(title_block + (rect 32 400 289 452) + (name "title-custom-small") + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 18, 2014" (rect 56 3 132 17)(font "Arial" (font_size 8)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "alu_prep_daa" (rect 43 2 135 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.0" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/alu/alu_prep_daa.bsf b/cpu/alu/alu_prep_daa.bsf new file mode 100644 index 0000000..802ad08 --- /dev/null +++ b/cpu/alu/alu_prep_daa.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 184 112) + (text "alu_prep_daa" (rect 5 0 82 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 80 25 92)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "low[3..0]" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "low[3..0]" (rect 21 27 70 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "high[3..0]" (rect 0 0 51 14)(font "Arial" (font_size 8))) + (text "high[3..0]" (rect 21 43 72 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 168 32) + (output) + (text "low_gt_9" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "low_gt_9" (rect 94 27 147 41)(font "Arial" (font_size 8))) + (line (pt 168 32)(pt 152 32)) + ) + (port + (pt 168 48) + (output) + (text "high_gt_9" (rect 0 0 55 14)(font "Arial" (font_size 8))) + (text "high_gt_9" (rect 92 43 147 57)(font "Arial" (font_size 8))) + (line (pt 168 48)(pt 152 48)) + ) + (port + (pt 168 64) + (output) + (text "high_eq_9" (rect 0 0 59 14)(font "Arial" (font_size 8))) + (text "high_eq_9" (rect 88 59 147 73)(font "Arial" (font_size 8))) + (line (pt 168 64)(pt 152 64)) + ) + (drawing + (rectangle (rect 16 16 152 80)) + ) +) diff --git a/cpu/alu/alu_prep_daa.v b/cpu/alu/alu_prep_daa.v new file mode 100644 index 0000000..d658fc3 --- /dev/null +++ b/cpu/alu/alu_prep_daa.v @@ -0,0 +1,63 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Mon Oct 13 12:01:36 2014" + +module alu_prep_daa( + high, + low, + low_gt_9, + high_eq_9, + high_gt_9 +); + + +input wire [3:0] high; +input wire [3:0] low; +output wire low_gt_9; +output wire high_eq_9; +output wire high_gt_9; + +wire SYNTHESIZED_WIRE_0; +wire SYNTHESIZED_WIRE_1; +wire SYNTHESIZED_WIRE_2; +wire SYNTHESIZED_WIRE_3; +wire SYNTHESIZED_WIRE_4; +wire SYNTHESIZED_WIRE_5; + + + + +assign SYNTHESIZED_WIRE_4 = ~high[2]; + +assign SYNTHESIZED_WIRE_1 = low[3] & low[2]; + +assign SYNTHESIZED_WIRE_3 = high[3] & high[2]; + +assign SYNTHESIZED_WIRE_0 = low[3] & low[1]; + +assign low_gt_9 = SYNTHESIZED_WIRE_0 | SYNTHESIZED_WIRE_1; + +assign SYNTHESIZED_WIRE_2 = high[3] & high[1]; + +assign high_gt_9 = SYNTHESIZED_WIRE_2 | SYNTHESIZED_WIRE_3; + +assign SYNTHESIZED_WIRE_5 = ~high[1]; + +assign high_eq_9 = high[3] & high[0] & SYNTHESIZED_WIRE_4 & SYNTHESIZED_WIRE_5; + + +endmodule diff --git a/cpu/alu/alu_select.bdf b/cpu/alu/alu_select.bdf new file mode 100644 index 0000000..dd9075b --- /dev/null +++ b/cpu/alu/alu_select.bdf @@ -0,0 +1,653 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 40 40 216 56) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_oe" (rect 9 0 58 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 80 216 96) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_shift_oe" (rect 9 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 104 216 120) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_op2_oe" (rect 9 0 82 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 128 216 144) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_res_oe" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 152 216 168) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_op1_oe" (rect 9 0 82 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 176 216 192) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_bs_oe" (rect 9 0 76 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 232 216 248) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_op1_sel_bus" (rect 9 0 108 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 256 216 272) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_op1_sel_low" (rect 9 0 105 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 280 216 296) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_op1_sel_zero" (rect 9 0 110 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 328 216 344) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_op2_sel_zero" (rect 9 0 110 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 352 216 368) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_op2_sel_bus" (rect 9 0 108 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 376 216 392) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_op2_sel_lq" (rect 9 0 98 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 400 216 416) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_sel_op2_neg" (rect 9 0 108 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 424 216 440) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_sel_op2_high" (rect 9 0 110 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 472 216 488) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_core_R" (rect 9 0 82 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 496 216 512) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_core_V" (rect 9 0 82 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 520 216 536) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_alu_core_S" (rect 9 0 80 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 480 40 656 56) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_oe" (rect 90 0 121 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 80 656 96) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_shift_oe" (rect 90 0 150 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 104 656 120) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_op2_oe" (rect 90 0 145 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 128 656 144) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_res_oe" (rect 90 0 143 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 152 656 168) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_op1_oe" (rect 90 0 145 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 176 656 192) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_bs_oe" (rect 90 0 139 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 232 656 248) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_op1_sel_bus" (rect 90 0 171 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 256 656 272) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_op1_sel_low" (rect 90 0 169 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 280 656 296) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_op1_sel_zero" (rect 90 0 173 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 328 656 344) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_op2_sel_zero" (rect 90 0 173 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 352 656 368) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_op2_sel_bus" (rect 90 0 171 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 376 656 392) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_op2_sel_lq" (rect 90 0 161 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 400 656 416) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_sel_op2_neg" (rect 90 0 171 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 424 656 440) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_sel_op2_high" (rect 90 0 173 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 472 656 488) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_core_R" (rect 90 0 145 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 496 656 512) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_core_V" (rect 90 0 145 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 520 656 536) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "alu_core_S" (rect 90 0 144 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(connector + (pt 216 88) + (pt 480 88) +) +(connector + (pt 216 112) + (pt 480 112) +) +(connector + (pt 216 136) + (pt 480 136) +) +(connector + (pt 216 160) + (pt 480 160) +) +(connector + (pt 216 240) + (pt 480 240) +) +(connector + (pt 216 264) + (pt 480 264) +) +(connector + (pt 216 288) + (pt 480 288) +) +(connector + (pt 216 336) + (pt 480 336) +) +(connector + (pt 216 360) + (pt 480 360) +) +(connector + (pt 216 384) + (pt 480 384) +) +(connector + (pt 216 408) + (pt 480 408) +) +(connector + (pt 216 432) + (pt 480 432) +) +(connector + (pt 216 480) + (pt 480 480) +) +(connector + (pt 216 504) + (pt 480 504) +) +(connector + (pt 216 528) + (pt 480 528) +) +(connector + (pt 216 48) + (pt 480 48) +) +(connector + (pt 216 184) + (pt 480 184) +) +(text "ALU internal bus to db output enable" (rect 232 32 438 46)(font "Arial" (font_size 8))) +(text "Shifter to internal bus" (rect 232 72 353 86)(font "Arial" (font_size 8))) +(text "OP2 to internal bus" (rect 232 96 339 110)(font "Arial" (font_size 8))) +(text "Result to internal bus" (rect 232 120 351 134)(font "Arial" (font_size 8))) +(text "OP1 to internal bus" (rect 232 144 339 158)(font "Arial" (font_size 8))) +(text "Bit selector to internal bus" (rect 232 168 379 182)(font "Arial" (font_size 8))) +(text "OP1 latch selector mux" (rect 288 216 418 230)(font "Arial" (font_size 8))) +(text "OP2 latch selector mux" (rect 288 312 418 326)(font "Arial" (font_size 8))) +(text "ALU core operation" (rect 296 456 406 470)(font "Arial" (font_size 8))) +(title_block + (rect 40 568 297 620) + (name "title-custom-small") + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "July 27, 2014" (rect 56 3 131 17)(font "Arial" (font_size 8)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "alu_select" (rect 43 2 112 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.0" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/alu/alu_select.bsf b/cpu/alu/alu_select.bsf new file mode 100644 index 0000000..611cce1 --- /dev/null +++ b/cpu/alu/alu_select.bsf @@ -0,0 +1,267 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 296 336) + (text "alu_select" (rect 5 0 62 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 304 25 316)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "ctl_alu_oe" (rect 0 0 57 14)(font "Arial" (font_size 8))) + (text "ctl_alu_oe" (rect 21 27 78 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "ctl_alu_shift_oe" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "ctl_alu_shift_oe" (rect 21 43 110 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "ctl_alu_op2_oe" (rect 0 0 86 14)(font "Arial" (font_size 8))) + (text "ctl_alu_op2_oe" (rect 21 59 107 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "ctl_alu_res_oe" (rect 0 0 83 14)(font "Arial" (font_size 8))) + (text "ctl_alu_res_oe" (rect 21 75 104 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "ctl_alu_op1_oe" (rect 0 0 86 14)(font "Arial" (font_size 8))) + (text "ctl_alu_op1_oe" (rect 21 91 107 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "ctl_alu_bs_oe" (rect 0 0 79 14)(font "Arial" (font_size 8))) + (text "ctl_alu_bs_oe" (rect 21 107 100 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 0 128) + (input) + (text "ctl_alu_op1_sel_bus" (rect 0 0 116 14)(font "Arial" (font_size 8))) + (text "ctl_alu_op1_sel_bus" (rect 21 123 137 137)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)) + ) + (port + (pt 0 144) + (input) + (text "ctl_alu_op1_sel_low" (rect 0 0 116 14)(font "Arial" (font_size 8))) + (text "ctl_alu_op1_sel_low" (rect 21 139 137 153)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)) + ) + (port + (pt 0 160) + (input) + (text "ctl_alu_op1_sel_zero" (rect 0 0 121 14)(font "Arial" (font_size 8))) + (text "ctl_alu_op1_sel_zero" (rect 21 155 142 169)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 16 160)) + ) + (port + (pt 0 176) + (input) + (text "ctl_alu_op2_sel_zero" (rect 0 0 121 14)(font "Arial" (font_size 8))) + (text "ctl_alu_op2_sel_zero" (rect 21 171 142 185)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 16 176)) + ) + (port + (pt 0 192) + (input) + (text "ctl_alu_op2_sel_bus" (rect 0 0 116 14)(font "Arial" (font_size 8))) + (text "ctl_alu_op2_sel_bus" (rect 21 187 137 201)(font "Arial" (font_size 8))) + (line (pt 0 192)(pt 16 192)) + ) + (port + (pt 0 208) + (input) + (text "ctl_alu_op2_sel_lq" (rect 0 0 105 14)(font "Arial" (font_size 8))) + (text "ctl_alu_op2_sel_lq" (rect 21 203 126 217)(font "Arial" (font_size 8))) + (line (pt 0 208)(pt 16 208)) + ) + (port + (pt 0 224) + (input) + (text "ctl_alu_sel_op2_neg" (rect 0 0 116 14)(font "Arial" (font_size 8))) + (text "ctl_alu_sel_op2_neg" (rect 21 219 137 233)(font "Arial" (font_size 8))) + (line (pt 0 224)(pt 16 224)) + ) + (port + (pt 0 240) + (input) + (text "ctl_alu_sel_op2_high" (rect 0 0 119 14)(font "Arial" (font_size 8))) + (text "ctl_alu_sel_op2_high" (rect 21 235 140 249)(font "Arial" (font_size 8))) + (line (pt 0 240)(pt 16 240)) + ) + (port + (pt 0 256) + (input) + (text "ctl_alu_core_R" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "ctl_alu_core_R" (rect 21 251 105 265)(font "Arial" (font_size 8))) + (line (pt 0 256)(pt 16 256)) + ) + (port + (pt 0 272) + (input) + (text "ctl_alu_core_V" (rect 0 0 86 14)(font "Arial" (font_size 8))) + (text "ctl_alu_core_V" (rect 21 267 107 281)(font "Arial" (font_size 8))) + (line (pt 0 272)(pt 16 272)) + ) + (port + (pt 0 288) + (input) + (text "ctl_alu_core_S" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "ctl_alu_core_S" (rect 21 283 105 297)(font "Arial" (font_size 8))) + (line (pt 0 288)(pt 16 288)) + ) + (port + (pt 280 32) + (output) + (text "alu_oe" (rect 0 0 37 14)(font "Arial" (font_size 8))) + (text "alu_oe" (rect 222 27 259 41)(font "Arial" (font_size 8))) + (line (pt 280 32)(pt 264 32)) + ) + (port + (pt 280 48) + (output) + (text "alu_shift_oe" (rect 0 0 69 14)(font "Arial" (font_size 8))) + (text "alu_shift_oe" (rect 190 43 259 57)(font "Arial" (font_size 8))) + (line (pt 280 48)(pt 264 48)) + ) + (port + (pt 280 64) + (output) + (text "alu_op2_oe" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "alu_op2_oe" (rect 193 59 259 73)(font "Arial" (font_size 8))) + (line (pt 280 64)(pt 264 64)) + ) + (port + (pt 280 80) + (output) + (text "alu_res_oe" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "alu_res_oe" (rect 196 75 259 89)(font "Arial" (font_size 8))) + (line (pt 280 80)(pt 264 80)) + ) + (port + (pt 280 96) + (output) + (text "alu_op1_oe" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "alu_op1_oe" (rect 193 91 259 105)(font "Arial" (font_size 8))) + (line (pt 280 96)(pt 264 96)) + ) + (port + (pt 280 112) + (output) + (text "alu_bs_oe" (rect 0 0 59 14)(font "Arial" (font_size 8))) + (text "alu_bs_oe" (rect 200 107 259 121)(font "Arial" (font_size 8))) + (line (pt 280 112)(pt 264 112)) + ) + (port + (pt 280 128) + (output) + (text "alu_op1_sel_bus" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "alu_op1_sel_bus" (rect 163 123 259 137)(font "Arial" (font_size 8))) + (line (pt 280 128)(pt 264 128)) + ) + (port + (pt 280 144) + (output) + (text "alu_op1_sel_low" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "alu_op1_sel_low" (rect 163 139 259 153)(font "Arial" (font_size 8))) + (line (pt 280 144)(pt 264 144)) + ) + (port + (pt 280 160) + (output) + (text "alu_op1_sel_zero" (rect 0 0 101 14)(font "Arial" (font_size 8))) + (text "alu_op1_sel_zero" (rect 158 155 259 169)(font "Arial" (font_size 8))) + (line (pt 280 160)(pt 264 160)) + ) + (port + (pt 280 176) + (output) + (text "alu_op2_sel_zero" (rect 0 0 101 14)(font "Arial" (font_size 8))) + (text "alu_op2_sel_zero" (rect 158 171 259 185)(font "Arial" (font_size 8))) + (line (pt 280 176)(pt 264 176)) + ) + (port + (pt 280 192) + (output) + (text "alu_op2_sel_bus" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "alu_op2_sel_bus" (rect 163 187 259 201)(font "Arial" (font_size 8))) + (line (pt 280 192)(pt 264 192)) + ) + (port + (pt 280 208) + (output) + (text "alu_op2_sel_lq" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "alu_op2_sel_lq" (rect 175 203 259 217)(font "Arial" (font_size 8))) + (line (pt 280 208)(pt 264 208)) + ) + (port + (pt 280 224) + (output) + (text "alu_sel_op2_neg" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "alu_sel_op2_neg" (rect 163 219 259 233)(font "Arial" (font_size 8))) + (line (pt 280 224)(pt 264 224)) + ) + (port + (pt 280 240) + (output) + (text "alu_sel_op2_high" (rect 0 0 99 14)(font "Arial" (font_size 8))) + (text "alu_sel_op2_high" (rect 160 235 259 249)(font "Arial" (font_size 8))) + (line (pt 280 240)(pt 264 240)) + ) + (port + (pt 280 256) + (output) + (text "alu_core_R" (rect 0 0 64 14)(font "Arial" (font_size 8))) + (text "alu_core_R" (rect 195 251 259 265)(font "Arial" (font_size 8))) + (line (pt 280 256)(pt 264 256)) + ) + (port + (pt 280 272) + (output) + (text "alu_core_V" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "alu_core_V" (rect 193 267 259 281)(font "Arial" (font_size 8))) + (line (pt 280 272)(pt 264 272)) + ) + (port + (pt 280 288) + (output) + (text "alu_core_S" (rect 0 0 64 14)(font "Arial" (font_size 8))) + (text "alu_core_S" (rect 195 283 259 297)(font "Arial" (font_size 8))) + (line (pt 280 288)(pt 264 288)) + ) + (drawing + (rectangle (rect 16 16 264 304)) + ) +) diff --git a/cpu/alu/alu_select.v b/cpu/alu/alu_select.v new file mode 100644 index 0000000..523091f --- /dev/null +++ b/cpu/alu/alu_select.v @@ -0,0 +1,114 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Mon Oct 13 11:59:39 2014" + +module alu_select( + ctl_alu_oe, + ctl_alu_shift_oe, + ctl_alu_op2_oe, + ctl_alu_res_oe, + ctl_alu_op1_oe, + ctl_alu_bs_oe, + ctl_alu_op1_sel_bus, + ctl_alu_op1_sel_low, + ctl_alu_op1_sel_zero, + ctl_alu_op2_sel_zero, + ctl_alu_op2_sel_bus, + ctl_alu_op2_sel_lq, + ctl_alu_sel_op2_neg, + ctl_alu_sel_op2_high, + ctl_alu_core_R, + ctl_alu_core_V, + ctl_alu_core_S, + alu_oe, + alu_shift_oe, + alu_op2_oe, + alu_res_oe, + alu_op1_oe, + alu_bs_oe, + alu_op1_sel_bus, + alu_op1_sel_low, + alu_op1_sel_zero, + alu_op2_sel_zero, + alu_op2_sel_bus, + alu_op2_sel_lq, + alu_sel_op2_neg, + alu_sel_op2_high, + alu_core_R, + alu_core_V, + alu_core_S +); + + +input wire ctl_alu_oe; +input wire ctl_alu_shift_oe; +input wire ctl_alu_op2_oe; +input wire ctl_alu_res_oe; +input wire ctl_alu_op1_oe; +input wire ctl_alu_bs_oe; +input wire ctl_alu_op1_sel_bus; +input wire ctl_alu_op1_sel_low; +input wire ctl_alu_op1_sel_zero; +input wire ctl_alu_op2_sel_zero; +input wire ctl_alu_op2_sel_bus; +input wire ctl_alu_op2_sel_lq; +input wire ctl_alu_sel_op2_neg; +input wire ctl_alu_sel_op2_high; +input wire ctl_alu_core_R; +input wire ctl_alu_core_V; +input wire ctl_alu_core_S; +output wire alu_oe; +output wire alu_shift_oe; +output wire alu_op2_oe; +output wire alu_res_oe; +output wire alu_op1_oe; +output wire alu_bs_oe; +output wire alu_op1_sel_bus; +output wire alu_op1_sel_low; +output wire alu_op1_sel_zero; +output wire alu_op2_sel_zero; +output wire alu_op2_sel_bus; +output wire alu_op2_sel_lq; +output wire alu_sel_op2_neg; +output wire alu_sel_op2_high; +output wire alu_core_R; +output wire alu_core_V; +output wire alu_core_S; + + +assign alu_oe = ctl_alu_oe; +assign alu_shift_oe = ctl_alu_shift_oe; +assign alu_op2_oe = ctl_alu_op2_oe; +assign alu_res_oe = ctl_alu_res_oe; +assign alu_op1_oe = ctl_alu_op1_oe; +assign alu_bs_oe = ctl_alu_bs_oe; +assign alu_op1_sel_bus = ctl_alu_op1_sel_bus; +assign alu_op1_sel_low = ctl_alu_op1_sel_low; +assign alu_op1_sel_zero = ctl_alu_op1_sel_zero; +assign alu_op2_sel_zero = ctl_alu_op2_sel_zero; +assign alu_op2_sel_bus = ctl_alu_op2_sel_bus; +assign alu_op2_sel_lq = ctl_alu_op2_sel_lq; +assign alu_sel_op2_neg = ctl_alu_sel_op2_neg; +assign alu_sel_op2_high = ctl_alu_sel_op2_high; +assign alu_core_R = ctl_alu_core_R; +assign alu_core_V = ctl_alu_core_V; +assign alu_core_S = ctl_alu_core_S; + + + + +endmodule diff --git a/cpu/alu/alu_shifter_core.bdf b/cpu/alu/alu_shifter_core.bdf new file mode 100644 index 0000000..684baf7 --- /dev/null +++ b/cpu/alu/alu_shifter_core.bdf @@ -0,0 +1,2140 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 16 184 192 200) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "shift_in" (rect 9 0 45 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 16 32 192 48) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "db[7..0]" (rect 9 0 46 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 16 280 192 296) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "shift_right" (rect 9 0 58 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 16 232 192 248) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "shift_left" (rect 9 0 53 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 1712 600 1888 616) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "out_high[3..0]" (rect 90 0 157 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1712 576 1888 592) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "out_low[3..0]" (rect 90 0 152 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1720 32 1896 48) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "shift_db0" (rect 90 0 136 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1720 144 1896 160) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "shift_db7" (rect 90 0 136 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 592 456 640 520) + (text "OR3" (rect 38 1 48 19)(font "Arial" (font_size 6))(vertical)) + (text "or6" (rect -3 3 11 21)(font "Arial" (font_size 8))(vertical)) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 18)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 12 2 24 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 47 33 61)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + ) + (rotate270) +) +(symbol + (rect 760 456 808 520) + (text "OR3" (rect 38 1 48 19)(font "Arial" (font_size 6))(vertical)) + (text "or5" (rect -3 3 11 21)(font "Arial" (font_size 8))(vertical)) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 18)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 12 2 24 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 47 33 61)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + ) + (rotate270) +) +(symbol + (rect 928 456 976 520) + (text "OR3" (rect 38 1 48 19)(font "Arial" (font_size 6))(vertical)) + (text "or4" (rect -3 3 11 21)(font "Arial" (font_size 8))(vertical)) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 18)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 12 2 24 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 47 33 61)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + ) + (rotate270) +) +(symbol + (rect 1096 456 1144 520) + (text "OR3" (rect 38 1 48 19)(font "Arial" (font_size 6))(vertical)) + (text "or3" (rect -3 3 11 21)(font "Arial" (font_size 8))(vertical)) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 18)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 12 2 24 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 47 33 61)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + ) + (rotate270) +) +(symbol + (rect 1264 456 1312 520) + (text "OR3" (rect 38 1 48 19)(font "Arial" (font_size 6))(vertical)) + (text "or2" (rect -3 3 11 21)(font "Arial" (font_size 8))(vertical)) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 18)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 12 2 24 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 47 33 61)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + ) + (rotate270) +) +(symbol + (rect 1432 456 1480 520) + (text "OR3" (rect 38 1 48 19)(font "Arial" (font_size 6))(vertical)) + (text "or1" (rect -3 3 11 21)(font "Arial" (font_size 8))(vertical)) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 18)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 12 2 24 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 47 33 61)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + ) + (rotate270) +) +(symbol + (rect 1600 456 1648 520) + (text "OR3" (rect 38 1 48 19)(font "Arial" (font_size 6))(vertical)) + (text "or0" (rect -3 3 11 21)(font "Arial" (font_size 8))(vertical)) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 18)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 12 2 24 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 47 33 61)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + ) + (rotate270) +) +(symbol + (rect 760 360 808 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and5c" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 424 456 472 520) + (text "OR3" (rect 38 1 48 19)(font "Arial" (font_size 6))(vertical)) + (text "or7" (rect -3 3 11 21)(font "Arial" (font_size 8))(vertical)) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 18)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 12 2 24 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 47 33 61)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + ) + (rotate270) +) +(symbol + (rect 808 360 856 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and5c8" (rect -1 3 11 38)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 376 360 424 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and7a" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 424 360 472 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and7b" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 472 360 520 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and7c" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 544 360 592 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and6a" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 592 360 640 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and6b" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 640 360 688 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and6c" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 712 360 760 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and5a" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 1552 360 1600 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and0a" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 1600 360 1648 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and0b" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 1648 360 1696 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and0c" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 1384 360 1432 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and1a" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 1432 360 1480 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and1b" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 1480 360 1528 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and1c" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 1216 360 1264 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and2a" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 1264 360 1312 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and2b" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 1312 360 1360 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and2c" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 1048 360 1096 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and3a" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 1096 360 1144 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and3b" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 1144 360 1192 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and3c" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 880 360 928 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and4a" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 928 360 976 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and4b" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 976 360 1024 424) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "and4c" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 248 240 312 288) + (text "NOR2" (rect 1 0 26 10)(font "Arial" (font_size 6))) + (text "norLoad" (rect 3 37 41 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 54 24)(pt 64 24)) + ) + (drawing + (line (pt 12 36)(pt 23 36)) + (line (pt 12 13)(pt 23 13)) + (arc (pt 46 24)(pt 23 13)(rect -6 13 53 72)) + (arc (pt 5 29)(pt 5 19)(rect -16 8 17 41)) + (arc (pt 23 35)(pt 46 24)(rect -6 -23 53 36)) + (circle (rect 46 20 54 28)) + ) +) +(connector + (pt 568 424) + (pt 568 440) +) +(connector + (pt 568 440) + (pt 608 440) +) +(connector + (pt 664 424) + (pt 664 440) +) +(connector + (pt 664 440) + (pt 624 440) +) +(connector + (pt 616 424) + (pt 616 456) +) +(connector + (pt 608 440) + (pt 608 456) +) +(connector + (pt 624 440) + (pt 624 456) +) +(connector + (pt 832 440) + (pt 792 440) +) +(connector + (pt 776 440) + (pt 776 456) +) +(connector + (pt 792 440) + (pt 792 456) +) +(connector + (pt 832 424) + (pt 832 440) +) +(connector + (pt 904 440) + (pt 944 440) +) +(connector + (pt 1000 440) + (pt 960 440) +) +(connector + (pt 944 440) + (pt 944 456) +) +(connector + (pt 960 440) + (pt 960 456) +) +(connector + (pt 904 424) + (pt 904 440) +) +(connector + (pt 952 424) + (pt 952 456) +) +(connector + (pt 1000 424) + (pt 1000 440) +) +(connector + (pt 1072 440) + (pt 1112 440) +) +(connector + (pt 1168 440) + (pt 1128 440) +) +(connector + (pt 1112 440) + (pt 1112 456) +) +(connector + (pt 1128 440) + (pt 1128 456) +) +(connector + (pt 1072 424) + (pt 1072 440) +) +(connector + (pt 1120 424) + (pt 1120 456) +) +(connector + (pt 1168 424) + (pt 1168 440) +) +(connector + (pt 1240 440) + (pt 1280 440) +) +(connector + (pt 1336 440) + (pt 1296 440) +) +(connector + (pt 1280 440) + (pt 1280 456) +) +(connector + (pt 1296 440) + (pt 1296 456) +) +(connector + (pt 1240 424) + (pt 1240 440) +) +(connector + (pt 1288 424) + (pt 1288 456) +) +(connector + (pt 1336 424) + (pt 1336 440) +) +(connector + (pt 1408 440) + (pt 1448 440) +) +(connector + (pt 1504 440) + (pt 1464 440) +) +(connector + (pt 1448 440) + (pt 1448 456) +) +(connector + (pt 1464 440) + (pt 1464 456) +) +(connector + (pt 1408 424) + (pt 1408 440) +) +(connector + (pt 1456 424) + (pt 1456 456) +) +(connector + (pt 1504 424) + (pt 1504 440) +) +(connector + (pt 1576 440) + (pt 1616 440) +) +(connector + (pt 1672 440) + (pt 1632 440) +) +(connector + (pt 1616 440) + (pt 1616 456) +) +(connector + (pt 1632 440) + (pt 1632 456) +) +(connector + (pt 1576 424) + (pt 1576 440) +) +(connector + (pt 1624 424) + (pt 1624 456) +) +(connector + (pt 1672 424) + (pt 1672 440) +) +(connector + (pt 624 136) + (pt 624 360) +) +(connector + (pt 960 104) + (pt 960 360) +) +(connector + (pt 1128 88) + (pt 1128 360) +) +(connector + (pt 1296 72) + (pt 1296 360) +) +(connector + (pt 1464 56) + (pt 1464 360) +) +(connector + (pt 672 360) + (pt 672 152) +) +(connector + (pt 576 120) + (pt 576 360) +) +(connector + (pt 912 88) + (pt 912 360) +) +(connector + (pt 1080 72) + (pt 1080 360) +) +(connector + (pt 1248 56) + (pt 1248 360) +) +(connector + (pt 1416 40) + (pt 1416 360) +) +(connector + (pt 1632 40) + (pt 1632 360) +) +(connector + (pt 776 440) + (pt 736 440) +) +(connector + (pt 736 440) + (pt 736 424) +) +(connector + (pt 744 104) + (pt 744 360) +) +(connector + (text "out_high[2]" (rect 600 546 612 600)(font "Arial" )(vertical)) + (pt 616 520) + (pt 616 608) +) +(connector + (text "out_high[1]" (rect 768 546 780 600)(font "Arial" )(vertical)) + (pt 784 520) + (pt 784 608) +) +(connector + (text "out_high[0]" (rect 936 546 948 600)(font "Arial" )(vertical)) + (pt 952 520) + (pt 952 608) +) +(connector + (text "out_low[3]" (rect 1104 526 1116 575)(font "Arial" )(vertical)) + (pt 1120 520) + (pt 1120 584) +) +(connector + (text "out_low[2]" (rect 1272 526 1284 575)(font "Arial" )(vertical)) + (pt 1288 520) + (pt 1288 584) +) +(connector + (text "out_low[1]" (rect 1440 526 1452 575)(font "Arial" )(vertical)) + (pt 1456 520) + (pt 1456 584) +) +(connector + (text "out_low[0]" (rect 1608 526 1620 575)(font "Arial" )(vertical)) + (pt 1624 520) + (pt 1624 584) +) +(connector + (pt 840 360) + (pt 840 136) +) +(connector + (pt 1008 360) + (pt 1008 120) +) +(connector + (pt 1176 360) + (pt 1176 104) +) +(connector + (pt 1344 360) + (pt 1344 88) +) +(connector + (pt 1512 360) + (pt 1512 72) +) +(connector + (pt 1680 360) + (pt 1680 56) +) +(connector + (pt 1584 360) + (pt 1584 192) +) +(connector + (pt 456 152) + (pt 456 360) +) +(connector + (text "out_high[3]" (rect 432 546 444 600)(font "Arial" )(vertical)) + (pt 448 608) + (pt 448 520) +) +(connector + (pt 224 256) + (pt 224 240) +) +(connector + (pt 224 272) + (pt 224 288) +) +(connector + (pt 440 360) + (pt 440 264) +) +(connector + (pt 448 456) + (pt 448 424) +) +(connector + (pt 440 440) + (pt 440 456) +) +(connector + (pt 456 440) + (pt 456 456) +) +(connector + (pt 608 360) + (pt 608 264) +) +(connector + (pt 944 360) + (pt 944 264) +) +(connector + (pt 1112 360) + (pt 1112 264) +) +(connector + (pt 1280 360) + (pt 1280 264) +) +(connector + (pt 1448 360) + (pt 1448 264) +) +(connector + (pt 1616 360) + (pt 1616 264) +) +(connector + (pt 560 360) + (pt 560 240) +) +(connector + (pt 728 360) + (pt 728 240) +) +(connector + (pt 896 360) + (pt 896 240) +) +(connector + (pt 1064 360) + (pt 1064 240) +) +(connector + (pt 1232 360) + (pt 1232 240) +) +(connector + (pt 1400 360) + (pt 1400 240) +) +(connector + (pt 1568 360) + (pt 1568 240) +) +(connector + (pt 1664 288) + (pt 1664 360) +) +(connector + (pt 656 360) + (pt 656 288) +) +(connector + (pt 824 360) + (pt 824 288) +) +(connector + (pt 992 360) + (pt 992 288) +) +(connector + (pt 1160 360) + (pt 1160 288) +) +(connector + (pt 1328 360) + (pt 1328 288) +) +(connector + (pt 1496 360) + (pt 1496 288) +) +(connector + (pt 784 456) + (pt 784 424) +) +(connector + (pt 792 120) + (pt 792 360) +) +(connector + (pt 776 264) + (pt 776 360) +) +(connector + (pt 400 440) + (pt 400 424) +) +(connector + (pt 408 136) + (pt 408 360) +) +(connector + (pt 440 440) + (pt 400 440) +) +(connector + (pt 392 240) + (pt 392 360) +) +(connector + (pt 496 440) + (pt 496 424) +) +(connector + (pt 456 440) + (pt 496 440) +) +(connector + (pt 488 288) + (pt 488 360) +) +(connector + (pt 504 192) + (pt 504 360) +) +(connector + (text "db[1]" (rect 237 40 261 52)(font "Arial" )) + (pt 232 56) + (pt 1248 56) +) +(connector + (pt 1248 56) + (pt 1464 56) +) +(connector + (pt 1464 56) + (pt 1680 56) +) +(connector + (text "db[2]" (rect 237 56 261 68)(font "Arial" )) + (pt 232 72) + (pt 1080 72) +) +(connector + (pt 1080 72) + (pt 1296 72) +) +(connector + (pt 1296 72) + (pt 1512 72) +) +(connector + (text "db[3]" (rect 237 72 261 84)(font "Arial" )) + (pt 232 88) + (pt 912 88) +) +(connector + (pt 912 88) + (pt 1128 88) +) +(connector + (pt 1128 88) + (pt 1344 88) +) +(connector + (text "db[4]" (rect 237 88 261 100)(font "Arial" )) + (pt 232 104) + (pt 744 104) +) +(connector + (pt 744 104) + (pt 960 104) +) +(connector + (pt 960 104) + (pt 1176 104) +) +(connector + (text "db[5]" (rect 237 104 261 116)(font "Arial" )) + (pt 232 120) + (pt 576 120) +) +(connector + (pt 576 120) + (pt 792 120) +) +(connector + (pt 792 120) + (pt 1008 120) +) +(connector + (pt 312 264) + (pt 440 264) +) +(connector + (pt 440 264) + (pt 608 264) +) +(connector + (pt 608 264) + (pt 776 264) +) +(connector + (pt 776 264) + (pt 944 264) +) +(connector + (pt 944 264) + (pt 1112 264) +) +(connector + (pt 1112 264) + (pt 1280 264) +) +(connector + (pt 1280 264) + (pt 1448 264) +) +(connector + (pt 1448 264) + (pt 1616 264) +) +(connector + (pt 232 40) + (pt 232 56) + (bus) +) +(connector + (pt 232 56) + (pt 232 72) + (bus) +) +(connector + (pt 232 72) + (pt 232 88) + (bus) +) +(connector + (pt 232 88) + (pt 232 104) + (bus) +) +(connector + (pt 232 104) + (pt 232 120) + (bus) +) +(connector + (pt 232 120) + (pt 232 136) + (bus) +) +(connector + (pt 232 136) + (pt 232 152) + (bus) +) +(connector + (text "db[6]" (rect 237 120 261 132)(font "Arial" )) + (pt 232 136) + (pt 408 136) +) +(connector + (pt 408 136) + (pt 624 136) +) +(connector + (pt 624 136) + (pt 840 136) +) +(connector + (pt 392 240) + (pt 560 240) +) +(connector + (pt 560 240) + (pt 728 240) +) +(connector + (pt 728 240) + (pt 896 240) +) +(connector + (pt 896 240) + (pt 1064 240) +) +(connector + (pt 1064 240) + (pt 1232 240) +) +(connector + (pt 1232 240) + (pt 1400 240) +) +(connector + (pt 1400 240) + (pt 1568 240) +) +(connector + (pt 488 288) + (pt 656 288) +) +(connector + (pt 656 288) + (pt 824 288) +) +(connector + (pt 824 288) + (pt 992 288) +) +(connector + (pt 992 288) + (pt 1160 288) +) +(connector + (pt 1160 288) + (pt 1328 288) +) +(connector + (pt 1328 288) + (pt 1496 288) +) +(connector + (pt 1496 288) + (pt 1664 288) +) +(connector + (pt 448 608) + (pt 616 608) + (bus) +) +(connector + (pt 1120 584) + (pt 1288 584) + (bus) +) +(connector + (pt 616 608) + (pt 784 608) + (bus) +) +(connector + (pt 1288 584) + (pt 1456 584) + (bus) +) +(connector + (text "db[0]" (rect 236 24 260 36)(font "Arial" )) + (pt 232 40) + (pt 1416 40) +) +(connector + (text "db[7]" (rect 238 136 262 148)(font "Arial" )) + (pt 232 152) + (pt 456 152) +) +(connector + (pt 784 608) + (pt 952 608) + (bus) +) +(connector + (pt 1456 584) + (pt 1624 584) + (bus) +) +(connector + (pt 1416 40) + (pt 1632 40) +) +(connector + (pt 456 152) + (pt 672 152) +) +(connector + (pt 224 272) + (pt 248 272) +) +(connector + (pt 224 256) + (pt 248 256) +) +(connector + (text "out_high[3..0]" (rect 1645 592 1712 604)(font "Arial" )) + (pt 952 608) + (pt 1712 608) + (bus) +) +(connector + (text "out_low[3..0]" (rect 1643 568 1705 580)(font "Arial" )) + (pt 1624 584) + (pt 1712 584) + (bus) +) +(connector + (pt 1632 40) + (pt 1720 40) +) +(connector + (pt 672 152) + (pt 1720 152) +) +(connector + (pt 224 240) + (pt 392 240) +) +(connector + (pt 224 288) + (pt 488 288) +) +(connector + (pt 504 192) + (pt 1584 192) +) +(connector + (pt 192 40) + (pt 232 40) + (bus) +) +(connector + (pt 192 192) + (pt 504 192) +) +(connector + (pt 192 240) + (pt 224 240) +) +(connector + (pt 192 288) + (pt 224 288) +) +(junction (pt 1248 56)) +(junction (pt 1464 56)) +(junction (pt 1080 72)) +(junction (pt 1296 72)) +(junction (pt 912 88)) +(junction (pt 1128 88)) +(junction (pt 744 104)) +(junction (pt 960 104)) +(junction (pt 576 120)) +(junction (pt 792 120)) +(junction (pt 440 264)) +(junction (pt 608 264)) +(junction (pt 776 264)) +(junction (pt 944 264)) +(junction (pt 1112 264)) +(junction (pt 1280 264)) +(junction (pt 1448 264)) +(junction (pt 232 40)) +(junction (pt 232 56)) +(junction (pt 232 72)) +(junction (pt 232 88)) +(junction (pt 232 104)) +(junction (pt 232 120)) +(junction (pt 408 136)) +(junction (pt 232 136)) +(junction (pt 624 136)) +(junction (pt 224 240)) +(junction (pt 392 240)) +(junction (pt 560 240)) +(junction (pt 728 240)) +(junction (pt 896 240)) +(junction (pt 1064 240)) +(junction (pt 1232 240)) +(junction (pt 1400 240)) +(junction (pt 224 288)) +(junction (pt 488 288)) +(junction (pt 656 288)) +(junction (pt 824 288)) +(junction (pt 992 288)) +(junction (pt 1160 288)) +(junction (pt 1328 288)) +(junction (pt 1496 288)) +(junction (pt 504 192)) +(junction (pt 616 608)) +(junction (pt 1288 584)) +(junction (pt 784 608)) +(junction (pt 1456 584)) +(junction (pt 1416 40)) +(junction (pt 456 152)) +(junction (pt 952 608)) +(junction (pt 1624 584)) +(junction (pt 1632 40)) +(junction (pt 672 152)) +(text "Load" (rect 320 248 348 262)(font "Arial" (font_size 8))) +(text "Left" (rect 320 224 342 238)(font "Arial" (font_size 8))) +(text "Right" (rect 320 272 348 286)(font "Arial" (font_size 8))) +(title_block + (rect 16 552 337 613) + (name "title-custom-medium") + (section (rect 0 0 320 20)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 106 21)(font "Arial" (font_size 12)(bold)))(border)) + (section (rect 130 0 320 20)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "alu_shifter_core" (rect 43 2 188 21)(font "Arial" (font_size 12)(bold)))(border)) + (section (rect 0 21 320 40)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 151 19)(font "Arial" (font_size 11)))(border)) + (section (rect 0 41 240 60)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 18, 2014" (rect 56 3 149 19)(font "Arial" (font_size 10)))(border)) + (section (rect 241 41 320 60)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.1" (rect 43 3 64 19)(font "Arial" (font_size 10)))(border)) + (drawing + ) +) diff --git a/cpu/alu/alu_shifter_core.bsf b/cpu/alu/alu_shifter_core.bsf new file mode 100644 index 0000000..1c37a0f --- /dev/null +++ b/cpu/alu/alu_shifter_core.bsf @@ -0,0 +1,86 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 200 144) + (text "alu_shifter_core" (rect 5 0 98 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 112 25 124)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 21 27 63 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "shift_in" (rect 0 0 41 14)(font "Arial" (font_size 8))) + (text "shift_in" (rect 21 43 62 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "shift_left" (rect 0 0 49 14)(font "Arial" (font_size 8))) + (text "shift_left" (rect 21 59 70 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "shift_right" (rect 0 0 56 14)(font "Arial" (font_size 8))) + (text "shift_right" (rect 21 75 77 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 184 32) + (output) + (text "shift_db0" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "shift_db0" (rect 110 27 163 41)(font "Arial" (font_size 8))) + (line (pt 184 32)(pt 168 32)) + ) + (port + (pt 184 48) + (output) + (text "shift_db7" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "shift_db7" (rect 110 43 163 57)(font "Arial" (font_size 8))) + (line (pt 184 48)(pt 168 48)) + ) + (port + (pt 184 64) + (output) + (text "out_low[3..0]" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "out_low[3..0]" (rect 89 59 163 73)(font "Arial" (font_size 8))) + (line (pt 184 64)(pt 168 64)(line_width 3)) + ) + (port + (pt 184 80) + (output) + (text "out_high[3..0]" (rect 0 0 76 14)(font "Arial" (font_size 8))) + (text "out_high[3..0]" (rect 87 75 163 89)(font "Arial" (font_size 8))) + (line (pt 184 80)(pt 168 80)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 168 112)) + ) + (fill (color 217 255 255)) +) diff --git a/cpu/alu/alu_shifter_core.v b/cpu/alu/alu_shifter_core.v new file mode 100644 index 0000000..0123424 --- /dev/null +++ b/cpu/alu/alu_shifter_core.v @@ -0,0 +1,142 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Mon Oct 13 11:55:31 2014" + +module alu_shifter_core( + shift_in, + shift_right, + shift_left, + db, + shift_db0, + shift_db7, + out_high, + out_low +); + + +input wire shift_in; +input wire shift_right; +input wire shift_left; +input wire [7:0] db; +output wire shift_db0; +output wire shift_db7; +output wire [3:0] out_high; +output wire [3:0] out_low; + +wire [3:0] out_high_ALTERA_SYNTHESIZED; +wire [3:0] out_low_ALTERA_SYNTHESIZED; +wire SYNTHESIZED_WIRE_32; +wire SYNTHESIZED_WIRE_8; +wire SYNTHESIZED_WIRE_9; +wire SYNTHESIZED_WIRE_10; +wire SYNTHESIZED_WIRE_11; +wire SYNTHESIZED_WIRE_12; +wire SYNTHESIZED_WIRE_13; +wire SYNTHESIZED_WIRE_14; +wire SYNTHESIZED_WIRE_15; +wire SYNTHESIZED_WIRE_16; +wire SYNTHESIZED_WIRE_17; +wire SYNTHESIZED_WIRE_18; +wire SYNTHESIZED_WIRE_19; +wire SYNTHESIZED_WIRE_20; +wire SYNTHESIZED_WIRE_21; +wire SYNTHESIZED_WIRE_22; +wire SYNTHESIZED_WIRE_23; +wire SYNTHESIZED_WIRE_24; +wire SYNTHESIZED_WIRE_25; +wire SYNTHESIZED_WIRE_26; +wire SYNTHESIZED_WIRE_27; +wire SYNTHESIZED_WIRE_28; +wire SYNTHESIZED_WIRE_29; +wire SYNTHESIZED_WIRE_30; +wire SYNTHESIZED_WIRE_31; + +assign shift_db0 = db[0]; +assign shift_db7 = db[7]; + + + +assign SYNTHESIZED_WIRE_9 = shift_in & shift_left; + +assign SYNTHESIZED_WIRE_8 = db[0] & SYNTHESIZED_WIRE_32; + +assign SYNTHESIZED_WIRE_10 = db[1] & shift_right; + +assign SYNTHESIZED_WIRE_12 = db[0] & shift_left; + +assign SYNTHESIZED_WIRE_11 = db[1] & SYNTHESIZED_WIRE_32; + +assign SYNTHESIZED_WIRE_13 = db[2] & shift_right; + +assign SYNTHESIZED_WIRE_15 = db[1] & shift_left; + +assign SYNTHESIZED_WIRE_14 = db[2] & SYNTHESIZED_WIRE_32; + +assign SYNTHESIZED_WIRE_16 = db[3] & shift_right; + +assign SYNTHESIZED_WIRE_18 = db[2] & shift_left; + +assign SYNTHESIZED_WIRE_17 = db[3] & SYNTHESIZED_WIRE_32; + +assign SYNTHESIZED_WIRE_19 = db[4] & shift_right; + +assign SYNTHESIZED_WIRE_21 = db[3] & shift_left; + +assign SYNTHESIZED_WIRE_20 = db[4] & SYNTHESIZED_WIRE_32; + +assign SYNTHESIZED_WIRE_22 = db[5] & shift_right; + +assign SYNTHESIZED_WIRE_24 = db[4] & shift_left; + +assign SYNTHESIZED_WIRE_23 = db[5] & SYNTHESIZED_WIRE_32; + +assign SYNTHESIZED_WIRE_25 = db[6] & shift_right; + +assign SYNTHESIZED_WIRE_27 = db[5] & shift_left; + +assign SYNTHESIZED_WIRE_26 = db[6] & SYNTHESIZED_WIRE_32; + +assign SYNTHESIZED_WIRE_28 = db[7] & shift_right; + +assign SYNTHESIZED_WIRE_30 = db[6] & shift_left; + +assign SYNTHESIZED_WIRE_29 = db[7] & SYNTHESIZED_WIRE_32; + +assign SYNTHESIZED_WIRE_31 = shift_in & shift_right; + +assign SYNTHESIZED_WIRE_32 = ~(shift_right | shift_left); + +assign out_low_ALTERA_SYNTHESIZED[0] = SYNTHESIZED_WIRE_8 | SYNTHESIZED_WIRE_9 | SYNTHESIZED_WIRE_10; + +assign out_low_ALTERA_SYNTHESIZED[1] = SYNTHESIZED_WIRE_11 | SYNTHESIZED_WIRE_12 | SYNTHESIZED_WIRE_13; + +assign out_low_ALTERA_SYNTHESIZED[2] = SYNTHESIZED_WIRE_14 | SYNTHESIZED_WIRE_15 | SYNTHESIZED_WIRE_16; + +assign out_low_ALTERA_SYNTHESIZED[3] = SYNTHESIZED_WIRE_17 | SYNTHESIZED_WIRE_18 | SYNTHESIZED_WIRE_19; + +assign out_high_ALTERA_SYNTHESIZED[0] = SYNTHESIZED_WIRE_20 | SYNTHESIZED_WIRE_21 | SYNTHESIZED_WIRE_22; + +assign out_high_ALTERA_SYNTHESIZED[1] = SYNTHESIZED_WIRE_23 | SYNTHESIZED_WIRE_24 | SYNTHESIZED_WIRE_25; + +assign out_high_ALTERA_SYNTHESIZED[2] = SYNTHESIZED_WIRE_26 | SYNTHESIZED_WIRE_27 | SYNTHESIZED_WIRE_28; + +assign out_high_ALTERA_SYNTHESIZED[3] = SYNTHESIZED_WIRE_29 | SYNTHESIZED_WIRE_30 | SYNTHESIZED_WIRE_31; + +assign out_high = out_high_ALTERA_SYNTHESIZED; +assign out_low = out_low_ALTERA_SYNTHESIZED; + +endmodule diff --git a/cpu/alu/alu_slice.bdf b/cpu/alu/alu_slice.bdf new file mode 100644 index 0000000..7cd1f2d --- /dev/null +++ b/cpu/alu/alu_slice.bdf @@ -0,0 +1,756 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 24 72 200 88) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "op2" (rect 9 0 26 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 56 200 72) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "op1" (rect 9 0 26 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 40 200 56) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "cy_in" (rect 9 0 36 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 208 200 224) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "R" (rect 9 0 17 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 176 200 192) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "S" (rect 9 0 16 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 192 200 208) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "V" (rect 9 0 17 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 808 200 984 216) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "cy_out" (rect 90 0 124 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 808 128 984 144) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "result" (rect 90 0 117 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 680 112 744 160) + (text "NOR2" (rect 1 0 26 10)(font "Arial" (font_size 6))) + (text "inst3" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 54 24)(pt 64 24)) + ) + (drawing + (line (pt 12 36)(pt 23 36)) + (line (pt 12 13)(pt 23 13)) + (arc (pt 46 24)(pt 23 13)(rect -6 13 53 72)) + (arc (pt 5 29)(pt 5 19)(rect -16 8 17 41)) + (arc (pt 23 35)(pt 46 24)(rect -6 -23 53 36)) + (circle (rect 46 20 54 28)) + ) +) +(symbol + (rect 256 80 320 128) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst4" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 336 72 400 120) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst5" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 336 120 400 168) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst6" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 520 184 584 232) + (text "NOR2" (rect 1 0 26 10)(font "Arial" (font_size 6))) + (text "inst7" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 54 24)(pt 64 24)) + ) + (drawing + (line (pt 12 36)(pt 23 36)) + (line (pt 12 13)(pt 23 13)) + (arc (pt 46 24)(pt 23 13)(rect -6 13 53 72)) + (arc (pt 5 29)(pt 5 19)(rect -16 8 17 41)) + (arc (pt 23 35)(pt 46 24)(rect -6 -23 53 36)) + (circle (rect 46 20 54 28)) + ) +) +(symbol + (rect 416 120 480 168) + (text "NOR3" (rect 1 0 26 10)(font "Arial" (font_size 6))) + (text "inst8" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 54 24)(pt 64 24)) + ) + (drawing + (line (pt 12 13)(pt 23 13)) + (line (pt 12 36)(pt 23 36)) + (arc (pt 5 29)(pt 5 19)(rect -16 8 17 41)) + (arc (pt 23 35)(pt 46 24)(rect -6 -23 53 36)) + (arc (pt 46 24)(pt 23 13)(rect -6 13 53 72)) + (circle (rect 46 20 54 28)) + ) +) +(symbol + (rect 520 128 584 176) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst9" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 600 120 664 168) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst11" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 600 32 664 80) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst12" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 752 120 800 152) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst13" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 520 72 584 120) + (text "OR3" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 37 23 51)(font "Arial" (font_size 8))) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 18 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 47 15 61 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(connector + (pt 256 96) + (pt 240 96) +) +(connector + (pt 336 152) + (pt 224 152) +) +(connector + (pt 256 112) + (pt 224 112) +) +(connector + (pt 336 88) + (pt 328 88) +) +(connector + (pt 416 152) + (pt 408 152) +) +(connector + (pt 408 184) + (pt 408 152) +) +(connector + (pt 416 136) + (pt 408 136) +) +(connector + (pt 408 136) + (pt 408 96) +) +(connector + (pt 408 96) + (pt 400 96) +) +(connector + (pt 336 136) + (pt 240 136) +) +(connector + (pt 328 48) + (pt 328 88) +) +(connector + (pt 504 144) + (pt 504 200) +) +(connector + (pt 592 136) + (pt 600 136) +) +(connector + (pt 664 56) + (pt 672 56) +) +(connector + (pt 672 56) + (pt 672 128) +) +(connector + (pt 672 128) + (pt 680 128) +) +(connector + (pt 744 136) + (pt 752 136) +) +(connector + (pt 800 136) + (pt 808 136) +) +(connector + (pt 504 200) + (pt 520 200) +) +(connector + (pt 488 160) + (pt 488 200) +) +(connector + (pt 520 160) + (pt 488 160) +) +(connector + (pt 504 64) + (pt 504 88) +) +(connector + (pt 488 56) + (pt 488 96) +) +(connector + (pt 472 48) + (pt 472 104) +) +(connector + (pt 592 96) + (pt 584 96) +) +(connector + (pt 592 136) + (pt 592 96) +) +(connector + (pt 488 96) + (pt 520 96) +) +(connector + (pt 472 104) + (pt 520 104) +) +(connector + (pt 504 88) + (pt 520 88) +) +(connector + (pt 240 64) + (pt 240 96) +) +(connector + (pt 240 96) + (pt 240 136) +) +(connector + (pt 224 56) + (pt 488 56) +) +(connector + (pt 488 56) + (pt 600 56) +) +(connector + (pt 224 112) + (pt 224 152) +) +(connector + (pt 504 64) + (pt 600 64) +) +(connector + (pt 472 48) + (pt 600 48) +) +(connector + (pt 504 144) + (pt 520 144) +) +(connector + (pt 224 56) + (pt 224 80) +) +(connector + (pt 224 80) + (pt 224 112) +) +(connector + (pt 320 104) + (pt 336 104) +) +(connector + (pt 400 144) + (pt 416 144) +) +(connector + (pt 584 208) + (pt 808 208) +) +(connector + (pt 480 144) + (pt 504 144) +) +(connector + (pt 584 152) + (pt 600 152) +) +(connector + (pt 664 144) + (pt 680 144) +) +(connector + (pt 240 64) + (pt 504 64) +) +(connector + (pt 328 48) + (pt 472 48) +) +(connector + (pt 200 48) + (pt 328 48) +) +(connector + (pt 200 64) + (pt 240 64) +) +(connector + (pt 200 80) + (pt 224 80) +) +(connector + (pt 200 184) + (pt 408 184) +) +(connector + (pt 200 200) + (pt 488 200) +) +(connector + (pt 200 216) + (pt 520 216) +) +(junction (pt 240 96)) +(junction (pt 488 56)) +(junction (pt 504 144)) +(junction (pt 224 112)) +(junction (pt 504 64)) +(junction (pt 240 64)) +(junction (pt 328 48)) +(junction (pt 472 48)) +(junction (pt 224 80)) +(title_block + (rect 24 264 281 316) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "alu_slice" (rect 43 2 103 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 18, 2014" (rect 56 3 132 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.0" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/alu/alu_slice.bsf b/cpu/alu/alu_slice.bsf new file mode 100644 index 0000000..2a550e0 --- /dev/null +++ b/cpu/alu/alu_slice.bsf @@ -0,0 +1,85 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 136 176) + (text "alu_slice" (rect 5 0 54 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 144 25 156)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "cy_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "cy_in" (rect 21 27 51 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "op1" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "op1" (rect 21 43 42 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "op2" (rect 0 0 21 14)(font "Arial" (font_size 8))) + (text "op2" (rect 21 59 42 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "S" (rect 0 0 8 14)(font "Arial" (font_size 8))) + (text "S" (rect 21 75 29 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "V" (rect 0 0 9 14)(font "Arial" (font_size 8))) + (text "V" (rect 21 91 30 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "R" (rect 0 0 8 14)(font "Arial" (font_size 8))) + (text "R" (rect 21 107 29 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 120 32) + (output) + (text "result" (rect 0 0 31 14)(font "Arial" (font_size 8))) + (text "result" (rect 68 27 99 41)(font "Arial" (font_size 8))) + (line (pt 120 32)(pt 104 32)) + ) + (port + (pt 120 48) + (output) + (text "cy_out" (rect 0 0 38 14)(font "Arial" (font_size 8))) + (text "cy_out" (rect 61 43 99 57)(font "Arial" (font_size 8))) + (line (pt 120 48)(pt 104 48)) + ) + (drawing + (rectangle (rect 16 16 104 144)) + ) +) diff --git a/cpu/alu/alu_slice.v b/cpu/alu/alu_slice.v new file mode 100644 index 0000000..b3d8d34 --- /dev/null +++ b/cpu/alu/alu_slice.v @@ -0,0 +1,76 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Mon Oct 13 11:51:12 2014" + +module alu_slice( + op2, + op1, + cy_in, + R, + S, + V, + cy_out, + result +); + + +input wire op2; +input wire op1; +input wire cy_in; +input wire R; +input wire S; +input wire V; +output wire cy_out; +output wire result; + +wire SYNTHESIZED_WIRE_0; +wire SYNTHESIZED_WIRE_1; +wire SYNTHESIZED_WIRE_2; +wire SYNTHESIZED_WIRE_3; +wire SYNTHESIZED_WIRE_4; +wire SYNTHESIZED_WIRE_5; +wire SYNTHESIZED_WIRE_10; +wire SYNTHESIZED_WIRE_7; +wire SYNTHESIZED_WIRE_8; + + + + +assign SYNTHESIZED_WIRE_0 = op2 | cy_in | op1; + +assign SYNTHESIZED_WIRE_3 = SYNTHESIZED_WIRE_0 & SYNTHESIZED_WIRE_1; + +assign SYNTHESIZED_WIRE_4 = cy_in & op2 & op1; + +assign result = ~SYNTHESIZED_WIRE_2; + +assign SYNTHESIZED_WIRE_2 = ~(SYNTHESIZED_WIRE_3 | SYNTHESIZED_WIRE_4); + +assign SYNTHESIZED_WIRE_5 = op2 | op1; + +assign SYNTHESIZED_WIRE_7 = cy_in & SYNTHESIZED_WIRE_5; + +assign SYNTHESIZED_WIRE_8 = op1 & op2; + +assign cy_out = ~(R | SYNTHESIZED_WIRE_10); + +assign SYNTHESIZED_WIRE_10 = ~(SYNTHESIZED_WIRE_7 | SYNTHESIZED_WIRE_8 | S); + +assign SYNTHESIZED_WIRE_1 = V | SYNTHESIZED_WIRE_10; + + +endmodule diff --git a/cpu/alu/simulation/modelsim/r b/cpu/alu/simulation/modelsim/r new file mode 100644 index 0000000..6504afb --- /dev/null +++ b/cpu/alu/simulation/modelsim/r @@ -0,0 +1 @@ +restart -f ; run -all diff --git a/cpu/alu/simulation/modelsim/test_alu.mpf b/cpu/alu/simulation/modelsim/test_alu.mpf new file mode 100644 index 0000000..1601485 --- /dev/null +++ b/cpu/alu/simulation/modelsim/test_alu.mpf @@ -0,0 +1,539 @@ +; Copyright 1991-2009 Mentor Graphics Corporation +; +; All Rights Reserved. +; +; THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS THE PROPERTY OF +; MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS. +; + +[Library] +std = $MODEL_TECH/../std +ieee = $MODEL_TECH/../ieee +verilog = $MODEL_TECH/../verilog +vital2000 = $MODEL_TECH/../vital2000 +std_developerskit = $MODEL_TECH/../std_developerskit +synopsys = $MODEL_TECH/../synopsys +modelsim_lib = $MODEL_TECH/../modelsim_lib +sv_std = $MODEL_TECH/../sv_std + +; Altera Primitive libraries +; +; VHDL Section +; +altera_mf = $MODEL_TECH/../altera/vhdl/altera_mf +altera = $MODEL_TECH/../altera/vhdl/altera +altera_lnsim = $MODEL_TECH/../altera/vhdl/altera_lnsim +lpm = $MODEL_TECH/../altera/vhdl/220model +220model = $MODEL_TECH/../altera/vhdl/220model +max = $MODEL_TECH/../altera/vhdl/max +maxii = $MODEL_TECH/../altera/vhdl/maxii +maxv = $MODEL_TECH/../altera/vhdl/maxv +stratix = $MODEL_TECH/../altera/vhdl/stratix +stratixii = $MODEL_TECH/../altera/vhdl/stratixii +stratixiigx = $MODEL_TECH/../altera/vhdl/stratixiigx +hardcopyii = $MODEL_TECH/../altera/vhdl/hardcopyii +hardcopyiii = $MODEL_TECH/../altera/vhdl/hardcopyiii +hardcopyiv = $MODEL_TECH/../altera/vhdl/hardcopyiv +cyclone = $MODEL_TECH/../altera/vhdl/cyclone +cycloneii = $MODEL_TECH/../altera/vhdl/cycloneii +cycloneiii = $MODEL_TECH/../altera/vhdl/cycloneiii +cycloneiiils = $MODEL_TECH/../altera/vhdl/cycloneiiils +sgate = $MODEL_TECH/../altera/vhdl/sgate +stratixgx = $MODEL_TECH/../altera/vhdl/stratixgx +altgxb = $MODEL_TECH/../altera/vhdl/altgxb +stratixgx_gxb = $MODEL_TECH/../altera/vhdl/stratixgx_gxb +stratixiigx_hssi = $MODEL_TECH/../altera/vhdl/stratixiigx_hssi +arriagx_hssi = $MODEL_TECH/../altera/vhdl/arriagx_hssi +arriaii = $MODEL_TECH/../altera/vhdl/arriaii +arriaii_hssi = $MODEL_TECH/../altera/vhdl/arriaii_hssi +arriaii_pcie_hip = $MODEL_TECH/../altera/vhdl/arriaii_pcie_hip +arriaiigz = $MODEL_TECH/../altera/vhdl/arriaiigz +arriaiigz_hssi = $MODEL_TECH/../altera/vhdl/arriaiigz_hssi +arriaiigz_pcie_hip = $MODEL_TECH/../altera/vhdl/arriaiigz_pcie_hip +arriagx = $MODEL_TECH/../altera/vhdl/arriagx +altgxb_lib = $MODEL_TECH/../altera/vhdl/altgxb +stratixiv = $MODEL_TECH/../altera/vhdl/stratixiv +stratixiv_hssi = $MODEL_TECH/../altera/vhdl/stratixiv_hssi +stratixiv_pcie_hip = $MODEL_TECH/../altera/vhdl/stratixiv_pcie_hip +cycloneiv = $MODEL_TECH/../altera/vhdl/cycloneiv +cycloneiv_hssi = $MODEL_TECH/../altera/vhdl/cycloneiv_hssi +cycloneiv_pcie_hip = $MODEL_TECH/../altera/vhdl/cycloneiv_pcie_hip +cycloneive = $MODEL_TECH/../altera/vhdl/cycloneive +hardcopyiv_hssi = $MODEL_TECH/../altera/vhdl/hardcopyiv_hssi +hardcopyiv_pcie_hip = $MODEL_TECH/../altera/vhdl/hardcopyiv_pcie_hip +stratixv = $MODEL_TECH/../altera/vhdl/stratixv +stratixv_hssi = $MODEL_TECH/../altera/vhdl/stratixv_hssi +stratixv_pcie_hip = $MODEL_TECH/../altera/vhdl/stratixv_pcie_hip +arriavgz = $MODEL_TECH/../altera/vhdl/arriavgz +arriavgz_hssi = $MODEL_TECH/../altera/vhdl/arriavgz_hssi +arriavgz_pcie_hip = $MODEL_TECH/../altera/vhdl/arriavgz_pcie_hip +arriav = $MODEL_TECH/../altera/vhdl/arriav +cyclonev = $MODEL_TECH/../altera/vhdl/cyclonev +; +; Verilog Section +; +altera_mf_ver = $MODEL_TECH/../altera/verilog/altera_mf +altera_ver = $MODEL_TECH/../altera/verilog/altera +altera_lnsim_ver = $MODEL_TECH/../altera/verilog/altera_lnsim +lpm_ver = $MODEL_TECH/../altera/verilog/220model +220model_ver = $MODEL_TECH/../altera/verilog/220model +max_ver = $MODEL_TECH/../altera/verilog/max +maxii_ver = $MODEL_TECH/../altera/verilog/maxii +maxv_ver = $MODEL_TECH/../altera/verilog/maxv +stratix_ver = $MODEL_TECH/../altera/verilog/stratix +stratixii_ver = $MODEL_TECH/../altera/verilog/stratixii +stratixiigx_ver = $MODEL_TECH/../altera/verilog/stratixiigx +arriagx_ver = $MODEL_TECH/../altera/verilog/arriagx +hardcopyii_ver = $MODEL_TECH/../altera/verilog/hardcopyii +hardcopyiii_ver = $MODEL_TECH/../altera/verilog/hardcopyiii +hardcopyiv_ver = $MODEL_TECH/../altera/verilog/hardcopyiv +cyclone_ver = $MODEL_TECH/../altera/verilog/cyclone +cycloneii_ver = $MODEL_TECH/../altera/verilog/cycloneii +cycloneiii_ver = $MODEL_TECH/../altera/verilog/cycloneiii +cycloneiiils_ver = $MODEL_TECH/../altera/verilog/cycloneiiils +sgate_ver = $MODEL_TECH/../altera/verilog/sgate +stratixgx_ver = $MODEL_TECH/../altera/verilog/stratixgx +altgxb_ver = $MODEL_TECH/../altera/verilog/altgxb +stratixgx_gxb_ver = $MODEL_TECH/../altera/verilog/stratixgx_gxb +stratixiigx_hssi_ver = $MODEL_TECH/../altera/verilog/stratixiigx_hssi +arriagx_hssi_ver = $MODEL_TECH/../altera/verilog/arriagx_hssi +arriaii_ver = $MODEL_TECH/../altera/verilog/arriaii +arriaii_hssi_ver = $MODEL_TECH/../altera/verilog/arriaii_hssi +arriaii_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriaii_pcie_hip +arriaiigz_ver = $MODEL_TECH/../altera/verilog/arriaiigz +arriaiigz_hssi_ver = $MODEL_TECH/../altera/verilog/arriaiigz_hssi +arriaiigz_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriaiigz_pcie_hip +stratixiii_ver = $MODEL_TECH/../altera/verilog/stratixiii +stratixiii = $MODEL_TECH/../altera/vhdl/stratixiii +stratixiv_ver = $MODEL_TECH/../altera/verilog/stratixiv +stratixiv_hssi_ver = $MODEL_TECH/../altera/verilog/stratixiv_hssi +stratixiv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/stratixiv_pcie_hip +stratixv_ver = $MODEL_TECH/../altera/verilog/stratixv +stratixv_hssi_ver = $MODEL_TECH/../altera/verilog/stratixv_hssi +stratixv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/stratixv_pcie_hip +arriavgz_ver = $MODEL_TECH/../altera/verilog/arriavgz +arriavgz_hssi_ver = $MODEL_TECH/../altera/verilog/arriavgz_hssi +arriavgz_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriavgz_pcie_hip +arriav_ver = $MODEL_TECH/../altera/verilog/arriav +arriav_hssi_ver = $MODEL_TECH/../altera/verilog/arriav_hssi +arriav_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriav_pcie_hip +cyclonev_ver = $MODEL_TECH/../altera/verilog/cyclonev +cyclonev_hssi_ver = $MODEL_TECH/../altera/verilog/cyclonev_hssi +cyclonev_pcie_hip_ver = $MODEL_TECH/../altera/verilog/cyclonev_pcie_hip +cycloneiv_ver = $MODEL_TECH/../altera/verilog/cycloneiv +cycloneiv_hssi_ver = $MODEL_TECH/../altera/verilog/cycloneiv_hssi +cycloneiv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/cycloneiv_pcie_hip +cycloneive_ver = $MODEL_TECH/../altera/verilog/cycloneive +hardcopyiv_hssi_ver = $MODEL_TECH/../altera/verilog/hardcopyiv_hssi +hardcopyiv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/hardcopyiv_pcie_hip + +work = work +[vcom] +; VHDL93 variable selects language version as the default. +; Default is VHDL-2002. +; Value of 0 or 1987 for VHDL-1987. +; Value of 1 or 1993 for VHDL-1993. +; Default or value of 2 or 2002 for VHDL-2002. +; Default or value of 3 or 2008 for VHDL-2008. +VHDL93 = 2002 + +; Show source line containing error. Default is off. +; Show_source = 1 + +; Turn off unbound-component warnings. Default is on. +; Show_Warning1 = 0 + +; Turn off process-without-a-wait-statement warnings. Default is on. +; Show_Warning2 = 0 + +; Turn off null-range warnings. Default is on. +; Show_Warning3 = 0 + +; Turn off no-space-in-time-literal warnings. Default is on. +; Show_Warning4 = 0 + +; Turn off multiple-drivers-on-unresolved-signal warnings. Default is on. +; Show_Warning5 = 0 + +; Turn off optimization for IEEE std_logic_1164 package. Default is on. +; Optimize_1164 = 0 + +; Turn on resolving of ambiguous function overloading in favor of the +; "explicit" function declaration (not the one automatically created by +; the compiler for each type declaration). Default is off. +; The .ini file has Explicit enabled so that std_logic_signed/unsigned +; will match the behavior of synthesis tools. +Explicit = 1 + +; Turn off acceleration of the VITAL packages. Default is to accelerate. +; NoVital = 1 + +; Turn off VITAL compliance checking. Default is checking on. +; NoVitalCheck = 1 + +; Ignore VITAL compliance checking errors. Default is to not ignore. +; IgnoreVitalErrors = 1 + +; Turn off VITAL compliance checking warnings. Default is to show warnings. +; Show_VitalChecksWarnings = 0 + +; Keep silent about case statement static warnings. +; Default is to give a warning. +; NoCaseStaticError = 1 + +; Keep silent about warnings caused by aggregates that are not locally static. +; Default is to give a warning. +; NoOthersStaticError = 1 + +; Turn off inclusion of debugging info within design units. +; Default is to include debugging info. +; NoDebug = 1 + +; Turn off "Loading..." messages. Default is messages on. +; Quiet = 1 + +; Turn on some limited synthesis rule compliance checking. Checks only: +; -- signals used (read) by a process must be in the sensitivity list +; CheckSynthesis = 1 + +; Activate optimizations on expressions that do not involve signals, +; waits, or function/procedure/task invocations. Default is off. +; ScalarOpts = 1 + +; Require the user to specify a configuration for all bindings, +; and do not generate a compile time default binding for the +; component. This will result in an elaboration error of +; 'component not bound' if the user fails to do so. Avoids the rare +; issue of a false dependency upon the unused default binding. +; RequireConfigForAllDefaultBinding = 1 + +; Inhibit range checking on subscripts of arrays. Range checking on +; scalars defined with subtypes is inhibited by default. +; NoIndexCheck = 1 + +; Inhibit range checks on all (implicit and explicit) assignments to +; scalar objects defined with subtypes. +; NoRangeCheck = 1 + +[vlog] + +; Turn off inclusion of debugging info within design units. +; Default is to include debugging info. +; NoDebug = 1 + +; Turn off "loading..." messages. Default is messages on. +; Quiet = 1 + +; Turn on Verilog hazard checking (order-dependent accessing of global vars). +; Default is off. +; Hazard = 1 + +; Turn on converting regular Verilog identifiers to uppercase. Allows case +; insensitivity for module names. Default is no conversion. +; UpCase = 1 + +; Turn on incremental compilation of modules. Default is off. +; Incremental = 1 + +; Turns on lint-style checking. +; Show_Lint = 1 + +[vsim] +; Simulator resolution +; Set to fs, ps, ns, us, ms, or sec with optional prefix of 1, 10, or 100. +Resolution = ps + +; User time unit for run commands +; Set to default, fs, ps, ns, us, ms, or sec. The default is to use the +; unit specified for Resolution. For example, if Resolution is 100ps, +; then UserTimeUnit defaults to ps. +; Should generally be set to default. +UserTimeUnit = default + +; Default run length +RunLength = 0 ns + +; Maximum iterations that can be run without advancing simulation time +IterationLimit = 5000 + +; Directive to license manager: +; vhdl Immediately reserve a VHDL license +; vlog Immediately reserve a Verilog license +; plus Immediately reserve a VHDL and Verilog license +; nomgc Do not look for Mentor Graphics Licenses +; nomti Do not look for Model Technology Licenses +; noqueue Do not wait in the license queue when a license isn't available +; viewsim Try for viewer license but accept simulator license(s) instead +; of queuing for viewer license +; License = plus + +; Stop the simulator after a VHDL/Verilog assertion message +; 0 = Note 1 = Warning 2 = Error 3 = Failure 4 = Fatal +BreakOnAssertion = 3 + +; Assertion Message Format +; %S - Severity Level +; %R - Report Message +; %T - Time of assertion +; %D - Delta +; %I - Instance or Region pathname (if available) +; %% - print '%' character +; AssertionFormat = "** %S: %R\n Time: %T Iteration: %D%I\n" + +; Assertion File - alternate file for storing VHDL/Verilog assertion messages +; AssertFile = assert.log + +; Default radix for all windows and commands... +; Set to symbolic, ascii, binary, octal, decimal, hex, unsigned +DefaultRadix = symbolic + +; VSIM Startup command +; Startup = do startup.do + +; File for saving command transcript +TranscriptFile = transcript + +; File for saving command history +; CommandHistory = cmdhist.log + +; Specify whether paths in simulator commands should be described +; in VHDL or Verilog format. +; For VHDL, PathSeparator = / +; For Verilog, PathSeparator = . +; Must not be the same character as DatasetSeparator. +PathSeparator = / + +; Specify the dataset separator for fully rooted contexts. +; The default is ':'. For example, sim:/top +; Must not be the same character as PathSeparator. +DatasetSeparator = : + +; Disable VHDL assertion messages +; IgnoreNote = 1 +; IgnoreWarning = 1 +; IgnoreError = 1 +; IgnoreFailure = 1 + +; Default force kind. May be freeze, drive, deposit, or default +; or in other terms, fixed, wired, or charged. +; A value of "default" will use the signal kind to determine the +; force kind, drive for resolved signals, freeze for unresolved signals +; DefaultForceKind = freeze + +; If zero, open files when elaborated; otherwise, open files on +; first read or write. Default is 0. +; DelayFileOpen = 1 + +; Control VHDL files opened for write. +; 0 = Buffered, 1 = Unbuffered +UnbufferedOutput = 0 + +; Control the number of VHDL files open concurrently. +; This number should always be less than the current ulimit +; setting for max file descriptors. +; 0 = unlimited +ConcurrentFileLimit = 40 + +; Control the number of hierarchical regions displayed as +; part of a signal name shown in the Wave window. +; A value of zero tells VSIM to display the full name. +; The default is 0. +; WaveSignalNameWidth = 0 + +; Turn off warnings from the std_logic_arith, std_logic_unsigned +; and std_logic_signed packages. +; StdArithNoWarnings = 1 + +; Turn off warnings from the IEEE numeric_std and numeric_bit packages. +; NumericStdNoWarnings = 1 + +; Control the format of the (VHDL) FOR generate statement label +; for each iteration. Do not quote it. +; The format string here must contain the conversion codes %s and %d, +; in that order, and no other conversion codes. The %s represents +; the generate_label; the %d represents the generate parameter value +; at a particular generate iteration (this is the position number if +; the generate parameter is of an enumeration type). Embedded whitespace +; is allowed (but discouraged); leading and trailing whitespace is ignored. +; Application of the format must result in a unique scope name over all +; such names in the design so that name lookup can function properly. +; GenerateFormat = %s__%d + +; Specify whether checkpoint files should be compressed. +; The default is 1 (compressed). +; CheckpointCompressMode = 0 + +; List of dynamically loaded objects for Verilog PLI applications +; Veriuser = veriuser.sl + +; Specify default options for the restart command. Options can be one +; or more of: -force -nobreakpoint -nolist -nolog -nowave +; DefaultRestartOptions = -force + +; HP-UX 10.20 ONLY - Enable memory locking to speed up large designs +; (> 500 megabyte memory footprint). Default is disabled. +; Specify number of megabytes to lock. +; LockedMemory = 1000 + +; Turn on (1) or off (0) WLF file compression. +; The default is 1 (compress WLF file). +; WLFCompress = 0 + +; Specify whether to save all design hierarchy (1) in the WLF file +; or only regions containing logged signals (0). +; The default is 0 (save only regions with logged signals). +; WLFSaveAllRegions = 1 + +; WLF file time limit. Limit WLF file by time, as closely as possible, +; to the specified amount of simulation time. When the limit is exceeded +; the earliest times get truncated from the file. +; If both time and size limits are specified the most restrictive is used. +; UserTimeUnits are used if time units are not specified. +; The default is 0 (no limit). Example: WLFTimeLimit = {100 ms} +; WLFTimeLimit = 0 + +; WLF file size limit. Limit WLF file size, as closely as possible, +; to the specified number of megabytes. If both time and size limits +; are specified then the most restrictive is used. +; The default is 0 (no limit). +; WLFSizeLimit = 1000 + +; Specify whether or not a WLF file should be deleted when the +; simulation ends. A value of 1 will cause the WLF file to be deleted. +; The default is 0 (do not delete WLF file when simulation ends). +; WLFDeleteOnQuit = 1 + +; Automatic SDF compilation +; Disables automatic compilation of SDF files in flows that support it. +; Default is on, uncomment to turn off. +; NoAutoSDFCompile = 1 + +[lmc] + +[msg_system] +; Change a message severity or suppress a message. +; The format is: = [,...] +; Examples: +; note = 3009 +; warning = 3033 +; error = 3010,3016 +; fatal = 3016,3033 +; suppress = 3009,3016,3043 +; The command verror can be used to get the complete +; description of a message. + +; Control transcripting of elaboration/runtime messages. +; The default is to have messages appear in the transcript and +; recorded in the wlf file (messages that are recorded in the +; wlf file can be viewed in the MsgViewer). The other settings +; are to send messages only to the transcript or only to the +; wlf file. The valid values are +; both {default} +; tran {transcript only} +; wlf {wlf file only} +; msgmode = both +[Project] +; Warning -- Do not edit the project properties directly. +; Property names are dynamic in nature and property +; values have special syntax. Changing property data directly +; can result in a corrupt MPF file. All project properties +; can be modified through project window dialogs. +Project_Version = 6 +Project_DefaultLib = work +Project_SortMethod = unused +Project_Files_Count = 14 +Project_File_0 = $ROOT/cpu/alu/alu.v +Project_File_P_0 = compile_order 11 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder {ALU Complete} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_1 = $ROOT/cpu/alu/alu_bit_select.v +Project_File_P_1 = compile_order 12 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder {ALU Complete} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_2 = $ROOT/cpu/alu/alu_core.v +Project_File_P_2 = compile_order 2 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder alu group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_3 = $ROOT/cpu/alu/alu_mux_2z.v +Project_File_P_3 = compile_order 13 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder {ALU Complete} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_4 = $ROOT/cpu/alu/alu_mux_3z.v +Project_File_P_4 = compile_order 7 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder misc group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_5 = $ROOT/cpu/alu/alu_prep_daa.v +Project_File_P_5 = compile_order 8 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder misc group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_6 = $ROOT/cpu/alu/alu_shifter_core.v +Project_File_P_6 = compile_order 4 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder shifter group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_7 = $ROOT/cpu/alu/alu_slice.v +Project_File_P_7 = compile_order 0 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder alu group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_8 = $ROOT/cpu/alu/test_alu.sv +Project_File_P_8 = compile_order 10 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder {ALU Complete} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 1 vlog_enable0In 0 vlog_hazard 1 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_9 = $ROOT/cpu/alu/test_core.sv +Project_File_P_9 = compile_order 3 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder alu group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_10 = $ROOT/cpu/alu/test_mux_3z.sv +Project_File_P_10 = compile_order 6 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder misc group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_11 = $ROOT/cpu/alu/test_prep_daa.sv +Project_File_P_11 = compile_order 9 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder misc group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_12 = $ROOT/cpu/alu/test_shifter_core.sv +Project_File_P_12 = compile_order 5 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder shifter group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_13 = $ROOT/cpu/alu/test_slice.sv +Project_File_P_13 = compile_order 1 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder alu group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_Sim_Count = 6 +Project_Sim_0 = Test slice +Project_Sim_P_0 = timing default -t default -sdfnoerror 0 -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} +notimingchecks 0 ok 1 folder alu +pulse_e {} additional_dus work.test_slice -assertfile {} -std_output {} -L {} -nopsl 0 -nosva 0 +pulse_r {} -absentisempty 0 -assertcover 0 -multisource_delay {} OtherArgs {} -vital2.2b 0 is_vopt_flow 0 -memprof 0 -noglitch 0 -0in_options {} selected_du {} -sdf {} -hazards 0 -0in 0 vopt_env 1 -coverage 0 +plusarg {} -assertdebug 0 -wlf {} -sdfnowarn 0 -std_input {} +Project_Sim_1 = Test core +Project_Sim_P_1 = timing default -sdfnoerror 0 -t default -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} +notimingchecks 0 ok 1 folder alu +pulse_e {} additional_dus work.test_core -assertfile {} -std_output {} -L {} -nopsl 0 -nosva 0 +pulse_r {} -absentisempty 0 -assertcover 0 -multisource_delay {} OtherArgs {} -vital2.2b 0 is_vopt_flow 0 -memprof 0 -noglitch 0 -0in_options {} selected_du {} -sdf {} -hazards 0 -0in 0 vopt_env 1 -coverage 0 +plusarg {} -assertdebug 0 -wlf {} -sdfnowarn 0 -std_input {} +Project_Sim_2 = Test prep daa +Project_Sim_P_2 = timing default cover_exttoggle 0 vlog_nodebug 0 last_compile 1418395911 -t default -sdfnoerror 0 compile_to work -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} file_type systemverilog +notimingchecks 0 cover_cond 0 ok 1 folder misc vlog_noload 0 cover_fsm 0 cover_excludedefault 0 +pulse_e {} cover_optlevel 3 vlog_hazard 0 vlog_showsource 0 compile_order 3 additional_dus work.test_prep_daa -assertfile {} cover_toggle 0 vlog_protect 0 -std_output {} -L {} -nopsl 0 -nosva 0 -absentisempty 0 +pulse_r {} -assertcover 0 vlog_disableopt 0 OtherArgs {} -multisource_delay {} -vital2.2b 0 voptflow 1 ood 0 -memprof 0 is_vopt_flow 0 vlog_upper 0 -noglitch 0 -0in_options {} selected_du {} cover_nofec 0 group_id 0 -hazards 0 -sdf {} vlog_1995compat SV -0in 0 cover_branch 0 vlog_enable0In 0 cover_covercells 0 +plusarg {} -coverage 0 vopt_env 1 toggle - vlog_0InOptions {} cover_noshort 0 vlog_options {} cover_expr 0 dont_compile 0 -wlf {} -assertdebug 0 cover_stmt 0 -std_input {} -sdfnowarn 0 +Project_Sim_3 = Test ALU +Project_Sim_P_3 = timing default -sdfnoerror 0 -t default -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} +notimingchecks 0 ok 1 folder {ALU Complete} +pulse_e {} additional_dus work.test_alu -assertfile {} -std_output {} -L {} -nopsl 0 -nosva 0 +pulse_r {} -absentisempty 0 -assertcover 0 -multisource_delay {} OtherArgs {} -vital2.2b 0 is_vopt_flow 0 -memprof 0 -noglitch 0 -0in_options {} selected_du {} -sdf {} -hazards 0 -0in 0 vopt_env 1 -coverage 0 +plusarg {} -assertdebug 0 -wlf {} -sdfnowarn 0 -std_input {} +Project_Sim_4 = Test shifter core +Project_Sim_P_4 = timing default -t default -sdfnoerror 0 -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} +notimingchecks 0 ok 1 folder shifter +pulse_e {} additional_dus work.test_shifter_core -assertfile {} -std_output {} -L {} -nopsl 0 -nosva 0 +pulse_r {} -absentisempty 0 -assertcover 0 -multisource_delay {} OtherArgs {} -vital2.2b 0 is_vopt_flow 0 -memprof 0 -noglitch 0 -0in_options {} selected_du {} -sdf {} -hazards 0 -0in 0 vopt_env 1 -coverage 0 +plusarg {} -assertdebug 0 -wlf {} -sdfnowarn 0 -std_input {} +Project_Sim_5 = Test mux 3z +Project_Sim_P_5 = timing default cover_exttoggle 0 vlog_nodebug 0 last_compile 1418395911 -t default -sdfnoerror 0 compile_to work -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} file_type systemverilog +notimingchecks 0 cover_cond 0 ok 1 folder misc vlog_noload 0 cover_fsm 0 cover_excludedefault 0 +pulse_e {} cover_optlevel 3 vlog_hazard 0 vlog_showsource 0 compile_order 3 additional_dus work.test_mux_3z -assertfile {} cover_toggle 0 vlog_protect 0 -std_output {} -L {} -nopsl 0 -nosva 0 -absentisempty 0 +pulse_r {} -assertcover 0 vlog_disableopt 0 OtherArgs {} -multisource_delay {} -vital2.2b 0 voptflow 1 ood 0 -memprof 0 is_vopt_flow 0 vlog_upper 0 -noglitch 0 -0in_options {} selected_du {} cover_nofec 0 group_id 0 -hazards 0 -sdf {} vlog_1995compat SV -0in 0 cover_branch 0 vlog_enable0In 0 cover_covercells 0 +plusarg {} -coverage 0 vopt_env 1 toggle - vlog_0InOptions {} cover_noshort 0 vlog_options {} cover_expr 0 dont_compile 0 -wlf {} -assertdebug 0 cover_stmt 0 -std_input {} -sdfnowarn 0 +Project_Folder_Count = 4 +Project_Folder_0 = misc +Project_Folder_P_0 = folder {Top Level} +Project_Folder_1 = shifter +Project_Folder_P_1 = folder {Top Level} +Project_Folder_2 = alu +Project_Folder_P_2 = folder {Top Level} +Project_Folder_3 = ALU Complete +Project_Folder_P_3 = folder {Top Level} +Echo_Compile_Output = 0 +Save_Compile_Report = 1 +Project_Opt_Count = 0 +ForceSoftPaths = 1 +ProjectStatusDelay = 5000 +VERILOG_DoubleClick = Edit +VERILOG_CustomDoubleClick = +SYSTEMVERILOG_DoubleClick = Edit +SYSTEMVERILOG_CustomDoubleClick = +VHDL_DoubleClick = Edit +VHDL_CustomDoubleClick = +PSL_DoubleClick = Edit +PSL_CustomDoubleClick = +TEXT_DoubleClick = Edit +TEXT_CustomDoubleClick = +SYSTEMC_DoubleClick = Edit +SYSTEMC_CustomDoubleClick = +TCL_DoubleClick = Edit +TCL_CustomDoubleClick = +MACRO_DoubleClick = Edit +MACRO_CustomDoubleClick = +VCD_DoubleClick = Edit +VCD_CustomDoubleClick = +SDF_DoubleClick = Edit +SDF_CustomDoubleClick = +XML_DoubleClick = Edit +XML_CustomDoubleClick = +LOGFILE_DoubleClick = Edit +LOGFILE_CustomDoubleClick = +UCDB_DoubleClick = Edit +UCDB_CustomDoubleClick = +UPF_DoubleClick = Edit +UPF_CustomDoubleClick = +PCF_DoubleClick = Edit +PCF_CustomDoubleClick = +PROJECT_DoubleClick = Edit +PROJECT_CustomDoubleClick = +VRM_DoubleClick = Edit +VRM_CustomDoubleClick = +DEBUGDATABASE_DoubleClick = Edit +DEBUGDATABASE_CustomDoubleClick = +DEBUGARCHIVE_DoubleClick = Edit +DEBUGARCHIVE_CustomDoubleClick = +Project_Major_Version = 10 +Project_Minor_Version = 1 diff --git a/cpu/alu/simulation/modelsim/wave_alu.do b/cpu/alu/simulation/modelsim/wave_alu.do new file mode 100644 index 0000000..fe29e58 --- /dev/null +++ b/cpu/alu/simulation/modelsim/wave_alu.do @@ -0,0 +1,74 @@ +onerror {resume} +quietly virtual signal -install /test_alu { (context /test_alu )&{test_db_low ,test_db_high }} test_bus +quietly virtual signal -install /test_alu { (context /test_alu )&{test_db_high ,test_db_low }} test_bus001 +quietly virtual function -install /test_alu/alu_inst -env /test_alu { &{/test_alu/alu_inst/op1_high, /test_alu/alu_inst/op1_low }} OP1 +quietly virtual function -install /test_alu/alu_inst -env /test_alu { &{/test_alu/alu_inst/op2_high, /test_alu/alu_inst/op2_low }} OP2 +quietly virtual function -install /test_alu/alu_inst -env /test_alu { &{/test_alu/alu_inst/result_hi, /test_alu/alu_inst/result_lo }} RESULT +quietly WaveActivateNextPane {} 0 +add wave -noupdate -color Gold -itemcolor Gold -radix hexadecimal -childformat {{{/test_alu/db_w[7]} -radix hexadecimal} {{/test_alu/db_w[6]} -radix hexadecimal} {{/test_alu/db_w[5]} -radix hexadecimal} {{/test_alu/db_w[4]} -radix hexadecimal} {{/test_alu/db_w[3]} -radix hexadecimal} {{/test_alu/db_w[2]} -radix hexadecimal} {{/test_alu/db_w[1]} -radix hexadecimal} {{/test_alu/db_w[0]} -radix hexadecimal}} -subitemconfig {{/test_alu/db_w[7]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal} {/test_alu/db_w[6]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal} {/test_alu/db_w[5]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal} {/test_alu/db_w[4]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal} {/test_alu/db_w[3]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal} {/test_alu/db_w[2]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal} {/test_alu/db_w[1]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal} {/test_alu/db_w[0]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal}} /test_alu/db_w +add wave -noupdate -color Gold -itemcolor Gold -radix hexadecimal -childformat {{{/test_alu/db[7]} -radix hexadecimal} {{/test_alu/db[6]} -radix hexadecimal} {{/test_alu/db[5]} -radix hexadecimal} {{/test_alu/db[4]} -radix hexadecimal} {{/test_alu/db[3]} -radix hexadecimal} {{/test_alu/db[2]} -radix hexadecimal} {{/test_alu/db[1]} -radix hexadecimal} {{/test_alu/db[0]} -radix hexadecimal}} -subitemconfig {{/test_alu/db[7]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal} {/test_alu/db[6]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal} {/test_alu/db[5]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal} {/test_alu/db[4]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal} {/test_alu/db[3]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal} {/test_alu/db[2]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal} {/test_alu/db[1]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal} {/test_alu/db[0]} {-color Gold -height 15 -itemcolor Gold -radix hexadecimal}} /test_alu/db +add wave -noupdate -color {Medium Orchid} -itemcolor Gold -label test_bus -radix hexadecimal -childformat {{{/test_alu/test_bus001[7]} -radix hexadecimal} {{/test_alu/test_bus001[6]} -radix hexadecimal} {{/test_alu/test_bus001[5]} -radix hexadecimal} {{/test_alu/test_bus001[4]} -radix hexadecimal} {{/test_alu/test_bus001[3]} -radix hexadecimal} {{/test_alu/test_bus001[2]} -radix hexadecimal} {{/test_alu/test_bus001[1]} -radix hexadecimal} {{/test_alu/test_bus001[0]} -radix hexadecimal}} -subitemconfig {{/test_alu/test_db_high[3]} {-color {Medium Orchid} -itemcolor Gold -radix hexadecimal} {/test_alu/test_db_high[2]} {-color {Medium Orchid} -itemcolor Gold -radix hexadecimal} {/test_alu/test_db_high[1]} {-color {Medium Orchid} -itemcolor Gold -radix hexadecimal} {/test_alu/test_db_high[0]} {-color {Medium Orchid} -itemcolor Gold -radix hexadecimal} {/test_alu/test_db_low[3]} {-color {Medium Orchid} -itemcolor Gold -radix hexadecimal} {/test_alu/test_db_low[2]} {-color {Medium Orchid} -itemcolor Gold -radix hexadecimal} {/test_alu/test_db_low[1]} {-color {Medium Orchid} -itemcolor Gold -radix hexadecimal} {/test_alu/test_db_low[0]} {-color {Medium Orchid} -itemcolor Gold -radix hexadecimal}} /test_alu/test_bus001 +add wave -noupdate /test_alu/clk +add wave -noupdate -expand -group Registers -color Pink -radix hexadecimal /test_alu/alu_inst/alu_op1 +add wave -noupdate -expand -group Registers -color Pink -radix hexadecimal /test_alu/alu_inst/alu_op2 +add wave -noupdate -expand -group Registers -radix hexadecimal -childformat {{(7) -radix hexadecimal} {(6) -radix hexadecimal} {(5) -radix hexadecimal} {(4) -radix hexadecimal} {(3) -radix hexadecimal} {(2) -radix hexadecimal} {(1) -radix hexadecimal} {(0) -radix hexadecimal}} -subitemconfig {{/test_alu/alu_inst/op1_high[3]} {-radix hexadecimal} {/test_alu/alu_inst/op1_high[2]} {-radix hexadecimal} {/test_alu/alu_inst/op1_high[1]} {-radix hexadecimal} {/test_alu/alu_inst/op1_high[0]} {-radix hexadecimal} {/test_alu/alu_inst/op1_low[3]} {-radix hexadecimal} {/test_alu/alu_inst/op1_low[2]} {-radix hexadecimal} {/test_alu/alu_inst/op1_low[1]} {-radix hexadecimal} {/test_alu/alu_inst/op1_low[0]} {-radix hexadecimal}} /test_alu/alu_inst/OP1 +add wave -noupdate -expand -group Registers -radix hexadecimal /test_alu/alu_inst/OP2 +add wave -noupdate -radix hexadecimal /test_alu/alu_inst/result_hi +add wave -noupdate -radix hexadecimal /test_alu/alu_inst/result_lo +add wave -noupdate -expand -group {Bus control} /test_alu/alu_oe +add wave -noupdate -expand -group {Bus control} /test_alu/alu_op1_oe +add wave -noupdate -expand -group {Bus control} /test_alu/alu_op2_oe +add wave -noupdate -expand -group {Bus control} /test_alu/alu_res_oe +add wave -noupdate -expand -group {Bus control} /test_alu/alu_shift_oe +add wave -noupdate -expand -group {Bus control} /test_alu/alu_bs_oe +add wave -noupdate -expand -group {Input shifter} /test_alu/alu_shift_db0 +add wave -noupdate -expand -group {Input shifter} /test_alu/alu_shift_db7 +add wave -noupdate -expand -group {Input shifter} /test_alu/alu_shift_in +add wave -noupdate -expand -group {Input shifter} /test_alu/alu_shift_right +add wave -noupdate -expand -group {Input shifter} /test_alu/alu_shift_left +add wave -noupdate /test_alu/bsel +add wave -noupdate -expand -group {Operand selectors} /test_alu/alu_op1_sel_bus +add wave -noupdate -expand -group {Operand selectors} /test_alu/alu_op1_sel_low +add wave -noupdate -expand -group {Operand selectors} /test_alu/alu_op1_sel_zero +add wave -noupdate -expand -group {Operand selectors} /test_alu/alu_op2_sel_bus +add wave -noupdate -expand -group {Operand selectors} /test_alu/alu_op2_sel_lq +add wave -noupdate -expand -group {Operand selectors} /test_alu/alu_op2_sel_zero +add wave -noupdate -expand -group {ALU core} /test_alu/alu_core_R +add wave -noupdate -expand -group {ALU core} /test_alu/alu_core_S +add wave -noupdate -expand -group {ALU core} /test_alu/alu_core_V +add wave -noupdate -expand -group {ALU core} /test_alu/alu_sel_op2_neg +add wave -noupdate -expand -group {ALU core} /test_alu/alu_sel_op2_high +add wave -noupdate -expand -group {ALU core} /test_alu/alu_op_low +add wave -noupdate -expand -group Flags /test_alu/alu_core_cf_in +add wave -noupdate -expand -group Flags /test_alu/alu_core_cf_out +add wave -noupdate -expand -group Flags /test_alu/alu_parity_in +add wave -noupdate -expand -group Flags /test_alu/alu_parity_out +add wave -noupdate -expand -group Flags /test_alu/alu_zero +add wave -noupdate -expand -group Flags /test_alu/alu_vf_out +add wave -noupdate -expand -group Flags /test_alu/alu_sf_out +add wave -noupdate -expand -group Flags /test_alu/alu_xf_out +add wave -noupdate -expand -group Flags /test_alu/alu_yf_out +add wave -noupdate -expand -group Flags /test_alu/alu_low_gt_9 +add wave -noupdate -expand -group Flags /test_alu/alu_high_gt_9 +add wave -noupdate -expand -group Flags /test_alu/alu_high_eq_9 +add wave -noupdate /test_alu/cf +add wave -noupdate /test_alu/pf +add wave -noupdate /test_alu/hf +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {1800 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 180 +configure wave -valuecolwidth 58 +configure wave -justifyvalue right +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits us +update +WaveRestoreZoom {0 ns} {4800 ns} diff --git a/cpu/alu/simulation/modelsim/wave_core.do b/cpu/alu/simulation/modelsim/wave_core.do new file mode 100644 index 0000000..d03cd96 --- /dev/null +++ b/cpu/alu/simulation/modelsim/wave_core.do @@ -0,0 +1,29 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate -radix hexadecimal /test_core/op1_sig +add wave -noupdate -radix hexadecimal /test_core/op2_sig +add wave -noupdate /test_core/cy_in_sig +add wave -noupdate -color Gold -itemcolor Gold -radix hexadecimal /test_core/result_sig +add wave -noupdate -color Gold -format Literal -itemcolor Gold /test_core/cy_out_sig +add wave -noupdate -color Gray75 -itemcolor Gray75 /test_core/vf_out_sig +add wave -noupdate /test_core/R_sig +add wave -noupdate /test_core/S_sig +add wave -noupdate /test_core/V_sig +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {2000 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 140 +configure wave -valuecolwidth 53 +configure wave -justifyvalue right +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits us +update +WaveRestoreZoom {0 ns} {4400 ns} diff --git a/cpu/alu/simulation/modelsim/wave_mux_3z.do b/cpu/alu/simulation/modelsim/wave_mux_3z.do new file mode 100644 index 0000000..5c8416f --- /dev/null +++ b/cpu/alu/simulation/modelsim/wave_mux_3z.do @@ -0,0 +1,27 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate -radix hexadecimal /test_mux_3z/a_sig +add wave -noupdate -radix hexadecimal /test_mux_3z/b_sig +add wave -noupdate -color Gold -itemcolor Gold -radix hexadecimal /test_mux_3z/Q_sig +add wave -noupdate /test_mux_3z/sel_a_sig +add wave -noupdate /test_mux_3z/sel_b_sig +add wave -noupdate /test_mux_3z/sel_zero_sig +add wave -noupdate /test_mux_3z/ena_out_sig +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {600 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 118 +configure wave -valuecolwidth 59 +configure wave -justifyvalue right +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits us +update +WaveRestoreZoom {0 ns} {3800 ns} diff --git a/cpu/alu/simulation/modelsim/wave_prep_daa.do b/cpu/alu/simulation/modelsim/wave_prep_daa.do new file mode 100644 index 0000000..ab201c5 --- /dev/null +++ b/cpu/alu/simulation/modelsim/wave_prep_daa.do @@ -0,0 +1,25 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate -color Gold -itemcolor Gold -radix hexadecimal /test_prep_daa/low_sig +add wave -noupdate -color Gold -itemcolor Gold -radix hexadecimal /test_prep_daa/high_sig +add wave -noupdate /test_prep_daa/low_gt_9_sig +add wave -noupdate /test_prep_daa/high_gt_9_sig +add wave -noupdate /test_prep_daa/high_eq_9_sig +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {1400 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 138 +configure wave -valuecolwidth 60 +configure wave -justifyvalue right +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits us +update +WaveRestoreZoom {0 ns} {4100 ns} diff --git a/cpu/alu/simulation/modelsim/wave_shifter_core.do b/cpu/alu/simulation/modelsim/wave_shifter_core.do new file mode 100644 index 0000000..81df09c --- /dev/null +++ b/cpu/alu/simulation/modelsim/wave_shifter_core.do @@ -0,0 +1,30 @@ +onerror {resume} +quietly virtual signal -install /test_shifter_core { (context /test_shifter_core )&{out_high ,out_low }} db_out +quietly WaveActivateNextPane {} 0 +add wave -noupdate -radix binary -childformat {{{/test_shifter_core/db[7]} -radix binary} {{/test_shifter_core/db[6]} -radix binary} {{/test_shifter_core/db[5]} -radix binary} {{/test_shifter_core/db[4]} -radix binary} {{/test_shifter_core/db[3]} -radix binary} {{/test_shifter_core/db[2]} -radix binary} {{/test_shifter_core/db[1]} -radix binary} {{/test_shifter_core/db[0]} -radix binary}} -subitemconfig {{/test_shifter_core/db[7]} {-height 15 -radix binary} {/test_shifter_core/db[6]} {-height 15 -radix binary} {/test_shifter_core/db[5]} {-height 15 -radix binary} {/test_shifter_core/db[4]} {-height 15 -radix binary} {/test_shifter_core/db[3]} {-height 15 -radix binary} {/test_shifter_core/db[2]} {-height 15 -radix binary} {/test_shifter_core/db[1]} {-height 15 -radix binary} {/test_shifter_core/db[0]} {-height 15 -radix binary}} /test_shifter_core/db +add wave -noupdate -color Gold -itemcolor Gold /test_shifter_core/db_out +add wave -noupdate -color {Medium Aquamarine} -itemcolor {Medium Aquamarine} /test_shifter_core/shift_db0 +add wave -noupdate -color Cyan -itemcolor Cyan /test_shifter_core/shift_db7 +add wave -noupdate /test_shifter_core/shift_in +add wave -noupdate /test_shifter_core/shift_left +add wave -noupdate /test_shifter_core/shift_right +add wave -noupdate /test_shifter_core/out_high +add wave -noupdate /test_shifter_core/out_low +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {5100 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 143 +configure wave -valuecolwidth 64 +configure wave -justifyvalue right +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits us +update +WaveRestoreZoom {0 ns} {9500 ns} diff --git a/cpu/alu/simulation/modelsim/wave_slice.do b/cpu/alu/simulation/modelsim/wave_slice.do new file mode 100644 index 0000000..cf50c9c --- /dev/null +++ b/cpu/alu/simulation/modelsim/wave_slice.do @@ -0,0 +1,31 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate -radix hexadecimal /test_slice/op1_sig +add wave -noupdate -radix hexadecimal /test_slice/op2_sig +add wave -noupdate /test_slice/cy_in_sig +add wave -noupdate -color Gold -itemcolor Gold -radix hexadecimal /test_slice/result_sig +add wave -noupdate -color Gold -format Literal -itemcolor Gold /test_slice/cy_out_sig +add wave -noupdate /test_slice/R_sig +add wave -noupdate /test_slice/S_sig +add wave -noupdate /test_slice/V_sig +add wave -noupdate /test_slice/cy_out_D_sig +add wave -noupdate /test_slice/cy_out_C_sig +add wave -noupdate /test_slice/cy_out_B_sig +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {2000 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 132 +configure wave -valuecolwidth 57 +configure wave -justifyvalue right +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits us +update +WaveRestoreZoom {0 ns} {4100 ns} diff --git a/cpu/alu/test_alu.qpf b/cpu/alu/test_alu.qpf new file mode 100644 index 0000000..12f2b07 --- /dev/null +++ b/cpu/alu/test_alu.qpf @@ -0,0 +1,30 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition +# Date created = 09:01:54 October 13, 2014 +# +# -------------------------------------------------------------------------- # + +QUARTUS_VERSION = "13.0" +DATE = "09:01:54 October 13, 2014" + +# Revisions + +PROJECT_REVISION = "test_alu" diff --git a/cpu/alu/test_alu.qsf b/cpu/alu/test_alu.qsf new file mode 100644 index 0000000..7557445 --- /dev/null +++ b/cpu/alu/test_alu.qsf @@ -0,0 +1,66 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition +# Date created = 09:01:54 October 13, 2014 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# test_alu_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus II software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + +set_global_assignment -name FAMILY "Cyclone II" +set_global_assignment -name DEVICE EP2C20F484C7 +set_global_assignment -name TOP_LEVEL_ENTITY alu_control +set_global_assignment -name ORIGINAL_QUARTUS_VERSION "13.0 SP1" +set_global_assignment -name PROJECT_CREATION_TIME_DATE "09:01:54 OCTOBER 13, 2014" +set_global_assignment -name LAST_QUARTUS_VERSION "13.0 SP1" +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1 +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name BDF_FILE alu_slice.bdf +set_global_assignment -name BDF_FILE alu_shifter_core.bdf +set_global_assignment -name BDF_FILE alu_select.bdf +set_global_assignment -name BDF_FILE alu_prep_daa.bdf +set_global_assignment -name BDF_FILE alu_mux_8.bdf +set_global_assignment -name BDF_FILE alu_mux_4.bdf +set_global_assignment -name BDF_FILE alu_mux_3z.bdf +set_global_assignment -name BDF_FILE alu_mux_2z.bdf +set_global_assignment -name BDF_FILE alu_mux_2.bdf +set_global_assignment -name BDF_FILE alu_flags.bdf +set_global_assignment -name BDF_FILE alu_core.bdf +set_global_assignment -name BDF_FILE alu_control.bdf +set_global_assignment -name BDF_FILE alu_bit_select.bdf +set_global_assignment -name BDF_FILE alu.bdf +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/cpu/alu/test_alu.sv b/cpu/alu/test_alu.sv new file mode 100644 index 0000000..90ac4e9 --- /dev/null +++ b/cpu/alu/test_alu.sv @@ -0,0 +1,229 @@ +//============================================================== +// Test complete ALU block +//============================================================== +`timescale 100 ns/ 100 ns + +module test_alu; + +// ----------------- CLOCKS AND RESET ----------------- +// Define one full T-clock cycle delay +`define T #2 +bit clk = 1; +initial repeat (24) #1 clk = ~clk; + +// ------------------------ BUS LOGIC ------------------------ +// Bus control +logic alu_oe; // ALU unit output enable to the outside bus + +// Write to the ALU internal data buses +logic alu_op1_oe; // Enable writing by the OP1 latch +logic alu_op2_oe; // Enable writing by the OP2 latch +logic alu_res_oe; // Enable writing by the ALU result latch +logic alu_shift_oe; // Enable writing by the input shifter +logic alu_bs_oe; // Enable writing by the input bit selector +// Our own test internal mux to select ALU bus writers +logic [2:0] bus_sel; // Select internal bus writer: + +typedef enum logic[2:0] { + BUS_HIGHZ, BUS_OP1, BUS_OP2, BUS_RES, BUS_SHIFT, BUS_BS +} bus_t; + +// Mux to select only one block to drive internal ALU bus +always_comb +begin + alu_op1_oe = 0; + alu_op2_oe = 0; + alu_res_oe = 0; + alu_shift_oe = 0; + alu_bs_oe = 0; + case (bus_sel) + BUS_OP1 : alu_op1_oe = 1; + BUS_OP2 : alu_op2_oe = 1; + BUS_RES : alu_res_oe = 1; + BUS_SHIFT : alu_shift_oe = 1; + BUS_BS : alu_bs_oe = 1; + endcase +end + +// ------------------------ INPUT ------------------------ +// Input shifter control wires and output from the shifter +logic alu_shift_in; // Carry-in into the shifter +logic alu_shift_right; // Shift right +logic alu_shift_left; // Shift left +wire alu_shift_db0; // Output db[0] from the shifter for the shift logic +wire alu_shift_db7; // Output db[7] from the shifter for the shift logic + +// Input bit selector control wires +logic [2:0] bsel; // Selects a bit to generate + +// Operator latch 1 mux select +logic alu_op1_sel_bus; // OP1 is read from the internal bus +logic alu_op1_sel_low; // OP1 is read from the low nibble +logic alu_op1_sel_zero; // OP1 is loaded with zero + +// Operator 2 latch mux select +logic alu_op2_sel_bus; // OP2 is read from the internal bus +logic alu_op2_sel_lq; // OP2 is read from the L-Q gates (see schematic) +logic alu_op2_sel_zero; // OP2 is loaded with zero + +// ALU operator mux select +logic alu_sel_op2_neg; // Selects complemented OP2 +logic alu_sel_op2_high; // Selects high OP2 nibble as opposed to low + +// ALU Core operations +logic alu_core_cf_in; // Carry input into the ALU core +logic alu_core_R; // Operation control "R" +logic alu_core_S; // Operation control "S" +logic alu_core_V; // Operation control "V" +logic alu_op_low; // Signal to compute and store the low nibble (see schematic) +wire alu_core_cf_out; // Output carry bit from the ALU core +wire alu_vf_out; // Output overflow flag from the ALU + +// Zero-detect, parity calculation, flag preparation and DAA-preparation logic +logic alu_parity_in; // Input parity bit from a previous nibble +wire alu_parity_out; // Output parity on the result and a previous nibble +wire alu_zero; // Output signal that the result is zero +wire alu_sf_out; // Output signal containing the result sign bit +wire alu_yf_out; // Output signal containing the result[5] bit which is YF +wire alu_xf_out; // Output signal containing the result[3] bit which is XF +wire alu_low_gt_9; // Output signal that the low nibble result > 9 +wire alu_high_gt_9; // Output signal that the high nibble result > 9 +wire alu_high_eq_9; // Output signal that the high nibble result == 9 + +// ------------------------ BUSSES ------------------------ +// Bidirectional data bus, interface to the outside world +logic [7:0] db_w; // Drive it using this bus +wire [7:0] db; // Read it using this bus + +wire [3:0] test_db_low; // Test point to probe internal low nibble bus +wire [3:0] test_db_high; // Test point to probe internal high nibble bus + +// ------------------------ FLAGS ------------------------ +reg cf; // Carry flag +reg pf; // Parity flag +reg hf; // Half-carry flag + +// ----------------- TEST ------------------- +initial begin + // Init / reset + db_w = 8'h00; + bus_sel = BUS_HIGHZ; + + alu_shift_in = 0; + alu_shift_right = 0; + alu_shift_left = 0; + + bsel = 2'h0; + + alu_op1_sel_bus = 0; + alu_op1_sel_low = 0; + alu_op1_sel_zero = 0; + + alu_op2_sel_bus = 0; + alu_op2_sel_lq = 0; + alu_op2_sel_zero = 0; + + alu_sel_op2_neg = 0; + alu_sel_op2_high = 0; + + alu_parity_in = 0; + alu_core_cf_in = 0; + alu_core_R = 0; + alu_core_S = 0; + alu_core_V = 0; + alu_op_low = 0; + + cf = 0; + hf = 0; + pf = 0; + + //------------------------------------------------------------ + // Test loading to internal bus from the input shifter through the OP1 latch + `T db_w = 8'h24; // High: 0010 Low: 0100 + bus_sel = BUS_SHIFT; + alu_shift_right = 1; // Enable shift and shift *right* + alu_shift_in = 1; // shift in <- 1 + alu_op1_sel_bus = 1; // Write into the OP1 latch + + `T db_w = 'z; + alu_op1_sel_bus = 0; + alu_shift_in = 0; + bus_sel = BUS_OP1; // Read back OP1 latch + alu_shift_right = 0; + // Expected output on the external ALU bus : 1001 0010, 0x92 + `T assert(db==8'h92); + // Reset + bus_sel = BUS_HIGHZ; + + //------------------------------------------------------------ + // Test loading to internal bus from the input bit selector through the OP2 latch + `T db_w = 'z; // Not using external bus to load, but the bit-select + bsel = 2'h3; // Bit 3: 0000 1000 + bus_sel = BUS_BS; + alu_op2_sel_bus = 1; // Write into the OP2 latch + + `T db_w = 'z; + alu_op2_sel_bus = 0; + alu_shift_in = 0; + bus_sel = BUS_OP2; + bsel = 2'h0; + // Expected output on the external ALU bus : 0000 1000, 0x08 + `T assert(db==8'h08); + // Reset + `T bus_sel = BUS_HIGHZ; + + //------------------------------------------------------------ + // Test the full adding function, ADD + `T db_w = 8'h8C; // Operand 1: 8C + bus_sel = BUS_SHIFT; // Shifter writes to internal bus + alu_op1_sel_bus = 1; // Write into the OP1 latch + + `T db_w = 8'h68; // Operand 1: 68 + alu_op_low = 1; // Perform the low nibble calculation + alu_op1_sel_bus = 0; + bus_sel = BUS_SHIFT; // Shifter writes to internal bus + alu_op2_sel_bus = 1; // Write into the OP2 latch + // Do a low nibble addition in this cycle + alu_sel_op2_high = 0; // ALU select low OP nibble + alu_parity_in = 0; // Reset parity of the nibble + alu_core_cf_in = 0; // CF in 0 + alu_core_R = 0; + alu_core_S = 0; + alu_core_V = 0; + hf = alu_core_cf_out; // Load the HF with the half-carry out + pf = alu_parity_out; // Load the PF with the parity of the nibble result + + `T db_w = 'z; + alu_op_low = 0; // Perform the high nibble calculation + alu_op2_sel_bus = 0; + alu_sel_op2_high = 1; // ALU select high OP2 nibble + alu_core_cf_in = 0; + alu_core_cf_in = hf; // Carry in the half-carry + alu_parity_in = pf; // Parity in the parity of the low result nibble + bus_sel = BUS_RES; // ALU result latch writes to the bus + // Expected output on the external ALU bus : 8C + 68 = F4 + `T assert(db==8'hF4); + // Reset + bus_sel = BUS_HIGHZ; + + `T $display("End of test"); +end + +//-------------------------------------------------------------- +// External bus logic +assign db = db_w; // Drive 3-state bidirectional bus +always_comb // Output internal ALU bus only when our +begin // test is not driving it + if (db_w==='z) + alu_oe = 1; + else + alu_oe = 0; +end + +//-------------------------------------------------------------- +// Instantiate ALU block and assign identical nets and variables +//-------------------------------------------------------------- + +alu alu_inst( .* ); + +endmodule diff --git a/cpu/alu/test_core.sv b/cpu/alu/test_core.sv new file mode 100644 index 0000000..e5b844d --- /dev/null +++ b/cpu/alu/test_core.sv @@ -0,0 +1,135 @@ +//============================================================== +// Test ALU core +//============================================================== +`timescale 100 ns/ 100 ns + +module test_core; + +// ----------------- INPUT ----------------- +reg [3:0] op1_sig; // Operand 1 +reg [3:0] op2_sig; // Operand 2 +reg cy_in_sig; // Carry in (to slice D) +reg R_sig; // Operation control "R" +reg S_sig; // Operation control "S" +reg V_sig; // Operation control "V" + +// ----------------- OUTPUT ----------------- +wire cy_out_sig; // Carry out (from slice A) +wire vf_out_sig; // Overflow out +wire [3:0] result_sig; // Result bits + +// ----------------- TEST ------------------- +`define CHECK(arg) \ + assert(result_sig==arg); + +initial begin + //------------------------------------------------------------ + // Test ADD/ADC: R=0 S=0 V=0 Cin for ADC operation + R_sig = 0; + S_sig = 0; + V_sig = 0; + op1_sig = 4'h0; // 0 + 0 + 0 = 0 + op2_sig = 4'h0; + cy_in_sig = 0; + #1 `CHECK(4'h0); + cy_in_sig = 1; // 0 + 0 + 1 = 1 + #1 `CHECK(4'h1); + op1_sig = 4'h2; // 2 + 8 + 0 = A + op2_sig = 4'h8; + cy_in_sig = 0; + #1 `CHECK(4'hA); + cy_in_sig = 1; // 2 + 8 + 1 = B + #1 `CHECK(4'hB); + op1_sig = 4'hB; // B + 4 + 0 = F + op2_sig = 4'h4; + cy_in_sig = 0; + #1 `CHECK(4'hF); + cy_in_sig = 1; // B + 4 + 1 = 0 + CY + #1 `CHECK(4'h0); + op1_sig = 4'hD; // D + 6 + 0 = 3 + CY + op2_sig = 4'h6; + cy_in_sig = 0; + #1 `CHECK(4'h3); + cy_in_sig = 1; // D + 6 + 1 = 4 + CY + #1 `CHECK(4'h4); + + //------------------------------------------------------------ + // Test XOR: R=1 S=0 V=0 Cin=0 + #1 + R_sig = 1; + S_sig = 0; + V_sig = 0; + cy_in_sig = 0; + op1_sig = 4'h0; // 0 ^ 0 = 0 + op2_sig = 4'h0; + #1 `CHECK(4'h0); + op1_sig = 4'h3; // 3 ^ C = F + op2_sig = 4'hC; + #1 `CHECK(4'hF); + op1_sig = 4'h6; // 6 ^ 3 = 5 + op2_sig = 4'h3; + #1 `CHECK(4'h5); + op1_sig = 4'hF; // F ^ F = 0 + op2_sig = 4'hF; + #1 `CHECK(4'h0); + + //------------------------------------------------------------ + // Test AND: R=0 S=1 V=0 Cin=1 + #1 + R_sig = 0; + S_sig = 1; + V_sig = 0; + cy_in_sig = 1; + op1_sig = 4'h0; // 0 & 0 = 0 + op2_sig = 4'h0; + #1 `CHECK(4'h0); + op1_sig = 4'h3; // 3 & C = 0 + op2_sig = 4'hC; + #1 `CHECK(4'h0); + op1_sig = 4'h6; // 6 & 3 = 2 + op2_sig = 4'h3; + #1 `CHECK(4'h2); + op1_sig = 4'hF; // F & F = F + op2_sig = 4'hF; + #1 `CHECK(4'hF); + + //------------------------------------------------------------ + // Test OR: R=1 S=1 V=1 Cin=0 + #1 + R_sig = 1; + S_sig = 1; + V_sig = 1; + cy_in_sig = 0; + op1_sig = 4'h0; // 0 | 0 = 0 + op2_sig = 4'h0; + #1 `CHECK(4'h0); + op1_sig = 4'h3; // 3 | C = F + op2_sig = 4'hC; + #1 `CHECK(4'hF); + op1_sig = 4'h6; // 6 | 3 = 7 + op2_sig = 4'h3; + #1 `CHECK(4'h7); + op1_sig = 4'hF; // F | F = F + op2_sig = 4'hF; + #1 `CHECK(4'hf); + + #1 $display("End of test"); +end + +//-------------------------------------------------------------- +// Instantiate ALU core block +//-------------------------------------------------------------- +alu_core alu_core_inst +( + .cy_in(cy_in_sig) , // input cy_in_sig + .op1(op1_sig[3:0]) , // input [3:0] op1_sig + .op2(op2_sig[3:0]) , // input [3:0] op2_sig + .S(S_sig) , // input S_sig + .V(V_sig) , // input V_sig + .R(R_sig) , // input R_sig + .cy_out(cy_out_sig) , // output cy_out_sig + .vf_out(vf_out_sig) , // output vf_out_sig + .result(result_sig[3:0]) // output [3:0] result_sig +); + +endmodule diff --git a/cpu/alu/test_mux_3z.sv b/cpu/alu/test_mux_3z.sv new file mode 100644 index 0000000..1037796 --- /dev/null +++ b/cpu/alu/test_mux_3z.sv @@ -0,0 +1,73 @@ +//============================================================== +// Test ALU op1 MUX which is a bit more complicated +//============================================================== +`timescale 100 ns/ 100 ns + +module test_mux_3z; + +// ----------------- INPUT ----------------- +reg sel_a_sig; +reg sel_b_sig; +reg sel_zero_sig; +reg [3:0] a_sig; +reg [3:0] b_sig; + +// ----------------- OUTPUT ----------------- +wire [3:0] Q_sig; // Output of a mux +wire ena_out_sig; // Write enable to the latch + +// ----------------- TEST ------------------- +`define CHECK(arg) \ + assert(Q_sig==arg); + +initial begin + sel_a_sig = 0; + sel_b_sig = 0; + sel_zero_sig = 0; + a_sig = 4'hA; + b_sig = 4'h5; + #1 `CHECK(0); + + sel_zero_sig = 0; + sel_a_sig = 0; + sel_b_sig = 0; + #1 `CHECK(0); + + sel_zero_sig = 1; + sel_a_sig = 0; + sel_b_sig = 0; + #1 `CHECK(0); + + sel_zero_sig = 0; + sel_a_sig = 1; + sel_b_sig = 0; + #1 `CHECK(a_sig); + + sel_zero_sig = 0; + sel_a_sig = 0; + sel_b_sig = 1; + #1 `CHECK(b_sig); + + sel_zero_sig = 1; + sel_a_sig = 1; + sel_b_sig = 1; + #1 `CHECK(0); + + #1 $display("End of test"); +end + +//-------------------------------------------------------------- +// Instantiate a mux +//-------------------------------------------------------------- +alu_mux_3z alu_mux_3z_inst +( + .sel_zero(sel_zero_sig) , // input sel_zero_sig + .sel_a(sel_a_sig) , // input sel_a_sig + .b(b_sig) , // input [3:0] b_sig + .sel_b(sel_b_sig) , // input sel_b_sig + .a(a_sig) , // input [3:0] a_sig + .Q(Q_sig) , // output [3:0] Q_sig + .ena(ena_out_sig) // output ena_out_sig +); + +endmodule diff --git a/cpu/alu/test_prep_daa.sv b/cpu/alu/test_prep_daa.sv new file mode 100644 index 0000000..a174bf9 --- /dev/null +++ b/cpu/alu/test_prep_daa.sv @@ -0,0 +1,86 @@ +//============================================================== +// Test ALU state preparation for DAA instruction +//============================================================== +`timescale 100 ns/ 100 ns + +module test_prep_daa; + +// ----------------- INPUT ----------------- +reg [3:0] low_sig; // Input data bus A (independent) +reg [3:0] high_sig; // Input data bus B (independent) + +// ----------------- OUTPUT ----------------- +wire low_gt_9_sig; // low bus > 9 +wire high_gt_9_sig; // high bus > 9 +wire high_eq_9_sig; // high bus == 9 + +// ----------------- TEST ------------------- +`define CHECK \ + assert(low_gt_9_sig==low_sig>9 && high_gt_9_sig==high_sig>9 && high_eq_9_sig==(high_sig==9)); + +initial begin + low_sig = 4'h0; + high_sig = 4'h0; + #1 `CHECK + low_sig = 4'h1; + high_sig = 4'h1; + #1 `CHECK + low_sig = 4'h2; + high_sig = 4'h2; + #1 `CHECK + low_sig = 4'h3; + high_sig = 4'h3; + #1 `CHECK + low_sig = 4'h4; + high_sig = 4'h4; + #1 `CHECK + low_sig = 4'h5; + high_sig = 4'h5; + #1 `CHECK + low_sig = 4'h6; + high_sig = 4'h6; + #1 `CHECK + low_sig = 4'h7; + high_sig = 4'h7; + #1 `CHECK + low_sig = 4'h8; + high_sig = 4'h8; + #1 `CHECK + low_sig = 4'h9; + high_sig = 4'h9; + #1 `CHECK + low_sig = 4'hA; + high_sig = 4'hA; + #1 `CHECK + low_sig = 4'hB; + high_sig = 4'hB; + #1 `CHECK + low_sig = 4'hC; + high_sig = 4'hC; + #1 `CHECK + low_sig = 4'hD; + high_sig = 4'hD; + #1 `CHECK + low_sig = 4'hE; + high_sig = 4'hE; + #1 `CHECK + low_sig = 4'hF; + high_sig = 4'hF; + #1 `CHECK + + #1 $display("End of test"); +end + +//-------------------------------------------------------------- +// Instantiate prep-DAA block +//-------------------------------------------------------------- +alu_prep_daa alu_prep_daa_inst +( + .low(low_sig) , // input [3:0] low_sig + .high(high_sig) , // input [3:0] high_sig + .low_gt_9(low_gt_9_sig) , // output low_gt_9_sig + .high_eq_9(high_eq_9_sig) , // output high_eq_9_sig + .high_gt_9(high_gt_9_sig) // output high_gt_9_sig +); + +endmodule diff --git a/cpu/alu/test_shifter_core.sv b/cpu/alu/test_shifter_core.sv new file mode 100644 index 0000000..f3f0161 --- /dev/null +++ b/cpu/alu/test_shifter_core.sv @@ -0,0 +1,169 @@ +//============================================================== +// Test ALU shifter core block +//============================================================== +`timescale 100 ns/ 100 ns + +module test_shifter_core; + +// ----------------- INPUT ----------------- +logic [7:0] db; // Input data bus +logic shift_in; // Input bit to be shifted in +logic shift_left; // Input control to left-shift +logic shift_right; // Input control to right-shift + +// ----------------- OUTPUT ----------------- +wire shift_db0; // db[0] for shift logic +wire shift_db7; // db[7] for shift logic +wire [3:0] out_high; // To internal ALU bus, high nibble +wire [3:0] out_low; // ..low nibble + +// ----------------- TEST ------------------- +`define CHECK(arg) \ + assert({out_high,out_low}==arg); + +initial begin + db = 8'h00; + shift_left = 0; + shift_right = 0; + shift_in = 0; + + //------------------------------------------------------------ + // Test load without shifting + db = 8'hAA; + #1 `CHECK(8'hAA); + db = 8'h55; + #1 `CHECK(8'h55); + + //------------------------------------------------------------ + // Test right shift, no carry-in + #1 db = 8'b00000001; + shift_right = 1; + shift_in = 0; + #1 `CHECK(8'b00000000); + db = 8'b00000010; + #1 `CHECK(8'b00000001); + db = 8'b00000100; + #1 `CHECK(8'b00000010); + db = 8'b00001000; + #1 `CHECK(8'b00000100); + db = 8'b00010000; + #1 `CHECK(8'b00001000); + db = 8'b00100000; + #1 `CHECK(8'b00010000); + db = 8'b01000000; + #1 `CHECK(8'b00100000); + db = 8'b10000000; + #1 `CHECK(8'b01000000); + + // With carry-in + #1 db = 8'b00000001; + shift_in = 1; + #1 `CHECK(8'b10000000); + db = 8'b00000010; + #1 `CHECK(8'b10000001); + db = 8'b00000100; + #1 `CHECK(8'b10000010); + db = 8'b00001000; + #1 `CHECK(8'b10000100); + db = 8'b00010000; + #1 `CHECK(8'b10001000); + db = 8'b00100000; + #1 `CHECK(8'b10010000); + db = 8'b01000000; + #1 `CHECK(8'b10100000); + db = 8'b10000000; + #1 `CHECK(8'b11000000); + + //------------------------------------------------------------ + // Test left shift, no carry-in + #1 db = 8'b00000001; + shift_right = 0; + shift_left = 1; + shift_in = 0; + #1 `CHECK(8'b00000010); + db = 8'b00000010; + #1 `CHECK(8'b00000100); + db = 8'b00000100; + #1 `CHECK(8'b00001000); + db = 8'b00001000; + #1 `CHECK(8'b00010000); + db = 8'b00010000; + #1 `CHECK(8'b00100000); + db = 8'b00100000; + #1 `CHECK(8'b01000000); + db = 8'b01000000; + #1 `CHECK(8'b10000000); + db = 8'b10000000; + #1 `CHECK(8'b00000000); + + // With carry-in + #1 db = 8'b00000001; + shift_in = 1; + #1 `CHECK(8'b00000011); + db = 8'b00000010; + #1 `CHECK(8'b00000101); + db = 8'b00000100; + #1 `CHECK(8'b00001001); + db = 8'b00001000; + #1 `CHECK(8'b00010001); + db = 8'b00010000; + #1 `CHECK(8'b00100001); + db = 8'b00100000; + #1 `CHECK(8'b01000001); + db = 8'b01000000; + #1 `CHECK(8'b10000001); + db = 8'b10000000; + #1 `CHECK(8'b00000001); + + //------------------------------------------------------------ + // Test right shift, no carry-in - special SRA instruction + // This instruction simply duplicates bit [7] instead of using CY + #1 db = 8'b00000001; + shift_right = 1; + shift_left = 0; + shift_in = shift_db7; + #1 `CHECK(8'b10000000); + db = 8'b00000010; + #1 `CHECK(8'b10000001); + db = 8'b00000100; + #1 `CHECK(8'b10000010); + db = 8'b00001000; + #1 `CHECK(8'b10000100); + db = 8'b00010000; + #1 `CHECK(8'b10001000); + db = 8'b00100000; + #1 `CHECK(8'b10010000); + db = 8'b01000000; + #1 `CHECK(8'b10100000); + db = 8'b10000000; + #1 `CHECK(8'b11000000); + + // With carry-in + #1 db = 8'b00000001; + shift_in = 1; + #1 `CHECK(8'b10000000); + db = 8'b00000010; + #1 `CHECK(8'b10000001); + db = 8'b00000100; + #1 `CHECK(8'b10000010); + db = 8'b00001000; + #1 `CHECK(8'b10000100); + db = 8'b00010000; + #1 `CHECK(8'b10001000); + db = 8'b00100000; + #1 `CHECK(8'b10010000); + db = 8'b01000000; + #1 `CHECK(8'b10100000); + db = 8'b10000000; + #1 `CHECK(8'b11000000); + + #1 $display("End of test"); +end + +//-------------------------------------------------------------- +// Instantiate shifter core block and assign identical nets and variables +//-------------------------------------------------------------- + +alu_shifter_core alu_shifter_core_inst( .* ); + +endmodule diff --git a/cpu/alu/test_slice.sv b/cpu/alu/test_slice.sv new file mode 100644 index 0000000..2ee2ee0 --- /dev/null +++ b/cpu/alu/test_slice.sv @@ -0,0 +1,184 @@ +//============================================================== +// Test ALU slice +//============================================================== +`timescale 100 ns/ 100 ns + +module test_slice; + +// ----------------- INPUT ----------------- +reg [3:0] op1_sig; // Operand 1 +reg [3:0] op2_sig; // Operand 2 +reg cy_in_sig; // Carry in (to slice D) +reg R_sig; // Operation control "R" +reg S_sig; // Operation control "S" +reg V_sig; // Operation control "V" + +// ----------------- OUTPUT ----------------- +wire cy_out_sig; // Carry out (from slice A) +wire [3:0] result_sig; // Result bits + +// ----------------- CONNECTIONS ----------------- +wire cy_out_D_sig; // Carry out from slice D into slice C +wire cy_out_C_sig; // Carry out from slice C into slice B +wire cy_out_B_sig; // Carry out from slice B into slice A + +// ----------------- TEST ------------------- +`define CHECK(arg) \ + assert(result_sig==arg); + +initial begin + op1_sig = '0; + op2_sig = '0; + cy_in_sig = 0; + R_sig = 0; + S_sig = 0; + V_sig = 0; + + //------------------------------------------------------------ + // Test ADD/ADC: R=0 S=0 V=0 Cin for ADC operation + R_sig = 0; + S_sig = 0; + V_sig = 0; + op1_sig = 4'h0; // 0 + 0 + 0 = 0 + op2_sig = 4'h0; + cy_in_sig = 0; + #1 `CHECK(0); + cy_in_sig = 1; // 0 + 0 + 1 = 1 + #1 `CHECK(1); + op1_sig = 4'h2; // 2 + 8 + 0 = A + op2_sig = 4'h8; + cy_in_sig = 0; + #1 `CHECK(4'hA); + cy_in_sig = 1; // 2 + 8 + 1 = B + #1 `CHECK(4'hB); + op1_sig = 4'hB; // B + 4 + 0 = F + op2_sig = 4'h4; + cy_in_sig = 0; + #1 `CHECK(4'hF); + cy_in_sig = 1; // B + 4 + 1 = 0 + CY + #1 `CHECK(4'h0); + op1_sig = 4'hD; // D + 6 + 0 = 3 + CY + op2_sig = 4'h6; + cy_in_sig = 0; + #1 `CHECK(4'h3); + cy_in_sig = 1; // D + 6 + 1 = 4 + CY + #1 `CHECK(4'h4); + + //------------------------------------------------------------ + // Test XOR: R=1 S=0 V=0 Cin=0 + #1 + R_sig = 1; + S_sig = 0; + V_sig = 0; + cy_in_sig = 0; + op1_sig = 4'h0; // 0 ^ 0 = 0 + op2_sig = 4'h0; + #1 `CHECK(4'h0); + op1_sig = 4'h3; // 3 ^ C = F + op2_sig = 4'hC; + #1 `CHECK(4'hF); + op1_sig = 4'h6; // 6 ^ 3 = 5 + op2_sig = 4'h3; + #1 `CHECK(4'h5); + op1_sig = 4'hF; // F ^ F = 0 + op2_sig = 4'hF; + #1 `CHECK(4'h0); + + //------------------------------------------------------------ + // Test AND: R=0 S=1 V=0 Cin=1 + #1 + R_sig = 0; + S_sig = 1; + V_sig = 0; + cy_in_sig = 1; + op1_sig = 4'h0; // 0 & 0 = 0 + op2_sig = 4'h0; + #1 `CHECK(4'h0); + op1_sig = 4'h3; // 3 & C = 0 + op2_sig = 4'hC; + #1 `CHECK(4'h0); + op1_sig = 4'h6; // 6 & 3 = 2 + op2_sig = 4'h3; + #1 `CHECK(4'h2); + op1_sig = 4'hF; // F & F = F + op2_sig = 4'hF; + #1 `CHECK(4'hF); + + //------------------------------------------------------------ + // Test OR: R=1 S=1 V=1 Cin=0 + #1 + R_sig = 1; + S_sig = 1; + V_sig = 1; + cy_in_sig = 0; + op1_sig = 4'h0; // 0 | 0 = 0 + op2_sig = 4'h0; + #1 `CHECK(4'h0); + op1_sig = 4'h3; // 3 | C = F + op2_sig = 4'hC; + #1 `CHECK(4'hF); + op1_sig = 4'h6; // 6 | 3 = 7 + op2_sig = 4'h3; + #1 `CHECK(4'h7); + op1_sig = 4'hF; // F | F = F + op2_sig = 4'hF; + #1 `CHECK(4'hF); + + #1 $display("End of test"); +end + +//-------------------------------------------------------------- +// Instantiate 4 ALU slice units, daisy-chained; MSB is slice A +// +// slice_A slice_B slice_C slice_D +// cy_out <= [3] [2] [1] [0] <= cy_in +//-------------------------------------------------------------- +alu_slice slice_A +( + .op1(op1_sig[3]) , // input op1_sig + .op2(op2_sig[3]) , // input op2_sig + .cy_in(cy_out_B_sig) , // input cy_in_sig + .R(R_sig) , // input R_sig + .S(S_sig) , // input S_sig + .V(V_sig) , // input V_sig + .cy_out(cy_out_sig) , // output cy_out_sig + .result(result_sig[3]) // output result_sig +); + +alu_slice slice_B +( + .op1(op1_sig[2]) , // input op1_sig + .op2(op2_sig[2]) , // input op2_sig + .cy_in(cy_out_C_sig) , // input cy_in_sig + .R(R_sig) , // input R_sig + .S(S_sig) , // input S_sig + .V(V_sig) , // input V_sig + .cy_out(cy_out_B_sig) , // output cy_out_sig + .result(result_sig[2]) // output result_sig +); + +alu_slice slice_C +( + .op1(op1_sig[1]) , // input op1_sig + .op2(op2_sig[1]) , // input op2_sig + .cy_in(cy_out_D_sig) , // input cy_in_sig + .R(R_sig) , // input R_sig + .S(S_sig) , // input S_sig + .V(V_sig) , // input V_sig + .cy_out(cy_out_C_sig) , // output cy_out_sig + .result(result_sig[1]) // output result_sig +); + +alu_slice slice_D +( + .op1(op1_sig[0]) , // input op1_sig + .op2(op2_sig[0]) , // input op2_sig + .cy_in(cy_in_sig) , // input cy_in_sig + .R(R_sig) , // input R_sig + .S(S_sig) , // input S_sig + .V(V_sig) , // input V_sig + .cy_out(cy_out_D_sig) , // output cy_out_sig + .result(result_sig[0]) // output result_sig +); + +endmodule diff --git a/cpu/bus/address_latch.bdf b/cpu/bus/address_latch.bdf new file mode 100644 index 0000000..6a21829 --- /dev/null +++ b/cpu/bus/address_latch.bdf @@ -0,0 +1,1103 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 24 216 200 232) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_inc_cy" (rect 9 0 59 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 184 200 200) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_inc_dec" (rect 9 0 64 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 312 200 328) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_al_we" (rect 9 0 53 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 168 200 184) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_inc_limit6" (rect 9 0 72 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 16 200 32) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_bus_inc_oe" (rect 9 0 82 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 296 200 312) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "clk" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 432 200 448) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_apin_mux" (rect 9 0 73 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 416 200 432) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_apin_mux2" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 48 200 64) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "clrpc" (rect 9 0 32 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 352 200 368) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nreset" (rect 9 0 39 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 1008 352 1184 368) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "address[15..0]" (rect 90 0 160 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1008 176 1184 192) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "address_is_1" (rect 90 0 154 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (bidir) + (rect 24 80 200 96) + (text "BIDIR" (rect 151 0 175 10)(font "Arial" (font_size 6))) + (text "abus[15..0]" (rect 31 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 120 4)(pt 98 4)) + (line (pt 176 8)(pt 124 8)) + (line (pt 120 12)(pt 98 12)) + (line (pt 98 4)(pt 94 8)) + (line (pt 98 12)(pt 94 8)) + (line (pt 120 4)(pt 124 8)) + (line (pt 124 8)(pt 120 12)) + ) + (flipy) + (text "VCC" (rect 152 7 172 17)(font "Arial" (font_size 6))) +) +(symbol + (rect 344 72 392 104) + (text "TRI" (rect 32 0 47 10)(font "Arial" (font_size 6))) + (text "inst4" (rect 22 21 45 33)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 34 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 11 0 22 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 16 16)(pt 0 16)) + ) + (drawing + (line (pt 34 25)(pt 34 7)) + (line (pt 34 25)(pt 16 16)) + (line (pt 34 7)(pt 16 16)) + ) + (flipy) +) +(symbol + (rect 464 144 664 272) + (text "inc_dec" (rect 5 0 49 14)(font "Arial" (font_size 8))) + (text "inst_inc_dec" (rect 8 112 69 124)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "limit6" (rect 0 0 27 14)(font "Arial" (font_size 8))) + (text "limit6" (rect 21 27 48 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "decrement" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "decrement" (rect 21 43 81 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "d[15..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "d[15..0]" (rect 21 59 63 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "carry_in" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "carry_in" (rect 21 75 68 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 200 32) + (output) + (text "address[15..0]" (rect 0 0 82 14)(font "Arial" (font_size 8))) + (text "address[15..0]" (rect 97 27 179 41)(font "Arial" (font_size 8))) + (line (pt 200 32)(pt 184 32)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 184 112)) + ) +) +(symbol + (rect 336 264 400 344) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "alatch" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 824 192 888 336) + (text "OR8" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst5" (rect 3 133 26 145)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 14 48)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 96) + (input) + (text "IN6" (rect 2 87 19 99)(font "Courier New" (bold))(invisible)) + (text "IN6" (rect 2 87 19 99)(font "Courier New" (bold))(invisible)) + (line (pt 0 96)(pt 14 96)) + ) + (port + (pt 0 80) + (input) + (text "IN5" (rect 2 71 19 83)(font "Courier New" (bold))(invisible)) + (text "IN5" (rect 2 71 19 83)(font "Courier New" (bold))(invisible)) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 112) + (input) + (text "IN7" (rect 2 103 19 115)(font "Courier New" (bold))(invisible)) + (text "IN7" (rect 2 103 19 115)(font "Courier New" (bold))(invisible)) + (line (pt 0 112)(pt 14 112)) + ) + (port + (pt 0 128) + (input) + (text "IN8" (rect 2 119 19 131)(font "Courier New" (bold))(invisible)) + (text "IN8" (rect 2 119 19 131)(font "Courier New" (bold))(invisible)) + (line (pt 0 128)(pt 14 128)) + ) + (port + (pt 64 72) + (output) + (text "OUT" (rect 48 63 65 75)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 63 65 75)(font "Courier New" (bold))(invisible)) + (line (pt 48 72)(pt 64 72)) + ) + (drawing + (line (pt 14 131)(pt 14 83)) + (line (pt 14 84)(pt 25 84)) + (line (pt 14 61)(pt 25 61)) + (line (pt 14 61)(pt 14 13)) + (arc (pt 25 83)(pt 49 72)(rect -6 21 57 84)) + (arc (pt 49 72)(pt 25 61)(rect -6 61 57 124)) + (arc (pt 7 77)(pt 7 67)(rect -14 56 19 89)) + ) +) +(symbol + (rect 824 40 888 184) + (text "OR8" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst6" (rect 3 133 26 145)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 14 48)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 96) + (input) + (text "IN6" (rect 2 87 19 99)(font "Courier New" (bold))(invisible)) + (text "IN6" (rect 2 87 19 99)(font "Courier New" (bold))(invisible)) + (line (pt 0 96)(pt 14 96)) + ) + (port + (pt 0 80) + (input) + (text "IN5" (rect 2 71 19 83)(font "Courier New" (bold))(invisible)) + (text "IN5" (rect 2 71 19 83)(font "Courier New" (bold))(invisible)) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 112) + (input) + (text "IN7" (rect 2 103 19 115)(font "Courier New" (bold))(invisible)) + (text "IN7" (rect 2 103 19 115)(font "Courier New" (bold))(invisible)) + (line (pt 0 112)(pt 14 112)) + ) + (port + (pt 0 128) + (input) + (text "IN8" (rect 2 119 19 131)(font "Courier New" (bold))(invisible)) + (text "IN8" (rect 2 119 19 131)(font "Courier New" (bold))(invisible)) + (line (pt 0 128)(pt 14 128)) + ) + (port + (pt 64 72) + (output) + (text "OUT" (rect 48 63 65 75)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 63 65 75)(font "Courier New" (bold))(invisible)) + (line (pt 48 72)(pt 64 72)) + ) + (drawing + (line (pt 14 131)(pt 14 83)) + (line (pt 14 84)(pt 25 84)) + (line (pt 14 61)(pt 25 61)) + (line (pt 14 61)(pt 14 13)) + (arc (pt 25 83)(pt 49 72)(rect -6 21 57 84)) + (arc (pt 49 72)(pt 25 61)(rect -6 61 57 124)) + (arc (pt 7 77)(pt 7 67)(rect -14 56 19 89)) + ) +) +(symbol + (rect 768 304 816 336) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "n" (rect 3 21 8 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 920 160 984 208) + (text "NOR2" (rect 1 0 26 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 37 20 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 54 24)(pt 64 24)) + ) + (drawing + (line (pt 12 36)(pt 23 36)) + (line (pt 12 13)(pt 23 13)) + (arc (pt 46 24)(pt 23 13)(rect -6 13 53 72)) + (arc (pt 5 29)(pt 5 19)(rect -16 8 17 41)) + (arc (pt 23 35)(pt 46 24)(rect -6 -23 53 36)) + (circle (rect 46 20 54 28)) + ) +) +(symbol + (rect 440 320 528 464) + (text "address_mux" (rect 5 0 82 14)(font "Arial" (font_size 8))) + (text "mux" (rect 0 128 21 140)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "in1[15..0]" (rect 0 0 51 14)(font "Arial" (font_size 8))) + (text "in1[15..0]" (rect 21 27 72 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "in0[15..0]" (rect 0 0 51 14)(font "Arial" (font_size 8))) + (text "in0[15..0]" (rect 21 67 72 81)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "select" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "select" (rect 5 99 39 113)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 16 120)) + ) + (port + (pt 88 56) + (output) + (text "out[15..0]" (rect -72 0 -19 14)(font "Arial" (font_size 8))) + (text "out[15..0]" (rect 24 48 77 62)(font "Arial" (font_size 8))) + (line (pt 88 56)(pt 72 56)(line_width 3)) + ) + (drawing + (line (pt 8 16)(pt 80 40)) + (line (pt 8 120)(pt 48 120)) + (line (pt 80 40)(pt 80 72)) + (line (pt 8 16)(pt 8 96)) + (line (pt 80 72)(pt 8 96)) + (line (pt 48 120)(pt 48 80)) + ) +) +(symbol + (rect 584 304 672 448) + (text "address_mux" (rect 5 0 82 14)(font "Arial" (font_size 8))) + (text "inst7" (rect 0 128 23 140)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "in1[15..0]" (rect 0 0 51 14)(font "Arial" (font_size 8))) + (text "in1[15..0]" (rect 21 27 72 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "in0[15..0]" (rect 0 0 51 14)(font "Arial" (font_size 8))) + (text "in0[15..0]" (rect 21 67 72 81)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "select" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "select" (rect 5 99 39 113)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 16 120)) + ) + (port + (pt 88 56) + (output) + (text "out[15..0]" (rect -72 0 -19 14)(font "Arial" (font_size 8))) + (text "out[15..0]" (rect 24 48 77 62)(font "Arial" (font_size 8))) + (line (pt 88 56)(pt 72 56)(line_width 3)) + ) + (drawing + (line (pt 8 16)(pt 80 40)) + (line (pt 8 120)(pt 48 120)) + (line (pt 80 40)(pt 80 72)) + (line (pt 8 16)(pt 8 96)) + (line (pt 80 72)(pt 8 96)) + (line (pt 48 120)(pt 48 80)) + ) +) +(symbol + (rect 280 104 328 168) + (text "AND2" (rect 0 1 10 25)(font "Arial" (font_size 6))(vertical)) + (text "inst3" (rect 37 3 49 26)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 2 19 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 32 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 23 2 35 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 48 27 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 12 14)(pt 12 30)) + (line (pt 37 14)(pt 37 31)) + (line (pt 12 14)(pt 37 14)) + (arc (pt 12 30)(pt 37 31)(rect 12 18 37 43)) + ) + (flipy_rotate90) +) +(symbol + (rect 224 40 272 72) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst9" (rect 3 21 26 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(connector + (pt 440 208) + (pt 440 288) + (bus) +) +(connector + (pt 824 320) + (pt 816 320) +) +(connector + (pt 904 112) + (pt 904 176) +) +(connector + (pt 904 264) + (pt 904 192) +) +(connector + (pt 560 288) + (pt 560 336) + (bus) +) +(connector + (pt 200 176) + (pt 464 176) +) +(connector + (pt 200 192) + (pt 464 192) +) +(connector + (pt 440 208) + (pt 464 208) + (bus) +) +(connector + (pt 200 224) + (pt 464 224) +) +(connector + (pt 304 288) + (pt 336 288) + (bus) +) +(connector + (pt 200 304) + (pt 336 304) +) +(connector + (text "Q[7]" (rect 790 212 811 224)(font "Arial" )) + (pt 744 208) + (pt 824 208) +) +(connector + (text "Q[5]" (rect 790 244 811 256)(font "Arial" )) + (pt 744 240) + (pt 824 240) +) +(connector + (text "Q[6]" (rect 790 228 811 240)(font "Arial" )) + (pt 744 224) + (pt 824 224) +) +(connector + (text "Q[4]" (rect 790 260 811 272)(font "Arial" )) + (pt 744 256) + (pt 824 256) +) +(connector + (text "Q[2]" (rect 790 292 811 304)(font "Arial" )) + (pt 744 288) + (pt 824 288) +) +(connector + (text "Q[3]" (rect 790 276 811 288)(font "Arial" )) + (pt 744 272) + (pt 824 272) +) +(connector + (text "Q[1]" (rect 750 308 771 320)(font "Arial" )) + (pt 744 304) + (pt 824 304) +) +(connector + (text "Q[15]" (rect 785 60 812 72)(font "Arial" )) + (pt 744 56) + (pt 824 56) +) +(connector + (text "Q[13]" (rect 785 92 812 104)(font "Arial" )) + (pt 744 88) + (pt 824 88) +) +(connector + (text "Q[14]" (rect 785 76 812 88)(font "Arial" )) + (pt 744 72) + (pt 824 72) +) +(connector + (text "Q[12]" (rect 785 108 812 120)(font "Arial" )) + (pt 744 104) + (pt 824 104) +) +(connector + (text "Q[10]" (rect 785 140 812 152)(font "Arial" )) + (pt 744 136) + (pt 824 136) +) +(connector + (text "Q[11]" (rect 785 124 812 136)(font "Arial" )) + (pt 744 120) + (pt 824 120) +) +(connector + (text "Q[9]" (rect 790 156 811 168)(font "Arial" )) + (pt 744 152) + (pt 824 152) +) +(connector + (text "Q[8]" (rect 790 172 811 184)(font "Arial" )) + (pt 744 168) + (pt 824 168) +) +(connector + (text "Q[0]" (rect 748 326 769 338)(font "Arial" )) + (pt 744 320) + (pt 768 320) +) +(connector + (pt 904 192) + (pt 920 192) +) +(connector + (pt 904 176) + (pt 920 176) +) +(connector + (pt 304 392) + (pt 440 392) + (bus) +) +(connector + (pt 200 440) + (pt 440 440) +) +(connector + (pt 560 336) + (pt 584 336) + (bus) +) +(connector + (pt 200 424) + (pt 584 424) +) +(connector + (pt 440 288) + (pt 560 288) + (bus) +) +(connector + (pt 560 288) + (pt 744 288) + (bus) +) +(connector + (pt 744 208) + (pt 744 224) + (bus) +) +(connector + (pt 744 224) + (pt 744 240) + (bus) +) +(connector + (text "Q[15..0]" (rect 712 231 724 271)(font "Arial" )(vertical)) + (pt 744 240) + (pt 744 256) + (bus) +) +(connector + (pt 744 256) + (pt 744 272) + (bus) +) +(connector + (pt 744 272) + (pt 744 288) + (bus) +) +(connector + (pt 744 288) + (pt 744 304) + (bus) +) +(connector + (pt 744 304) + (pt 744 320) + (bus) +) +(connector + (pt 744 56) + (pt 744 72) + (bus) +) +(connector + (pt 744 72) + (pt 744 88) + (bus) +) +(connector + (pt 744 88) + (pt 744 104) + (bus) +) +(connector + (pt 744 104) + (pt 744 120) + (bus) +) +(connector + (pt 744 120) + (pt 744 136) + (bus) +) +(connector + (pt 744 136) + (pt 744 152) + (bus) +) +(connector + (pt 744 152) + (pt 744 168) + (bus) +) +(connector + (pt 744 168) + (pt 744 208) + (bus) +) +(connector + (pt 400 288) + (pt 440 288) + (bus) +) +(connector + (pt 888 264) + (pt 904 264) +) +(connector + (pt 888 112) + (pt 904 112) +) +(connector + (pt 984 184) + (pt 1008 184) +) +(connector + (pt 528 376) + (pt 584 376) + (bus) +) +(connector + (pt 672 360) + (pt 1008 360) + (bus) +) +(connector + (pt 200 320) + (pt 336 320) +) +(connector + (pt 368 344) + (pt 368 360) +) +(connector + (pt 368 360) + (pt 200 360) +) +(connector + (pt 688 176) + (pt 688 88) + (bus) +) +(connector + (pt 664 176) + (pt 688 176) + (bus) +) +(connector + (pt 304 288) + (pt 304 392) + (bus) +) +(connector + (pt 312 104) + (pt 312 88) + (bus) +) +(connector + (pt 416 352) + (pt 416 88) + (bus) +) +(connector + (pt 440 352) + (pt 416 352) + (bus) +) +(connector + (pt 200 88) + (pt 312 88) + (bus) +) +(connector + (pt 312 88) + (pt 344 88) + (bus) +) +(connector + (pt 392 88) + (pt 416 88) + (bus) +) +(connector + (pt 416 88) + (pt 688 88) + (bus) +) +(connector + (pt 296 56) + (pt 272 56) +) +(connector + (pt 296 104) + (pt 296 56) +) +(connector + (pt 200 56) + (pt 224 56) +) +(connector + (pt 368 24) + (pt 200 24) +) +(connector + (pt 368 72) + (pt 368 24) +) +(connector + (text "abusz[15..0]" (rect 287 240 299 300)(font "Arial" )(vertical)) + (pt 304 168) + (pt 304 288) + (bus) +) +(junction (pt 304 288)) +(junction (pt 440 288)) +(junction (pt 560 288)) +(junction (pt 744 288)) +(junction (pt 744 208)) +(junction (pt 744 240)) +(junction (pt 744 224)) +(junction (pt 744 256)) +(junction (pt 744 272)) +(junction (pt 744 304)) +(junction (pt 744 88)) +(junction (pt 744 72)) +(junction (pt 744 104)) +(junction (pt 744 136)) +(junction (pt 744 120)) +(junction (pt 744 152)) +(junction (pt 744 168)) +(junction (pt 416 88)) +(junction (pt 312 88)) +(text "Address increment / decrement" (rect 488 112 667 126)(font "Arial" (font_size 8))) +(text "A kludge to work around the latch => flop translation" (rect 440 472 737 486)(font "Arial" (font_size 8))) +(title_block + (rect 24 472 281 524) + (name "title-custom-small") + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 17, 2014, 2016" (rect 56 3 168 17)(font "Arial" (font_size 8)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "address_latch" (rect 43 2 139 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.5" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/bus/address_latch.bsf b/cpu/bus/address_latch.bsf new file mode 100644 index 0000000..18cc4d0 --- /dev/null +++ b/cpu/bus/address_latch.bsf @@ -0,0 +1,120 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 240 240) + (text "address_latch" (rect 5 0 86 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 208 25 220)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "clrpc" (rect 0 0 28 14)(font "Arial" (font_size 8))) + (text "clrpc" (rect 21 27 49 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "ctl_bus_inc_oe" (rect 0 0 86 14)(font "Arial" (font_size 8))) + (text "ctl_bus_inc_oe" (rect 21 43 107 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "ctl_inc_limit6" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "ctl_inc_limit6" (rect 21 59 91 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "ctl_inc_dec" (rect 0 0 64 14)(font "Arial" (font_size 8))) + (text "ctl_inc_dec" (rect 21 75 85 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "ctl_inc_cy" (rect 0 0 57 14)(font "Arial" (font_size 8))) + (text "ctl_inc_cy" (rect 21 91 78 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 21 107 36 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 0 128) + (input) + (text "ctl_al_we" (rect 0 0 55 14)(font "Arial" (font_size 8))) + (text "ctl_al_we" (rect 21 123 76 137)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)) + ) + (port + (pt 0 144) + (input) + (text "nreset" (rect 0 0 36 14)(font "Arial" (font_size 8))) + (text "nreset" (rect 21 139 57 153)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)) + ) + (port + (pt 0 160) + (input) + (text "ctl_apin_mux2" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "ctl_apin_mux2" (rect 21 155 102 169)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 16 160)) + ) + (port + (pt 0 176) + (input) + (text "ctl_apin_mux" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "ctl_apin_mux" (rect 21 171 95 185)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 16 176)) + ) + (port + (pt 224 48) + (output) + (text "address_is_1" (rect 0 0 77 14)(font "Arial" (font_size 8))) + (text "address_is_1" (rect 126 43 203 57)(font "Arial" (font_size 8))) + (line (pt 224 48)(pt 208 48)) + ) + (port + (pt 224 64) + (output) + (text "address[15..0]" (rect 0 0 82 14)(font "Arial" (font_size 8))) + (text "address[15..0]" (rect 121 59 203 73)(font "Arial" (font_size 8))) + (line (pt 224 64)(pt 208 64)(line_width 3)) + ) + (port + (pt 224 32) + (bidir) + (text "abus[15..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "abus[15..0]" (rect 140 27 203 41)(font "Arial" (font_size 8))) + (line (pt 224 32)(pt 208 32)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 208 208)) + ) +) diff --git a/cpu/bus/address_latch.v b/cpu/bus/address_latch.v new file mode 100644 index 0000000..c5fd96f --- /dev/null +++ b/cpu/bus/address_latch.v @@ -0,0 +1,128 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Sat Feb 27 08:13:14 2016" + +module address_latch( + ctl_inc_cy, + ctl_inc_dec, + ctl_al_we, + ctl_inc_limit6, + ctl_bus_inc_oe, + clk, + ctl_apin_mux, + ctl_apin_mux2, + clrpc, + nreset, + address_is_1, + abus, + address +); + + +input wire ctl_inc_cy; +input wire ctl_inc_dec; +input wire ctl_al_we; +input wire ctl_inc_limit6; +input wire ctl_bus_inc_oe; +input wire clk; +input wire ctl_apin_mux; +input wire ctl_apin_mux2; +input wire clrpc; +input wire nreset; +output wire address_is_1; +inout wire [15:0] abus; +output wire [15:0] address; + +wire [15:0] abusz; +reg [15:0] Q; +wire SYNTHESIZED_WIRE_0; +wire SYNTHESIZED_WIRE_1; +wire SYNTHESIZED_WIRE_2; +wire [15:0] SYNTHESIZED_WIRE_7; +wire SYNTHESIZED_WIRE_4; +wire [15:0] SYNTHESIZED_WIRE_5; + + + + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + Q[15:0] <= 16'b0000000000000000; + end +else +if (ctl_al_we) + begin + Q[15:0] <= abusz[15:0]; + end +end + +assign address_is_1 = ~(SYNTHESIZED_WIRE_0 | SYNTHESIZED_WIRE_1); + +assign abusz = {SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2,SYNTHESIZED_WIRE_2} & abus; + +assign abus[15] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[15] : 1'bz; +assign abus[14] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[14] : 1'bz; +assign abus[13] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[13] : 1'bz; +assign abus[12] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[12] : 1'bz; +assign abus[11] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[11] : 1'bz; +assign abus[10] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[10] : 1'bz; +assign abus[9] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[9] : 1'bz; +assign abus[8] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[8] : 1'bz; +assign abus[7] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[7] : 1'bz; +assign abus[6] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[6] : 1'bz; +assign abus[5] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[5] : 1'bz; +assign abus[4] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[4] : 1'bz; +assign abus[3] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[3] : 1'bz; +assign abus[2] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[2] : 1'bz; +assign abus[1] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[1] : 1'bz; +assign abus[0] = ctl_bus_inc_oe ? SYNTHESIZED_WIRE_7[0] : 1'bz; + +assign SYNTHESIZED_WIRE_0 = Q[7] | Q[5] | Q[6] | Q[4] | Q[2] | Q[3] | Q[1] | SYNTHESIZED_WIRE_4; + +assign SYNTHESIZED_WIRE_1 = Q[15] | Q[13] | Q[14] | Q[12] | Q[10] | Q[11] | Q[9] | Q[8]; + + +address_mux b2v_inst7( + .select(ctl_apin_mux2), + .in0(SYNTHESIZED_WIRE_5), + .in1(Q), + .out(address)); + +assign SYNTHESIZED_WIRE_2 = ~clrpc; + + +inc_dec b2v_inst_inc_dec( + .limit6(ctl_inc_limit6), + .decrement(ctl_inc_dec), + .carry_in(ctl_inc_cy), + .d(Q), + .address(SYNTHESIZED_WIRE_7)); + + +address_mux b2v_mux( + .select(ctl_apin_mux), + .in0(abusz), + .in1(SYNTHESIZED_WIRE_7), + .out(SYNTHESIZED_WIRE_5)); + +assign SYNTHESIZED_WIRE_4 = ~Q[0]; + + +endmodule diff --git a/cpu/bus/address_mux.bdf b/cpu/bus/address_mux.bdf new file mode 100644 index 0000000..7aabc6e --- /dev/null +++ b/cpu/bus/address_mux.bdf @@ -0,0 +1,292 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 168 208 184) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "select" (rect 9 0 38 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 48 208 64) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in1[15..0]" (rect 9 0 55 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 112 208 128) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in0[15..0]" (rect 9 0 55 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 528 88 704 104) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "out[15..0]" (rect 90 0 137 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 336 40 400 88) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "sel1" (rect 3 37 23 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 336 104 400 152) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "sel0" (rect 3 37 23 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 432 72 496 120) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "sel_or" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 256 160 304 192) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "sel_not" (rect 3 21 38 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(connector + (pt 304 176) + (pt 320 176) +) +(connector + (pt 320 176) + (pt 320 136) +) +(connector + (pt 320 136) + (pt 336 136) +) +(connector + (pt 336 72) + (pt 240 72) +) +(connector + (pt 240 176) + (pt 240 72) +) +(connector + (pt 208 176) + (pt 240 176) +) +(connector + (pt 240 176) + (pt 256 176) +) +(connector + (pt 208 56) + (pt 336 56) + (bus) +) +(connector + (pt 208 120) + (pt 336 120) + (bus) +) +(connector + (pt 496 96) + (pt 528 96) + (bus) +) +(connector + (pt 400 64) + (pt 416 64) + (bus) +) +(connector + (pt 416 64) + (pt 416 88) + (bus) +) +(connector + (pt 400 128) + (pt 416 128) + (bus) +) +(connector + (pt 416 128) + (pt 416 104) + (bus) +) +(connector + (pt 416 104) + (pt 432 104) + (bus) +) +(connector + (pt 416 88) + (pt 432 88) + (bus) +) +(junction (pt 240 176)) +(title_block + (rect 32 240 289 292) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "address_mux" (rect 43 2 136 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "November 8, 2014" (rect 56 3 159 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.0" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/bus/address_mux.bsf b/cpu/bus/address_mux.bsf new file mode 100644 index 0000000..fa4c4b7 --- /dev/null +++ b/cpu/bus/address_mux.bsf @@ -0,0 +1,62 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 64 64 152 208) + (text "address_mux" (rect 5 0 82 14)(font "Arial" (font_size 8))) + (text "inst" (rect 0 128 17 140)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "in1[15..0]" (rect 0 0 51 14)(font "Arial" (font_size 8))) + (text "in1[15..0]" (rect 21 27 72 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 72) + (input) + (text "in0[15..0]" (rect 0 0 51 14)(font "Arial" (font_size 8))) + (text "in0[15..0]" (rect 21 67 72 81)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)(line_width 3)) + ) + (port + (pt 0 120) + (input) + (text "select" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "select" (rect 5 99 39 113)(font "Arial" (font_size 8))) + (line (pt 0 120)(pt 16 120)) + ) + (port + (pt 88 56) + (output) + (text "out[15..0]" (rect -72 0 -19 14)(font "Arial" (font_size 8))) + (text "out[15..0]" (rect 24 48 77 62)(font "Arial" (font_size 8))) + (line (pt 88 56)(pt 72 56)(line_width 3)) + ) + (drawing + (line (pt 8 16)(pt 80 40)) + (line (pt 8 120)(pt 48 120)) + (line (pt 80 40)(pt 80 72)) + (line (pt 8 16)(pt 8 96)) + (line (pt 80 72)(pt 8 96)) + (line (pt 48 120)(pt 48 80)) + ) +) diff --git a/cpu/bus/address_mux.v b/cpu/bus/address_mux.v new file mode 100644 index 0000000..3470a46 --- /dev/null +++ b/cpu/bus/address_mux.v @@ -0,0 +1,48 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Sat Nov 08 09:37:58 2014" + +module address_mux( + select, + in0, + in1, + out +); + + +input wire select; +input wire [15:0] in0; +input wire [15:0] in1; +output wire [15:0] out; + +wire SYNTHESIZED_WIRE_0; +wire [15:0] SYNTHESIZED_WIRE_1; +wire [15:0] SYNTHESIZED_WIRE_2; + + + + +assign SYNTHESIZED_WIRE_1 = in0 & {SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0,SYNTHESIZED_WIRE_0}; + +assign SYNTHESIZED_WIRE_2 = in1 & {select,select,select,select,select,select,select,select,select,select,select,select,select,select,select,select}; + +assign SYNTHESIZED_WIRE_0 = ~select; + +assign out = SYNTHESIZED_WIRE_1 | SYNTHESIZED_WIRE_2; + + +endmodule diff --git a/cpu/bus/address_pins.bdf b/cpu/bus/address_pins.bdf new file mode 100644 index 0000000..a4d0cc0 --- /dev/null +++ b/cpu/bus/address_pins.bdf @@ -0,0 +1,261 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 40 80 216 96) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "address[15..0]" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 96 216 112) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "clk" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 112 216 128) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "bus_ab_pin_we" (rect 9 0 83 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 32 216 48) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "pin_control_oe" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 568 80 744 96) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "abus[15..0]" (rect 90 0 145 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 480 72 528 104) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 21 20 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 312 64 376 144) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "apin_latch" (rect 3 68 52 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 48 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 240 88 288 120) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "nclk" (rect 3 21 23 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(connector + (pt 216 88) + (pt 312 88) + (bus) +) +(connector + (pt 216 120) + (pt 312 120) +) +(connector + (pt 504 40) + (pt 504 72) +) +(connector + (pt 216 40) + (pt 504 40) +) +(connector + (pt 376 88) + (pt 480 88) + (bus) +) +(connector + (pt 528 88) + (pt 568 88) + (bus) +) +(connector + (pt 216 104) + (pt 240 104) +) +(connector + (pt 288 104) + (pt 312 104) +) +(text "Repeated 16 times, once for each address pin." (rect 472 144 738 158)(font "Arial" (font_size 8))) +(title_block + (rect 40 184 297 236) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "address_pins" (rect 43 2 135 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "June 14, 2014" (rect 56 3 136 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.3" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/bus/address_pins.bsf b/cpu/bus/address_pins.bsf new file mode 100644 index 0000000..91f39c1 --- /dev/null +++ b/cpu/bus/address_pins.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 224 144) + (text "address_pins" (rect 5 0 82 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 112 25 124)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "pin_control_oe" (rect 0 0 83 14)(font "Arial" (font_size 8))) + (text "pin_control_oe" (rect 21 27 104 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "address[15..0]" (rect 0 0 82 14)(font "Arial" (font_size 8))) + (text "address[15..0]" (rect 21 43 103 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 21 59 36 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "bus_ab_pin_we" (rect 0 0 92 14)(font "Arial" (font_size 8))) + (text "bus_ab_pin_we" (rect 21 75 113 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 208 32) + (output) + (text "abus[15..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "abus[15..0]" (rect 124 27 187 41)(font "Arial" (font_size 8))) + (line (pt 208 32)(pt 192 32)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 192 112)) + ) +) diff --git a/cpu/bus/address_pins.v b/cpu/bus/address_pins.v new file mode 100644 index 0000000..9e85deb --- /dev/null +++ b/cpu/bus/address_pins.v @@ -0,0 +1,69 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Sun Nov 16 16:56:05 2014" + +module address_pins( + clk, + bus_ab_pin_we, + pin_control_oe, + address, + abus +); + + +input wire clk; +input wire bus_ab_pin_we; +input wire pin_control_oe; +input wire [15:0] address; +output wire [15:0] abus; + +wire SYNTHESIZED_WIRE_0; +reg [15:0] DFFE_apin_latch; + + + + + +always@(posedge SYNTHESIZED_WIRE_0) +begin +if (bus_ab_pin_we) + begin + DFFE_apin_latch[15:0] <= address[15:0]; + end +end + +assign abus[15] = pin_control_oe ? DFFE_apin_latch[15] : 1'bz; +assign abus[14] = pin_control_oe ? DFFE_apin_latch[14] : 1'bz; +assign abus[13] = pin_control_oe ? DFFE_apin_latch[13] : 1'bz; +assign abus[12] = pin_control_oe ? DFFE_apin_latch[12] : 1'bz; +assign abus[11] = pin_control_oe ? DFFE_apin_latch[11] : 1'bz; +assign abus[10] = pin_control_oe ? DFFE_apin_latch[10] : 1'bz; +assign abus[9] = pin_control_oe ? DFFE_apin_latch[9] : 1'bz; +assign abus[8] = pin_control_oe ? DFFE_apin_latch[8] : 1'bz; +assign abus[7] = pin_control_oe ? DFFE_apin_latch[7] : 1'bz; +assign abus[6] = pin_control_oe ? DFFE_apin_latch[6] : 1'bz; +assign abus[5] = pin_control_oe ? DFFE_apin_latch[5] : 1'bz; +assign abus[4] = pin_control_oe ? DFFE_apin_latch[4] : 1'bz; +assign abus[3] = pin_control_oe ? DFFE_apin_latch[3] : 1'bz; +assign abus[2] = pin_control_oe ? DFFE_apin_latch[2] : 1'bz; +assign abus[1] = pin_control_oe ? DFFE_apin_latch[1] : 1'bz; +assign abus[0] = pin_control_oe ? DFFE_apin_latch[0] : 1'bz; + +assign SYNTHESIZED_WIRE_0 = ~clk; + + +endmodule diff --git a/cpu/bus/bus_control.bdf b/cpu/bus/bus_control.bdf new file mode 100644 index 0000000..a96df99 --- /dev/null +++ b/cpu/bus/bus_control.bdf @@ -0,0 +1,243 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 64 208 80) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_bus_ff_oe" (rect 9 0 77 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 48 208 64) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_bus_zero_oe" (rect 9 0 88 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (bidir) + (rect 600 136 776 152) + (text "BIDIR" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "db[7..0]" (rect 90 0 127 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)) + (line (pt 0 8)(pt 52 8)) + (line (pt 56 12)(pt 78 12)) + (line (pt 78 4)(pt 82 8)) + (line (pt 78 12)(pt 82 8)) + (line (pt 56 4)(pt 52 8)) + (line (pt 52 8)(pt 56 12)) + ) + (text "VCC" (rect 4 7 24 17)(font "Arial" (font_size 6))) +) +(symbol + (rect 512 128 560 160) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 21 20 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 304 120 368 168) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst2" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 144 120 176 136) + (text "VCC" (rect 7 0 27 10)(font "Arial" (font_size 6))) + (text "inst1" (rect 3 5 26 17)(font "Arial" )(invisible)) + (port + (pt 16 16) + (output) + (text "1" (rect 19 7 24 19)(font "Courier New" (bold))(invisible)) + (text "1" (rect 19 7 24 19)(font "Courier New" (bold))(invisible)) + (line (pt 16 16)(pt 16 8)) + ) + (drawing + (line (pt 8 8)(pt 24 8)) + ) +) +(symbol + (rect 304 40 368 88) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst6" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(connector + (pt 600 144) + (pt 560 144) + (bus) +) +(connector + (pt 208 56) + (pt 304 56) +) +(connector + (pt 304 136) + (pt 232 136) +) +(connector + (pt 232 72) + (pt 232 136) +) +(connector + (text "bus[7..0]" (rect 387 128 430 140)(font "Arial" )) + (pt 368 144) + (pt 512 144) + (bus) +) +(connector + (text "vcc[7..0]" (rect 190 136 234 148)(font "Arial" )) + (pt 304 152) + (pt 160 152) + (bus) +) +(connector + (pt 368 64) + (pt 536 64) +) +(connector + (pt 160 136) + (pt 160 152) + (bus) +) +(connector + (pt 208 72) + (pt 232 72) +) +(connector + (pt 232 72) + (pt 304 72) +) +(connector + (pt 536 64) + (pt 536 128) +) +(junction (pt 232 72)) +(title_block + (rect 32 208 289 260) + (name "title-custom-small") + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "August 17, 2014, 2016" (rect 56 3 185 17)(font "Arial" (font_size 8)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "bus_control" (rect 43 2 123 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.3" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/bus/bus_control.bsf b/cpu/bus/bus_control.bsf new file mode 100644 index 0000000..0f047de --- /dev/null +++ b/cpu/bus/bus_control.bsf @@ -0,0 +1,50 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 208 112) + (text "bus_control" (rect 5 0 72 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 80 25 92)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "ctl_bus_zero_oe" (rect 0 0 95 14)(font "Arial" (font_size 8))) + (text "ctl_bus_zero_oe" (rect 21 27 116 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "ctl_bus_ff_oe" (rect 0 0 79 14)(font "Arial" (font_size 8))) + (text "ctl_bus_ff_oe" (rect 21 43 100 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 192 32) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 129 27 171 41)(font "Arial" (font_size 8))) + (line (pt 192 32)(pt 176 32)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 176 80)) + ) +) diff --git a/cpu/bus/bus_control.v b/cpu/bus/bus_control.v new file mode 100644 index 0000000..23454ef --- /dev/null +++ b/cpu/bus/bus_control.v @@ -0,0 +1,53 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Fri Feb 26 22:25:37 2016" + +module bus_control( + ctl_bus_ff_oe, + ctl_bus_zero_oe, + db +); + + +input wire ctl_bus_ff_oe; +input wire ctl_bus_zero_oe; +inout wire [7:0] db; + +wire [7:0] bus; +wire [7:0] vcc; +wire SYNTHESIZED_WIRE_0; + + + + +assign db[7] = SYNTHESIZED_WIRE_0 ? bus[7] : 1'bz; +assign db[6] = SYNTHESIZED_WIRE_0 ? bus[6] : 1'bz; +assign db[5] = SYNTHESIZED_WIRE_0 ? bus[5] : 1'bz; +assign db[4] = SYNTHESIZED_WIRE_0 ? bus[4] : 1'bz; +assign db[3] = SYNTHESIZED_WIRE_0 ? bus[3] : 1'bz; +assign db[2] = SYNTHESIZED_WIRE_0 ? bus[2] : 1'bz; +assign db[1] = SYNTHESIZED_WIRE_0 ? bus[1] : 1'bz; +assign db[0] = SYNTHESIZED_WIRE_0 ? bus[0] : 1'bz; + + +assign bus = {ctl_bus_ff_oe,ctl_bus_ff_oe,ctl_bus_ff_oe,ctl_bus_ff_oe,ctl_bus_ff_oe,ctl_bus_ff_oe,ctl_bus_ff_oe,ctl_bus_ff_oe} & vcc; + +assign SYNTHESIZED_WIRE_0 = ctl_bus_ff_oe | ctl_bus_zero_oe; + +assign vcc = 8'b11111111; + +endmodule diff --git a/cpu/bus/bus_switch.bsf b/cpu/bus/bus_switch.bsf new file mode 100644 index 0000000..ea586df --- /dev/null +++ b/cpu/bus/bus_switch.bsf @@ -0,0 +1,99 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 16 16 288 160) + (text "bus_switch" (rect 5 0 48 12)(font "Arial" )) + (text "inst" (rect 8 128 20 140)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "ctl_sw_1u" (rect 0 0 38 12)(font "Arial" )) + (text "ctl_sw_1u" (rect 21 27 59 39)(font "Arial" )) + (line (pt 0 32)(pt 16 32)(line_width 1)) + ) + (port + (pt 0 48) + (input) + (text "ctl_sw_1d" (rect 0 0 38 12)(font "Arial" )) + (text "ctl_sw_1d" (rect 21 43 59 55)(font "Arial" )) + (line (pt 0 48)(pt 16 48)(line_width 1)) + ) + (port + (pt 0 64) + (input) + (text "ctl_sw_2u" (rect 0 0 40 12)(font "Arial" )) + (text "ctl_sw_2u" (rect 21 59 61 71)(font "Arial" )) + (line (pt 0 64)(pt 16 64)(line_width 1)) + ) + (port + (pt 0 80) + (input) + (text "ctl_sw_2d" (rect 0 0 40 12)(font "Arial" )) + (text "ctl_sw_2d" (rect 21 75 61 87)(font "Arial" )) + (line (pt 0 80)(pt 16 80)(line_width 1)) + ) + (port + (pt 0 96) + (input) + (text "ctl_sw_mask543_en" (rect 0 0 83 12)(font "Arial" )) + (text "ctl_sw_mask543_en" (rect 21 91 104 103)(font "Arial" )) + (line (pt 0 96)(pt 16 96)(line_width 1)) + ) + (port + (pt 272 32) + (output) + (text "bus_sw_1u" (rect 0 0 44 12)(font "Arial" )) + (text "bus_sw_1u" (rect 207 27 251 39)(font "Arial" )) + (line (pt 272 32)(pt 256 32)(line_width 1)) + ) + (port + (pt 272 48) + (output) + (text "bus_sw_1d" (rect 0 0 44 12)(font "Arial" )) + (text "bus_sw_1d" (rect 207 43 251 55)(font "Arial" )) + (line (pt 272 48)(pt 256 48)(line_width 1)) + ) + (port + (pt 272 64) + (output) + (text "bus_sw_2u" (rect 0 0 46 12)(font "Arial" )) + (text "bus_sw_2u" (rect 205 59 251 71)(font "Arial" )) + (line (pt 272 64)(pt 256 64)(line_width 1)) + ) + (port + (pt 272 80) + (output) + (text "bus_sw_2d" (rect 0 0 46 12)(font "Arial" )) + (text "bus_sw_2d" (rect 205 75 251 87)(font "Arial" )) + (line (pt 272 80)(pt 256 80)(line_width 1)) + ) + (port + (pt 272 96) + (output) + (text "bus_sw_mask543_en" (rect 0 0 89 12)(font "Arial" )) + (text "bus_sw_mask543_en" (rect 162 91 251 103)(font "Arial" )) + (line (pt 272 96)(pt 256 96)(line_width 1)) + ) + (drawing + (rectangle (rect 16 16 256 128)(line_width 1)) + ) +) diff --git a/cpu/bus/bus_switch.v b/cpu/bus/bus_switch.v new file mode 100644 index 0000000..e4fe344 --- /dev/null +++ b/cpu/bus/bus_switch.v @@ -0,0 +1,41 @@ +//============================================================================ +// Bus switch in bus A-Z80 CPU +// +// Copyright 2014, 2016 Goran Devic +// +// This module provides control data bus switch signals. The sole purpose of +// having these wires defined in this module is to get all control signals +// (which are processed by genglobals.py) to appear in the list of global +// control signals ("globals.vh") for consistency. +//============================================================================ + +module bus_switch +( + input wire ctl_sw_1u, // Control input for the SW1 upstream + input wire ctl_sw_1d, // Control input for the SW1 downstream + + input wire ctl_sw_2u, // Control input for the SW2 upstream + input wire ctl_sw_2d, // Control input for the SW2 downstream + + input wire ctl_sw_mask543_en, // Enables masking [5:3] on the data bus switch 1 + + //-------------------------------------------------------------------- + + output wire bus_sw_1u, // SW1 upstream + output wire bus_sw_1d, // SW1 downstream + + output wire bus_sw_2u, // SW2 upstream + output wire bus_sw_2d, // SW2 downstream + + output wire bus_sw_mask543_en // Affects SW1 downstream +); + +assign bus_sw_1u = ctl_sw_1u; +assign bus_sw_1d = ctl_sw_1d; + +assign bus_sw_2u = ctl_sw_2u; +assign bus_sw_2d = ctl_sw_2d; + +assign bus_sw_mask543_en = ctl_sw_mask543_en; + +endmodule diff --git a/cpu/bus/control_pins_n.bdf b/cpu/bus/control_pins_n.bdf new file mode 100644 index 0000000..e17694a --- /dev/null +++ b/cpu/bus/control_pins_n.bdf @@ -0,0 +1,963 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 472 208 488) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "busack" (rect 9 0 44 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 456 512 632 528) + (text "INPUT" (rect 15 0 43 10)(font "Arial" (font_size 6))) + (text "CPUCLK" (rect 123 0 167 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 84 12)(pt 59 12)) + (line (pt 84 4)(pt 59 4)) + (line (pt 55 8)(pt 0 8)) + (line (pt 84 12)(pt 84 4)) + (line (pt 59 4)(pt 55 8)) + (line (pt 59 12)(pt 55 8)) + ) + (flipy) + (text "VCC" (rect 20 7 40 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 80 208 96) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "pin_control_oe" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 344 208 360) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in_halt" (rect 9 0 40 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 456 392 632 408) + (text "INPUT" (rect 15 0 43 10)(font "Arial" (font_size 6))) + (text "pin_nWAIT" (rect 114 0 167 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 84 12)(pt 59 12)) + (line (pt 84 4)(pt 59 4)) + (line (pt 55 8)(pt 0 8)) + (line (pt 84 12)(pt 84 4)) + (line (pt 59 4)(pt 55 8)) + (line (pt 59 12)(pt 55 8)) + ) + (flipy) + (text "VCC" (rect 20 7 40 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 456 432 632 448) + (text "INPUT" (rect 15 0 43 10)(font "Arial" (font_size 6))) + (text "pin_nBUSRQ" (rect 103 0 167 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 84 12)(pt 59 12)) + (line (pt 84 4)(pt 59 4)) + (line (pt 55 8)(pt 0 8)) + (line (pt 84 12)(pt 84 4)) + (line (pt 59 4)(pt 55 8)) + (line (pt 59 12)(pt 55 8)) + ) + (flipy) + (text "VCC" (rect 20 7 40 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 456 552 632 568) + (text "INPUT" (rect 15 0 43 10)(font "Arial" (font_size 6))) + (text "pin_nINT" (rect 124 0 167 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 84 12)(pt 59 12)) + (line (pt 84 4)(pt 59 4)) + (line (pt 55 8)(pt 0 8)) + (line (pt 84 12)(pt 84 4)) + (line (pt 59 4)(pt 55 8)) + (line (pt 59 12)(pt 55 8)) + ) + (flipy) + (text "VCC" (rect 20 7 40 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 456 584 632 600) + (text "INPUT" (rect 15 0 43 10)(font "Arial" (font_size 6))) + (text "pin_nNMI" (rect 121 0 167 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 84 12)(pt 59 12)) + (line (pt 84 4)(pt 59 4)) + (line (pt 55 8)(pt 0 8)) + (line (pt 84 12)(pt 84 4)) + (line (pt 59 4)(pt 55 8)) + (line (pt 59 12)(pt 55 8)) + ) + (flipy) + (text "VCC" (rect 20 7 40 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 456 624 632 640) + (text "INPUT" (rect 15 0 43 10)(font "Arial" (font_size 6))) + (text "pin_nRESET" (rect 106 0 167 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 84 12)(pt 59 12)) + (line (pt 84 4)(pt 59 4)) + (line (pt 55 8)(pt 0 8)) + (line (pt 84 12)(pt 84 4)) + (line (pt 59 4)(pt 55 8)) + (line (pt 59 12)(pt 55 8)) + ) + (flipy) + (text "VCC" (rect 20 7 40 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 40 208 56) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nM1_out" (rect 9 0 50 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 304 208 320) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nRFSH_out" (rect 9 0 66 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 208 208 224) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nRD_out" (rect 9 0 52 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 256 208 272) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nWR_out" (rect 9 0 55 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 160 208 176) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nIORQ_out" (rect 9 0 64 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 112 208 128) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nMREQ_out" (rect 9 0 68 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 32 584 208 600) + (text "OUTPUT" (rect 137 0 175 10)(font "Arial" (font_size 6))) + (text "nmi" (rect 69 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 176 8)(pt 124 8)) + (line (pt 124 4)(pt 98 4)) + (line (pt 124 12)(pt 98 12)) + (line (pt 124 12)(pt 124 4)) + (line (pt 98 4)(pt 94 8)) + (line (pt 94 8)(pt 98 12)) + (line (pt 98 12)(pt 94 8)) + ) + (flipy) +) +(pin + (output) + (rect 32 432 208 448) + (text "OUTPUT" (rect 137 0 175 10)(font "Arial" (font_size 6))) + (text "busrq" (rect 59 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 176 8)(pt 124 8)) + (line (pt 124 4)(pt 98 4)) + (line (pt 124 12)(pt 98 12)) + (line (pt 124 12)(pt 124 4)) + (line (pt 98 4)(pt 94 8)) + (line (pt 94 8)(pt 98 12)) + (line (pt 98 12)(pt 94 8)) + ) + (flipy) +) +(pin + (output) + (rect 32 512 208 528) + (text "OUTPUT" (rect 137 0 175 10)(font "Arial" (font_size 6))) + (text "clk" (rect 72 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 176 8)(pt 124 8)) + (line (pt 124 4)(pt 98 4)) + (line (pt 124 12)(pt 98 12)) + (line (pt 124 12)(pt 124 4)) + (line (pt 98 4)(pt 94 8)) + (line (pt 94 8)(pt 98 12)) + (line (pt 98 12)(pt 94 8)) + ) + (flipy) +) +(pin + (output) + (rect 32 552 208 568) + (text "OUTPUT" (rect 137 0 175 10)(font "Arial" (font_size 6))) + (text "intr" (rect 71 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 176 8)(pt 124 8)) + (line (pt 124 4)(pt 98 4)) + (line (pt 124 12)(pt 98 12)) + (line (pt 124 12)(pt 124 4)) + (line (pt 98 4)(pt 94 8)) + (line (pt 94 8)(pt 98 12)) + (line (pt 98 12)(pt 94 8)) + ) + (flipy) +) +(pin + (output) + (rect 32 392 208 408) + (text "OUTPUT" (rect 137 0 175 10)(font "Arial" (font_size 6))) + (text "mwait" (rect 58 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 176 8)(pt 124 8)) + (line (pt 124 4)(pt 98 4)) + (line (pt 124 12)(pt 98 12)) + (line (pt 124 12)(pt 124 4)) + (line (pt 98 4)(pt 94 8)) + (line (pt 94 8)(pt 98 12)) + (line (pt 98 12)(pt 94 8)) + ) + (flipy) +) +(pin + (output) + (rect 32 624 208 640) + (text "OUTPUT" (rect 137 0 175 10)(font "Arial" (font_size 6))) + (text "reset_in" (rect 48 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 176 8)(pt 124 8)) + (line (pt 124 4)(pt 98 4)) + (line (pt 124 12)(pt 98 12)) + (line (pt 124 12)(pt 124 4)) + (line (pt 98 4)(pt 94 8)) + (line (pt 94 8)(pt 98 12)) + (line (pt 98 12)(pt 94 8)) + ) + (flipy) +) +(pin + (output) + (rect 456 40 632 56) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "pin_nM1" (rect 90 0 130 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 456 112 632 128) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "pin_nMREQ" (rect 90 0 147 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 456 160 632 176) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "pin_nIORQ" (rect 90 0 144 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 456 208 632 224) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "pin_nRD" (rect 90 0 132 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 456 256 632 272) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "pin_nWR" (rect 90 0 134 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 456 304 632 320) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "pin_nRFSH" (rect 90 0 146 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 456 344 632 360) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "pin_nHALT" (rect 90 0 143 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 456 472 632 488) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "pin_nBUSACK" (rect 90 0 160 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 392 104 440 136) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst19" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 392 152 440 184) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst20" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 392 200 440 232) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst21" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 392 248 440 280) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst22" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 232 336 280 368) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst26" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 232 464 280 496) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst28" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 296 424 344 456) + (text "NOT" (rect 27 0 47 10)(font "Arial" (font_size 6))) + (text "inst25" (rect 16 21 45 33)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 35 16)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 9 16)(pt 0 16)) + ) + (drawing + (line (pt 35 25)(pt 35 7)) + (line (pt 35 7)(pt 17 16)) + (line (pt 35 25)(pt 17 16)) + (circle (rect 9 12 17 20)) + ) + (flipy) +) +(symbol + (rect 296 544 344 576) + (text "NOT" (rect 27 0 47 10)(font "Arial" (font_size 6))) + (text "inst29" (rect 16 21 45 33)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 35 16)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 9 16)(pt 0 16)) + ) + (drawing + (line (pt 35 25)(pt 35 7)) + (line (pt 35 7)(pt 17 16)) + (line (pt 35 25)(pt 17 16)) + (circle (rect 9 12 17 20)) + ) + (flipy) +) +(symbol + (rect 296 576 344 608) + (text "NOT" (rect 27 0 47 10)(font "Arial" (font_size 6))) + (text "inst30" (rect 16 21 45 33)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 35 16)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 9 16)(pt 0 16)) + ) + (drawing + (line (pt 35 25)(pt 35 7)) + (line (pt 35 7)(pt 17 16)) + (line (pt 35 25)(pt 17 16)) + (circle (rect 9 12 17 20)) + ) + (flipy) +) +(symbol + (rect 296 616 344 648) + (text "NOT" (rect 27 0 47 10)(font "Arial" (font_size 6))) + (text "inst31" (rect 16 21 45 33)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 35 16)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 9 16)(pt 0 16)) + ) + (drawing + (line (pt 35 25)(pt 35 7)) + (line (pt 35 7)(pt 17 16)) + (line (pt 35 25)(pt 17 16)) + (circle (rect 9 12 17 20)) + ) + (flipy) +) +(symbol + (rect 296 384 344 416) + (text "NOT" (rect 27 0 47 10)(font "Arial" (font_size 6))) + (text "inst27" (rect 16 21 45 33)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 35 16)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 9 16)(pt 0 16)) + ) + (drawing + (line (pt 35 25)(pt 35 7)) + (line (pt 35 7)(pt 17 16)) + (line (pt 35 25)(pt 17 16)) + (circle (rect 9 12 17 20)) + ) + (flipy) +) +(connector + (pt 416 88) + (pt 416 104) +) +(connector + (pt 416 152) + (pt 416 144) +) +(connector + (pt 416 144) + (pt 368 144) +) +(connector + (pt 416 200) + (pt 416 192) +) +(connector + (pt 416 192) + (pt 368 192) +) +(connector + (pt 416 248) + (pt 416 240) +) +(connector + (pt 416 240) + (pt 368 240) +) +(connector + (pt 440 120) + (pt 456 120) +) +(connector + (pt 440 168) + (pt 456 168) +) +(connector + (pt 440 216) + (pt 456 216) +) +(connector + (pt 440 264) + (pt 456 264) +) +(connector + (pt 280 352) + (pt 456 352) +) +(connector + (pt 296 560) + (pt 208 560) +) +(connector + (pt 296 592) + (pt 208 592) +) +(connector + (pt 296 632) + (pt 208 632) +) +(connector + (pt 296 440) + (pt 208 440) +) +(connector + (pt 208 480) + (pt 232 480) +) +(connector + (pt 368 88) + (pt 368 144) +) +(connector + (pt 368 144) + (pt 368 192) +) +(connector + (pt 368 192) + (pt 368 240) +) +(connector + (pt 208 88) + (pt 368 88) +) +(connector + (pt 368 88) + (pt 416 88) +) +(connector + (pt 208 352) + (pt 232 352) +) +(connector + (pt 208 400) + (pt 296 400) +) +(connector + (pt 208 48) + (pt 456 48) +) +(connector + (pt 208 120) + (pt 392 120) +) +(connector + (pt 208 168) + (pt 392 168) +) +(connector + (pt 208 216) + (pt 392 216) +) +(connector + (pt 208 264) + (pt 392 264) +) +(connector + (pt 208 520) + (pt 456 520) +) +(connector + (pt 344 400) + (pt 456 400) +) +(connector + (pt 344 440) + (pt 456 440) +) +(connector + (pt 344 560) + (pt 456 560) +) +(connector + (pt 344 592) + (pt 456 592) +) +(connector + (pt 344 632) + (pt 456 632) +) +(connector + (pt 280 480) + (pt 456 480) +) +(connector + (pt 208 312) + (pt 456 312) +) +(junction (pt 368 144)) +(junction (pt 368 192)) +(junction (pt 368 88)) +(title_block + (rect 32 680 289 732) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "control_pins_n" (rect 43 2 143 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "July 6, 2014" (rect 56 3 124 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.1" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/bus/control_pins_n.bsf b/cpu/bus/control_pins_n.bsf new file mode 100644 index 0000000..9ea2089 --- /dev/null +++ b/cpu/bus/control_pins_n.bsf @@ -0,0 +1,232 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 232 304) + (text "control_pins_n" (rect 5 0 88 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 272 25 284)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "nM1_out" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "nM1_out" (rect 21 27 69 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "pin_control_oe" (rect 0 0 83 14)(font "Arial" (font_size 8))) + (text "pin_control_oe" (rect 21 43 104 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "nMREQ_out" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "nMREQ_out" (rect 21 59 87 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "nIORQ_out" (rect 0 0 61 14)(font "Arial" (font_size 8))) + (text "nIORQ_out" (rect 21 75 82 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "nRD_out" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "nRD_out" (rect 21 91 69 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "nWR_out" (rect 0 0 51 14)(font "Arial" (font_size 8))) + (text "nWR_out" (rect 21 107 72 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 0 128) + (input) + (text "nRFSH_out" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "nRFSH_out" (rect 21 123 84 137)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)) + ) + (port + (pt 0 144) + (input) + (text "in_halt" (rect 0 0 36 14)(font "Arial" (font_size 8))) + (text "in_halt" (rect 21 139 57 153)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)) + ) + (port + (pt 0 160) + (input) + (text "pin_nWAIT" (rect 0 0 61 14)(font "Arial" (font_size 8))) + (text "pin_nWAIT" (rect 21 155 82 169)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 16 160)) + ) + (port + (pt 0 176) + (input) + (text "pin_nBUSRQ" (rect 0 0 73 14)(font "Arial" (font_size 8))) + (text "pin_nBUSRQ" (rect 21 171 94 185)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 16 176)) + ) + (port + (pt 0 192) + (input) + (text "busack" (rect 0 0 41 14)(font "Arial" (font_size 8))) + (text "busack" (rect 21 187 62 201)(font "Arial" (font_size 8))) + (line (pt 0 192)(pt 16 192)) + ) + (port + (pt 0 208) + (input) + (text "CPUCLK" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "CPUCLK" (rect 21 203 68 217)(font "Arial" (font_size 8))) + (line (pt 0 208)(pt 16 208)) + ) + (port + (pt 0 224) + (input) + (text "pin_nINT" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "pin_nINT" (rect 21 219 69 233)(font "Arial" (font_size 8))) + (line (pt 0 224)(pt 16 224)) + ) + (port + (pt 0 240) + (input) + (text "pin_nNMI" (rect 0 0 50 14)(font "Arial" (font_size 8))) + (text "pin_nNMI" (rect 21 235 71 249)(font "Arial" (font_size 8))) + (line (pt 0 240)(pt 16 240)) + ) + (port + (pt 0 256) + (input) + (text "pin_nRESET" (rect 0 0 68 14)(font "Arial" (font_size 8))) + (text "pin_nRESET" (rect 21 251 89 265)(font "Arial" (font_size 8))) + (line (pt 0 256)(pt 16 256)) + ) + (port + (pt 216 32) + (output) + (text "pin_nM1" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "pin_nM1" (rect 148 27 195 41)(font "Arial" (font_size 8))) + (line (pt 216 32)(pt 200 32)) + ) + (port + (pt 216 48) + (output) + (text "pin_nMREQ" (rect 0 0 64 14)(font "Arial" (font_size 8))) + (text "pin_nMREQ" (rect 131 43 195 57)(font "Arial" (font_size 8))) + (line (pt 216 48)(pt 200 48)) + ) + (port + (pt 216 64) + (output) + (text "pin_nIORQ" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "pin_nIORQ" (rect 135 59 195 73)(font "Arial" (font_size 8))) + (line (pt 216 64)(pt 200 64)) + ) + (port + (pt 216 80) + (output) + (text "pin_nRD" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "pin_nRD" (rect 148 75 195 89)(font "Arial" (font_size 8))) + (line (pt 216 80)(pt 200 80)) + ) + (port + (pt 216 96) + (output) + (text "pin_nWR" (rect 0 0 50 14)(font "Arial" (font_size 8))) + (text "pin_nWR" (rect 145 91 195 105)(font "Arial" (font_size 8))) + (line (pt 216 96)(pt 200 96)) + ) + (port + (pt 216 112) + (output) + (text "pin_nRFSH" (rect 0 0 62 14)(font "Arial" (font_size 8))) + (text "pin_nRFSH" (rect 133 107 195 121)(font "Arial" (font_size 8))) + (line (pt 216 112)(pt 200 112)) + ) + (port + (pt 216 128) + (output) + (text "pin_nHALT" (rect 0 0 62 14)(font "Arial" (font_size 8))) + (text "pin_nHALT" (rect 133 123 195 137)(font "Arial" (font_size 8))) + (line (pt 216 128)(pt 200 128)) + ) + (port + (pt 216 144) + (output) + (text "mwait" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "mwait" (rect 161 139 195 153)(font "Arial" (font_size 8))) + (line (pt 216 144)(pt 200 144)) + ) + (port + (pt 216 160) + (output) + (text "busrq" (rect 0 0 33 14)(font "Arial" (font_size 8))) + (text "busrq" (rect 162 155 195 169)(font "Arial" (font_size 8))) + (line (pt 216 160)(pt 200 160)) + ) + (port + (pt 216 176) + (output) + (text "pin_nBUSACK" (rect 0 0 81 14)(font "Arial" (font_size 8))) + (text "pin_nBUSACK" (rect 114 171 195 185)(font "Arial" (font_size 8))) + (line (pt 216 176)(pt 200 176)) + ) + (port + (pt 216 192) + (output) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 180 187 195 201)(font "Arial" (font_size 8))) + (line (pt 216 192)(pt 200 192)) + ) + (port + (pt 216 208) + (output) + (text "intr" (rect 0 0 17 14)(font "Arial" (font_size 8))) + (text "intr" (rect 178 203 195 217)(font "Arial" (font_size 8))) + (line (pt 216 208)(pt 200 208)) + ) + (port + (pt 216 224) + (output) + (text "nmi" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "nmi" (rect 177 219 195 233)(font "Arial" (font_size 8))) + (line (pt 216 224)(pt 200 224)) + ) + (port + (pt 216 240) + (output) + (text "reset_in" (rect 0 0 46 14)(font "Arial" (font_size 8))) + (text "reset_in" (rect 149 235 195 249)(font "Arial" (font_size 8))) + (line (pt 216 240)(pt 200 240)) + ) + (drawing + (rectangle (rect 16 16 200 272)) + ) +) diff --git a/cpu/bus/control_pins_n.v b/cpu/bus/control_pins_n.v new file mode 100644 index 0000000..5ed0f4d --- /dev/null +++ b/cpu/bus/control_pins_n.v @@ -0,0 +1,112 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Sun Nov 16 23:06:14 2014" + +module control_pins_n( + busack, + CPUCLK, + pin_control_oe, + in_halt, + pin_nWAIT, + pin_nBUSRQ, + pin_nINT, + pin_nNMI, + pin_nRESET, + nM1_out, + nRFSH_out, + nRD_out, + nWR_out, + nIORQ_out, + nMREQ_out, + nmi, + busrq, + clk, + intr, + mwait, + reset_in, + pin_nM1, + pin_nMREQ, + pin_nIORQ, + pin_nRD, + pin_nWR, + pin_nRFSH, + pin_nHALT, + pin_nBUSACK +); + + +input wire busack; +input wire CPUCLK; +input wire pin_control_oe; +input wire in_halt; +input wire pin_nWAIT; +input wire pin_nBUSRQ; +input wire pin_nINT; +input wire pin_nNMI; +input wire pin_nRESET; +input wire nM1_out; +input wire nRFSH_out; +input wire nRD_out; +input wire nWR_out; +input wire nIORQ_out; +input wire nMREQ_out; +output wire nmi; +output wire busrq; +output wire clk; +output wire intr; +output wire mwait; +output wire reset_in; +output wire pin_nM1; +output wire pin_nMREQ; +output wire pin_nIORQ; +output wire pin_nRD; +output wire pin_nWR; +output wire pin_nRFSH; +output wire pin_nHALT; +output wire pin_nBUSACK; + + +assign clk = CPUCLK; +assign pin_nM1 = nM1_out; +assign pin_nRFSH = nRFSH_out; + + + +assign pin_nMREQ = pin_control_oe ? nMREQ_out : 1'bz; + +assign pin_nIORQ = pin_control_oe ? nIORQ_out : 1'bz; + +assign pin_nRD = pin_control_oe ? nRD_out : 1'bz; + +assign pin_nWR = pin_control_oe ? nWR_out : 1'bz; + +assign busrq = ~pin_nBUSRQ; + +assign pin_nHALT = ~in_halt; + +assign mwait = ~pin_nWAIT; + +assign pin_nBUSACK = ~busack; + +assign intr = ~pin_nINT; + +assign nmi = ~pin_nNMI; + +assign reset_in = ~pin_nRESET; + + +endmodule diff --git a/cpu/bus/data_pins.bdf b/cpu/bus/data_pins.bdf new file mode 100644 index 0000000..99b4889 --- /dev/null +++ b/cpu/bus/data_pins.bdf @@ -0,0 +1,612 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 24 32 200 48) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "bus_db_pin_oe" (rect 9 0 82 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 200 200 216) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "bus_db_pin_re" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 216 200 232) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_bus_db_we" (rect 9 0 80 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 168 200 184) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "clk" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 256 200 272) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_bus_db_oe" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (bidir) + (rect 728 176 904 192) + (text "BIDIR" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "D[7..0]" (rect 90 0 124 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)) + (line (pt 0 8)(pt 52 8)) + (line (pt 56 12)(pt 78 12)) + (line (pt 78 4)(pt 82 8)) + (line (pt 78 12)(pt 82 8)) + (line (pt 56 4)(pt 52 8)) + (line (pt 52 8)(pt 56 12)) + ) + (text "VCC" (rect 4 7 24 17)(font "Arial" (font_size 6))) +) +(pin + (bidir) + (rect 24 288 200 304) + (text "BIDIR" (rect 151 6 175 16)(font "Arial" (font_size 6))) + (text "db[7..0]" (rect 49 4 86 16)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 120 12)(pt 98 12)) + (line (pt 176 8)(pt 124 8)) + (line (pt 120 4)(pt 98 4)) + (line (pt 98 12)(pt 94 8)) + (line (pt 98 4)(pt 94 8)) + (line (pt 120 12)(pt 124 8)) + (line (pt 124 8)(pt 120 4)) + ) + (rotate180) + (text "VCC" (rect 152 -1 172 9)(font "Arial" (font_size 6))) +) +(symbol + (rect 320 56 384 104) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst0" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 320 104 384 152) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst1" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 416 80 480 128) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst2" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 320 192 384 240) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst3" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 248 280 296 312) + (text "TRI" (rect 32 0 47 10)(font "Arial" (font_size 6))) + (text "inst_buf0" (rect -1 21 45 33)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 34 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 11 0 22 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 16 16)(pt 0 16)) + ) + (drawing + (line (pt 34 25)(pt 34 7)) + (line (pt 34 25)(pt 16 16)) + (line (pt 34 7)(pt 16 16)) + ) + (flipy) +) +(symbol + (rect 640 168 688 200) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst_buf1" (rect 3 21 49 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 528 160 592 240) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "dlatch" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 424 160 472 192) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "nclk" (rect 3 21 23 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(connector + (pt 400 96) + (pt 416 96) + (bus) +) +(connector + (pt 400 112) + (pt 416 112) + (bus) +) +(connector + (pt 400 112) + (pt 400 128) + (bus) +) +(connector + (pt 288 120) + (pt 320 120) +) +(connector + (pt 400 96) + (pt 400 80) + (bus) +) +(connector + (pt 272 72) + (pt 320 72) +) +(connector + (pt 384 80) + (pt 400 80) + (bus) +) +(connector + (pt 384 128) + (pt 400 128) + (bus) +) +(connector + (pt 320 136) + (pt 304 136) + (bus) +) +(connector + (pt 320 88) + (pt 224 88) + (bus) +) +(connector + (pt 224 88) + (pt 224 296) + (bus) +) +(connector + (pt 272 264) + (pt 200 264) +) +(connector + (pt 200 296) + (pt 224 296) + (bus) +) +(connector + (pt 224 296) + (pt 248 296) + (bus) +) +(connector + (pt 272 264) + (pt 272 280) +) +(connector + (pt 304 136) + (pt 304 256) + (bus) +) +(connector + (pt 272 72) + (pt 272 224) +) +(connector + (pt 288 120) + (pt 288 208) +) +(connector + (pt 480 104) + (pt 504 104) + (bus) +) +(connector + (pt 504 104) + (pt 504 184) + (bus) +) +(connector + (pt 528 184) + (pt 504 184) + (bus) +) +(connector + (pt 296 296) + (pt 616 296) + (bus) +) +(connector + (pt 616 184) + (pt 616 296) + (bus) +) +(connector + (pt 200 40) + (pt 664 40) +) +(connector + (pt 664 40) + (pt 664 168) +) +(connector + (pt 616 184) + (pt 640 184) + (bus) +) +(connector + (pt 304 256) + (pt 704 256) + (bus) +) +(connector + (pt 704 184) + (pt 704 256) + (bus) +) +(connector + (pt 688 184) + (pt 704 184) + (bus) +) +(connector + (pt 704 184) + (pt 728 184) + (bus) +) +(connector + (text "dout[7..0]" (rect 598 168 645 180)(font "Arial" )) + (pt 592 184) + (pt 616 184) + (bus) +) +(connector + (pt 200 176) + (pt 424 176) +) +(connector + (pt 488 200) + (pt 528 200) +) +(connector + (pt 488 200) + (pt 488 176) +) +(connector + (pt 488 176) + (pt 472 176) +) +(connector + (pt 528 216) + (pt 384 216) +) +(connector + (pt 200 208) + (pt 288 208) +) +(connector + (pt 200 224) + (pt 272 224) +) +(connector + (pt 272 224) + (pt 320 224) +) +(connector + (pt 288 208) + (pt 320 208) +) +(junction (pt 224 296)) +(junction (pt 272 224)) +(junction (pt 288 208)) +(junction (pt 616 184)) +(junction (pt 704 184)) +(text "Repeated 8 times, once for each data pin." (rect 648 280 885 294)(font "Arial" (font_size 8))) +(title_block + (rect 24 360 281 412) + (name "title-custom-small") + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "June 14, 2014, 2016" (rect 56 3 171 17)(font "Arial" (font_size 8)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "data_pins" (rect 43 2 109 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.4" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/bus/data_pins.bsf b/cpu/bus/data_pins.bsf new file mode 100644 index 0000000..c9b269b --- /dev/null +++ b/cpu/bus/data_pins.bsf @@ -0,0 +1,78 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 200 144) + (text "data_pins" (rect 5 0 60 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 112 25 124)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "bus_db_pin_oe" (rect 0 0 87 14)(font "Arial" (font_size 8))) + (text "bus_db_pin_oe" (rect 21 27 108 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 21 43 36 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "bus_db_pin_re" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "bus_db_pin_re" (rect 21 59 105 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "ctl_bus_db_we" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "ctl_bus_db_we" (rect 21 75 109 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "ctl_bus_db_oe" (rect 0 0 83 14)(font "Arial" (font_size 8))) + (text "ctl_bus_db_oe" (rect 21 91 104 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 184 32) + (bidir) + (text "D[7..0]" (rect 0 0 36 14)(font "Arial" (font_size 8))) + (text "D[7..0]" (rect 127 27 163 41)(font "Arial" (font_size 8))) + (line (pt 184 32)(pt 168 32)(line_width 3)) + ) + (port + (pt 184 48) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 121 43 163 57)(font "Arial" (font_size 8))) + (line (pt 184 48)(pt 168 48)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 168 112)) + ) +) diff --git a/cpu/bus/data_pins.v b/cpu/bus/data_pins.v new file mode 100644 index 0000000..4a69779 --- /dev/null +++ b/cpu/bus/data_pins.v @@ -0,0 +1,86 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Thu Nov 06 23:28:26 2014" + +module data_pins( + bus_db_pin_oe, + bus_db_pin_re, + ctl_bus_db_we, + clk, + ctl_bus_db_oe, + D, + db +); + + +input wire bus_db_pin_oe; +input wire bus_db_pin_re; +input wire ctl_bus_db_we; +input wire clk; +input wire ctl_bus_db_oe; +inout wire [7:0] D; +inout wire [7:0] db; + +reg [7:0] dout; +wire [7:0] SYNTHESIZED_WIRE_0; +wire SYNTHESIZED_WIRE_1; +wire SYNTHESIZED_WIRE_2; +wire [7:0] SYNTHESIZED_WIRE_3; +wire [7:0] SYNTHESIZED_WIRE_4; + + + + + +always@(posedge SYNTHESIZED_WIRE_1) +begin +if (SYNTHESIZED_WIRE_2) + begin + dout[7:0] <= SYNTHESIZED_WIRE_0[7:0]; + end +end + +assign SYNTHESIZED_WIRE_4 = {ctl_bus_db_we,ctl_bus_db_we,ctl_bus_db_we,ctl_bus_db_we,ctl_bus_db_we,ctl_bus_db_we,ctl_bus_db_we,ctl_bus_db_we} & db; + +assign SYNTHESIZED_WIRE_3 = {bus_db_pin_re,bus_db_pin_re,bus_db_pin_re,bus_db_pin_re,bus_db_pin_re,bus_db_pin_re,bus_db_pin_re,bus_db_pin_re} & D; + +assign SYNTHESIZED_WIRE_0 = SYNTHESIZED_WIRE_3 | SYNTHESIZED_WIRE_4; + +assign SYNTHESIZED_WIRE_2 = ctl_bus_db_we | bus_db_pin_re; + +assign db[7] = ctl_bus_db_oe ? dout[7] : 1'bz; +assign db[6] = ctl_bus_db_oe ? dout[6] : 1'bz; +assign db[5] = ctl_bus_db_oe ? dout[5] : 1'bz; +assign db[4] = ctl_bus_db_oe ? dout[4] : 1'bz; +assign db[3] = ctl_bus_db_oe ? dout[3] : 1'bz; +assign db[2] = ctl_bus_db_oe ? dout[2] : 1'bz; +assign db[1] = ctl_bus_db_oe ? dout[1] : 1'bz; +assign db[0] = ctl_bus_db_oe ? dout[0] : 1'bz; + +assign D[7] = bus_db_pin_oe ? dout[7] : 1'bz; +assign D[6] = bus_db_pin_oe ? dout[6] : 1'bz; +assign D[5] = bus_db_pin_oe ? dout[5] : 1'bz; +assign D[4] = bus_db_pin_oe ? dout[4] : 1'bz; +assign D[3] = bus_db_pin_oe ? dout[3] : 1'bz; +assign D[2] = bus_db_pin_oe ? dout[2] : 1'bz; +assign D[1] = bus_db_pin_oe ? dout[1] : 1'bz; +assign D[0] = bus_db_pin_oe ? dout[0] : 1'bz; + +assign SYNTHESIZED_WIRE_1 = ~clk; + + +endmodule diff --git a/cpu/bus/data_pins_lattice.v b/cpu/bus/data_pins_lattice.v new file mode 100644 index 0000000..2484a48 --- /dev/null +++ b/cpu/bus/data_pins_lattice.v @@ -0,0 +1,39 @@ +// Use this file with Lattice toolset instead of data_pins.v +// +// This file is provided courtesy by JuanS + +module data_pins( + bus_db_pin_oe, + bus_db_pin_re, + ctl_bus_db_we, + clk, + ctl_bus_db_oe, + D, + db +); + +input wire bus_db_pin_oe; +input wire bus_db_pin_re; +input wire ctl_bus_db_we; +input wire clk; +input wire ctl_bus_db_oe; +inout wire [7:0] D; +inout wire [7:0] db; + +reg [7:0] dout; + +always@(negedge clk) +begin + if (ctl_bus_db_we | bus_db_pin_re) + begin + if (bus_db_pin_re) + dout <= D; + else if (ctl_bus_db_we) + dout <= db; + end +end + +assign db = ctl_bus_db_oe ? dout : 8'hZ; +assign D = bus_db_pin_oe ? dout : 8'hZ; + +endmodule diff --git a/cpu/bus/data_switch.bdf b/cpu/bus/data_switch.bdf new file mode 100644 index 0000000..2fcd2fd --- /dev/null +++ b/cpu/bus/data_switch.bdf @@ -0,0 +1,230 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 32 208 48) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "sw_up_en" (rect 9 0 57 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 128 208 144) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "sw_down_en" (rect 9 0 70 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (bidir) + (rect 32 80 208 96) + (text "BIDIR" (rect 151 0 175 10)(font "Arial" (font_size 6))) + (text "db_down[7..0]" (rect 18 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 120 4)(pt 98 4)) + (line (pt 176 8)(pt 124 8)) + (line (pt 120 12)(pt 98 12)) + (line (pt 98 4)(pt 94 8)) + (line (pt 98 12)(pt 94 8)) + (line (pt 120 4)(pt 124 8)) + (line (pt 124 8)(pt 120 12)) + ) + (flipy) + (text "VCC" (rect 152 7 172 17)(font "Arial" (font_size 6))) +) +(pin + (bidir) + (rect 352 80 528 96) + (text "BIDIR" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "db_up[7..0]" (rect 90 0 145 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)) + (line (pt 0 8)(pt 52 8)) + (line (pt 56 12)(pt 78 12)) + (line (pt 78 4)(pt 82 8)) + (line (pt 78 12)(pt 82 8)) + (line (pt 56 4)(pt 52 8)) + (line (pt 52 8)(pt 56 12)) + ) + (text "VCC" (rect 4 7 24 17)(font "Arial" (font_size 6))) +) +(symbol + (rect 256 56 304 88) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "tri1" (rect 3 21 18 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 256 88 304 120) + (text "TRI" (rect 32 22 47 32)(font "Arial" (font_size 6))) + (text "tri2" (rect 30 -1 45 11)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 13 46 25)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 34 16)) + ) + (port + (pt 24 32) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 11 20 22 32)(font "Courier New" (bold))(invisible)) + (line (pt 24 20)(pt 24 32)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect -1 13 16 25)(font "Courier New" (bold))(invisible)) + (line (pt 16 16)(pt 0 16)) + ) + (drawing + (line (pt 34 7)(pt 34 25)) + (line (pt 34 7)(pt 16 16)) + (line (pt 34 25)(pt 16 16)) + ) + (rotate180) +) +(connector + (pt 208 88) + (pt 232 88) + (bus) +) +(connector + (pt 232 72) + (pt 256 72) + (bus) +) +(connector + (pt 232 104) + (pt 256 104) + (bus) +) +(connector + (pt 304 72) + (pt 328 72) + (bus) +) +(connector + (pt 328 104) + (pt 304 104) + (bus) +) +(connector + (pt 328 88) + (pt 352 88) + (bus) +) +(connector + (pt 280 40) + (pt 280 56) +) +(connector + (pt 280 136) + (pt 280 120) +) +(connector + (pt 232 72) + (pt 232 88) + (bus) +) +(connector + (pt 232 88) + (pt 232 104) + (bus) +) +(connector + (pt 328 72) + (pt 328 88) + (bus) +) +(connector + (pt 328 88) + (pt 328 104) + (bus) +) +(connector + (pt 208 40) + (pt 280 40) +) +(connector + (pt 208 136) + (pt 280 136) +) +(junction (pt 232 88)) +(junction (pt 328 88)) +(title_block + (rect 32 184 289 236) + (name "title-custom-small") + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "June 14, 2014" (rect 56 3 136 17)(font "Arial" (font_size 8)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "data_switch" (rect 43 2 125 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.0" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/bus/data_switch.bsf b/cpu/bus/data_switch.bsf new file mode 100644 index 0000000..e1b703f --- /dev/null +++ b/cpu/bus/data_switch.bsf @@ -0,0 +1,57 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 232 112) + (text "data_switch" (rect 5 0 75 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 80 25 92)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "sw_up_en" (rect 0 0 61 14)(font "Arial" (font_size 8))) + (text "sw_up_en" (rect 21 27 82 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "sw_down_en" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "sw_down_en" (rect 21 43 101 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 216 32) + (bidir) + (text "db_down[7..0]" (rect 0 0 82 14)(font "Arial" (font_size 8))) + (text "db_down[7..0]" (rect 113 27 195 41)(font "Arial" (font_size 8))) + (line (pt 216 32)(pt 200 32)(line_width 3)) + ) + (port + (pt 216 48) + (bidir) + (text "db_up[7..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "db_up[7..0]" (rect 132 43 195 57)(font "Arial" (font_size 8))) + (line (pt 216 48)(pt 200 48)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 200 80)) + ) +) diff --git a/cpu/bus/data_switch.v b/cpu/bus/data_switch.v new file mode 100644 index 0000000..44d9ebb --- /dev/null +++ b/cpu/bus/data_switch.v @@ -0,0 +1,55 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Mon Oct 13 12:33:19 2014" + +module data_switch( + sw_up_en, + sw_down_en, + db_down, + db_up +); + + +input wire sw_up_en; +input wire sw_down_en; +inout wire [7:0] db_down; +inout wire [7:0] db_up; + + + + + +assign db_up[7] = sw_up_en ? db_down[7] : 1'bz; +assign db_up[6] = sw_up_en ? db_down[6] : 1'bz; +assign db_up[5] = sw_up_en ? db_down[5] : 1'bz; +assign db_up[4] = sw_up_en ? db_down[4] : 1'bz; +assign db_up[3] = sw_up_en ? db_down[3] : 1'bz; +assign db_up[2] = sw_up_en ? db_down[2] : 1'bz; +assign db_up[1] = sw_up_en ? db_down[1] : 1'bz; +assign db_up[0] = sw_up_en ? db_down[0] : 1'bz; + +assign db_down[7] = sw_down_en ? db_up[7] : 1'bz; +assign db_down[6] = sw_down_en ? db_up[6] : 1'bz; +assign db_down[5] = sw_down_en ? db_up[5] : 1'bz; +assign db_down[4] = sw_down_en ? db_up[4] : 1'bz; +assign db_down[3] = sw_down_en ? db_up[3] : 1'bz; +assign db_down[2] = sw_down_en ? db_up[2] : 1'bz; +assign db_down[1] = sw_down_en ? db_up[1] : 1'bz; +assign db_down[0] = sw_down_en ? db_up[0] : 1'bz; + + +endmodule diff --git a/cpu/bus/data_switch_mask.bdf b/cpu/bus/data_switch_mask.bdf new file mode 100644 index 0000000..fcb5452 --- /dev/null +++ b/cpu/bus/data_switch_mask.bdf @@ -0,0 +1,518 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 32 208 48) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "sw_up_en" (rect 9 0 57 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 304 208 320) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "sw_down_en" (rect 9 0 70 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 336 208 352) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "sw_mask543_en" (rect 9 0 90 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (bidir) + (rect 32 80 208 96) + (text "BIDIR" (rect 151 0 175 10)(font "Arial" (font_size 6))) + (text "db_down[7..0]" (rect 18 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 120 4)(pt 98 4)) + (line (pt 176 8)(pt 124 8)) + (line (pt 120 12)(pt 98 12)) + (line (pt 98 4)(pt 94 8)) + (line (pt 98 12)(pt 94 8)) + (line (pt 120 4)(pt 124 8)) + (line (pt 124 8)(pt 120 12)) + ) + (flipy) + (text "VCC" (rect 152 7 172 17)(font "Arial" (font_size 6))) +) +(pin + (bidir) + (rect 624 80 800 96) + (text "BIDIR" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "db_up[7..0]" (rect 90 0 145 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)) + (line (pt 0 8)(pt 52 8)) + (line (pt 56 12)(pt 78 12)) + (line (pt 78 4)(pt 82 8)) + (line (pt 78 12)(pt 82 8)) + (line (pt 56 4)(pt 52 8)) + (line (pt 52 8)(pt 56 12)) + ) + (text "VCC" (rect 4 7 24 17)(font "Arial" (font_size 6))) +) +(symbol + (rect 392 56 440 88) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "tri1" (rect 3 21 18 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 320 184 368 216) + (text "TRI" (rect 32 22 47 32)(font "Arial" (font_size 6))) + (text "tri2" (rect 30 -1 45 11)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 13 46 25)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 34 16)) + ) + (port + (pt 24 32) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 11 20 22 32)(font "Courier New" (bold))(invisible)) + (line (pt 24 20)(pt 24 32)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 13 16 25)(font "Courier New" (bold))(invisible)) + (line (pt 16 16)(pt 0 16)) + ) + (drawing + (line (pt 34 7)(pt 34 25)) + (line (pt 34 7)(pt 16 16)) + (line (pt 34 25)(pt 16 16)) + ) + (rotate180) +) +(symbol + (rect 256 328 304 360) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 21 20 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 440 112 504 160) + (text "AND2" (rect 39 0 63 10)(font "Arial" (font_size 6))) + (text "inst3" (rect 38 37 61 49)(font "Arial" )) + (port + (pt 64 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 45 7 62 19)(font "Courier New" (bold))(invisible)) + (line (pt 64 16)(pt 50 16)) + ) + (port + (pt 64 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 45 23 62 35)(font "Courier New" (bold))(invisible)) + (line (pt 64 32)(pt 50 32)) + ) + (port + (pt 0 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 15 16 27)(font "Courier New" (bold))(invisible)) + (line (pt 22 24)(pt 0 24)) + ) + (drawing + (line (pt 50 12)(pt 34 12)) + (line (pt 50 37)(pt 33 37)) + (line (pt 50 12)(pt 50 37)) + (arc (pt 34 12)(pt 33 37)(rect 21 12 46 37)) + ) + (flipy) +) +(symbol + (rect 320 120 368 152) + (text "TRI" (rect 32 22 47 32)(font "Arial" (font_size 6))) + (text "inst4" (rect 22 -1 45 11)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 13 46 25)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 34 16)) + ) + (port + (pt 24 32) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 11 20 22 32)(font "Courier New" (bold))(invisible)) + (line (pt 24 20)(pt 24 32)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 13 16 25)(font "Courier New" (bold))(invisible)) + (line (pt 16 16)(pt 0 16)) + ) + (drawing + (line (pt 34 7)(pt 34 25)) + (line (pt 34 7)(pt 16 16)) + (line (pt 34 25)(pt 16 16)) + ) + (rotate180) +) +(symbol + (rect 320 248 368 280) + (text "TRI" (rect 32 22 47 32)(font "Arial" (font_size 6))) + (text "inst5" (rect 22 -1 45 11)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 13 46 25)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 34 16)) + ) + (port + (pt 24 32) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 11 20 22 32)(font "Courier New" (bold))(invisible)) + (line (pt 24 20)(pt 24 32)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 13 16 25)(font "Courier New" (bold))(invisible)) + (line (pt 16 16)(pt 0 16)) + ) + (drawing + (line (pt 34 7)(pt 34 25)) + (line (pt 34 7)(pt 16 16)) + (line (pt 34 25)(pt 16 16)) + ) + (rotate180) +) +(symbol + (rect 440 240 504 288) + (text "AND2" (rect 39 0 63 10)(font "Arial" (font_size 6))) + (text "inst6" (rect 38 37 61 49)(font "Arial" )) + (port + (pt 64 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 45 7 62 19)(font "Courier New" (bold))(invisible)) + (line (pt 64 16)(pt 50 16)) + ) + (port + (pt 64 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 45 23 62 35)(font "Courier New" (bold))(invisible)) + (line (pt 64 32)(pt 50 32)) + ) + (port + (pt 0 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 15 16 27)(font "Courier New" (bold))(invisible)) + (line (pt 22 24)(pt 0 24)) + ) + (drawing + (line (pt 50 12)(pt 34 12)) + (line (pt 50 37)(pt 33 37)) + (line (pt 50 12)(pt 50 37)) + (arc (pt 34 12)(pt 33 37)(rect 21 12 46 37)) + ) + (flipy) +) +(connector + (pt 208 88) + (pt 232 88) + (bus) +) +(connector + (pt 208 344) + (pt 256 344) +) +(connector + (pt 344 312) + (pt 344 280) +) +(connector + (pt 208 312) + (pt 344 312) +) +(connector + (pt 344 312) + (pt 384 312) +) +(connector + (pt 368 264) + (pt 440 264) + (bus) +) +(connector + (pt 368 136) + (pt 440 136) + (bus) +) +(connector + (pt 344 232) + (pt 344 216) +) +(connector + (pt 384 232) + (pt 344 232) +) +(connector + (pt 232 136) + (pt 232 200) + (bus) +) +(connector + (pt 232 200) + (pt 232 264) + (bus) +) +(connector + (pt 344 152) + (pt 344 168) +) +(connector + (pt 384 168) + (pt 344 168) +) +(connector + (pt 384 168) + (pt 384 232) +) +(connector + (pt 384 232) + (pt 384 312) +) +(connector + (pt 600 88) + (pt 624 88) + (bus) +) +(connector + (pt 304 344) + (pt 520 344) +) +(connector + (pt 520 144) + (pt 504 144) +) +(connector + (pt 504 272) + (pt 520 272) +) +(connector + (pt 520 344) + (pt 520 272) +) +(connector + (pt 520 272) + (pt 520 144) +) +(connector + (pt 208 40) + (pt 416 40) +) +(connector + (pt 416 40) + (pt 416 56) +) +(connector + (pt 232 72) + (pt 232 88) + (bus) +) +(connector + (pt 232 88) + (pt 232 136) + (bus) +) +(connector + (pt 600 72) + (pt 600 88) + (bus) +) +(connector + (pt 600 88) + (pt 600 128) + (bus) +) +(connector + (text "db_up[7..6]" (rect 532 112 587 124)(font "Arial" )) + (pt 504 128) + (pt 600 128) + (bus) +) +(connector + (pt 600 128) + (pt 600 200) + (bus) +) +(connector + (pt 600 200) + (pt 600 256) + (bus) +) +(connector + (text "db_up[2..0]" (rect 533 240 588 252)(font "Arial" )) + (pt 504 256) + (pt 600 256) + (bus) +) +(connector + (text "db_down[7..6]" (rect 245 120 313 132)(font "Arial" )) + (pt 232 136) + (pt 320 136) + (bus) +) +(connector + (text "db_down[5..3]" (rect 248 184 316 196)(font "Arial" )) + (pt 232 200) + (pt 320 200) + (bus) +) +(connector + (text "db_down[2..0]" (rect 245 248 313 260)(font "Arial" )) + (pt 232 264) + (pt 320 264) + (bus) +) +(connector + (text "db_up[5..3]" (rect 531 184 586 196)(font "Arial" )) + (pt 368 200) + (pt 600 200) + (bus) +) +(connector + (text "db_down[7..0]" (rect 250 56 318 68)(font "Arial" )) + (pt 232 72) + (pt 392 72) + (bus) +) +(connector + (text "db_up[7..0]" (rect 529 56 584 68)(font "Arial" )) + (pt 440 72) + (pt 600 72) + (bus) +) +(junction (pt 232 88)) +(junction (pt 344 312)) +(junction (pt 232 136)) +(junction (pt 384 232)) +(junction (pt 232 200)) +(junction (pt 600 200)) +(junction (pt 600 128)) +(junction (pt 600 88)) +(junction (pt 520 272)) +(title_block + (rect 32 392 289 444) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "data_switch_mask" (rect 43 2 171 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "August 31, 2014" (rect 56 3 150 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.0" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/bus/data_switch_mask.bsf b/cpu/bus/data_switch_mask.bsf new file mode 100644 index 0000000..85db387 --- /dev/null +++ b/cpu/bus/data_switch_mask.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 248 112) + (text "data_switch_mask" (rect 5 0 112 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 80 25 92)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "sw_up_en" (rect 0 0 61 14)(font "Arial" (font_size 8))) + (text "sw_up_en" (rect 21 27 82 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "sw_down_en" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "sw_down_en" (rect 21 43 101 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "sw_mask543_en" (rect 0 0 97 14)(font "Arial" (font_size 8))) + (text "sw_mask543_en" (rect 21 59 118 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 232 32) + (bidir) + (text "db_down[7..0]" (rect 0 0 82 14)(font "Arial" (font_size 8))) + (text "db_down[7..0]" (rect 129 27 211 41)(font "Arial" (font_size 8))) + (line (pt 232 32)(pt 216 32)(line_width 3)) + ) + (port + (pt 232 48) + (bidir) + (text "db_up[7..0]" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "db_up[7..0]" (rect 148 43 211 57)(font "Arial" (font_size 8))) + (line (pt 232 48)(pt 216 48)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 216 80)) + ) +) diff --git a/cpu/bus/data_switch_mask.v b/cpu/bus/data_switch_mask.v new file mode 100644 index 0000000..1654f77 --- /dev/null +++ b/cpu/bus/data_switch_mask.v @@ -0,0 +1,68 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Mon Oct 13 12:32:03 2014" + +module data_switch_mask( + sw_up_en, + sw_down_en, + sw_mask543_en, + db_down, + db_up +); + + +input wire sw_up_en; +input wire sw_down_en; +input wire sw_mask543_en; +inout wire [7:0] db_down; +inout wire [7:0] db_up; + +wire SYNTHESIZED_WIRE_4; +wire [1:0] SYNTHESIZED_WIRE_1; +wire [2:0] SYNTHESIZED_WIRE_2; + + + + +assign SYNTHESIZED_WIRE_4 = ~sw_mask543_en; + +assign SYNTHESIZED_WIRE_1 = db_up[7:6] & {SYNTHESIZED_WIRE_4,SYNTHESIZED_WIRE_4}; + +assign db_down[7] = sw_down_en ? SYNTHESIZED_WIRE_1[1] : 1'bz; +assign db_down[6] = sw_down_en ? SYNTHESIZED_WIRE_1[0] : 1'bz; + +assign db_down[2] = sw_down_en ? SYNTHESIZED_WIRE_2[2] : 1'bz; +assign db_down[1] = sw_down_en ? SYNTHESIZED_WIRE_2[1] : 1'bz; +assign db_down[0] = sw_down_en ? SYNTHESIZED_WIRE_2[0] : 1'bz; + +assign SYNTHESIZED_WIRE_2 = db_up[2:0] & {SYNTHESIZED_WIRE_4,SYNTHESIZED_WIRE_4,SYNTHESIZED_WIRE_4}; + +assign db_up[7] = sw_up_en ? db_down[7] : 1'bz; +assign db_up[6] = sw_up_en ? db_down[6] : 1'bz; +assign db_up[5] = sw_up_en ? db_down[5] : 1'bz; +assign db_up[4] = sw_up_en ? db_down[4] : 1'bz; +assign db_up[3] = sw_up_en ? db_down[3] : 1'bz; +assign db_up[2] = sw_up_en ? db_down[2] : 1'bz; +assign db_up[1] = sw_up_en ? db_down[1] : 1'bz; +assign db_up[0] = sw_up_en ? db_down[0] : 1'bz; + +assign db_down[5] = sw_down_en ? db_up[5] : 1'bz; +assign db_down[4] = sw_down_en ? db_up[4] : 1'bz; +assign db_down[3] = sw_down_en ? db_up[3] : 1'bz; + + +endmodule diff --git a/cpu/bus/inc_dec.bdf b/cpu/bus/inc_dec.bdf new file mode 100644 index 0000000..735c72c --- /dev/null +++ b/cpu/bus/inc_dec.bdf @@ -0,0 +1,2480 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 1928 288 2104 304) + (text "INPUT" (rect 15 6 43 16)(font "Arial" (font_size 6))) + (text "carry_in" (rect 127 4 167 16)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 84 4)(pt 59 4)) + (line (pt 84 12)(pt 59 12)) + (line (pt 55 8)(pt 0 8)) + (line (pt 84 4)(pt 84 12)) + (line (pt 59 12)(pt 55 8)) + (line (pt 59 4)(pt 55 8)) + ) + (rotate180) + (text "VCC" (rect 20 -1 40 9)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 24 192 40) + (text "INPUT" (rect 125 0 153 10)(font "Arial" (font_size 6))) + (text "limit6" (rect 5 0 30 12)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 84 12)(pt 109 12)) + (line (pt 84 4)(pt 109 4)) + (line (pt 113 8)(pt 168 8)) + (line (pt 84 12)(pt 84 4)) + (line (pt 109 4)(pt 113 8)) + (line (pt 109 12)(pt 113 8)) + ) + (text "VCC" (rect 128 7 148 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 48 192 64) + (text "INPUT" (rect 125 0 153 10)(font "Arial" (font_size 6))) + (text "decrement" (rect 5 0 56 12)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 84 12)(pt 109 12)) + (line (pt 84 4)(pt 109 4)) + (line (pt 113 8)(pt 168 8)) + (line (pt 84 12)(pt 84 4)) + (line (pt 109 4)(pt 113 8)) + (line (pt 109 12)(pt 113 8)) + ) + (text "VCC" (rect 128 7 148 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 72 192 88) + (text "INPUT" (rect 125 0 153 10)(font "Arial" (font_size 6))) + (text "d[15..0]" (rect 5 0 42 12)(font "Arial" )) + (pt 168 8) + (drawing + (line (pt 84 12)(pt 109 12)) + (line (pt 84 4)(pt 109 4)) + (line (pt 113 8)(pt 168 8)) + (line (pt 84 12)(pt 84 4)) + (line (pt 109 4)(pt 113 8)) + (line (pt 109 12)(pt 113 8)) + ) + (text "VCC" (rect 128 7 148 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 1928 624 2104 640) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "address[15..0]" (rect 90 0 160 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 1816 112 1864 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor0" (rect 0 2 12 23)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 1752 112 1800 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor1" (rect 0 2 12 23)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 1624 112 1672 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor2" (rect 0 2 12 23)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 1560 112 1608 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor3" (rect 0 2 12 23)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 1432 112 1480 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor4" (rect 0 2 12 23)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 1368 112 1416 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor5" (rect 0 2 12 23)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 1280 504 1328 568) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor6x" (rect 2 0 14 27)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 1240 112 1288 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor6" (rect 1 1 13 22)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 1176 168 1240 312) + (text "AND8" (rect 39 134 63 144)(font "Arial" (font_size 6))) + (text "cl1" (rect 44 -1 58 11)(font "Arial" )) + (port + (pt 64 128) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 45 125 62 137)(font "Courier New" (bold))(invisible)) + (line (pt 64 128)(pt 46 128)) + ) + (port + (pt 64 96) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 45 93 62 105)(font "Courier New" (bold))(invisible)) + (line (pt 64 96)(pt 46 96)) + ) + (port + (pt 64 112) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 45 109 62 121)(font "Courier New" (bold))(invisible)) + (line (pt 64 112)(pt 46 112)) + ) + (port + (pt 64 80) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 45 77 62 89)(font "Courier New" (bold))(invisible)) + (line (pt 64 80)(pt 46 80)) + ) + (port + (pt 64 32) + (input) + (text "IN7" (rect 2 103 19 115)(font "Courier New" (bold))(invisible)) + (text "IN7" (rect 45 29 62 41)(font "Courier New" (bold))(invisible)) + (line (pt 64 32)(pt 46 32)) + ) + (port + (pt 64 48) + (input) + (text "IN6" (rect 2 87 19 99)(font "Courier New" (bold))(invisible)) + (text "IN6" (rect 45 45 62 57)(font "Courier New" (bold))(invisible)) + (line (pt 64 48)(pt 46 48)) + ) + (port + (pt 64 16) + (input) + (text "IN8" (rect 2 119 19 131)(font "Courier New" (bold))(invisible)) + (text "IN8" (rect 45 13 62 25)(font "Courier New" (bold))(invisible)) + (line (pt 64 16)(pt 46 16)) + ) + (port + (pt 64 64) + (input) + (text "IN5" (rect 2 71 19 83)(font "Courier New" (bold))(invisible)) + (text "IN5" (rect 45 61 62 73)(font "Courier New" (bold))(invisible)) + (line (pt 64 64)(pt 46 64)) + ) + (port + (pt 0 72) + (output) + (text "OUT" (rect 48 63 65 75)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect -1 69 16 81)(font "Courier New" (bold))(invisible)) + (line (pt 18 72)(pt 0 72)) + ) + (drawing + (line (pt 46 13)(pt 46 131)) + (line (pt 46 85)(pt 31 85)) + (line (pt 46 58)(pt 31 58)) + (arc (pt 31 59)(pt 31 85)(rect 17 58 44 85)) + ) + (rotate180) +) +(symbol + (rect 1120 248 1168 312) + (text "AND2" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "lim" (rect -1 12 11 26)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 14)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 14)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 42)(pt 24 64)) + ) + (drawing + (line (pt 36 14)(pt 36 30)) + (line (pt 11 14)(pt 11 31)) + (line (pt 36 14)(pt 11 14)) + (arc (pt 11 31)(pt 36 30)(rect 11 18 36 43)) + ) + (rotate270) +) +(symbol + (rect 800 112 848 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor10" (rect 2 0 14 27)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 864 112 912 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor9" (rect 2 0 14 21)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 992 112 1040 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor8" (rect 2 0 14 21)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 1056 112 1104 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor7" (rect 2 0 14 21)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 1120 168 1152 216) + (text "NOT" (rect 22 1 32 21)(font "Arial" (font_size 6))(vertical)) + (text "not1" (rect 0 2 12 23)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 13)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 39)(pt 16 48)) + ) + (drawing + (line (pt 7 13)(pt 25 13)) + (line (pt 25 13)(pt 16 31)) + (line (pt 7 13)(pt 16 31)) + (circle (rect 12 31 20 39)) + ) + (rotate270) +) +(symbol + (rect 712 504 760 568) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor11x" (rect 3 -1 15 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 672 112 720 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor11" (rect 1 1 13 28)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 608 168 672 280) + (text "AND6" (rect 39 102 63 112)(font "Arial" (font_size 6))) + (text "cl2" (rect 44 -1 58 11)(font "Arial" )) + (port + (pt 64 64) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 45 61 62 73)(font "Courier New" (bold))(invisible)) + (line (pt 64 64)(pt 46 64)) + ) + (port + (pt 64 96) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 45 93 62 105)(font "Courier New" (bold))(invisible)) + (line (pt 64 96)(pt 46 96)) + ) + (port + (pt 64 80) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 45 77 62 89)(font "Courier New" (bold))(invisible)) + (line (pt 64 80)(pt 46 80)) + ) + (port + (pt 64 48) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 45 45 62 57)(font "Courier New" (bold))(invisible)) + (line (pt 64 48)(pt 46 48)) + ) + (port + (pt 64 32) + (input) + (text "IN5" (rect 2 71 19 83)(font "Courier New" (bold))(invisible)) + (text "IN5" (rect 45 29 62 41)(font "Courier New" (bold))(invisible)) + (line (pt 64 32)(pt 46 32)) + ) + (port + (pt 64 16) + (input) + (text "IN6" (rect 2 87 19 99)(font "Courier New" (bold))(invisible)) + (text "IN6" (rect 45 13 62 25)(font "Courier New" (bold))(invisible)) + (line (pt 64 16)(pt 46 16)) + ) + (port + (pt 0 56) + (output) + (text "OUT" (rect 48 47 65 59)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect -1 53 16 65)(font "Courier New" (bold))(invisible)) + (line (pt 18 56)(pt 0 56)) + ) + (drawing + (line (pt 46 69)(pt 31 69)) + (line (pt 46 13)(pt 46 99)) + (line (pt 46 42)(pt 30 42)) + (arc (pt 30 43)(pt 31 69)(rect 17 42 44 69)) + ) + (rotate180) +) +(symbol + (rect 528 112 576 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor12" (rect 1 1 13 28)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 464 112 512 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor13" (rect 1 1 13 28)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 376 504 424 568) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor14x" (rect 5 -3 17 30)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 336 112 384 176) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor14" (rect 2 0 14 27)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 272 168 336 248) + (text "AND4" (rect 39 70 63 80)(font "Arial" (font_size 6))) + (text "cl3" (rect 44 -1 58 11)(font "Arial" )) + (port + (pt 64 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 45 61 62 73)(font "Courier New" (bold))(invisible)) + (line (pt 64 64)(pt 46 64)) + ) + (port + (pt 64 48) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 45 45 62 57)(font "Courier New" (bold))(invisible)) + (line (pt 64 48)(pt 46 48)) + ) + (port + (pt 64 32) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 45 29 62 41)(font "Courier New" (bold))(invisible)) + (line (pt 64 32)(pt 46 32)) + ) + (port + (pt 64 16) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 45 13 62 25)(font "Courier New" (bold))(invisible)) + (line (pt 64 16)(pt 46 16)) + ) + (port + (pt 0 40) + (output) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect -1 37 16 49)(font "Courier New" (bold))(invisible)) + (line (pt 18 40)(pt 0 40)) + ) + (drawing + (line (pt 46 52)(pt 30 52)) + (line (pt 46 28)(pt 46 52)) + (line (pt 46 13)(pt 46 67)) + (line (pt 30 27)(pt 46 27)) + (arc (pt 30 28)(pt 30 52)(rect 17 27 42 52)) + ) + (rotate180) +) +(symbol + (rect 224 504 272 568) + (text "XOR" (rect 38 1 48 21)(font "Arial" (font_size 6))(vertical)) + (text "xor15x" (rect 6 -4 18 29)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 11)) + ) + (port + (pt 16 0) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 11)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 49)(pt 24 64)) + ) + (drawing + (line (pt 35 14)(pt 35 25)) + (line (pt 12 14)(pt 12 25)) + (arc (pt 19 7)(pt 29 7)(rect 7 -14 40 19)) + (arc (pt 24 49)(pt 35 25)(rect -28 -6 35 57)) + (arc (pt 13 25)(pt 24 49)(rect 12 -6 75 57)) + (arc (pt 12 8)(pt 36 8)(rect 6 -21 41 14)) + ) + (rotate270) +) +(symbol + (rect 1752 328 1912 576) + (text "inc_dec_2bit" (rect 146 16 160 87)(font "Arial" (font_size 8))(vertical)) + (text "dual_adder_0" (rect 80 108 92 172)(font "Arial" )(vertical)) + (port + (pt 136 0) + (input) + (text "carry_borrow_in" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "carry_borrow_in" (rect 127 21 141 117)(font "Arial" (font_size 8))(vertical)) + (line (pt 136 0)(pt 136 16)) + ) + (port + (pt 56 0) + (input) + (text "d1_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "d1_in" (rect 47 21 61 51)(font "Arial" (font_size 8))(vertical)) + (line (pt 56 0)(pt 56 16)) + ) + (port + (pt 120 0) + (input) + (text "d0_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "d0_in" (rect 111 21 125 51)(font "Arial" (font_size 8))(vertical)) + (line (pt 120 0)(pt 120 16)) + ) + (port + (pt 24 0) + (input) + (text "dec1_in" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "dec1_in" (rect 15 21 29 65)(font "Arial" (font_size 8))(vertical)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 88 0) + (input) + (text "dec0_in" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "dec0_in" (rect 79 21 93 65)(font "Arial" (font_size 8))(vertical)) + (line (pt 88 0)(pt 88 16)) + ) + (port + (pt 32 248) + (output) + (text "carry_borrow_out" (rect -8 0 97 14)(font "Arial" (font_size 8))) + (text "carry_borrow_out" (rect 23 122 37 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 248)(pt 32 232)) + ) + (port + (pt 80 248) + (output) + (text "d1_out" (rect -8 0 30 14)(font "Arial" (font_size 8))) + (text "d1_out" (rect 71 189 85 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 80 248)(pt 80 232)) + ) + (port + (pt 104 248) + (output) + (text "d0_out" (rect -8 0 30 14)(font "Arial" (font_size 8))) + (text "d0_out" (rect 95 189 109 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 104 248)(pt 104 232)) + ) + (drawing + (rectangle (rect 8 16 144 240)) + ) + (rotate270) + (fill (color 255 170 255)) +) +(symbol + (rect 1560 328 1720 576) + (text "inc_dec_2bit" (rect 146 16 160 87)(font "Arial" (font_size 8))(vertical)) + (text "dual_adder_2" (rect 79 109 91 173)(font "Arial" )(vertical)) + (port + (pt 136 0) + (input) + (text "carry_borrow_in" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "carry_borrow_in" (rect 127 21 141 117)(font "Arial" (font_size 8))(vertical)) + (line (pt 136 0)(pt 136 16)) + ) + (port + (pt 56 0) + (input) + (text "d1_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "d1_in" (rect 47 21 61 51)(font "Arial" (font_size 8))(vertical)) + (line (pt 56 0)(pt 56 16)) + ) + (port + (pt 120 0) + (input) + (text "d0_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "d0_in" (rect 111 21 125 51)(font "Arial" (font_size 8))(vertical)) + (line (pt 120 0)(pt 120 16)) + ) + (port + (pt 24 0) + (input) + (text "dec1_in" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "dec1_in" (rect 15 21 29 65)(font "Arial" (font_size 8))(vertical)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 88 0) + (input) + (text "dec0_in" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "dec0_in" (rect 79 21 93 65)(font "Arial" (font_size 8))(vertical)) + (line (pt 88 0)(pt 88 16)) + ) + (port + (pt 32 248) + (output) + (text "carry_borrow_out" (rect -8 0 97 14)(font "Arial" (font_size 8))) + (text "carry_borrow_out" (rect 23 122 37 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 248)(pt 32 232)) + ) + (port + (pt 80 248) + (output) + (text "d1_out" (rect -8 0 30 14)(font "Arial" (font_size 8))) + (text "d1_out" (rect 71 189 85 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 80 248)(pt 80 232)) + ) + (port + (pt 104 248) + (output) + (text "d0_out" (rect -8 0 30 14)(font "Arial" (font_size 8))) + (text "d0_out" (rect 95 189 109 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 104 248)(pt 104 232)) + ) + (drawing + (rectangle (rect 8 16 144 240)) + ) + (rotate270) + (fill (color 255 170 255)) +) +(symbol + (rect 1368 328 1528 576) + (text "inc_dec_2bit" (rect 146 16 160 87)(font "Arial" (font_size 8))(vertical)) + (text "dual_adder_4" (rect 80 108 92 172)(font "Arial" )(vertical)) + (port + (pt 136 0) + (input) + (text "carry_borrow_in" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "carry_borrow_in" (rect 127 21 141 117)(font "Arial" (font_size 8))(vertical)) + (line (pt 136 0)(pt 136 16)) + ) + (port + (pt 56 0) + (input) + (text "d1_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "d1_in" (rect 47 21 61 51)(font "Arial" (font_size 8))(vertical)) + (line (pt 56 0)(pt 56 16)) + ) + (port + (pt 120 0) + (input) + (text "d0_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "d0_in" (rect 111 21 125 51)(font "Arial" (font_size 8))(vertical)) + (line (pt 120 0)(pt 120 16)) + ) + (port + (pt 24 0) + (input) + (text "dec1_in" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "dec1_in" (rect 15 21 29 65)(font "Arial" (font_size 8))(vertical)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 88 0) + (input) + (text "dec0_in" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "dec0_in" (rect 79 21 93 65)(font "Arial" (font_size 8))(vertical)) + (line (pt 88 0)(pt 88 16)) + ) + (port + (pt 32 248) + (output) + (text "carry_borrow_out" (rect -8 0 97 14)(font "Arial" (font_size 8))) + (text "carry_borrow_out" (rect 23 122 37 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 248)(pt 32 232)) + ) + (port + (pt 80 248) + (output) + (text "d1_out" (rect -8 0 30 14)(font "Arial" (font_size 8))) + (text "d1_out" (rect 71 189 85 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 80 248)(pt 80 232)) + ) + (port + (pt 104 248) + (output) + (text "d0_out" (rect -8 0 30 14)(font "Arial" (font_size 8))) + (text "d0_out" (rect 95 189 109 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 104 248)(pt 104 232)) + ) + (drawing + (rectangle (rect 8 16 144 240)) + ) + (rotate270) + (fill (color 255 170 255)) +) +(symbol + (rect 992 328 1152 576) + (text "inc_dec_2bit" (rect 146 16 160 87)(font "Arial" (font_size 8))(vertical)) + (text "dual_adder_7" (rect 80 108 92 172)(font "Arial" )(vertical)) + (port + (pt 136 0) + (input) + (text "carry_borrow_in" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "carry_borrow_in" (rect 127 21 141 117)(font "Arial" (font_size 8))(vertical)) + (line (pt 136 0)(pt 136 16)) + ) + (port + (pt 56 0) + (input) + (text "d1_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "d1_in" (rect 47 21 61 51)(font "Arial" (font_size 8))(vertical)) + (line (pt 56 0)(pt 56 16)) + ) + (port + (pt 120 0) + (input) + (text "d0_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "d0_in" (rect 111 21 125 51)(font "Arial" (font_size 8))(vertical)) + (line (pt 120 0)(pt 120 16)) + ) + (port + (pt 24 0) + (input) + (text "dec1_in" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "dec1_in" (rect 15 21 29 65)(font "Arial" (font_size 8))(vertical)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 88 0) + (input) + (text "dec0_in" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "dec0_in" (rect 79 21 93 65)(font "Arial" (font_size 8))(vertical)) + (line (pt 88 0)(pt 88 16)) + ) + (port + (pt 32 248) + (output) + (text "carry_borrow_out" (rect -8 0 97 14)(font "Arial" (font_size 8))) + (text "carry_borrow_out" (rect 23 122 37 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 248)(pt 32 232)) + ) + (port + (pt 80 248) + (output) + (text "d1_out" (rect -8 0 30 14)(font "Arial" (font_size 8))) + (text "d1_out" (rect 71 189 85 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 80 248)(pt 80 232)) + ) + (port + (pt 104 248) + (output) + (text "d0_out" (rect -8 0 30 14)(font "Arial" (font_size 8))) + (text "d0_out" (rect 95 189 109 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 104 248)(pt 104 232)) + ) + (drawing + (rectangle (rect 8 16 144 240)) + ) + (rotate270) + (fill (color 255 170 255)) +) +(symbol + (rect 800 328 960 576) + (text "inc_dec_2bit" (rect 146 16 160 87)(font "Arial" (font_size 8))(vertical)) + (text "dual_adder_9" (rect 80 108 92 172)(font "Arial" )(vertical)) + (port + (pt 136 0) + (input) + (text "carry_borrow_in" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "carry_borrow_in" (rect 127 21 141 117)(font "Arial" (font_size 8))(vertical)) + (line (pt 136 0)(pt 136 16)) + ) + (port + (pt 56 0) + (input) + (text "d1_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "d1_in" (rect 47 21 61 51)(font "Arial" (font_size 8))(vertical)) + (line (pt 56 0)(pt 56 16)) + ) + (port + (pt 120 0) + (input) + (text "d0_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "d0_in" (rect 111 21 125 51)(font "Arial" (font_size 8))(vertical)) + (line (pt 120 0)(pt 120 16)) + ) + (port + (pt 24 0) + (input) + (text "dec1_in" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "dec1_in" (rect 15 21 29 65)(font "Arial" (font_size 8))(vertical)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 88 0) + (input) + (text "dec0_in" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "dec0_in" (rect 79 21 93 65)(font "Arial" (font_size 8))(vertical)) + (line (pt 88 0)(pt 88 16)) + ) + (port + (pt 32 248) + (output) + (text "carry_borrow_out" (rect -8 0 97 14)(font "Arial" (font_size 8))) + (text "carry_borrow_out" (rect 23 122 37 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 248)(pt 32 232)) + ) + (port + (pt 80 248) + (output) + (text "d1_out" (rect -8 0 30 14)(font "Arial" (font_size 8))) + (text "d1_out" (rect 71 189 85 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 80 248)(pt 80 232)) + ) + (port + (pt 104 248) + (output) + (text "d0_out" (rect -8 0 30 14)(font "Arial" (font_size 8))) + (text "d0_out" (rect 95 189 109 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 104 248)(pt 104 232)) + ) + (drawing + (rectangle (rect 8 16 144 240)) + ) + (rotate270) + (fill (color 255 170 255)) +) +(symbol + (rect 464 328 624 576) + (text "inc_dec_2bit" (rect 146 16 160 87)(font "Arial" (font_size 8))(vertical)) + (text "dual_adder_10" (rect 80 108 92 178)(font "Arial" )(vertical)) + (port + (pt 136 0) + (input) + (text "carry_borrow_in" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "carry_borrow_in" (rect 127 21 141 117)(font "Arial" (font_size 8))(vertical)) + (line (pt 136 0)(pt 136 16)) + ) + (port + (pt 56 0) + (input) + (text "d1_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "d1_in" (rect 47 21 61 51)(font "Arial" (font_size 8))(vertical)) + (line (pt 56 0)(pt 56 16)) + ) + (port + (pt 120 0) + (input) + (text "d0_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "d0_in" (rect 111 21 125 51)(font "Arial" (font_size 8))(vertical)) + (line (pt 120 0)(pt 120 16)) + ) + (port + (pt 24 0) + (input) + (text "dec1_in" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "dec1_in" (rect 15 21 29 65)(font "Arial" (font_size 8))(vertical)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 88 0) + (input) + (text "dec0_in" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "dec0_in" (rect 79 21 93 65)(font "Arial" (font_size 8))(vertical)) + (line (pt 88 0)(pt 88 16)) + ) + (port + (pt 32 248) + (output) + (text "carry_borrow_out" (rect -8 0 97 14)(font "Arial" (font_size 8))) + (text "carry_borrow_out" (rect 23 122 37 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 248)(pt 32 232)) + ) + (port + (pt 80 248) + (output) + (text "d1_out" (rect -8 0 30 14)(font "Arial" (font_size 8))) + (text "d1_out" (rect 71 189 85 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 80 248)(pt 80 232)) + ) + (port + (pt 104 248) + (output) + (text "d0_out" (rect -8 0 30 14)(font "Arial" (font_size 8))) + (text "d0_out" (rect 95 189 109 227)(font "Arial" (font_size 8))(vertical)) + (line (pt 104 248)(pt 104 232)) + ) + (drawing + (rectangle (rect 8 16 144 240)) + ) + (rotate270) + (fill (color 255 170 255)) +) +(connector + (pt 1848 112) + (pt 1848 96) +) +(connector + (pt 1848 96) + (pt 1872 96) +) +(connector + (pt 1784 112) + (pt 1784 96) +) +(connector + (pt 1784 96) + (pt 1808 96) +) +(connector + (pt 1768 112) + (pt 1768 56) +) +(connector + (pt 1656 112) + (pt 1656 96) +) +(connector + (pt 1656 96) + (pt 1680 96) +) +(connector + (pt 1640 112) + (pt 1640 56) +) +(connector + (pt 1592 112) + (pt 1592 96) +) +(connector + (pt 1592 96) + (pt 1616 96) +) +(connector + (pt 1576 112) + (pt 1576 56) +) +(connector + (pt 1464 112) + (pt 1464 96) +) +(connector + (pt 1464 96) + (pt 1488 96) +) +(connector + (pt 1448 112) + (pt 1448 56) +) +(connector + (pt 1400 112) + (pt 1400 96) +) +(connector + (pt 1400 96) + (pt 1424 96) +) +(connector + (pt 1384 112) + (pt 1384 56) +) +(connector + (pt 1272 112) + (pt 1272 96) +) +(connector + (pt 1272 96) + (pt 1296 96) +) +(connector + (pt 1256 112) + (pt 1256 56) +) +(connector + (pt 1784 592) + (pt 1736 592) +) +(connector + (pt 1736 592) + (pt 1736 312) +) +(connector + (pt 1736 312) + (pt 1696 312) +) +(connector + (pt 1544 592) + (pt 1544 312) +) +(connector + (pt 1544 312) + (pt 1504 312) +) +(connector + (pt 1544 592) + (pt 1592 592) +) +(connector + (pt 1400 592) + (pt 1344 592) +) +(connector + (pt 1344 592) + (pt 1344 488) +) +(connector + (pt 1344 488) + (pt 1312 488) +) +(connector + (pt 1504 312) + (pt 1504 328) +) +(connector + (pt 1696 312) + (pt 1696 328) +) +(connector + (pt 1888 296) + (pt 1888 328) +) +(connector + (pt 1312 488) + (pt 1312 504) +) +(connector + (pt 1264 176) + (pt 1264 184) +) +(connector + (pt 1128 328) + (pt 1128 320) +) +(connector + (pt 1144 320) + (pt 1144 312) +) +(connector + (pt 1176 240) + (pt 1152 240) +) +(connector + (pt 1152 240) + (pt 1152 248) +) +(connector + (pt 1088 112) + (pt 1088 96) +) +(connector + (pt 1088 96) + (pt 1112 96) +) +(connector + (pt 1024 112) + (pt 1024 96) +) +(connector + (pt 1024 96) + (pt 1048 96) +) +(connector + (pt 896 112) + (pt 896 96) +) +(connector + (pt 896 96) + (pt 920 96) +) +(connector + (pt 832 112) + (pt 832 96) +) +(connector + (pt 832 96) + (pt 856 96) +) +(connector + (pt 1072 112) + (pt 1072 56) +) +(connector + (pt 1008 112) + (pt 1008 56) +) +(connector + (pt 880 112) + (pt 880 56) +) +(connector + (pt 816 112) + (pt 816 56) +) +(connector + (pt 1024 592) + (pt 976 592) +) +(connector + (pt 976 592) + (pt 976 312) +) +(connector + (pt 976 312) + (pt 936 312) +) +(connector + (pt 936 312) + (pt 936 328) +) +(connector + (pt 776 488) + (pt 744 488) +) +(connector + (pt 744 488) + (pt 744 504) +) +(connector + (pt 832 592) + (pt 776 592) +) +(connector + (pt 776 488) + (pt 776 592) +) +(connector + (pt 704 112) + (pt 704 96) +) +(connector + (pt 704 96) + (pt 728 96) +) +(connector + (pt 688 112) + (pt 688 56) +) +(connector + (pt 696 184) + (pt 696 176) +) +(connector + (pt 1096 320) + (pt 1096 264) +) +(connector + (pt 608 224) + (pt 600 224) +) +(connector + (pt 560 112) + (pt 560 96) +) +(connector + (pt 560 96) + (pt 584 96) +) +(connector + (pt 496 112) + (pt 496 96) +) +(connector + (pt 496 96) + (pt 520 96) +) +(connector + (pt 544 112) + (pt 544 56) +) +(connector + (pt 480 112) + (pt 480 56) +) +(connector + (pt 440 488) + (pt 408 488) +) +(connector + (pt 408 488) + (pt 408 504) +) +(connector + (pt 440 488) + (pt 440 592) +) +(connector + (pt 496 592) + (pt 440 592) +) +(connector + (pt 1832 112) + (pt 1832 56) +) +(connector + (pt 1136 168) + (pt 1136 32) +) +(connector + (pt 368 112) + (pt 368 96) +) +(connector + (pt 368 96) + (pt 392 96) +) +(connector + (pt 352 112) + (pt 352 56) +) +(connector + (pt 360 184) + (pt 360 176) +) +(connector + (pt 272 208) + (pt 256 208) +) +(connector + (pt 256 208) + (pt 256 504) +) +(connector + (text "d[15]" (rect 224 467 236 491)(font "Arial" )(vertical)) + (pt 240 504) + (pt 240 80) +) +(connector + (pt 1240 264) + (pt 1776 264) +) +(connector + (pt 1240 280) + (pt 1840 280) +) +(connector + (pt 1240 248) + (pt 1648 248) +) +(connector + (pt 1240 200) + (pt 1392 200) +) +(connector + (pt 1240 216) + (pt 1456 216) +) +(connector + (pt 1240 184) + (pt 1264 184) +) +(connector + (pt 1240 232) + (pt 1584 232) +) +(connector + (pt 672 232) + (pt 1016 232) +) +(connector + (pt 672 264) + (pt 1096 264) +) +(connector + (pt 672 248) + (pt 1080 248) +) +(connector + (pt 672 216) + (pt 888 216) +) +(connector + (pt 672 200) + (pt 824 200) +) +(connector + (pt 672 184) + (pt 696 184) +) +(connector + (pt 336 232) + (pt 600 232) +) +(connector + (pt 336 216) + (pt 552 216) +) +(connector + (pt 336 200) + (pt 488 200) +) +(connector + (pt 336 184) + (pt 360 184) +) +(connector + (pt 192 32) + (pt 1136 32) +) +(connector + (text "address[6]" (rect 1288 576 1300 627)(font "Arial" )(vertical)) + (pt 1304 568) + (pt 1304 632) +) +(connector + (pt 1136 216) + (pt 1136 248) +) +(connector + (text "address[11]" (rect 720 571 732 628)(font "Arial" )(vertical)) + (pt 736 568) + (pt 736 632) +) +(connector + (text "address[14]" (rect 384 571 396 628)(font "Arial" )(vertical)) + (pt 400 568) + (pt 400 632) +) +(connector + (text "address[15]" (rect 232 571 244 628)(font "Arial" )(vertical)) + (pt 248 568) + (pt 248 632) +) +(connector + (pt 1784 576) + (pt 1784 592) +) +(connector + (text "address[1]" (rect 1816 576 1828 627)(font "Arial" )(vertical)) + (pt 1832 576) + (pt 1832 632) +) +(connector + (text "address[0]" (rect 1840 576 1852 627)(font "Arial" )(vertical)) + (pt 1856 576) + (pt 1856 632) +) +(connector + (pt 1592 576) + (pt 1592 592) +) +(connector + (text "address[3]" (rect 1624 576 1636 627)(font "Arial" )(vertical)) + (pt 1640 576) + (pt 1640 632) +) +(connector + (text "address[2]" (rect 1648 576 1660 627)(font "Arial" )(vertical)) + (pt 1664 576) + (pt 1664 632) +) +(connector + (pt 1400 576) + (pt 1400 592) +) +(connector + (text "address[5]" (rect 1432 576 1444 627)(font "Arial" )(vertical)) + (pt 1448 576) + (pt 1448 632) +) +(connector + (text "address[4]" (rect 1456 576 1468 627)(font "Arial" )(vertical)) + (pt 1472 576) + (pt 1472 632) +) +(connector + (pt 1024 576) + (pt 1024 592) +) +(connector + (text "address[8]" (rect 1056 576 1068 627)(font "Arial" )(vertical)) + (pt 1072 576) + (pt 1072 632) +) +(connector + (text "address[7]" (rect 1080 576 1092 627)(font "Arial" )(vertical)) + (pt 1096 576) + (pt 1096 632) +) +(connector + (pt 832 576) + (pt 832 592) +) +(connector + (text "address[10]" (rect 864 571 876 628)(font "Arial" )(vertical)) + (pt 880 576) + (pt 880 632) +) +(connector + (text "address[9]" (rect 888 576 900 627)(font "Arial" )(vertical)) + (pt 904 576) + (pt 904 632) +) +(connector + (pt 496 576) + (pt 496 592) +) +(connector + (text "address[13]" (rect 528 571 540 628)(font "Arial" )(vertical)) + (pt 544 576) + (pt 544 632) +) +(connector + (text "address[12]" (rect 552 571 564 628)(font "Arial" )(vertical)) + (pt 568 576) + (pt 568 632) +) +(connector + (pt 1424 80) + (pt 1424 96) +) +(connector + (text "d[5]" (rect 1408 296 1420 314)(font "Arial" )(vertical)) + (pt 1424 96) + (pt 1424 328) +) +(connector + (pt 1488 80) + (pt 1488 96) +) +(connector + (text "d[4]" (rect 1472 296 1484 314)(font "Arial" )(vertical)) + (pt 1488 96) + (pt 1488 328) +) +(connector + (pt 1616 80) + (pt 1616 96) +) +(connector + (text "d[3]" (rect 1600 296 1612 314)(font "Arial" )(vertical)) + (pt 1616 96) + (pt 1616 328) +) +(connector + (pt 1680 80) + (pt 1680 96) +) +(connector + (text "d[2]" (rect 1664 296 1676 314)(font "Arial" )(vertical)) + (pt 1680 96) + (pt 1680 328) +) +(connector + (pt 1808 80) + (pt 1808 96) +) +(connector + (text "d[1]" (rect 1792 296 1804 314)(font "Arial" )(vertical)) + (pt 1808 96) + (pt 1808 328) +) +(connector + (pt 1048 80) + (pt 1048 96) +) +(connector + (text "d[8]" (rect 1032 296 1044 314)(font "Arial" )(vertical)) + (pt 1048 96) + (pt 1048 328) +) +(connector + (pt 856 80) + (pt 856 96) +) +(connector + (text "d[10]" (rect 840 291 852 315)(font "Arial" )(vertical)) + (pt 856 96) + (pt 856 328) +) +(connector + (pt 1296 80) + (pt 1296 96) +) +(connector + (text "d[6]" (rect 1280 472 1292 490)(font "Arial" )(vertical)) + (pt 1296 96) + (pt 1296 504) +) +(connector + (pt 1112 80) + (pt 1112 96) +) +(connector + (text "d[7]" (rect 1096 296 1108 314)(font "Arial" )(vertical)) + (pt 1112 96) + (pt 1112 328) +) +(connector + (pt 920 80) + (pt 920 96) +) +(connector + (text "d[9]" (rect 904 296 916 314)(font "Arial" )(vertical)) + (pt 920 96) + (pt 920 328) +) +(connector + (pt 1096 320) + (pt 1128 320) +) +(connector + (pt 1128 320) + (pt 1144 320) +) +(connector + (pt 728 80) + (pt 728 96) +) +(connector + (text "d[11]" (rect 712 467 724 491)(font "Arial" )(vertical)) + (pt 728 96) + (pt 728 504) +) +(connector + (pt 1872 80) + (pt 1872 96) +) +(connector + (text "d[0]" (rect 1856 296 1868 314)(font "Arial" )(vertical)) + (pt 1872 96) + (pt 1872 328) +) +(connector + (pt 392 80) + (pt 392 96) +) +(connector + (text "d[14]" (rect 376 467 388 491)(font "Arial" )(vertical)) + (pt 392 96) + (pt 392 504) +) +(connector + (pt 584 80) + (pt 584 96) +) +(connector + (text "d[12]" (rect 568 291 580 315)(font "Arial" )(vertical)) + (pt 584 96) + (pt 584 328) +) +(connector + (pt 520 80) + (pt 520 96) +) +(connector + (text "d[13]" (rect 504 291 516 315)(font "Arial" )(vertical)) + (pt 520 96) + (pt 520 328) +) +(connector + (pt 1240 296) + (pt 1888 296) +) +(connector + (pt 1888 296) + (pt 1928 296) +) +(connector + (pt 600 224) + (pt 600 232) +) +(connector + (pt 600 232) + (pt 600 328) +) +(connector + (pt 192 56) + (pt 352 56) +) +(connector + (pt 352 56) + (pt 480 56) +) +(connector + (pt 480 56) + (pt 544 56) +) +(connector + (pt 544 56) + (pt 688 56) +) +(connector + (pt 688 56) + (pt 816 56) +) +(connector + (pt 816 56) + (pt 880 56) +) +(connector + (pt 880 56) + (pt 1008 56) +) +(connector + (pt 1008 56) + (pt 1072 56) +) +(connector + (pt 1072 56) + (pt 1256 56) +) +(connector + (pt 1256 56) + (pt 1384 56) +) +(connector + (pt 1384 56) + (pt 1448 56) +) +(connector + (pt 1448 56) + (pt 1576 56) +) +(connector + (pt 1576 56) + (pt 1640 56) +) +(connector + (pt 1640 56) + (pt 1768 56) +) +(connector + (pt 1768 56) + (pt 1832 56) +) +(connector + (pt 192 80) + (pt 240 80) + (bus) +) +(connector + (pt 240 80) + (pt 392 80) + (bus) +) +(connector + (pt 392 80) + (pt 520 80) + (bus) +) +(connector + (pt 520 80) + (pt 584 80) + (bus) +) +(connector + (pt 584 80) + (pt 728 80) + (bus) +) +(connector + (pt 728 80) + (pt 856 80) + (bus) +) +(connector + (pt 856 80) + (pt 920 80) + (bus) +) +(connector + (pt 920 80) + (pt 1048 80) + (bus) +) +(connector + (pt 1048 80) + (pt 1112 80) + (bus) +) +(connector + (pt 1112 80) + (pt 1296 80) + (bus) +) +(connector + (pt 1296 80) + (pt 1424 80) + (bus) +) +(connector + (pt 1424 80) + (pt 1488 80) + (bus) +) +(connector + (pt 1488 80) + (pt 1616 80) + (bus) +) +(connector + (pt 1616 80) + (pt 1680 80) + (bus) +) +(connector + (pt 1680 80) + (pt 1808 80) + (bus) +) +(connector + (pt 1808 80) + (pt 1872 80) + (bus) +) +(connector + (pt 1840 176) + (pt 1840 280) +) +(connector + (pt 1840 280) + (pt 1840 328) +) +(connector + (pt 1776 176) + (pt 1776 264) +) +(connector + (pt 1776 264) + (pt 1776 328) +) +(connector + (pt 1648 176) + (pt 1648 248) +) +(connector + (pt 1648 248) + (pt 1648 328) +) +(connector + (pt 1584 176) + (pt 1584 232) +) +(connector + (pt 1584 232) + (pt 1584 328) +) +(connector + (pt 1456 176) + (pt 1456 216) +) +(connector + (pt 1456 216) + (pt 1456 328) +) +(connector + (pt 1392 176) + (pt 1392 200) +) +(connector + (pt 1392 200) + (pt 1392 328) +) +(connector + (pt 824 176) + (pt 824 200) +) +(connector + (pt 824 200) + (pt 824 328) +) +(connector + (pt 888 176) + (pt 888 216) +) +(connector + (pt 888 216) + (pt 888 328) +) +(connector + (pt 1016 176) + (pt 1016 232) +) +(connector + (pt 1016 232) + (pt 1016 328) +) +(connector + (pt 1080 176) + (pt 1080 248) +) +(connector + (pt 1080 248) + (pt 1080 328) +) +(connector + (pt 552 176) + (pt 552 216) +) +(connector + (pt 552 216) + (pt 552 328) +) +(connector + (pt 488 176) + (pt 488 200) +) +(connector + (pt 488 200) + (pt 488 328) +) +(connector + (pt 248 632) + (pt 400 632) + (bus) +) +(connector + (pt 400 632) + (pt 544 632) + (bus) +) +(connector + (pt 544 632) + (pt 568 632) + (bus) +) +(connector + (pt 568 632) + (pt 736 632) + (bus) +) +(connector + (pt 736 632) + (pt 880 632) + (bus) +) +(connector + (pt 880 632) + (pt 904 632) + (bus) +) +(connector + (pt 904 632) + (pt 1072 632) + (bus) +) +(connector + (pt 1072 632) + (pt 1096 632) + (bus) +) +(connector + (pt 1096 632) + (pt 1304 632) + (bus) +) +(connector + (pt 1304 632) + (pt 1448 632) + (bus) +) +(connector + (pt 1448 632) + (pt 1472 632) + (bus) +) +(connector + (pt 1472 632) + (pt 1640 632) + (bus) +) +(connector + (pt 1640 632) + (pt 1664 632) + (bus) +) +(connector + (pt 1664 632) + (pt 1832 632) + (bus) +) +(connector + (pt 1832 632) + (pt 1856 632) + (bus) +) +(connector + (pt 1856 632) + (pt 1928 632) + (bus) +) +(junction (pt 1424 96)) +(junction (pt 1488 96)) +(junction (pt 1616 96)) +(junction (pt 1680 96)) +(junction (pt 1808 96)) +(junction (pt 1048 96)) +(junction (pt 856 96)) +(junction (pt 1296 96)) +(junction (pt 1112 96)) +(junction (pt 920 96)) +(junction (pt 1128 320)) +(junction (pt 728 96)) +(junction (pt 1872 96)) +(junction (pt 392 96)) +(junction (pt 584 96)) +(junction (pt 520 96)) +(junction (pt 1888 296)) +(junction (pt 600 232)) +(junction (pt 352 56)) +(junction (pt 480 56)) +(junction (pt 544 56)) +(junction (pt 688 56)) +(junction (pt 816 56)) +(junction (pt 880 56)) +(junction (pt 1008 56)) +(junction (pt 1072 56)) +(junction (pt 1256 56)) +(junction (pt 1384 56)) +(junction (pt 1448 56)) +(junction (pt 1576 56)) +(junction (pt 1640 56)) +(junction (pt 1768 56)) +(junction (pt 240 80)) +(junction (pt 392 80)) +(junction (pt 520 80)) +(junction (pt 584 80)) +(junction (pt 728 80)) +(junction (pt 856 80)) +(junction (pt 920 80)) +(junction (pt 1048 80)) +(junction (pt 1112 80)) +(junction (pt 1296 80)) +(junction (pt 1424 80)) +(junction (pt 1488 80)) +(junction (pt 1616 80)) +(junction (pt 1680 80)) +(junction (pt 1808 80)) +(junction (pt 1840 280)) +(junction (pt 1776 264)) +(junction (pt 1648 248)) +(junction (pt 1584 232)) +(junction (pt 1456 216)) +(junction (pt 1392 200)) +(junction (pt 824 200)) +(junction (pt 888 216)) +(junction (pt 1016 232)) +(junction (pt 1080 248)) +(junction (pt 552 216)) +(junction (pt 488 200)) +(junction (pt 400 632)) +(junction (pt 544 632)) +(junction (pt 568 632)) +(junction (pt 736 632)) +(junction (pt 880 632)) +(junction (pt 904 632)) +(junction (pt 1072 632)) +(junction (pt 1096 632)) +(junction (pt 1856 632)) +(junction (pt 1304 632)) +(junction (pt 1448 632)) +(junction (pt 1472 632)) +(junction (pt 1640 632)) +(junction (pt 1664 632)) +(junction (pt 1832 632)) +(text "Fast increment / decrement circuit with carry-skip and carry-lookahead" (rect 664 664 1351 686)(font "Arial" (font_size 14))) +(title_block + (rect 24 656 345 717) + (name "title-custom-medium") + (section (rect 0 41 240 60)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 3, 2014" (rect 56 3 140 19)(font "Arial" (font_size 10)))(border)) + (section (rect 0 21 320 40)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 151 19)(font "Arial" (font_size 11)))(border)) + (section (rect 130 0 320 20)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "inc_dec" (rect 43 2 113 21)(font "Arial" (font_size 12)(bold)))(border)) + (section (rect 0 0 320 20)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 106 21)(font "Arial" (font_size 12)(bold)))(border)) + (section (rect 241 41 320 60)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.0" (rect 43 3 64 19)(font "Arial" (font_size 10)))(border)) + (drawing + ) +) diff --git a/cpu/bus/inc_dec.bsf b/cpu/bus/inc_dec.bsf new file mode 100644 index 0000000..10af2e6 --- /dev/null +++ b/cpu/bus/inc_dec.bsf @@ -0,0 +1,64 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 216 144) + (text "inc_dec" (rect 5 0 49 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 112 25 124)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "limit6" (rect 0 0 27 14)(font "Arial" (font_size 8))) + (text "limit6" (rect 21 27 48 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "decrement" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "decrement" (rect 21 43 81 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "d[15..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "d[15..0]" (rect 21 59 63 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "carry_in" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "carry_in" (rect 21 75 68 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 200 32) + (output) + (text "address[15..0]" (rect 0 0 82 14)(font "Arial" (font_size 8))) + (text "address[15..0]" (rect 97 27 179 41)(font "Arial" (font_size 8))) + (line (pt 200 32)(pt 184 32)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 184 112)) + ) +) diff --git a/cpu/bus/inc_dec.v b/cpu/bus/inc_dec.v new file mode 100644 index 0000000..9f4fb56 --- /dev/null +++ b/cpu/bus/inc_dec.v @@ -0,0 +1,181 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Mon Oct 13 12:30:20 2014" + +module inc_dec( + carry_in, + limit6, + decrement, + d, + address +); + + +input wire carry_in; +input wire limit6; +input wire decrement; +input wire [15:0] d; +output wire [15:0] address; + +wire [15:0] address_ALTERA_SYNTHESIZED; +wire SYNTHESIZED_WIRE_40; +wire SYNTHESIZED_WIRE_41; +wire SYNTHESIZED_WIRE_42; +wire SYNTHESIZED_WIRE_43; +wire SYNTHESIZED_WIRE_44; +wire SYNTHESIZED_WIRE_5; +wire SYNTHESIZED_WIRE_45; +wire SYNTHESIZED_WIRE_46; +wire SYNTHESIZED_WIRE_47; +wire SYNTHESIZED_WIRE_48; +wire SYNTHESIZED_WIRE_49; +wire SYNTHESIZED_WIRE_50; +wire SYNTHESIZED_WIRE_12; +wire SYNTHESIZED_WIRE_51; +wire SYNTHESIZED_WIRE_52; +wire SYNTHESIZED_WIRE_53; +wire SYNTHESIZED_WIRE_16; +wire SYNTHESIZED_WIRE_22; +wire SYNTHESIZED_WIRE_25; +wire SYNTHESIZED_WIRE_31; +wire SYNTHESIZED_WIRE_34; +wire SYNTHESIZED_WIRE_35; +wire SYNTHESIZED_WIRE_36; +wire SYNTHESIZED_WIRE_37; +wire SYNTHESIZED_WIRE_38; +wire SYNTHESIZED_WIRE_39; + + + + +assign SYNTHESIZED_WIRE_34 = carry_in & SYNTHESIZED_WIRE_40 & SYNTHESIZED_WIRE_41 & SYNTHESIZED_WIRE_42 & SYNTHESIZED_WIRE_43 & SYNTHESIZED_WIRE_44 & SYNTHESIZED_WIRE_5 & SYNTHESIZED_WIRE_45; + +assign SYNTHESIZED_WIRE_51 = SYNTHESIZED_WIRE_46 & SYNTHESIZED_WIRE_47 & SYNTHESIZED_WIRE_48 & SYNTHESIZED_WIRE_49 & SYNTHESIZED_WIRE_50 & SYNTHESIZED_WIRE_12; + +assign SYNTHESIZED_WIRE_38 = SYNTHESIZED_WIRE_51 & SYNTHESIZED_WIRE_52 & SYNTHESIZED_WIRE_53 & SYNTHESIZED_WIRE_16; + + +inc_dec_2bit b2v_dual_adder_0( + .carry_borrow_in(carry_in), + .d1_in(d[1]), + .d0_in(d[0]), + .dec1_in(SYNTHESIZED_WIRE_40), + .dec0_in(SYNTHESIZED_WIRE_41), + .carry_borrow_out(SYNTHESIZED_WIRE_22), + .d1_out(address_ALTERA_SYNTHESIZED[1]), + .d0_out(address_ALTERA_SYNTHESIZED[0])); + + +inc_dec_2bit b2v_dual_adder_10( + .carry_borrow_in(SYNTHESIZED_WIRE_51), + .d1_in(d[13]), + .d0_in(d[12]), + .dec1_in(SYNTHESIZED_WIRE_53), + .dec0_in(SYNTHESIZED_WIRE_52), + .carry_borrow_out(SYNTHESIZED_WIRE_37), + .d1_out(address_ALTERA_SYNTHESIZED[13]), + .d0_out(address_ALTERA_SYNTHESIZED[12])); + + +inc_dec_2bit b2v_dual_adder_2( + .carry_borrow_in(SYNTHESIZED_WIRE_22), + .d1_in(d[3]), + .d0_in(d[2]), + .dec1_in(SYNTHESIZED_WIRE_45), + .dec0_in(SYNTHESIZED_WIRE_42), + .carry_borrow_out(SYNTHESIZED_WIRE_25), + .d1_out(address_ALTERA_SYNTHESIZED[3]), + .d0_out(address_ALTERA_SYNTHESIZED[2])); + + +inc_dec_2bit b2v_dual_adder_4( + .carry_borrow_in(SYNTHESIZED_WIRE_25), + .d1_in(d[5]), + .d0_in(d[4]), + .dec1_in(SYNTHESIZED_WIRE_43), + .dec0_in(SYNTHESIZED_WIRE_44), + .carry_borrow_out(SYNTHESIZED_WIRE_39), + .d1_out(address_ALTERA_SYNTHESIZED[5]), + .d0_out(address_ALTERA_SYNTHESIZED[4])); + + +inc_dec_2bit b2v_dual_adder_7( + .carry_borrow_in(SYNTHESIZED_WIRE_47), + .d1_in(d[8]), + .d0_in(d[7]), + .dec1_in(SYNTHESIZED_WIRE_46), + .dec0_in(SYNTHESIZED_WIRE_48), + .carry_borrow_out(SYNTHESIZED_WIRE_31), + .d1_out(address_ALTERA_SYNTHESIZED[8]), + .d0_out(address_ALTERA_SYNTHESIZED[7])); + + +inc_dec_2bit b2v_dual_adder_9( + .carry_borrow_in(SYNTHESIZED_WIRE_31), + .d1_in(d[10]), + .d0_in(d[9]), + .dec1_in(SYNTHESIZED_WIRE_50), + .dec0_in(SYNTHESIZED_WIRE_49), + .carry_borrow_out(SYNTHESIZED_WIRE_36), + .d1_out(address_ALTERA_SYNTHESIZED[10]), + .d0_out(address_ALTERA_SYNTHESIZED[9])); + +assign SYNTHESIZED_WIRE_47 = SYNTHESIZED_WIRE_34 & SYNTHESIZED_WIRE_35; + +assign SYNTHESIZED_WIRE_35 = ~limit6; + +assign SYNTHESIZED_WIRE_41 = d[0] ^ decrement; + +assign SYNTHESIZED_WIRE_40 = d[1] ^ decrement; + +assign SYNTHESIZED_WIRE_50 = d[10] ^ decrement; + +assign SYNTHESIZED_WIRE_12 = d[11] ^ decrement; + +assign address_ALTERA_SYNTHESIZED[11] = SYNTHESIZED_WIRE_36 ^ d[11]; + +assign SYNTHESIZED_WIRE_52 = d[12] ^ decrement; + +assign SYNTHESIZED_WIRE_53 = d[13] ^ decrement; + +assign SYNTHESIZED_WIRE_16 = d[14] ^ decrement; + +assign address_ALTERA_SYNTHESIZED[14] = SYNTHESIZED_WIRE_37 ^ d[14]; + +assign address_ALTERA_SYNTHESIZED[15] = SYNTHESIZED_WIRE_38 ^ d[15]; + +assign SYNTHESIZED_WIRE_42 = d[2] ^ decrement; + +assign SYNTHESIZED_WIRE_45 = d[3] ^ decrement; + +assign SYNTHESIZED_WIRE_44 = d[4] ^ decrement; + +assign SYNTHESIZED_WIRE_43 = d[5] ^ decrement; + +assign SYNTHESIZED_WIRE_5 = d[6] ^ decrement; + +assign address_ALTERA_SYNTHESIZED[6] = SYNTHESIZED_WIRE_39 ^ d[6]; + +assign SYNTHESIZED_WIRE_48 = d[7] ^ decrement; + +assign SYNTHESIZED_WIRE_46 = d[8] ^ decrement; + +assign SYNTHESIZED_WIRE_49 = d[9] ^ decrement; + +assign address = address_ALTERA_SYNTHESIZED; + +endmodule diff --git a/cpu/bus/inc_dec_2bit.bdf b/cpu/bus/inc_dec_2bit.bdf new file mode 100644 index 0000000..f91e8c8 --- /dev/null +++ b/cpu/bus/inc_dec_2bit.bdf @@ -0,0 +1,378 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 24 80 200 96) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "carry_borrow_in" (rect 9 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 32 200 48) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "d1_in" (rect 9 0 34 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 200 200 216) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "d0_in" (rect 9 0 34 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 128 200 144) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "dec1_in" (rect 9 0 46 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 64 200 80) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "dec0_in" (rect 9 0 46 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 480 128 656 144) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "carry_borrow_out" (rect 90 0 174 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 480 64 656 80) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "d1_out" (rect 90 0 123 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 488 192 664 208) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "d0_out" (rect 90 0 123 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 400 48 464 96) + (text "XOR" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "xor2" (rect 3 37 24 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 11 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 11 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + (arc (pt 8 36)(pt 8 12)(rect -21 7 14 42)) + ) +) +(symbol + (rect 400 176 464 224) + (text "XOR" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "xor3" (rect 3 37 24 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 11 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 11 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + (arc (pt 8 36)(pt 8 12)(rect -21 7 14 42)) + ) +) +(symbol + (rect 400 112 464 160) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and3" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 280 56 344 104) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "and2" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(connector + (pt 480 72) + (pt 464 72) +) +(connector + (pt 400 64) + (pt 368 64) +) +(connector + (pt 400 80) + (pt 344 80) +) +(connector + (pt 368 40) + (pt 200 40) +) +(connector + (pt 368 64) + (pt 368 40) +) +(connector + (pt 464 136) + (pt 480 136) +) +(connector + (pt 200 136) + (pt 400 136) +) +(connector + (pt 464 200) + (pt 488 200) +) +(connector + (pt 200 208) + (pt 400 208) +) +(connector + (pt 400 128) + (pt 256 128) +) +(connector + (pt 256 72) + (pt 256 128) +) +(connector + (pt 200 72) + (pt 256 72) +) +(connector + (pt 256 72) + (pt 280 72) +) +(connector + (pt 232 144) + (pt 400 144) +) +(connector + (pt 232 192) + (pt 400 192) +) +(connector + (pt 232 88) + (pt 232 144) +) +(connector + (pt 232 144) + (pt 232 192) +) +(connector + (pt 200 88) + (pt 232 88) +) +(connector + (pt 232 88) + (pt 280 88) +) +(junction (pt 256 72)) +(junction (pt 232 144)) +(junction (pt 232 88)) +(title_block + (rect 24 256 281 308) + (name "title-custom-small") + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 3, 2014" (rect 56 3 125 17)(font "Arial" (font_size 8)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "inc_dec_2bit" (rect 43 2 129 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.0" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/bus/inc_dec_2bit.bsf b/cpu/bus/inc_dec_2bit.bsf new file mode 100644 index 0000000..f4616b9 --- /dev/null +++ b/cpu/bus/inc_dec_2bit.bsf @@ -0,0 +1,86 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2011 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 64 64 312 224) + (text "inc_dec_2bit" (rect 16 0 87 14)(font "Arial" (font_size 8))) + (text "inst" (rect 112 72 129 84)(font "Arial" )) + (port + (pt 0 24) + (input) + (text "carry_borrow_in" (rect 0 0 96 14)(font "Arial" (font_size 8))) + (text "carry_borrow_in" (rect 21 19 117 33)(font "Arial" (font_size 8))) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 104) + (input) + (text "d1_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "d1_in" (rect 21 99 51 113)(font "Arial" (font_size 8))) + (line (pt 0 104)(pt 16 104)) + ) + (port + (pt 0 40) + (input) + (text "d0_in" (rect 0 0 30 14)(font "Arial" (font_size 8))) + (text "d0_in" (rect 21 35 51 49)(font "Arial" (font_size 8))) + (line (pt 0 40)(pt 16 40)) + ) + (port + (pt 0 136) + (input) + (text "dec1_in" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "dec1_in" (rect 21 131 65 145)(font "Arial" (font_size 8))) + (line (pt 0 136)(pt 16 136)) + ) + (port + (pt 0 72) + (input) + (text "dec0_in" (rect 0 0 44 14)(font "Arial" (font_size 8))) + (text "dec0_in" (rect 21 67 65 81)(font "Arial" (font_size 8))) + (line (pt 0 72)(pt 16 72)) + ) + (port + (pt 248 128) + (output) + (text "carry_borrow_out" (rect -8 0 97 14)(font "Arial" (font_size 8))) + (text "carry_borrow_out" (rect 122 123 227 137)(font "Arial" (font_size 8))) + (line (pt 248 128)(pt 232 128)) + ) + (port + (pt 248 80) + (output) + (text "d1_out" (rect -8 0 30 14)(font "Arial" (font_size 8))) + (text "d1_out" (rect 189 75 227 89)(font "Arial" (font_size 8))) + (line (pt 248 80)(pt 232 80)) + ) + (port + (pt 248 56) + (output) + (text "d0_out" (rect -8 0 30 14)(font "Arial" (font_size 8))) + (text "d0_out" (rect 189 51 227 65)(font "Arial" (font_size 8))) + (line (pt 248 56)(pt 232 56)) + ) + (drawing + (rectangle (rect 16 16 240 152)) + ) + (fill (color 253 211 206)) +) diff --git a/cpu/bus/inc_dec_2bit.v b/cpu/bus/inc_dec_2bit.v new file mode 100644 index 0000000..4c3b985 --- /dev/null +++ b/cpu/bus/inc_dec_2bit.v @@ -0,0 +1,54 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Mon Oct 13 12:26:57 2014" + +module inc_dec_2bit( + carry_borrow_in, + d1_in, + d0_in, + dec1_in, + dec0_in, + carry_borrow_out, + d1_out, + d0_out +); + + +input wire carry_borrow_in; +input wire d1_in; +input wire d0_in; +input wire dec1_in; +input wire dec0_in; +output wire carry_borrow_out; +output wire d1_out; +output wire d0_out; + +wire SYNTHESIZED_WIRE_0; + + + + +assign SYNTHESIZED_WIRE_0 = dec0_in & carry_borrow_in; + +assign carry_borrow_out = dec0_in & dec1_in & carry_borrow_in; + +assign d1_out = d1_in ^ SYNTHESIZED_WIRE_0; + +assign d0_out = carry_borrow_in ^ d0_in; + + +endmodule diff --git a/cpu/bus/simulation/modelsim/r b/cpu/bus/simulation/modelsim/r new file mode 100644 index 0000000..6504afb --- /dev/null +++ b/cpu/bus/simulation/modelsim/r @@ -0,0 +1 @@ +restart -f ; run -all diff --git a/cpu/bus/simulation/modelsim/test_bus.mpf b/cpu/bus/simulation/modelsim/test_bus.mpf new file mode 100644 index 0000000..0999fac --- /dev/null +++ b/cpu/bus/simulation/modelsim/test_bus.mpf @@ -0,0 +1,511 @@ +; Copyright 1991-2009 Mentor Graphics Corporation +; +; All Rights Reserved. +; +; THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS THE PROPERTY OF +; MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS. +; + +[Library] +std = $MODEL_TECH/../std +ieee = $MODEL_TECH/../ieee +verilog = $MODEL_TECH/../verilog +vital2000 = $MODEL_TECH/../vital2000 +std_developerskit = $MODEL_TECH/../std_developerskit +synopsys = $MODEL_TECH/../synopsys +modelsim_lib = $MODEL_TECH/../modelsim_lib +sv_std = $MODEL_TECH/../sv_std + +; Altera Primitive libraries +; +; VHDL Section +; +altera_mf = $MODEL_TECH/../altera/vhdl/altera_mf +altera = $MODEL_TECH/../altera/vhdl/altera +altera_lnsim = $MODEL_TECH/../altera/vhdl/altera_lnsim +lpm = $MODEL_TECH/../altera/vhdl/220model +220model = $MODEL_TECH/../altera/vhdl/220model +max = $MODEL_TECH/../altera/vhdl/max +maxii = $MODEL_TECH/../altera/vhdl/maxii +maxv = $MODEL_TECH/../altera/vhdl/maxv +stratix = $MODEL_TECH/../altera/vhdl/stratix +stratixii = $MODEL_TECH/../altera/vhdl/stratixii +stratixiigx = $MODEL_TECH/../altera/vhdl/stratixiigx +hardcopyii = $MODEL_TECH/../altera/vhdl/hardcopyii +hardcopyiii = $MODEL_TECH/../altera/vhdl/hardcopyiii +hardcopyiv = $MODEL_TECH/../altera/vhdl/hardcopyiv +cyclone = $MODEL_TECH/../altera/vhdl/cyclone +cycloneii = $MODEL_TECH/../altera/vhdl/cycloneii +cycloneiii = $MODEL_TECH/../altera/vhdl/cycloneiii +cycloneiiils = $MODEL_TECH/../altera/vhdl/cycloneiiils +sgate = $MODEL_TECH/../altera/vhdl/sgate +stratixgx = $MODEL_TECH/../altera/vhdl/stratixgx +altgxb = $MODEL_TECH/../altera/vhdl/altgxb +stratixgx_gxb = $MODEL_TECH/../altera/vhdl/stratixgx_gxb +stratixiigx_hssi = $MODEL_TECH/../altera/vhdl/stratixiigx_hssi +arriagx_hssi = $MODEL_TECH/../altera/vhdl/arriagx_hssi +arriaii = $MODEL_TECH/../altera/vhdl/arriaii +arriaii_hssi = $MODEL_TECH/../altera/vhdl/arriaii_hssi +arriaii_pcie_hip = $MODEL_TECH/../altera/vhdl/arriaii_pcie_hip +arriaiigz = $MODEL_TECH/../altera/vhdl/arriaiigz +arriaiigz_hssi = $MODEL_TECH/../altera/vhdl/arriaiigz_hssi +arriaiigz_pcie_hip = $MODEL_TECH/../altera/vhdl/arriaiigz_pcie_hip +arriagx = $MODEL_TECH/../altera/vhdl/arriagx +altgxb_lib = $MODEL_TECH/../altera/vhdl/altgxb +stratixiv = $MODEL_TECH/../altera/vhdl/stratixiv +stratixiv_hssi = $MODEL_TECH/../altera/vhdl/stratixiv_hssi +stratixiv_pcie_hip = $MODEL_TECH/../altera/vhdl/stratixiv_pcie_hip +cycloneiv = $MODEL_TECH/../altera/vhdl/cycloneiv +cycloneiv_hssi = $MODEL_TECH/../altera/vhdl/cycloneiv_hssi +cycloneiv_pcie_hip = $MODEL_TECH/../altera/vhdl/cycloneiv_pcie_hip +cycloneive = $MODEL_TECH/../altera/vhdl/cycloneive +hardcopyiv_hssi = $MODEL_TECH/../altera/vhdl/hardcopyiv_hssi +hardcopyiv_pcie_hip = $MODEL_TECH/../altera/vhdl/hardcopyiv_pcie_hip +stratixv = $MODEL_TECH/../altera/vhdl/stratixv +stratixv_hssi = $MODEL_TECH/../altera/vhdl/stratixv_hssi +stratixv_pcie_hip = $MODEL_TECH/../altera/vhdl/stratixv_pcie_hip +arriavgz = $MODEL_TECH/../altera/vhdl/arriavgz +arriavgz_hssi = $MODEL_TECH/../altera/vhdl/arriavgz_hssi +arriavgz_pcie_hip = $MODEL_TECH/../altera/vhdl/arriavgz_pcie_hip +arriav = $MODEL_TECH/../altera/vhdl/arriav +cyclonev = $MODEL_TECH/../altera/vhdl/cyclonev +; +; Verilog Section +; +altera_mf_ver = $MODEL_TECH/../altera/verilog/altera_mf +altera_ver = $MODEL_TECH/../altera/verilog/altera +altera_lnsim_ver = $MODEL_TECH/../altera/verilog/altera_lnsim +lpm_ver = $MODEL_TECH/../altera/verilog/220model +220model_ver = $MODEL_TECH/../altera/verilog/220model +max_ver = $MODEL_TECH/../altera/verilog/max +maxii_ver = $MODEL_TECH/../altera/verilog/maxii +maxv_ver = $MODEL_TECH/../altera/verilog/maxv +stratix_ver = $MODEL_TECH/../altera/verilog/stratix +stratixii_ver = $MODEL_TECH/../altera/verilog/stratixii +stratixiigx_ver = $MODEL_TECH/../altera/verilog/stratixiigx +arriagx_ver = $MODEL_TECH/../altera/verilog/arriagx +hardcopyii_ver = $MODEL_TECH/../altera/verilog/hardcopyii +hardcopyiii_ver = $MODEL_TECH/../altera/verilog/hardcopyiii +hardcopyiv_ver = $MODEL_TECH/../altera/verilog/hardcopyiv +cyclone_ver = $MODEL_TECH/../altera/verilog/cyclone +cycloneii_ver = $MODEL_TECH/../altera/verilog/cycloneii +cycloneiii_ver = $MODEL_TECH/../altera/verilog/cycloneiii +cycloneiiils_ver = $MODEL_TECH/../altera/verilog/cycloneiiils +sgate_ver = $MODEL_TECH/../altera/verilog/sgate +stratixgx_ver = $MODEL_TECH/../altera/verilog/stratixgx +altgxb_ver = $MODEL_TECH/../altera/verilog/altgxb +stratixgx_gxb_ver = $MODEL_TECH/../altera/verilog/stratixgx_gxb +stratixiigx_hssi_ver = $MODEL_TECH/../altera/verilog/stratixiigx_hssi +arriagx_hssi_ver = $MODEL_TECH/../altera/verilog/arriagx_hssi +arriaii_ver = $MODEL_TECH/../altera/verilog/arriaii +arriaii_hssi_ver = $MODEL_TECH/../altera/verilog/arriaii_hssi +arriaii_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriaii_pcie_hip +arriaiigz_ver = $MODEL_TECH/../altera/verilog/arriaiigz +arriaiigz_hssi_ver = $MODEL_TECH/../altera/verilog/arriaiigz_hssi +arriaiigz_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriaiigz_pcie_hip +stratixiii_ver = $MODEL_TECH/../altera/verilog/stratixiii +stratixiii = $MODEL_TECH/../altera/vhdl/stratixiii +stratixiv_ver = $MODEL_TECH/../altera/verilog/stratixiv +stratixiv_hssi_ver = $MODEL_TECH/../altera/verilog/stratixiv_hssi +stratixiv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/stratixiv_pcie_hip +stratixv_ver = $MODEL_TECH/../altera/verilog/stratixv +stratixv_hssi_ver = $MODEL_TECH/../altera/verilog/stratixv_hssi +stratixv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/stratixv_pcie_hip +arriavgz_ver = $MODEL_TECH/../altera/verilog/arriavgz +arriavgz_hssi_ver = $MODEL_TECH/../altera/verilog/arriavgz_hssi +arriavgz_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriavgz_pcie_hip +arriav_ver = $MODEL_TECH/../altera/verilog/arriav +arriav_hssi_ver = $MODEL_TECH/../altera/verilog/arriav_hssi +arriav_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriav_pcie_hip +cyclonev_ver = $MODEL_TECH/../altera/verilog/cyclonev +cyclonev_hssi_ver = $MODEL_TECH/../altera/verilog/cyclonev_hssi +cyclonev_pcie_hip_ver = $MODEL_TECH/../altera/verilog/cyclonev_pcie_hip +cycloneiv_ver = $MODEL_TECH/../altera/verilog/cycloneiv +cycloneiv_hssi_ver = $MODEL_TECH/../altera/verilog/cycloneiv_hssi +cycloneiv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/cycloneiv_pcie_hip +cycloneive_ver = $MODEL_TECH/../altera/verilog/cycloneive +hardcopyiv_hssi_ver = $MODEL_TECH/../altera/verilog/hardcopyiv_hssi +hardcopyiv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/hardcopyiv_pcie_hip + +work = work +[vcom] +; VHDL93 variable selects language version as the default. +; Default is VHDL-2002. +; Value of 0 or 1987 for VHDL-1987. +; Value of 1 or 1993 for VHDL-1993. +; Default or value of 2 or 2002 for VHDL-2002. +; Default or value of 3 or 2008 for VHDL-2008. +VHDL93 = 2002 + +; Show source line containing error. Default is off. +; Show_source = 1 + +; Turn off unbound-component warnings. Default is on. +; Show_Warning1 = 0 + +; Turn off process-without-a-wait-statement warnings. Default is on. +; Show_Warning2 = 0 + +; Turn off null-range warnings. Default is on. +; Show_Warning3 = 0 + +; Turn off no-space-in-time-literal warnings. Default is on. +; Show_Warning4 = 0 + +; Turn off multiple-drivers-on-unresolved-signal warnings. Default is on. +; Show_Warning5 = 0 + +; Turn off optimization for IEEE std_logic_1164 package. Default is on. +; Optimize_1164 = 0 + +; Turn on resolving of ambiguous function overloading in favor of the +; "explicit" function declaration (not the one automatically created by +; the compiler for each type declaration). Default is off. +; The .ini file has Explicit enabled so that std_logic_signed/unsigned +; will match the behavior of synthesis tools. +Explicit = 1 + +; Turn off acceleration of the VITAL packages. Default is to accelerate. +; NoVital = 1 + +; Turn off VITAL compliance checking. Default is checking on. +; NoVitalCheck = 1 + +; Ignore VITAL compliance checking errors. Default is to not ignore. +; IgnoreVitalErrors = 1 + +; Turn off VITAL compliance checking warnings. Default is to show warnings. +; Show_VitalChecksWarnings = 0 + +; Keep silent about case statement static warnings. +; Default is to give a warning. +; NoCaseStaticError = 1 + +; Keep silent about warnings caused by aggregates that are not locally static. +; Default is to give a warning. +; NoOthersStaticError = 1 + +; Turn off inclusion of debugging info within design units. +; Default is to include debugging info. +; NoDebug = 1 + +; Turn off "Loading..." messages. Default is messages on. +; Quiet = 1 + +; Turn on some limited synthesis rule compliance checking. Checks only: +; -- signals used (read) by a process must be in the sensitivity list +; CheckSynthesis = 1 + +; Activate optimizations on expressions that do not involve signals, +; waits, or function/procedure/task invocations. Default is off. +; ScalarOpts = 1 + +; Require the user to specify a configuration for all bindings, +; and do not generate a compile time default binding for the +; component. This will result in an elaboration error of +; 'component not bound' if the user fails to do so. Avoids the rare +; issue of a false dependency upon the unused default binding. +; RequireConfigForAllDefaultBinding = 1 + +; Inhibit range checking on subscripts of arrays. Range checking on +; scalars defined with subtypes is inhibited by default. +; NoIndexCheck = 1 + +; Inhibit range checks on all (implicit and explicit) assignments to +; scalar objects defined with subtypes. +; NoRangeCheck = 1 + +[vlog] + +; Turn off inclusion of debugging info within design units. +; Default is to include debugging info. +; NoDebug = 1 + +; Turn off "loading..." messages. Default is messages on. +; Quiet = 1 + +; Turn on Verilog hazard checking (order-dependent accessing of global vars). +; Default is off. +; Hazard = 1 + +; Turn on converting regular Verilog identifiers to uppercase. Allows case +; insensitivity for module names. Default is no conversion. +; UpCase = 1 + +; Turn on incremental compilation of modules. Default is off. +; Incremental = 1 + +; Turns on lint-style checking. +; Show_Lint = 1 + +[vsim] +; Simulator resolution +; Set to fs, ps, ns, us, ms, or sec with optional prefix of 1, 10, or 100. +Resolution = ps + +; User time unit for run commands +; Set to default, fs, ps, ns, us, ms, or sec. The default is to use the +; unit specified for Resolution. For example, if Resolution is 100ps, +; then UserTimeUnit defaults to ps. +; Should generally be set to default. +UserTimeUnit = default + +; Default run length +RunLength = 1 us + +; Maximum iterations that can be run without advancing simulation time +IterationLimit = 5000 + +; Directive to license manager: +; vhdl Immediately reserve a VHDL license +; vlog Immediately reserve a Verilog license +; plus Immediately reserve a VHDL and Verilog license +; nomgc Do not look for Mentor Graphics Licenses +; nomti Do not look for Model Technology Licenses +; noqueue Do not wait in the license queue when a license isn't available +; viewsim Try for viewer license but accept simulator license(s) instead +; of queuing for viewer license +; License = plus + +; Stop the simulator after a VHDL/Verilog assertion message +; 0 = Note 1 = Warning 2 = Error 3 = Failure 4 = Fatal +BreakOnAssertion = 3 + +; Assertion Message Format +; %S - Severity Level +; %R - Report Message +; %T - Time of assertion +; %D - Delta +; %I - Instance or Region pathname (if available) +; %% - print '%' character +; AssertionFormat = "** %S: %R\n Time: %T Iteration: %D%I\n" + +; Assertion File - alternate file for storing VHDL/Verilog assertion messages +; AssertFile = assert.log + +; Default radix for all windows and commands... +; Set to symbolic, ascii, binary, octal, decimal, hex, unsigned +DefaultRadix = hexadecimal + +; VSIM Startup command +; Startup = do startup.do + +; File for saving command transcript +TranscriptFile = transcript + +; File for saving command history +; CommandHistory = cmdhist.log + +; Specify whether paths in simulator commands should be described +; in VHDL or Verilog format. +; For VHDL, PathSeparator = / +; For Verilog, PathSeparator = . +; Must not be the same character as DatasetSeparator. +PathSeparator = / + +; Specify the dataset separator for fully rooted contexts. +; The default is ':'. For example, sim:/top +; Must not be the same character as PathSeparator. +DatasetSeparator = : + +; Disable VHDL assertion messages +; IgnoreNote = 1 +; IgnoreWarning = 1 +; IgnoreError = 1 +; IgnoreFailure = 1 + +; Default force kind. May be freeze, drive, deposit, or default +; or in other terms, fixed, wired, or charged. +; A value of "default" will use the signal kind to determine the +; force kind, drive for resolved signals, freeze for unresolved signals +; DefaultForceKind = freeze + +; If zero, open files when elaborated; otherwise, open files on +; first read or write. Default is 0. +; DelayFileOpen = 1 + +; Control VHDL files opened for write. +; 0 = Buffered, 1 = Unbuffered +UnbufferedOutput = 0 + +; Control the number of VHDL files open concurrently. +; This number should always be less than the current ulimit +; setting for max file descriptors. +; 0 = unlimited +ConcurrentFileLimit = 40 + +; Control the number of hierarchical regions displayed as +; part of a signal name shown in the Wave window. +; A value of zero tells VSIM to display the full name. +; The default is 0. +; WaveSignalNameWidth = 0 + +; Turn off warnings from the std_logic_arith, std_logic_unsigned +; and std_logic_signed packages. +; StdArithNoWarnings = 1 + +; Turn off warnings from the IEEE numeric_std and numeric_bit packages. +; NumericStdNoWarnings = 1 + +; Control the format of the (VHDL) FOR generate statement label +; for each iteration. Do not quote it. +; The format string here must contain the conversion codes %s and %d, +; in that order, and no other conversion codes. The %s represents +; the generate_label; the %d represents the generate parameter value +; at a particular generate iteration (this is the position number if +; the generate parameter is of an enumeration type). Embedded whitespace +; is allowed (but discouraged); leading and trailing whitespace is ignored. +; Application of the format must result in a unique scope name over all +; such names in the design so that name lookup can function properly. +; GenerateFormat = %s__%d + +; Specify whether checkpoint files should be compressed. +; The default is 1 (compressed). +; CheckpointCompressMode = 0 + +; List of dynamically loaded objects for Verilog PLI applications +; Veriuser = veriuser.sl + +; Specify default options for the restart command. Options can be one +; or more of: -force -nobreakpoint -nolist -nolog -nowave +; DefaultRestartOptions = -force + +; HP-UX 10.20 ONLY - Enable memory locking to speed up large designs +; (> 500 megabyte memory footprint). Default is disabled. +; Specify number of megabytes to lock. +; LockedMemory = 1000 + +; Turn on (1) or off (0) WLF file compression. +; The default is 1 (compress WLF file). +; WLFCompress = 0 + +; Specify whether to save all design hierarchy (1) in the WLF file +; or only regions containing logged signals (0). +; The default is 0 (save only regions with logged signals). +; WLFSaveAllRegions = 1 + +; WLF file time limit. Limit WLF file by time, as closely as possible, +; to the specified amount of simulation time. When the limit is exceeded +; the earliest times get truncated from the file. +; If both time and size limits are specified the most restrictive is used. +; UserTimeUnits are used if time units are not specified. +; The default is 0 (no limit). Example: WLFTimeLimit = {100 ms} +; WLFTimeLimit = 0 + +; WLF file size limit. Limit WLF file size, as closely as possible, +; to the specified number of megabytes. If both time and size limits +; are specified then the most restrictive is used. +; The default is 0 (no limit). +; WLFSizeLimit = 1000 + +; Specify whether or not a WLF file should be deleted when the +; simulation ends. A value of 1 will cause the WLF file to be deleted. +; The default is 0 (do not delete WLF file when simulation ends). +; WLFDeleteOnQuit = 1 + +; Automatic SDF compilation +; Disables automatic compilation of SDF files in flows that support it. +; Default is on, uncomment to turn off. +; NoAutoSDFCompile = 1 + +[lmc] + +[msg_system] +; Change a message severity or suppress a message. +; The format is: = [,...] +; Examples: +; note = 3009 +; warning = 3033 +; error = 3010,3016 +; fatal = 3016,3033 +; suppress = 3009,3016,3043 +; The command verror can be used to get the complete +; description of a message. + +; Control transcripting of elaboration/runtime messages. +; The default is to have messages appear in the transcript and +; recorded in the wlf file (messages that are recorded in the +; wlf file can be viewed in the MsgViewer). The other settings +; are to send messages only to the transcript or only to the +; wlf file. The valid values are +; both {default} +; tran {transcript only} +; wlf {wlf file only} +; msgmode = both +[Project] +; Warning -- Do not edit the project properties directly. +; Property names are dynamic in nature and property +; values have special syntax. Changing property data directly +; can result in a corrupt MPF file. All project properties +; can be modified through project window dialogs. +Project_Version = 6 +Project_DefaultLib = work +Project_SortMethod = unused +Project_Files_Count = 8 +Project_File_0 = $ROOT/cpu/bus/address_latch.v +Project_File_P_0 = compile_order 0 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder {Top Level} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_1 = $ROOT/cpu/bus/address_mux.v +Project_File_P_1 = compile_order 7 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder {Top Level} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_2 = $ROOT/cpu/bus/address_pins.v +Project_File_P_2 = compile_order 5 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder {Top Level} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_3 = $ROOT/cpu/bus/data_pins.v +Project_File_P_3 = compile_order 6 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder {Top Level} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_4 = $ROOT/cpu/bus/inc_dec.v +Project_File_P_4 = compile_order 1 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder {Top Level} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_5 = $ROOT/cpu/bus/inc_dec_2bit.v +Project_File_P_5 = compile_order 3 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder {Top Level} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_6 = $ROOT/cpu/bus/test_bus.sv +Project_File_P_6 = compile_order 2 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder {Top Level} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_7 = $ROOT/cpu/bus/test_pins.sv +Project_File_P_7 = compile_order 4 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder {Top Level} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_Sim_Count = 2 +Project_Sim_0 = Test pins +Project_Sim_P_0 = timing default -t default -sdfnoerror 0 -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} +notimingchecks 0 ok 1 folder {Top Level} +pulse_e {} additional_dus work.test_pins -assertfile {} -std_output {} -L {} -nopsl 0 -nosva 0 +pulse_r {} -absentisempty 0 -assertcover 0 -multisource_delay {} OtherArgs {} -vital2.2b 0 is_vopt_flow 0 -memprof 0 -noglitch 0 -0in_options {} selected_du {} -sdf {} -hazards 0 -0in 0 vopt_env 1 -coverage 0 +plusarg {} -assertdebug 0 -wlf {} -sdfnowarn 0 -std_input {} +Project_Sim_1 = Test bus +Project_Sim_P_1 = timing default -t default -sdfnoerror 0 -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} +notimingchecks 0 ok 1 folder {Top Level} +pulse_e {} additional_dus work.test_bus -assertfile {} -std_output {} -L {} -nopsl 0 -nosva 0 +pulse_r {} -absentisempty 0 -assertcover 0 -multisource_delay {} OtherArgs {} -vital2.2b 0 is_vopt_flow 0 -memprof 0 -noglitch 0 -0in_options {} selected_du {} -sdf {} -hazards 0 -0in 0 vopt_env 1 -coverage 0 +plusarg {} -assertdebug 0 -wlf {} -sdfnowarn 0 -std_input {} +Project_Folder_Count = 0 +Echo_Compile_Output = 0 +Save_Compile_Report = 1 +Project_Opt_Count = 0 +ForceSoftPaths = 1 +ProjectStatusDelay = 5000 +VERILOG_DoubleClick = Edit +VERILOG_CustomDoubleClick = +SYSTEMVERILOG_DoubleClick = Edit +SYSTEMVERILOG_CustomDoubleClick = +VHDL_DoubleClick = Edit +VHDL_CustomDoubleClick = +PSL_DoubleClick = Edit +PSL_CustomDoubleClick = +TEXT_DoubleClick = Edit +TEXT_CustomDoubleClick = +SYSTEMC_DoubleClick = Edit +SYSTEMC_CustomDoubleClick = +TCL_DoubleClick = Edit +TCL_CustomDoubleClick = +MACRO_DoubleClick = Edit +MACRO_CustomDoubleClick = +VCD_DoubleClick = Edit +VCD_CustomDoubleClick = +SDF_DoubleClick = Edit +SDF_CustomDoubleClick = +XML_DoubleClick = Edit +XML_CustomDoubleClick = +LOGFILE_DoubleClick = Edit +LOGFILE_CustomDoubleClick = +UCDB_DoubleClick = Edit +UCDB_CustomDoubleClick = +UPF_DoubleClick = Edit +UPF_CustomDoubleClick = +PCF_DoubleClick = Edit +PCF_CustomDoubleClick = +PROJECT_DoubleClick = Edit +PROJECT_CustomDoubleClick = +VRM_DoubleClick = Edit +VRM_CustomDoubleClick = +DEBUGDATABASE_DoubleClick = Edit +DEBUGDATABASE_CustomDoubleClick = +DEBUGARCHIVE_DoubleClick = Edit +DEBUGARCHIVE_CustomDoubleClick = +Project_Major_Version = 10 +Project_Minor_Version = 1 diff --git a/cpu/bus/simulation/modelsim/wave_bus.do b/cpu/bus/simulation/modelsim/wave_bus.do new file mode 100644 index 0000000..ba771e0 --- /dev/null +++ b/cpu/bus/simulation/modelsim/wave_bus.do @@ -0,0 +1,34 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /test_bus/nreset +add wave -noupdate /test_bus/clk +add wave -noupdate /test_bus/abusw +add wave -noupdate /test_bus/abus +add wave -noupdate -color Gold /test_bus/address +add wave -noupdate /test_bus/ctl_al_we +add wave -noupdate /test_bus/ctl_bus_inc_oe +add wave -noupdate /test_bus/ctl_inc_dec +add wave -noupdate /test_bus/ctl_inc_limit6 +add wave -noupdate /test_bus/ctl_inc_cy +add wave -noupdate /test_bus/clrpc +add wave -noupdate /test_bus/address_is_1 +add wave -noupdate /test_bus/address_latch_/ctl_apin_mux +add wave -noupdate /test_bus/address_latch_/ctl_apin_mux2 +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {5500 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 141 +configure wave -valuecolwidth 62 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ns} {39500 ns} diff --git a/cpu/bus/simulation/modelsim/wave_pins.do b/cpu/bus/simulation/modelsim/wave_pins.do new file mode 100644 index 0000000..62b087a --- /dev/null +++ b/cpu/bus/simulation/modelsim/wave_pins.do @@ -0,0 +1,34 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /test_pins/clk +add wave -noupdate -divider apins +add wave -noupdate -color Gold -radix hexadecimal /test_pins/apin +add wave -noupdate -radix hexadecimal /test_pins/ab +add wave -noupdate /test_pins/ctl_ab_we +add wave -noupdate -divider dpins +add wave -noupdate -radix hexadecimal /test_pins/dpin +add wave -noupdate -color Gold -radix hexadecimal /test_pins/db +add wave -noupdate /test_pins/ctl_db_we +add wave -noupdate /test_pins/ctl_db_pin_re +add wave -noupdate /test_pins/ctl_db_pin_oe +add wave -noupdate /test_pins/ctl_db_oe +add wave -noupdate -radix hexadecimal /test_pins/db_w +add wave -noupdate -radix hexadecimal /test_pins/dpin_w +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {19000 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 138 +configure wave -valuecolwidth 54 +configure wave -justifyvalue right +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits us +update +WaveRestoreZoom {0 ns} {57700 ns} diff --git a/cpu/bus/test_bus.qpf b/cpu/bus/test_bus.qpf new file mode 100644 index 0000000..d73603f --- /dev/null +++ b/cpu/bus/test_bus.qpf @@ -0,0 +1,30 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition +# Date created = 09:15:26 October 13, 2014 +# +# -------------------------------------------------------------------------- # + +QUARTUS_VERSION = "13.0" +DATE = "09:15:26 October 13, 2014" + +# Revisions + +PROJECT_REVISION = "test_bus" diff --git a/cpu/bus/test_bus.qsf b/cpu/bus/test_bus.qsf new file mode 100644 index 0000000..e18927a --- /dev/null +++ b/cpu/bus/test_bus.qsf @@ -0,0 +1,77 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition +# Date created = 09:15:26 October 13, 2014 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# test_bus_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus II software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + +set_global_assignment -name FAMILY "Cyclone II" +set_global_assignment -name DEVICE EP2C20F484C7 +set_global_assignment -name TOP_LEVEL_ENTITY control_pins_n +set_global_assignment -name ORIGINAL_QUARTUS_VERSION "13.0 SP1" +set_global_assignment -name PROJECT_CREATION_TIME_DATE "09:15:26 OCTOBER 13, 2014" +set_global_assignment -name LAST_QUARTUS_VERSION "13.0 SP1" +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1 +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS ON +set_global_assignment -name SMART_RECOMPILE ON +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS ON +set_global_assignment -name OPTIMIZE_POWER_DURING_SYNTHESIS OFF +set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" +set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" +set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2005 +set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF +set_global_assignment -name USE_CONFIGURATION_DEVICE ON +set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED WITH WEAK PULL-UP" +set_global_assignment -name TIMEQUEST_DO_REPORT_TIMING ON +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL ON +set_global_assignment -name BSF_FILE address_mux.bsf +set_global_assignment -name BSF_FILE inc_dec_2bit.bsf +set_global_assignment -name BDF_FILE inc_dec_2bit.bdf +set_global_assignment -name BDF_FILE inc_dec.bdf +set_global_assignment -name BDF_FILE data_switch_mask.bdf +set_global_assignment -name BDF_FILE data_switch.bdf +set_global_assignment -name BDF_FILE data_pins.bdf +set_global_assignment -name BDF_FILE control_pins_n.bdf +set_global_assignment -name BDF_FILE bus_control.bdf +set_global_assignment -name BDF_FILE address_pins.bdf +set_global_assignment -name BDF_FILE address_latch.bdf +set_global_assignment -name BDF_FILE address_mux.bdf +set_global_assignment -name VERILOG_FILE bus_switch.v +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/cpu/bus/test_bus.sv b/cpu/bus/test_bus.sv new file mode 100644 index 0000000..8e45c9d --- /dev/null +++ b/cpu/bus/test_bus.sv @@ -0,0 +1,109 @@ +//============================================================== +// Test address latch and increment block +//============================================================== +`timescale 1us/ 100 ns + +module test_bus; + +// ----------------- CLOCKS AND RESET ----------------- +// Define one full T-clock cycle delay +`define T #2 +bit clk = 1; +initial repeat (26) #1 clk = ~clk; +reg nreset; + +// ---------------------------------------------------- +// Bi-directional bus that can also be tri-stated +reg [15:0] abusw; // Drive it using this bus +wire [15:0] abus; // Read it using this bus +wire [15:0] address; // Final address ouput + +// ----------------- INPUT CONTROL ----------------- +reg ctl_al_we; // Write enable to address latch +reg ctl_bus_inc_oe; // Write incrementer onto the internal data bus +reg ctl_apin_mux; // Selects mux1 +reg ctl_apin_mux2; // Selects mux2 + +// ----------------- INC/DEC ----------------- +reg ctl_inc_dec; // Perform decrement (1) or increment (0) +reg ctl_inc_limit6; // Limit increment to 6 bits (for incrementing IR) +reg ctl_inc_cy; // Address increment, carry in value (+/-1 or 0) +reg clrpc; // Force zero (to clear PC/IR) + +// ----------------- OUTPUT/STATUS ----------------- +wire address_is_1; // Signals when the final address is 1 + +// ----------------- TEST ------------------- +`define CHECK(arg) \ + assert(address==arg); + +initial begin + nreset = 0; + abusw = 'z; + ctl_al_we = 0; + ctl_bus_inc_oe = 0; + ctl_inc_dec = 0; + ctl_inc_limit6 = 0; + ctl_inc_cy = 0; + clrpc = 0; + ctl_apin_mux = 0; + ctl_apin_mux2 = 0; + + //------------------------------------------------------------ + `T nreset = 1; + + //------------------------------------------------------------ + // Perform a simple increment and decrement + `T abusw = 16'h1234; + ctl_al_we = 1; // Write value to the latch + ctl_apin_mux = 1; // Output incrementer to the address bus + ctl_inc_cy = 1; // +1 show "1235" + `T `CHECK(16'h1235); + ctl_inc_dec = 1; // -1 show "1233" + `T `CHECK(16'h1233); + // ...through overflow + abusw = 16'hffff; + ctl_inc_dec = 0; + ctl_inc_cy = 1; // +1 show "0" + `T `CHECK(16'h0000); + ctl_inc_dec = 1; // -1 show "FFFE" + `T `CHECK(16'hFFFE); + abusw = 16'h0; + ctl_inc_dec = 0; + ctl_inc_cy = 1; // +1 show "1" + `T `CHECK(16'h0001); + ctl_inc_dec = 1; // -1 show "FFFF" + `T `CHECK(16'hFFFF); + ctl_inc_cy = 0; // show "0000" + `T `CHECK(16'h0000); + ctl_inc_dec = 0; // show "0000" + + //------------------------------------------------------------ + // Test the address latch and the mux + `T abusw = 16'hAA50; + ctl_al_we = 1; // Write AA55 to the latch + ctl_inc_cy = 1; + `T ctl_al_we = 0; // show "AA51" + `T `CHECK(16'hAA51); + ctl_apin_mux = 0; + ctl_apin_mux2 = 1; + + //------------------------------------------------------------ + // Test the tri-state db + `T abusw = 'z; + ctl_bus_inc_oe = 1; // Output latched value (AA50) + `T `CHECK(16'hAA50); + + `T $display("End of test"); +end + +// Drive 3-state bidirectional bus with these statements +assign abus = abusw; + +//-------------------------------------------------------------- +// Instantiate address latch block +//-------------------------------------------------------------- + +address_latch address_latch_( .* ); + +endmodule diff --git a/cpu/bus/test_pins.sv b/cpu/bus/test_pins.sv new file mode 100644 index 0000000..380cb46 --- /dev/null +++ b/cpu/bus/test_pins.sv @@ -0,0 +1,105 @@ +//============================================================== +// Test address and data pins blocks +//============================================================== +`timescale 1us/ 100 ns + +module test_pins; + +// ----------------- CLOCKS AND RESET ----------------- +// Define one full T-clock cycle delay +`define T #2 +bit clk = 1; +initial repeat (24) #1 clk = ~clk; + +// ------------------------ ADDRESS PINS --------------------- +logic [15:0] ab; // Internal address bus +logic ctl_ab_we; // Write enable to address pin latch +logic pin_control_oe; // Output enable to address pins; otherwise tri-stated +wire [15:0] apin; // Output address bus to address pins + +// ------------------------ DATA PINS ------------------------ +logic ctl_db_we; // Write enable to data pin output latch +logic ctl_db_oe; // Output enable to internal data bus +logic ctl_db_pin_re; // Read from the data pin into the latch +logic ctl_db_pin_oe; // Output enable to data pins; otherwise tri-stated +logic ctl_pin_oe; + +// ---------------------------------------------------- +// Bidirectional internal data bus +logic [7:0] db_w; // Drive it using this bus +wire [7:0] db; // Read it using this bus +assign db = db_w; // Drive 3-state bidirectional bus +always_comb // Output to pin bus only when our +begin // test is not driving it + if (db_w==='z) + ctl_db_oe = 1; + else + ctl_db_oe = 0; +end + +// ---------------------------------------------------- +// Bidirectional external data pins +logic [7:0] dpin_w; // Drive it using this bus +wire [7:0] dpin; // Read it using this bus +assign dpin = dpin_w; // Drive 3-state bidirectional +always_comb // Output to pin bus only when our +begin // test is not driving it + if (dpin_w==='z) + ctl_db_pin_oe = 1; + else + ctl_db_pin_oe = 0; +end + +// ----------------- TEST ------------------- +`define CHECKA(arg) \ + assert(apin===arg); + +`define CHECKD(arg) \ + assert(dpin===arg); + +initial begin + ab = 16'h0; + ctl_ab_we = 0; + pin_control_oe = 0; + db_w = 'z; + dpin_w = 'z; + ctl_db_we = 0; + + //------------------------------------------------------------ + // Test the address pin logic + `T ab = 16'hAA55; // Latch a value and output it + ctl_ab_we = 1; + pin_control_oe = 1; + `T ctl_ab_we = 0; + `T `CHECKA(16'hAA55); + pin_control_oe = 0; + ab = 16'h1234; // Should not affect + `T pin_control_oe = 1; // Toggle output on and off + `T `CHECKA(16'hAA55); + pin_control_oe = 0; + `T `CHECKA(16'hz); + + //------------------------------------------------------------ + // Test the data pin logic + `T dpin_w = 8'hAA; // Load and latch a value + ctl_db_pin_re = 1; // Read into the latch + + `T dpin_w = 'z; + db_w = 8'h55; + ctl_db_pin_re = 0; + ctl_db_we = 1; + `CHECKD(8'hAA); + `T db_w = 'z; + + `T $display("End of test"); +end + +//-------------------------------------------------------------- +// Instantiate bus block and assign identical nets and variables +//-------------------------------------------------------------- + +address_pins address_pins_inst( .*, .bus_ab_pin_we(ctl_ab_we), .address(ab[15:0]), .abus(apin[15:0]) ); + +data_pins data_pins_inst( .*, .ctl_bus_db_oe(ctl_db_pin_oe), .ctl_bus_db_we(ctl_db_we), .bus_db_pin_oe(ctl_db_pin_oe), .bus_db_pin_re(ctl_db_pin_re), .D(dpin[7:0]) ); + +endmodule diff --git a/cpu/control/Timings.csv b/cpu/control/Timings.csv new file mode 100644 index 0000000..c4af841 --- /dev/null +++ b/cpu/control/Timings.csv @@ -0,0 +1,1172 @@ +A-Z80 Timing Table M_ T_ Function valid nextM setM1 A:reg rd A:reg wr inc/dec A:latch D:reg rd D:reg wr Reg gate SW2 SW1 DB pads FLAGT ALU ALU bus op2 latch op1 latch nibble operation SZ XY HF PF NF CF CF2 Special Comments + +// 8-bit Load Group + +"#if pla[17] & ~pla[50] : ld r,n" "4,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch r8 < d < R +#002H T2 AB:000 DB:46 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead PC W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead Y +#end + +"#if pla[61] & ~pla[58] & ~pla[59] : ld r,r'" 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch r8 < u < op1 +#002H T2 AB:000 DB:05 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y r8 >r8 - >s0 bus +#end + +"#if use_ixiy & pla[58] : ld r,(ix+d)" "4,3,5,3" +#005H T1 AB:001 DB:-- M1 1 1 fMFetch r8 < d < R +#006H T2 AB:001 DB:4E M1 MREQ RD 1 2 fMFetch +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#009H T5 AB:002 DB:-- 2 1 fMRead PC W +#010H T6 AB:002 DB:01 MREQ RD 2 2 fMRead PC + R +#011H T7 AB:002 DB:01 MREQ RD 2 3 fMRead Y +#012H T8 AB:002 DB:-- 3 1 WZ=IX+d +#013H T9 AB:002 DB:-- 3 2 WZ=IX+d +#014H T10 AB:002 DB:-- 3 3 WZ=IX+d +#015H T11 AB:002 DB:-- 3 4 WZ=IX+d +#016H T12 AB:002 DB:-- 3 5 mr WZ=IX+d Clears the IX/IY and ... +#end + +"#if ~use_ixiy & pla[58] : ld r,(hl)" "4,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch r8 < d < R +#002H T2 AB:000 DB:46 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:003 DB:-- 2 1 fMRead HL W +#006H T6 AB:003 DB:03 MREQ RD 2 2 fMRead +#007H T7 AB:003 DB:03 MREQ RD 2 3 fMRead Y + +#017H T13 AB:001 DB:-- 4 1 fMRead R ...continues here +#018H T14 AB:001 DB:4E MREQ RD 4 2 fMRead +#019H T15 AB:001 DB:4E MREQ RD 4 3 fMRead Y +#end + +"#if use_ixiy & pla[59] : ld (ix+d),r" "4,3,5,3" +#005H T1 AB:001 DB:-- M1 1 1 fMFetch +#006H T2 AB:001 DB:70 M1 MREQ RD 1 2 fMFetch +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#009H T5 AB:002 DB:-- 2 1 fMRead PC W +#010H T6 AB:002 DB:01 MREQ RD 2 2 fMRead PC + R +#011H T7 AB:002 DB:01 MREQ RD 2 3 fMRead Y +#012H T8 AB:002 DB:-- 3 1 WZ=IX+d +#013H T9 AB:002 DB:-- 3 2 WZ=IX+d +#014H T10 AB:002 DB:-- 3 3 WZ=IX+d +#015H T11 AB:002 DB:-- 3 4 WZ=IX+d +#016H T12 AB:002 DB:-- 3 5 mw WZ=IX+d Clears the IX/IY and ... +#end + +"#if ~use_ixiy & pla[59] : ld (hl),r" "4,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:70 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mw r8 >r8 - > W +#005H T5 AB:001 DB:-- 2 1 fMWrite HL W +#006H T6 AB:001 DB:01 MREQ 2 2 fMWrite +#007H T7 AB:001 DB:01 MREQ WR 2 3 fMWrite Y + +#017H T13 AB:000 DB:-- 4 1 fMWrite R r8 >r8 - > W ...continues here +#018H T14 AB:000 DB:46 MREQ 4 2 fMWrite +#019H T15 AB:000 DB:46 MREQ WR 4 3 fMWrite Y +#end + +"#if pla[40] : ld (ix+d),n" "4,3,5,3" +#005H T1 AB:001 DB:-- M1 1 1 fMFetch +#006H T2 AB:001 DB:36 M1 MREQ RD 1 2 fMFetch +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#009H T5 AB:002 DB:-- 2 1 fMRead PC W +#010H T6 AB:002 DB:01 MREQ RD 2 2 fMRead PC + R +#011H T7 AB:002 DB:01 MREQ RD 2 3 fMRead mr +#012H T8 AB:003 DB:-- 3 1 fMRead PC W WZ=IX+d +#013H T9 AB:003 DB:02 MREQ RD 3 2 fMRead PC + R WZ=IX+d +#014H T10 AB:003 DB:02 MREQ RD 3 3 fMRead WZ=IX+d "Reads ""n"" at the same time" +#015H T11 AB:003 DB:-- 3 4 WZ=IX+d +#016H T12 AB:003 DB:-- 3 5 mw WZ=IX+d Clears the IX/IY and ... +#end + +"#if pla[50] & ~pla[40] : ld (hl),n" "4,3,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:36 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead PC W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead mw +#008H T8 AB:001 DB:-- 3 1 fMWrite HL W +#009H T9 AB:001 DB:01 MREQ 3 2 fMWrite +#010H T10 AB:001 DB:01 MREQ WR 3 3 fMWrite Y + +#017H T13 AB:002 DB:-- 4 1 fMWrite R ...continues here +#018H T14 AB:002 DB:02 MREQ 4 2 fMWrite +#019H T15 AB:002 DB:02 MREQ WR 4 3 fMWrite Y +#end + +"#if pla[8] & pla[13] : ld (rr),a" "4,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:02 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mw A >h u > W +#005H T5 AB:001 DB:-- 2 1 fMWrite r16 W +#006H T6 AB:001 DB:FF MREQ 2 2 fMWrite WZ + R +#007H T7 AB:001 DB:FF MREQ WR 2 3 fMWrite Y +#end + +"#if pla[8] & ~pla[13] : ld a,(rr)" "4,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch A < d < R +#002H T2 AB:000 DB:0A M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:002 DB:-- 2 1 fMRead r16 W +#006H T6 AB:002 DB:02 MREQ RD 2 2 fMRead WZ + R +#007H T7 AB:002 DB:02 MREQ RD 2 3 fMRead Y +#end + +"#if pla[38] & pla[13] : ld (nn),a" "4,3,3,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:32 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead PC W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead mr Z h u > W +#012H T12 AB:001 DB:FE MREQ 4 2 fMWrite WZ + R +#013H T13 AB:001 DB:FE MREQ WR 4 3 fMWrite Y +#end + +"#if pla[38] & ~pla[13] : ld a,(nn)" "4,3,3,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch A < d < R +#002H T2 AB:000 DB:3A M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead PC W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead mr Z > >s0 bus bus * * * * * * +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y I/R >r8' - alu >s0 bus bus L OR * * * 0 +#009H T5 AB:001 DB:-- 1 5 Y +#end + +"#if pla[57] : ld i,a/r,a" 5 +#005H T1 AB:001 DB:-- M1 1 1 fMFetch +#006H T2 AB:001 DB:47 M1 MREQ RD 1 2 fMFetch +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y I/R < u < op1 +#009H T5 AB:001 DB:-- 1 5 Y +#end + +// 16-bit Load Group + +"#if pla[7] : ld rr,nn" "4,3,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch rh < d < R USE_SP +#002H T2 AB:000 DB:01 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead PC W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead mr +#008H T8 AB:002 DB:-- 3 1 fMRead PC W rl < d < R USE_SP +#009H T9 AB:002 DB:02 MREQ RD 3 2 fMRead PC + R +#010H T10 AB:002 DB:02 MREQ RD 3 3 fMRead Y +#end + +"#if pla[30] & pla[13] : ld (nn),hl" "4,3,3,3,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:22 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead PC W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead mr Z l > W +#012H T12 AB:001 DB:01 MREQ 4 2 fMWrite WZ + R +#013H T13 AB:001 DB:01 MREQ WR 4 3 fMWrite mw WZ W +#014H T14 AB:002 DB:-- 5 1 fMWrite R rh >h u > W +#015H T15 AB:002 DB:02 MREQ 5 2 fMWrite WZ + R +#016H T16 AB:002 DB:02 MREQ WR 5 3 fMWrite Y +#end + +"#if pla[30] & ~pla[13] : ld hl,(nn)" "4,3,3,3,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:2A M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead PC W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead mr Z l > W USE_SP +#016H T12 AB:001 DB:FF MREQ 4 2 fMWrite WZ + R +#017H T13 AB:001 DB:FF MREQ WR 4 3 fMWrite mw WZ W +#018H T14 AB:002 DB:-- 5 1 fMWrite R rh >h u > W USE_SP +#019H T15 AB:002 DB:C3 MREQ 5 2 fMWrite WZ + R +#020H T16 AB:002 DB:C3 MREQ WR 5 3 fMWrite Y +#end + +"#if pla[31] & ~pla[33] : ld rr,(nn)" "4,3,3,3,3" +#005H T1 AB:001 DB:-- M1 1 1 fMFetch +#006H T2 AB:001 DB:43 M1 MREQ RD 1 2 fMFetch +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#009H T5 AB:002 DB:-- 2 1 fMRead PC W +#010H T6 AB:002 DB:01 MREQ RD 2 2 fMRead PC + R +#011H T7 AB:002 DB:01 MREQ RD 2 3 fMRead mr Z h u > W +#007H T7 AB:002 DB:02 MREQ 2 2 fMWrite SP - R +#008H T8 AB:002 DB:02 MREQ WR 2 3 fMWrite mw SP - W +#009H T9 AB:001 DB:-- 3 1 fMWrite - P rl >l > W +#010H T10 AB:001 DB:01 MREQ 3 2 fMWrite SP - R +#011H T11 AB:001 DB:01 MREQ WR 3 3 fMWrite Y +#end + +#if pla[23] & ~pla[16] : pop qq "4,3,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:C1 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead SP W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead SP + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead mr rl < d < R +#008H T8 AB:002 DB:-- 3 1 fMRead SP W +#009H T9 AB:002 DB:02 MREQ RD 3 2 fMRead SP + R +#010H T10 AB:002 DB:02 MREQ RD 3 3 fMRead Y rh < d < R +#end + +"// Exchange, Block Transfer and Search Groups" + +"#if pla[2] : ex de,hl" 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:EB M1 MREQ RD 1 2 fMFetch Ex_DE_HL +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y +#end + +"#if pla[39] : ex af,af'" 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:08 M1 MREQ RD 1 2 fMFetch Ex_AF_AF' +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y +#end + +#if pla[1] : exx 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:D9 M1 MREQ RD 1 2 fMFetch EXX +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y +#end + +"#if pla[10] : ex (sp),hl" "4,3,4,3,5" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:E3 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:0FD DB:-- 2 1 fMRead SP W +#006H T6 AB:0FD DB:03 MREQ RD 2 2 fMRead SP + R +#007H T7 AB:0FD DB:03 MREQ RD 2 3 fMRead mr Z h u > W +#013H T13 AB:0FE DB:00 MREQ 4 2 fMWrite SP - R +#014H T14 AB:0FE DB:00 MREQ WR 4 3 fMWrite mw SP - W +#015H T15 AB:0FD DB:-- 5 1 fMWrite - P rl >l > W +#016H T16 AB:0FD DB:01 MREQ 5 2 fMWrite SP - R +#017H T17 AB:0FD DB:01 MREQ WR 5 3 fMWrite WZ W +#018H T18 AB:0FD DB:01 5 4 HL R +#019H T19 AB:0FD DB:01 5 5 Y +#end + +#if pla[0] : Non-repeating version of a block instruction "4,3,5,(5)" +#always NonRep +#end + +#if pla[12] : ldi/ldir/ldd/lddr "4,3,5,(5)" +#035H T1 AB:00A DB:-- M1 1 1 fMFetch alu res H OR * * REP 0 R +#036H T2 AB:00A DB:B0 M1 MREQ RD 1 2 fMFetch F < < +#037H T3 AB:004 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#038H T4 AB:004 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#039H T5 AB:000 DB:-- 2 1 fMRead HL W +#040H T6 AB:000 DB:21 MREQ RD 2 2 fMRead HL op3 R +#041H T7 AB:000 DB:21 MREQ RD 2 3 fMRead mw d < R alu >s0 bus L ADD * W +#042H T8 AB:000 DB:-- 3 1 fMWrite DE W alu < res H ADD R +#043H T9 AB:000 DB:21 MREQ 3 2 fMWrite DE op3 R +#044H T10 AB:000 DB:21 MREQ WR 3 3 fMWrite BC W +#045H T11 AB:000 DB:21 3 4 BC - R WriteBC=1 Update repeat flag latch +#046H T12 AB:000 DB:21 3 5 Y BR +#047H T13 AB:000 DB:-- 4 1 PC W +#048H T14 AB:000 DB:-- 4 2 PC - R +#049H T15 AB:000 DB:-- 4 3 PC W +#050H T16 AB:000 DB:-- 4 4 PC - R +#051H T17 AB:000 DB:-- 4 5 Y +#end + +#if pla[11] : cpi/cpir/cpd/cpdr "4,3,5,(5)" +#035H T1 AB:00A DB:-- M1 1 1 fMFetch alu < res 0 H SUB * REP 1 R +#036H T2 AB:00A DB:B1 M1 MREQ RD 1 2 fMFetch F < < ?NF_HF +#037H T3 AB:004 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#038H T4 AB:004 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#039H T5 AB:000 DB:-- 2 1 fMRead HL W +#040H T6 AB:000 DB:21 MREQ RD 2 2 fMRead HL op3 R +#041H T7 AB:000 DB:21 MREQ RD 2 3 fMRead Y d < R alu >s0 bus L SUB * W +#042H T8 AB:000 DB:-- 3 1 alu < res H SUB * R +#043H T9 AB:000 DB:-- 3 2 +#044H T10 AB:000 DB:-- 3 3 BC W +#045H T11 AB:000 DB:-- 3 4 BC - R WriteBC=1 Update repeat flag latch +#046H T12 AB:000 DB:-- 3 5 Y BRZ +#047H T13 AB:000 DB:-- 4 1 PC W +#048H T14 AB:000 DB:-- 4 2 PC - R +#049H T15 AB:000 DB:-- 4 3 PC W +#050H T16 AB:000 DB:-- 4 4 PC - R +#051H T17 AB:000 DB:-- 4 5 Y +#end + +// 8-bit Arithmetic and Logic Group + +"#if pla[65] & ~pla[52] : add/sub/and/or/xor/cmp a,r" 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch ? < u alu < res H PLA * ? ? ? * A is stored in each ALU PLA below +#002H T2 AB:000 DB:80 M1 MREQ RD 1 2 fMFetch F < < PLA ?NF_HF_CF "If (NF), complement HF, CF" +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y r8 >r8 - alu >s0 bus L PLA * * * ? +#end + +"#if pla[64] : add/sub/and/or/xor/cmp a,n" "4,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch ? < u alu < res H PLA * ? ? ? * A is stored in each ALU PLA below +#002H T2 AB:000 DB:C6 M1 MREQ RD 1 2 fMFetch F < < PLA ?NF_HF_CF "If (NF), complement HF, CF" +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr r8 >r8 - alu >s0 bus L PLA * * * ? +#005H T5 AB:001 DB:-- 2 1 fMRead PC W PLA +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead Y d < R alu >s0 bus L PLA * * * ? +#end + +#if use_ixiy & pla[52] : add/sub/and/or/xor/cp (ix+d) "4,3,5,3" +#005H T1 AB:001 DB:-- M1 1 1 fMFetch +#006H T2 AB:001 DB:86 M1 MREQ RD 1 2 fMFetch +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#009H T5 AB:002 DB:-- 2 1 fMRead PC W +#010H T6 AB:002 DB:01 MREQ RD 2 2 fMRead PC + R +#011H T7 AB:002 DB:01 MREQ RD 2 3 fMRead Y +#012H T8 AB:002 DB:-- 3 1 WZ=IX+d +#013H T9 AB:002 DB:-- 3 2 WZ=IX+d +#014H T10 AB:002 DB:-- 3 3 WZ=IX+d "Reads ""n"" at the same time" +#015H T11 AB:002 DB:-- 3 4 WZ=IX+d +#016H T12 AB:002 DB:-- 3 5 mr WZ=IX+d Clears the IX/IY and ... +#end + +#if ~use_ixiy & pla[52] : add/sub/and/or/xor/cp (hl) "4,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch ? < u alu < res H PLA * ? ? ? * A is stored in each ALU PLA below +#002H T2 AB:000 DB:86 M1 MREQ RD 1 2 fMFetch F < < PLA ?NF_HF_CF "If (NF), complement HF, CF" +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead HL W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead WZ + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead Y d < R alu >s0 bus L PLA * * * ? + +#017H T13 AB:000 DB:-- 4 1 fMRead R ...continues here +#018H T14 AB:000 DB:DD MREQ RD 4 2 fMRead AF > > >s0 bus bus * * * * * Reloads AF since (IX+d) used ALU core +#019H T15 AB:000 DB:DD MREQ RD 4 3 fMRead Y d < R alu >s0 bus L PLA * * * ? +#end + +#if pla[66] & ~pla[53] : inc/dec r 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch r8 < u alu < res H ADC * * V R +#002H T2 AB:000 DB:05 M1 MREQ RD 1 2 fMFetch F < < ?NF_HF "If (NF), complement HF" +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y r8' >r8' - alu >s0 0 bus L ADC * * * 0 1 W +#end + +#if pla[75] : dec +#001H T1 AB:000 DB:-- M1 1 1 fMFetch 1 0 NEG_OP2 +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch 1 0 NEG_OP2 +#end + +#if (M2 | M4) & pla[75] : dec +#always 1 0 NEG_OP2 +#end + +#if use_ixiy & pla[53] : inc/dec (ix+d) "4,3,5,4,3" +#005H T1 AB:001 DB:-- M1 1 1 fMFetch +#006H T2 AB:001 DB:34 M1 MREQ RD 1 2 fMFetch +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#009H T5 AB:002 DB:-- 2 1 fMRead PC W +#010H T6 AB:002 DB:01 MREQ RD 2 2 fMRead PC + R +#011H T7 AB:002 DB:01 MREQ RD 2 3 fMRead Y +#012H T8 AB:002 DB:-- 3 1 WZ=IX+d +#013H T9 AB:002 DB:-- 3 2 WZ=IX+d +#014H T10 AB:002 DB:-- 3 3 WZ=IX+d +#015H T11 AB:002 DB:-- 3 4 WZ=IX+d +#016H T12 AB:002 DB:-- 3 5 mr WZ=IX+d Clears the IX/IY and ... +#end + +#if ~use_ixiy & pla[53] : inc/dec (hl) "4,4,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:34 M1 MREQ RD 1 2 fMFetch F < < ?NF_HF "If (NF), complement HF" +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead HL W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead d < R alu >s0 0 bus L ADC * 0 1 W +#008H T8 AB:001 DB:-- 2 4 mw u > W alu < res H ADC * * V R +#009H T9 AB:001 DB:-- 3 1 fMWrite R +#010H T10 AB:001 DB:02 MREQ 3 2 fMWrite +#011H T11 AB:001 DB:02 MREQ WR 3 3 fMWrite Y + +#017H T13 AB:002 DB:-- 4 1 fMRead R ...continues here +#018H T14 AB:002 DB:01 MREQ RD 4 2 fMRead +#019H T15 AB:002 DB:01 MREQ RD 4 3 fMRead d < R alu >s0 0 bus L ADC * 0 1 W +#020H T16 AB:002 DB:-- 4 4 mw u > W alu < res H ADC * * V R +#021H T17 AB:002 DB:-- 5 1 fMWrite R +#022H T18 AB:002 DB:02 MREQ 5 2 fMWrite +#023H T19 AB:002 DB:02 MREQ WR 5 3 fMWrite Y +#end + +// 16-bit Arithmetic Group + +"#if pla[69] : add hl,ss" "4,4,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:09 M1 MREQ RD 1 2 fMFetch F < < +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * 0 * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y L >l d >s0 bus +#005H T5 AB:000 DB:-- 2 1 rl >l d alu >s0 bus L ADD * USE_SP +#006H T6 AB:000 DB:-- 2 2 Z >s0 bus +#008H T8 AB:000 DB:-- 2 4 Y rh > alu >s0 bus L ADC * USE_SP +#009H T9 AB:000 DB:-- 3 1 WZ W W > >s0 bus bus * * * * 0 * +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y Y L >l d >s0 bus +#009H T5 AB:001 DB:-- 2 1 rl >l d alu >s0 bus L ADC * USE_SP +#010H T6 AB:001 DB:-- 2 2 Z >s0 bus +#012H T8 AB:001 DB:-- 2 4 Y rh > alu >s0 bus L ADC * USE_SP +#013H T9 AB:001 DB:-- 3 1 WZ W W > >s0 bus bus * * * * 1 * +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y Y L >l d >s0 bus +#009H T5 AB:001 DB:-- 2 1 rl >l d alu >s0 bus L SBC * USE_SP +#010H T6 AB:001 DB:-- 2 2 Z >s0 bus +#012H T8 AB:001 DB:-- 2 4 Y rh > alu >s0 bus L SBCh * USE_SP +#013H T9 AB:001 DB:-- 3 1 WZ W W > >s0 bus bus * * W2 * * * "Only for DAA, write HF2 flag" +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y d alu >s0 bus L ADC * * * 1 W.daa "DAA,?NF_SUB" +#end + +#if pla[81] : cpl 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch A < alu < res H OR * 1 NEG_OP2 +#002H T2 AB:000 DB:2F M1 MREQ RD 1 2 fMFetch F < < ?NF_HF +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y alu 0 L OR * * 1 NEG_OP2 +#end + +#if pla[82] : neg 4 +#005H T1 AB:001 DB:-- M1 1 1 fMFetch A < alu < res H SUB * * V 1 * +#006H T2 AB:001 DB:44 M1 MREQ RD 1 2 fMFetch F < < ?NF_HF_CF +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y Y alu 0 L SUB * * * 1 * +#end + +#if pla[89] : ccf 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch alu < res H OR * 0 +#002H T2 AB:000 DB:3F M1 MREQ RD 1 2 fMFetch F < < ^ ?~CF_HF +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y alu L OR * * 0 +#end + +#if pla[92] : scf 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch alu < res H OR * 0 +#002H T2 AB:000 DB:37 M1 MREQ RD 1 2 fMFetch F < < 1 +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y alu L OR * * 0 +#end + +#if pla[95] : halt 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:76 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch HALT +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y +#end + +#if pla[97] : di/ei 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:F3 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch DI_EI +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y NO_INTS "At last M/T, inhibit interrupts" +#end + +#if pla[96] : im n 4 +#005H T1 AB:001 DB:-- M1 1 1 fMFetch +#006H T2 AB:001 DB:46 M1 MREQ RD 1 2 fMFetch +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch < R IM M1/T3 reads in mode # from opcode[4:3] +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y Y +#end + +// Rotate and Shift Group + +#if pla[25] : rlca/rla/rrca/rra 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch A < alu < res H OR * * 0 * +#002H T2 AB:000 DB:07 M1 MREQ RD 1 2 fMFetch F < < R +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y A > alu >s1 bus bus L OR * * 0 W.sh +#end + +#if ~use_ixiy & pla[70] & ~pla[55] : rlc r 4 +#005H T1 AB:001 DB:-- M1 1 1 fMFetch r8' < u alu < res H OR * * * P 0 * +#006H T2 AB:001 DB:00 M1 MREQ RD 1 2 fMFetch F < < R +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y Y r8 >r8 - alu >s1 bus bus L OR * * * 0 W.sh + +#017H T13 AB:000 DB:-- 4 1 fMRead WZ W R OpcodeToIR ...continues here from the (ix+d) addressing mode +#018H T14 AB:000 DB:DD MREQ RD 4 2 fMRead +#019H T15 AB:000 DB:DD MREQ RD 4 3 fMRead mw d < R alu >s1 bus bus L OR 0 W.sh +#029H T17 AB:002 DB:-- 5 1 fMWrite R u > W alu < res H OR * * * P 0 * +#030H T18 AB:002 DB:BB MREQ 5 2 fMWrite +#031H T19 AB:002 DB:BB MREQ WR 5 3 fMWrite Y +#end + +#if ~use_ixiy & pla[70] & pla[55] : rlc (hl) "4,4,3" +#005H T1 AB:001 DB:-- M1 1 1 fMFetch +#006H T2 AB:001 DB:00 M1 MREQ RD 1 2 fMFetch F < < R +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#009H T5 AB:006 DB:-- 2 1 fMRead HL W +#010H T6 AB:006 DB:05 MREQ RD 2 2 fMRead +#011H T7 AB:006 DB:05 MREQ RD 2 3 fMRead +#012H T8 AB:006 DB:-- 2 4 mw d < R alu >s1 bus bus L OR 0 W.sh +#013H T9 AB:006 DB:-- 3 1 fMWrite R u > W alu < res H OR * * * P 0 * +#014H T10 AB:006 DB:0A MREQ 3 2 fMWrite +#015H T11 AB:006 DB:0A MREQ WR 3 3 fMWrite Y + +#017H T13 AB:000 DB:-- 4 1 fMRead WZ W R OpcodeToIR ...continues here from the (ix+d) addressing mode +#018H T14 AB:000 DB:DD MREQ RD 4 2 fMRead +#019H T15 AB:000 DB:DD MREQ RD 4 3 fMRead mw d < R alu >s1 bus bus L OR 0 W.sh +#029H T17 AB:002 DB:-- 5 1 fMWrite R u > W alu < res H OR * * * P 0 * +#030H T18 AB:002 DB:BB MREQ 5 2 fMWrite +#031H T19 AB:002 DB:BB MREQ WR 5 3 fMWrite Y +#end + +#if pla[15] & op3 : rld "4,3,4,3" +#005H T1 AB:001 DB:-- M1 1 1 fMFetch A < alu < res H OR * * P 0 +#006H T2 AB:001 DB:67 M1 MREQ RD 1 2 fMFetch F < < +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#009H T5 AB:000 DB:-- 2 1 fMRead HL W +#010H T6 AB:000 DB:ED MREQ RD 2 2 fMRead WZ + R +#011H T7 AB:000 DB:ED MREQ RD 2 3 fMRead Y +#012H T8 AB:000 DB:-- 3 1 d < R >s0 lq L +#013H T9 AB:000 DB:-- 3 2 +#014H T10 AB:000 DB:-- 3 3 +#015H T11 AB:000 DB:-- 3 4 mw d < R >s0 low H +#016H T12 AB:000 DB:-- 4 1 fMWrite R u > W < op2 +#017H T13 AB:000 DB:EE MREQ 4 2 fMWrite op1 bus +#018H T14 AB:000 DB:EE MREQ WR 4 3 fMWrite Y alu L OR * * * 0 +#end + +#if pla[15] & ~op3 : rrd "4,3,4,3" +#005H T1 AB:001 DB:-- M1 1 1 fMFetch A < alu < res H OR * * P 0 +#006H T2 AB:001 DB:67 M1 MREQ RD 1 2 fMFetch F < < +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#009H T5 AB:000 DB:-- 2 1 fMRead HL W +#010H T6 AB:000 DB:ED MREQ RD 2 2 fMRead WZ + R +#011H T7 AB:000 DB:ED MREQ RD 2 3 fMRead Y +#012H T8 AB:000 DB:-- 3 1 d < R >s0 lq low L +#013H T9 AB:000 DB:-- 3 2 u > W < op2 +#014H T10 AB:000 DB:-- 3 3 A > >s0 lq L +#015H T11 AB:000 DB:-- 3 4 mw d < R >s0 low H +#016H T12 AB:000 DB:-- 4 1 fMWrite R u > W < op2 +#017H T13 AB:000 DB:EE MREQ 4 2 fMWrite op1 bus +#018H T14 AB:000 DB:EE MREQ WR 4 3 fMWrite Y alu L OR * * * 0 +#end + +// Bit Manipulation Group + +"#if ~use_ixiy & pla[72] & ~pla[55] : bit b,r" 4 +#005H T1 AB:001 DB:-- M1 1 1 fMFetch alu < res H AND * * P 0 +#006H T2 AB:001 DB:40 M1 MREQ RD 1 2 fMFetch F < < +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > R > >bs bus bus * * * * * * Override M1/T3 load with a bit select +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y Y r8 >r8 - alu >s0 bus L AND * * * 0 + +#017H T13 AB:000 DB:-- 4 1 fMRead R R >bs bus bus OpcodeToIR ...continues here from the (ix+d) addressing mode +#018H T14 AB:000 DB:DD MREQ RD 4 2 fMRead +#019H T15 AB:000 DB:DD MREQ RD 4 3 fMRead +#020H T16 AB:000 DB:-- 4 4 Y d < R alu >s0 bus L AND * * 0 +#end + +"#if ~use_ixiy & pla[72] & pla[55] : bit b,(hl)" "4,4" +#005H T1 AB:001 DB:-- M1 1 1 fMFetch alu < res H AND * * P 0 +#006H T2 AB:001 DB:06 M1 MREQ RD 1 2 fMFetch F < < +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > R > >bs bus bus * * * * * * Override M1/T3 load with a bit select +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#009H T5 AB:006 DB:-- 2 1 fMRead HL W +#010H T6 AB:006 DB:05 MREQ RD 2 2 fMRead +#011H T7 AB:006 DB:05 MREQ RD 2 3 fMRead WZ > > * "BIT n,(HL) saves WZ in X,Y (""MEMPTR"")" +#012H T8 AB:006 DB:-- 2 4 Y d < R alu >s0 bus L AND * * 0 + +#017H T13 AB:000 DB:-- 4 1 fMRead WZ W R >bs bus bus OpcodeToIR ...continues here from the (ix+d) addressing mode +#018H T14 AB:000 DB:DD MREQ RD 4 2 fMRead +#019H T15 AB:000 DB:DD MREQ RD 4 3 fMRead +#020H T16 AB:000 DB:-- 4 4 Y d < R alu >s0 bus L AND * * 0 +#end + +"#if ~use_ixiy & pla[74] & ~pla[55] : set b,r" 4 +#005H T1 AB:001 DB:-- M1 1 1 fMFetch r8' < u < res H OR +#006H T2 AB:001 DB:40 M1 MREQ RD 1 2 fMFetch +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > R > >bs bus bus * * * * * * Override M1/T3 load with a bit select +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y Y r8 >r8 - >s0 bus L OR + +#017H T13 AB:000 DB:-- 4 1 fMRead WZ W R >bs bus bus OpcodeToIR ...continues here from the (ix+d) addressing mode +#018H T14 AB:000 DB:DD MREQ RD 4 2 fMRead +#019H T15 AB:000 DB:DD MREQ RD 4 3 fMRead mw d < R alu >s0 bus L OR +#029H T17 AB:002 DB:-- 5 1 fMWrite R u > W < res H OR +#030H T18 AB:002 DB:BB MREQ 5 2 fMWrite +#031H T19 AB:002 DB:BB MREQ WR 5 3 fMWrite Y +#end + +"#if ~use_ixiy & pla[74] & pla[55] : set b,(hl)" "4,4,3" +#005H T1 AB:001 DB:-- M1 1 1 fMFetch +#006H T2 AB:001 DB:06 M1 MREQ RD 1 2 fMFetch +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > R > >bs bus bus * * * * * * Override M1/T3 load with a bit select +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#009H T5 AB:006 DB:-- 2 1 fMRead HL W +#010H T6 AB:006 DB:05 MREQ RD 2 2 fMRead +#011H T7 AB:006 DB:05 MREQ RD 2 3 fMRead d < R >s0 bus L OR +#012H T8 AB:006 DB:-- 2 4 mw u > W < res H OR +#013H T9 AB:006 DB:-- 3 1 fMWrite R +#014H T10 AB:006 DB:0A MREQ 3 2 fMWrite +#015H T11 AB:006 DB:0A MREQ WR 3 3 fMWrite Y + +#017H T13 AB:000 DB:-- 4 1 fMRead WZ W R >bs bus bus OpcodeToIR ...continues here from the (ix+d) addressing mode +#018H T14 AB:000 DB:DD MREQ RD 4 2 fMRead +#019H T15 AB:000 DB:DD MREQ RD 4 3 fMRead mw d < R alu >s0 bus L OR +#029H T17 AB:002 DB:-- 5 1 fMWrite R u > W < res H OR +#030H T18 AB:002 DB:BB MREQ 5 2 fMWrite +#031H T19 AB:002 DB:BB MREQ WR 5 3 fMWrite Y +#end + +"#if ~use_ixiy & pla[73] & ~pla[55] : res b,r" 4 +#005H T1 AB:001 DB:-- M1 1 1 fMFetch r8' < u < res H NAND +#006H T2 AB:001 DB:40 M1 MREQ RD 1 2 fMFetch +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > R > >bs bus bus * * * * * * Override M1/T3 load with a bit select +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y Y r8 >r8 - >s0 bus L NAND + +#017H T13 AB:000 DB:-- 4 1 fMRead WZ W R >bs bus bus OpcodeToIR ...continues here from the (ix+d) addressing mode +#018H T14 AB:000 DB:DD MREQ RD 4 2 fMRead +#019H T15 AB:000 DB:DD MREQ RD 4 3 fMRead mw d < R alu >s0 bus L NAND +#029H T17 AB:002 DB:-- 5 1 fMWrite R u > W < res H NAND +#030H T18 AB:002 DB:BB MREQ 5 2 fMWrite +#031H T19 AB:002 DB:BB MREQ WR 5 3 fMWrite Y +#end + +"#if ~use_ixiy & pla[73] & pla[55] : res b,(hl)" "4,4,3" +#005H T1 AB:001 DB:-- M1 1 1 fMFetch +#006H T2 AB:001 DB:06 M1 MREQ RD 1 2 fMFetch +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > R > >bs bus bus * * * * * * Override M1/T3 load with a bit select +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#009H T5 AB:006 DB:-- 2 1 fMRead HL W +#010H T6 AB:006 DB:05 MREQ RD 2 2 fMRead +#011H T7 AB:006 DB:05 MREQ RD 2 3 fMRead d < R >s0 bus L NAND +#012H T8 AB:006 DB:-- 2 4 mw u > W < res H NAND +#013H T9 AB:006 DB:-- 3 1 fMWrite R +#014H T10 AB:006 DB:0A MREQ 3 2 fMWrite +#015H T11 AB:006 DB:0A MREQ WR 3 3 fMWrite Y + +#017H T13 AB:000 DB:-- 4 1 fMRead WZ W R >bs bus bus OpcodeToIR ...continues here from the (ix+d) addressing mode +#018H T14 AB:000 DB:DD MREQ RD 4 2 fMRead +#019H T15 AB:000 DB:DD MREQ RD 4 3 fMRead mw d < R alu >s0 bus L NAND +#029H T17 AB:002 DB:-- 5 1 fMWrite R u > W < res H NAND +#030H T18 AB:002 DB:BB MREQ 5 2 fMWrite +#031H T19 AB:002 DB:BB MREQ WR 5 3 fMWrite Y +#end + +// Input and Output Groups + +"#if pla[37] & ~pla[28] : in a,(n)" "4,3,4" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch A < d < R +#002H T2 AB:000 DB:DB M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead PC W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead ior +#008H T8 AB:001 DB:-- 3 1 fIORead A W ? < < R +#009H T9 AB:001 DB:-- RD IORQ 3 2 fIORead +#010H T10 AB:001 DB:-- RD IORQ 3 3 fIORead +#011H T11 AB:001 DB:-- RD IORQ 3 4 fIORead Y +#end + +"#if pla[27] & ~pla[34] : in r,(c)" "4,4" +#005H T1 AB:001 DB:-- M1 1 1 fMFetch r8 < d < R alu res H OR * * P 0 +#006H T2 AB:001 DB:40 M1 MREQ RD 1 2 fMFetch F < < +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y ior +#009H T5 AB:0FF DB:-- 2 1 fIORead BC W +#010H T6 AB:0FF DB:-- RD IORQ 2 2 fIORead +#011H T7 AB:0FF DB:-- RD IORQ 2 3 fIORead +#012H T8 AB:0FF DB:-- RD IORQ 2 4 fIORead Y d < R alu >s0 bus bus L OR * * * 0 +#end + +"#if pla[37] & pla[28] : out (n),a" "4,3,4" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:D3 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead PC W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead iow A W h u > W +#009H T9 AB:001 DB:03 WR IORQ 3 2 fIOWrite +#010H T10 AB:001 DB:03 WR IORQ 3 3 fIOWrite +#011H T11 AB:001 DB:03 WR IORQ 3 4 fIOWrite Y +#end + +"#if pla[27] & pla[34] : out (c),r" "4,4" +#005H T1 AB:001 DB:-- M1 1 1 fMFetch +#006H T2 AB:001 DB:41 M1 MREQ RD 1 2 fMFetch +#007H T3 AB:001 DB:-- RFSH 1 3 fMFetch +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y iow r8' >r8' - > W +#009H T5 AB:0FF DB:-- 2 1 fIOWrite BC W +#010H T6 AB:0FF DB:C3 WR IORQ 2 2 fIOWrite +#011H T7 AB:0FF DB:C3 WR IORQ 2 3 fIOWrite +#012H T8 AB:0FF DB:C3 WR IORQ 2 4 fIOWrite Y +#end + +#if pla[91] & pla[21] : ini/inir/ind/indr "5,4,3,(5)" +#035H T1 AB:00A DB:-- M1 1 1 fMFetch < res H XOR P +#036H T2 AB:00A DB:B2 M1 MREQ RD 1 2 fMFetch F < < +#037H T3 AB:004 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#038H T4 AB:004 DB:-- RFSH MREQ 1 4 fMFetch Y +#039H T5 AB:004 DB:-- 1 5 ior +#040H T6 AB:000 DB:-- 2 1 fIORead BC W +#041H T7 AB:000 DB:-- RD IORQ 2 2 fIORead B > alu >s0 0 bus L ADD * NEG_OP2 +#042H T8 AB:000 DB:-- RD IORQ 2 3 fIORead B < alu < res H ADD * * * NEG_OP2 +#043H T9 AB:000 DB:-- RD IORQ 2 4 fIORead mw d < R alu >s0 bus S NEG_OP2 +#044H T10 AB:000 DB:-- 3 1 fMWrite HL W +#045H T11 AB:000 DB:B1 MREQ 3 2 fMWrite HL op3 R +#046H T12 AB:000 DB:B1 MREQ WR 3 3 fMWrite Y BZ +#047H T13 AB:000 DB:-- 4 1 PC W +#048H T14 AB:000 DB:-- 4 2 PC - R +#049H T15 AB:000 DB:-- 4 3 PC W +#050H T16 AB:000 DB:-- 4 4 PC - R +#051H T17 AB:000 DB:-- 4 5 Y +#end + +#if pla[91] & pla[20] : outi/outir/outd/outdr "5,4,3,(5)" +#035H T1 AB:00A DB:-- M1 1 1 fMFetch alu < res H XOR P +#036H T2 AB:00A DB:B3 M1 MREQ RD 1 2 fMFetch F < < +#037H T3 AB:004 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#038H T4 AB:004 DB:-- RFSH MREQ 1 4 fMFetch Y B > alu >s0 0 bus L ADD * NEG_OP2 +#039H T5 AB:004 DB:-- 1 5 mr B < alu < res H ADD * * NEG_OP2 +#040H T6 AB:000 DB:-- 2 1 fMRead HL W +#041H T7 AB:000 DB:21 MREQ RD 2 2 fMRead HL op3 R +#042H T8 AB:000 DB:21 MREQ RD 2 3 fMRead iow L >l d >s0 bus +#043H T9 AB:000 DB:-- 3 1 fIOWrite BC W +#044H T10 AB:000 DB:21 WR IORQ 3 2 fIOWrite d < R alu >s0 bus L ADD * S +#045H T11 AB:000 DB:21 WR IORQ 3 3 fIOWrite alu < res H ADD * +#046H T12 AB:000 DB:21 WR IORQ 3 4 fIOWrite Y BZ +#047H T13 AB:000 DB:-- 4 1 PC W +#048H T14 AB:000 DB:-- 4 2 PC - R +#049H T15 AB:000 DB:-- 4 3 PC W +#050H T16 AB:000 DB:-- 4 4 PC - R +#051H T17 AB:000 DB:-- 4 5 Y +#end + +// Jump Group + +#if pla[29] : jp nn "4,3,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:C3 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead PC W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead mr Z > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead PC W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead mr Z > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead PC W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead Y +#008H T8 AB:001 DB:-- 3 1 d < R alu >s0 bus * "Reads ""e"" from the data latch" +#009H T9 AB:001 DB:-- 3 2 PCl >l d alu >s0 bus L ADD * +#010H T10 AB:001 DB:-- 3 3 Z alu >s0 0 bus L ADC * ?SF_NEG +#012H T12 AB:001 DB:-- 3 5 Y WZ W W > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr CondShort M1/T4 evaluates a condition: force short +#005H T5 AB:001 DB:-- 2 1 fMRead PC W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead Y SS +#008H T8 AB:001 DB:-- 3 1 d < R alu >s0 bus * "Reads ""e"" from the data latch" +#009H T9 AB:001 DB:-- 3 2 PCl >l d alu >s0 bus L ADD * +#010H T10 AB:001 DB:-- 3 3 Z alu >s0 0 bus L ADC * ?SF_NEG +#012H T12 AB:001 DB:-- 3 5 Y WZ W W > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y B >h alu >s0 0 bus L ADD * NEG_OP2 B=B-1 +#005H T5 AB:000 DB:-- 1 5 mr B < alu < res H ADD * NEG_OP2 +#006H T6 AB:001 DB:-- 2 1 fMRead PC W +#007H T7 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#008H T8 AB:001 DB:01 MREQ RD 2 3 fMRead Y ZF +#009H T9 AB:001 DB:-- 3 1 d < R alu >s0 bus * "Reads ""e"" from the data latch" +#010H T10 AB:001 DB:-- 3 2 PCl >l d alu >s0 bus L ADD * +#011H T11 AB:001 DB:-- 3 3 Z h alu >s0 0 bus L ADC * ?SF_NEG +#013H T13 AB:001 DB:-- 3 5 Y WZ W W h u > W +#013H T13 AB:000 DB:00 MREQ 4 2 fMWrite SP - R +#014H T14 AB:000 DB:00 MREQ WR 4 3 fMWrite mw SP - W +#015H T15 AB:0FF DB:-- 5 1 fMWrite - P PCl >l > W +#016H T16 AB:0FF DB:03 MREQ 5 2 fMWrite SP - R +#017H T17 AB:0FF DB:03 MREQ WR 5 3 fMWrite Y WZ W NOT_PC! +#end + +"#if pla[42] : call cc,nn" "4,3,3/(4,3,4,3,3)" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:C4 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch AF > > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:001 DB:-- 2 1 fMRead PC W +#006H T6 AB:001 DB:01 MREQ RD 2 2 fMRead PC + R +#007H T7 AB:001 DB:01 MREQ RD 2 3 fMRead mr Z h u > W +#013H T13 AB:000 DB:00 MREQ 4 2 fMWrite SP - R +#014H T14 AB:000 DB:00 MREQ WR 4 3 fMWrite mw SP - W +#015H T15 AB:0FF DB:-- 5 1 fMWrite - P PCl >l > W +#016H T16 AB:0FF DB:03 MREQ 5 2 fMWrite SP - R +#017H T17 AB:0FF DB:03 MREQ WR 5 3 fMWrite Y WZ W NOT_PC! +#end + +#if pla[35] : ret "4,3,3" +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:C9 M1 MREQ RD 1 2 fMFetch +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#005H T5 AB:0FF DB:-- 2 1 fMRead SP W +#006H T6 AB:0FF DB:01 MREQ RD 2 2 fMRead SP + R +#007H T7 AB:0FF DB:01 MREQ RD 2 3 fMRead mr Z > >s0 bus bus * * * * * * +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y +#005H T5 AB:000 DB:-- 1 5 mr CC +#006H T6 AB:001 DB:-- 2 1 fMRead SP W +#007H T7 AB:001 DB:01 MREQ RD 2 2 fMRead SP + R +#008H T8 AB:001 DB:01 MREQ RD 2 3 fMRead mr Z s0 bus Store im2 vector into the ALU op1 +#006H T6 AB:000 DB:-- 2 1 fMWrite - P PCh >h u > W +#007H T7 AB:000 DB:00 MREQ 2 2 fMWrite SP - R +#008H T8 AB:000 DB:00 MREQ WR 2 3 fMWrite mw SP - W +#009H T9 AB:0FF DB:-- 3 1 fMWrite - P PCl >l > W +#010H T10 AB:0FF DB:01 MREQ 3 2 fMWrite SP - R +#011H T11 AB:0FF DB:01 MREQ WR 3 3 fMWrite INT INT WZ W NOT_PC! Value on the bus into ALU OP +// INTR IM2 continues here... Extension for IM2 interrupt mode +#012H T12 AB:001 DB:-- 4 1 fMRead I* W + R >l d >s0 bus +#014H T14 AB:001 DB:01 MREQ RD 4 3 fMRead mr Z > >s0 bus bus * * * * * * CB +#008H T4 AB:001 DB:-- RFSH MREQ 1 4 fMFetch Y mr +#009H T5 AB:002 DB:-- 2 1 fMRead PC W +#010H T6 AB:002 DB:01 MREQ RD 2 2 fMRead PC + R +#011H T7 AB:002 DB:01 MREQ RD 2 3 fMRead mr +#012H T8 AB:003 DB:-- 3 1 fMRead PC W WZ=IX+d +#013H T9 AB:003 DB:00 MREQ RD 3 2 fMRead PC + R WZ=IX+d +#014H T10 AB:003 DB:00 MREQ RD 3 3 fMRead WZ=IX+d Loads the opcode byte in parallel +#015H T11 AB:003 DB:-- 3 4 WZ=IX+d +#016H T12 AB:003 DB:-- 3 5 mr WZ=IX+d +#017H T13 AB:000 DB:-- 4 1 R >bs bus bus OpcodeToIR Loads instruction register; starts the execute cycle +// Loading a new instruction immediately changes PLA wires and continues into the new effective instructions' M4/T1 cycle +#end + +// Special Purposes PLA Entries + +#if pla[3] : IX/IY 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:DD M1 MREQ RD 1 2 fMFetch IX_IY +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y NO_INTS "At last M/T, inhibit interrupts" +#end + +#if pla[44] : CB prefix 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:CB M1 MREQ RD 1 2 fMFetch CB +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y NO_INTS "At last M/T, inhibit interrupts" +"#end Only set CB ff and clear ED, XX ff" + +#if pla[51] : ED prefix 4 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch +#002H T2 AB:000 DB:ED M1 MREQ RD 1 2 fMFetch ED +#003H T3 AB:000 DB:-- RFSH 1 3 fMFetch +#004H T4 AB:000 DB:-- RFSH MREQ 1 4 fMFetch Y Y NO_INTS "At last M/T, inhibit interrupts" +"#end Only set ED ff and clear CB, XX ff" + +#if pla[76] : ALU CP +#always CP 1 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch V Update P/V once on a high nibble phase +#end Does not store the result! + +#if pla[78] : ALU SUB +#always SUB 1 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch A < * V Update P/V and store result to A +#end + +#if pla[79] : ALU SBC +#always SBC 1 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch A < * V Update P/V and store result to A +#end + +#if pla[80] : ALU ADC +#always ADC 0 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch A < * V Update P/V and store result to A +#end + +#if pla[84] : ALU ADD +#always ADD 0 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch A < * V Update P/V and store result to A +#end + +#if pla[85] : ALU AND +#always AND 0 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch A < * P Update P/V and store result to A +#002H T2 AB:000 DB:A0 M1 MREQ RD 1 2 fMFetch 0 AND clears CF +#end + +#if pla[86] : ALU OR +#always OR 0 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch A < * P Update P/V and store result to A +#002H T2 AB:000 DB:B0 M1 MREQ RD 1 2 fMFetch 0 OR clears CF +#end + +#if pla[88] : ALU XOR +#always XOR 0 +#001H T1 AB:000 DB:-- M1 1 1 fMFetch A < * P Update P/V and store result to A +#002H T2 AB:000 DB:A8 M1 MREQ RD 1 2 fMFetch 0 XOR clears CF +#end + +// State machine to compute (IX+d) +#if ixy_d : Compute WZ=IX+d +#001H T1 any M-cycle ? 1 d < R alu >s0 bus * "Reads ""d"" from the data latch" +#002H T2 ? 2 L >l d alu >s0 bus L ADD * +#003H T3 ? 3 Z alu >s0 0 bus L ADC * R ?SF_NEG Stores result into WZ +#005H T5 ? 5 WZ W W Equ)v3&g zCn8QfRk9MmAjkk<01yBG0Qdl>m;*-1fB*pEpa1|!01!YL0yfr;M%Ioxif*<>4q7y> zR+e~wL4e3|0f2tw|Nr(scm*mHC#Co4;JXNKVdJXFoOf&Z%Zsp_R|)X|;piHRqne|w z+=A!2KBeVVb(PYEY{igej^1xSBx#woN|sbdidRY$xa3fTGcsewg*Uf9%chlte$DcU zB49QO$)nZp=bvse6Dq}Hm&#E)d|CfmMdiTDq8ARMl0Wr5tf!I!YxgHkuOB_gs3oTt zu4)~Ytv{8~>=D>GvnL$pAa=l2dNg>}ky#`gVRMD1;-6%1^ASC3P<4%B-_$+0uHLq zMY=XdnlPX!cN3@dLNDk}k2c>>{pEgB%~35aJ3=EKX1IDot-&F~4@`y)69ymGp#9zaho#z*85FP|z}CI$I@@?hq2m${!L z^YaI^-`~Ihvi}d98$`-*MAHAdwVVQzMlV! z?J-tFAR==RHn~&=r@YxYfm4v!CkxwE><%C}FFr0lrHP2UkvVt9P?Wcnr=*BEHa1iwqOz zKKiIPFy4-5xec&D_Lq;`jQU65mTdjEAW^=cok9H>VFU&MzyN>%bhV`Y51hEz*jwn^ z*jW54>iuub0RDu&AKCxeTZR0%bUz(@2jMN;(pFf)9X!92JD+GLJ_PO#d&U6clW-IH z!F8=XpL}VI1WmHBO7?FLw7nPSr(9GU?HWPvG zfTf#gKwF&Lpes(=OFYvu%ET!>Ngj=6f(a2fLb{^hbb}n3zyLim1!H<*#%Yfd;chi- z6>;%!r!F!>ET!SL51P98e&xq}#~t?{RiwQm8AmEdb1LD>8NP6b8z5XT-!0CPmWBD* zC0jOdp$u+TNSPM&-*L65KA7Pb?RQJQ@Gal#{20T(yI$)OT4vNAw~Gt{008$R@ncp0 zw>=dkNW`qs!4F?2ym!^c(NAty;Rs?Q3QwV)5@cxR`5Ph9L$fxh)d9;zF$Vu7On5po(`#P8Q(p|tUja}rDvG##Y>=%ex;;qgw* zYGAu+SozyQ{zVR+sEbH**Dp5x zna)wkZY(*yDW05#_ZQND-+R+hRObwl7o0SrgC%B+`6__^G^h(L7c!yP{3D;4z!Oj( zcZdrbJ(bN&yh46u)dqy@*Uo`dhu%)eF1$T=d5i9}z#4*CI<25{H$)^z?UlkPHYG!* zZ>h|M6>uht>JVJ!53e*b;W{;j@TBq?-tXtINi5|IL}=ur@h7V-1AS)J&R z+z0ggEAB1M5$YHTm25PoFc+s~B^oIet9_)uuFptq1rx2bruVA=Nj}nu1#(WG=GI!qs4Sg3WJ8(yEh=e*HS16ZE%)0P1-I?EHqY=CK&b;N4=3g~k%K!t?dhrDAPR_8NGl6K!v*fLU3xsisMxY9EszJ4H8!f+ zAHZ?NDB)TY@E#Y8^t@>%CcWRq(Q-Xi%dbQ^(lS#oCtm_NB_<|f|CjwVkD0ZYO?lE? z7Blm?P_Z_}cE95kl>?LBPN{tF;bc~3Kj~M<3tYS(V z5L~`wU@dT%0p%p<-`)~ts?2QgH84XXF(JW8 z9VnSpa@e4xRw;k|3;1j*Qse_1u2JrAemVQ;M2)tO7y$9mT&sKNd{$|kvdHCuJh4;y z0Y0vWN1eL#i*J>krKbEXi~h{CU#kbtuuo54RO6B)M#WmjTFY490_;M0qa|aX`X@tVI1N z;DQy<`pV)mjVo<){K7QM(!$;@)PGTJZQ#?6Qn10d0hfq9D3!Qk@2Gf%c!nU_pU)Z! zwou1ScBY(M_)_W7Q*btN6;L&yovv(`Q8pp$NSrDeQ06GD4EU?h5JT~@KR7%cOli(% z?hJrH7DKU6J9(0v2t^W1>Ahywc+5DR!BQ*yc6F72 z0(<#&Z+HbJqb=l!x_jU=sC58#I}rhL@O!ZGSU90Ia?l_{w`1FF(M%h7#4`wKX1%gM zqktciKKi~e5=EW;!Gy<}vNtt>#L+x@y;>s6q$WB; z(phb4sbb8aq!5nnS#D~*rR4UX;RXRaz9jEQAX$cL$#?r2FEX%kujtkc6)5IH1*g!*Z7Sl5J z)*07k?$GObEs>%tpQJYf?H8u-5=!1Wy;$_%n4OR&9OPMgB@3n*1@#{aaN;u4#k*cJW%P>rx(}G z4{oGC8<<#Z1z=x%;GQ3jZ8g*0)oD+)Me{U={@*4~- zHHUA#_*d5Yn0zQ0pfy)_;OxzTRGzj)fMOF8(yEDgV8Lnuv~0??K`9+=G_@5TS_`Y+ z5kQwbQM%3Er$#%7P`mxfFHpbZR~%#qjxs4#ZZ>s`qyd|*>7ao>zsg`_%0U8YRI5$V zjGF8WbjPOUXm0N?EQQe&e=<-SB3|qXkMaQ5qO3PY+f~OhDAIEYnvP-4c=(B1gtV2d zE;mi!85k_7liE?3hIQ*_;u0`K7psgJW?mUtMmZ1}&iT@?wT+y@&?@7|<6iX@6mk|0 zhpjRJy}bplx3~)`PIF~gO+ z&${(vJ&bB#MXaP<22#l}dgn7heHrQrho)!g6i+1Mv!NNxmLjJp68X5v_N;y{Y&3W}W zym9IK^aSwr8TE&g6FGysnf5B&s&lu6hl&|?bzikVqvAMrDjP#dPfnq-5 zh9@A_3;k*g8m*@n|f>w0~gl|FbaibmGT9K$j?6Z6SO zvdqg!UkfZ*1BJsRn^bYD=a$HHKKSamU2QeT5BiYr)FsO$l ze1c6D;hT6Mr7O2QG%D3bvpWHCaq1C3rqJAx`1S+I!bZxOUTSG7|8711Va73?6~)~N z3mi_XVPCzwJc&w%X*2S;eCLMz!!-L0xhb%$RLl5AmXA?Vb9g2!DV)_(~oeCD2l2u z8p4Rb;<{K3Nlz%%6!$@;#q5Y~)B0yg@Jw69idPkTQ>p!TBwB@prP)#jY(zBZ7j)X4 z)W4_l#HfqBQMeI4()WhR7(<4#Dn2MY30{~6W8ywq!sZ?G=3PHkgZNj>(Uo#`8T>N% zmpej+i9mLc?uCetXe=o}{@w+MIh{!brdnt28FB={ht7cY`Ne{&$7 zDBC9T0FECm7~oB3eB~kR)lrW9{X#y4O}5vfPxSY(SCv>;m}s6S;F|$XiL^0uXV74@ z&2%`l#L)W-=0h$Z)NNWRl&#?2O`rzCV&Epjq*Tw2k4AR?y4bpk_$uBi-F|LbC* zJBhf9V$vIkEOlw7Kr7R%S((q=pBg4(~xC zy`@k&u~0~IA;iLU+0v)J0)L&SB?T$S!(N~z=tKN25<;sc1TzM;?w1t|v8_;_d&2Nm z&fFMWIzKy@{f5ENTPVu0iyGw&|1pqMQt! zpkNiH-_%`uIW?#I;zW1oz?mA@UEHw(-QsH0q~=t_y>*jC$V4n6A&bDU=<2{p>jsWX z>kh6Psp$?!*kgo{A(oD!C|Y zYoUK_x8g2GXGr0u5zr*pdL1cv)Mg9)2#j{`P86E7nJiURwA5Et&+B8QXUty}OA>B? z3Mz$Ys5GO+y`{I9xY#@Lbqrnpi&noW8eoy2HkdT2FKsKOGpr*i0?F^WUhey)sR0?H zc1M%r+2wjmYUd9rk18->WKT_9L<$U|!YEG>Cd3ZK*u(s#uIJ+S;><5$*FP8*)nM|y zJ(T+!fkoKu60!_Fqeb*UkAnD3-~?bYjPp3iV~LKgK<~1d025}OUj5N%kOV^dT>i+V zAFGj%&l+(MzUge$ic#^#X_S5MV8?{+9Q8r(19T~D!KIm;l%Q>=^g3_B)5Q*3Z2GS6 zNghLbbe<2mvp0-&f&bwsf|16l}P#FL_(%Xrr%oOL|)iO6ZZC1{ESSbg@`|ZyvV7 z0)KhD&hgcuGG!m|>h`SZSNfX4o!gEj5%akncDpNjOu6Wsu)>+8ZF=S;_(TM^$U}$G zbb&iSp@Tx#4cdY6!Z=wyR6w?#GehbC1bX%Yjr&Y$sC$G8FIs6Bgf+4+abuR`o zCU*>w)bdh>Y z(%t2OTSif7L-SVHx_e=7JHsT32far-CPc;MqNpp&*N8XzsLox*Z|jKLJv=vaN32R^ zqtfIf<#OF8T4PdJDAM|RNF_z!75tY{CV*#7J*o>rNZL1U{)1ndVc9NdeSoqn#aUg| z3Ve1zI-zv`wvTiNz;=yz2+dQS+TSJCozH|b53hp&b>+jR3vBi^N}|G&&9@}B?%qFw z>ft4TesvGJGo&5HZCr+cEc#pm48I6f4c;X&9sU$Rs6_3d_KTe|bkjewQtX|*S$obK zU6tg$W`p84BX|2wlK^-Dh!t~l<$`xTAg%1i7Xo&w=fundq^!$ zy5Re`9YWOE%lJMEvE|mdiAR3e`>2ID*Z}#AfA&ufa4i(D*}ACGVtz}unQu;^J0Px; z_idXYj}&_VKA%ID>t6O(^%6ckj6x^U)c6^V7cZSe6RW-@U)IE z(mGl#|II|#To*!d3$E)&c=5i_&7^hBG(?Y<4_VjXznn~TZh;~EW!%LWxM;b2WXKW~ zBKNT5>9;~h2g>&w>BYG%E_T%Ob=Ft%Gr7Dr4cA_1NTcm1xiF9`a%hY`-lI+apueQw zOgg!GRX+8qv|fkXop|xF9oeGD&q?jTogZl!x`3Uj(D$tvBO5MAx^mR-(pexM6|+`Q zUsXzHWh5ip(%|4F4vJ7wpxhZ+kOFLV3kc1K6MVc=dpxZuX?3QLx_TEw1Me404_l^XU z)h()l5`HLuq3qkXwS(!7#AeMP|L!qru2Tmk`#nSMElemRK(&4cHh}A3CqN>jzXlMi z!3RMP(+G+;1lpr}utw&Q4Q+h@H@?D*$!CfA%l|HnzKI%abe0Grh!Pkq4qnK;OL z0I!Uxh6i%2rea_wMsI8^xXHf9kjEWo`q%#FOt0FUY5w5 z<0k~NVTBGFIfL4l(^D+zg%D0L8f^K=Nb~(M(kA0VIY8ptfiZXpC!F|z=sSivbe8p| z4PO(c9XrmKAFEB@3=Z1qqt&#cxC9?mb%nMiS=0A#HV`4p2_sSQ0|fC2m1?5kkPrG! z7#a5Y;V1sR&dgy&FVXu`9OVCDB?$kk&g@`nWaQ}ZpG3w#Cx8AAjS(2r8{S8UEc6Wg zCE)6juoU!5K!JszMd=t=|7{IyJtg)T`O~8w%c$q@(02NeIpdwP6w??sj%uL|DCocd z&9vsmV~x6-ua@;}0~wNcC4SfSpTT?du}i3zyS6zk5pbZaPqmEmoKNuPEDy z(B+-4KHs^^Q?`W{EJ%^n#Q6OaQGtYj0>B2NheLtrU$0g+i8!(1v@!gr>sx(N14{@T<8h*}Kq1e<`gD2n` zdFYfKhrIRJDq7>Ofk6EL!VTC3si8`hl#GTbIS)|C3fR>C$qfT}W}4i)7U~w!YgJa@ z4Nq^EtA-TPr|ThN6csD5Y6ygFpbV#*g~M|iD?-8hO9GVkjBoS<1locH?Z#YsVByyq zkkB=wdrgH`QIzoS^IYR_S!#3HUN@R`|6d-^-4JR3;kBlUCISloPkjFI^gw6n*h=_nSE z+y{SQ0ALJNXOTL$*lJZD9K=DgB56Y`OIn;XsCO?-*g5wl^*U~lXifzypYFA zMbr_A1o#+~;I4p{a{=7$@77spbMk-oEN*YRx0jH4QWH#|@3Y7G=?_=6f$xt^5uVSNQe22vrrGbs<7scV+lxgs-0!zZ1vpQw9czTGJjgiH zkjz}KY+vgkx~hW$%A@>~fmC*6RZZWo<{_p|}c4{7RRJu-BY`%=jC`kZ#6jNby?MYA2t7 z7j`C!AHmq1<6_}c-2$)Sk5X@$amX@XRGn@6!ojxtD4rnQ=#cdgmgAu~u@Q#k%0&tu zW-p*-ns**N(96=6FV`(oTSW6t;$n_bk2*p(c0?x8Nz+t}(}#pEu-!oL!)I|+xL=rE z7zDQiaBbP=H{ruFzU$z#2~hCHS7|hBtX0qKaZY%ZNU7nU8>Jw{>MS zAhGbW95Av$N^LLQ(m}y;&fh9lv*WDSWnH=&D_)&esb8cL*x#RS4- zXk+4}%O$3XL=XF@{Yp{CRqg2&0>Z=~YI*Z5d%+v}{VQb5*!A~lrW29e5b;FhgaLyv zv59L&FIiArY?__&Vzo!*v-ytKLQry>o z@iWDsA{~nsfN2yb@}P|Vz^nto8cJUJn)(F@xx(;)lI9;Z;|;$xPqK~o7cfbZEpkW2 z=GNers>0WS8;uHXvrUY>ZW*c7WyW37k?f64gl`fL2Rb>zXfAnp`07JADM;PX>)M*^ zPj^l;lwh8c9OtaPt{7%FbERICC4c#MiWbT~Kx^<#wm+w3n`^>u)zwb7F0O?$72fJU z_Gwswfg{_}l;V-_Q}ClRrZ1s&Z0x?vY9M5$uRlTYDeBZmfzN@?B@fduN_aZ?3)B54 zD!UK>0{n28|6;iv9NjF9{^2Gsw6tRCL{Yo84ZnbQx4@7U+0P8y-kH)2o$FS;SynX$ zI|3UR3-Gkb8y)&eLbCYl3E z_oqYde7a&Zywt*54rQoWZdPTz4dOoTPl|nh5qurhErS|p{w4V^C8K54;ieEbq)jyu zg6oZceVC+z;EI?xVpaKTG*V$kH2R>V|P!aTBvxX9T`Aw>LFl zhy8`xOe~T8`EtGi$8WKRSZX2FY-v{M)c;fz^0HJc%{dGkK$dz7ZmtMv%rI=6W5$G{ zPzv2bBVZ5I5uDZwuWtiI?Cy9IQh86X7sYD1%X!fE%SKBF)Sk-@4$fP zC}k7G8@WaKp*Ba_kHl>oNLq6#lW1wfW5N59@CX&dh@O{E0jr0 zrD@>z_re7^l3ivKRPq&X$gU@S;_yT9T#jy)gR;{6_|CbiJ^|wIVW(!q4YWFO7GYp{ z>CB+7RGNZ^`{!n2u`(HVMueD`R@&_Bkfn?z=DTm-gV{7Filb?@&sZ&r%Yf9uHiLNX z>lcM4KNCDF@PDURw|1VyBYv+cp*`>D6=ql%~Mt!~NYzTUjuqHWNcm7q` z@6WDM7e=k>bbo3%Xc|;#^-og|72L{IZ@H+x{HWJRLkq+}g*&OHr??mPRwj%V%ONvZ z0h2EHZ?_s`1`Jzi5>Lid_9f06Y8BO{N!mHMg^EedXQda~@2pM>53YodB$lU_>Va>f zKYb+D+=%J@e*P6Oy4d&ql1XidB17%>awwMB!jW?J?&BXPCkV8 z;jdz(4(bLhN@MZV*RU95G~+#v;HDnk0w}XU@YQR3ONZ^zh>J%&A?`B;(CeTT6S3~l zp~sE6x6TzQja$LQ^A?36XNT*OW(tqFW@B3q9uO^MeKRxJ<5Z37HHq&J)2LIp?o$Yh zTbRa*bE8iH>Z(!HzmO{Af^#i?5B!3BwB?}($s#a69Oss^i@r#aksWegm@rn^k;%bR zLhf9Ym|y_W`ss)k1b&Vd1t!X2pr31Q)$;TQAyXxdd+>ze(ajF4JlOV_@;6KFDvxNuGq>S>3J`D$;a}YoBLcL? z9P5s7Opq9vK}IByQjV6uE8>DcHg{;-(o=8aN}3^cG=U?t0_S-PtXz+HmESX-Q6|&t zVrJ#N835}8&jyeo($zUxq`q>CKnu?H%@(b_*$KN8^d;>K$MVm^12Q%k=SFUq%e*$YbLgHR(_ ztobAFFQEK&(*t89!#2n*$^M(I5^|gcjGInB?n=Cb6%e0NNOjuVJ)-Xg8&?z^yw|6hv*uP|VwF?0CxnOO?sxVO|S`^T~H; zd)q@?x|hTG@ALZX*3_0(HZ^r+6dvucEPvV)qt@II;JX8D>+cig6XgN8P+arOAOWn9 zPhO^&{Thy4?Xu*>YDQ0+1tFU{ns98_6-c+_EHHut*jgT5dINB6HFaQAh?1A~V`A0W zH6zCi+bPJW4j_?WD$PS1W8o+8Ra{+c*_d(-t|~nfwB8Ie$ErHL;#@*+-soR$QCZhf zoVa(Mp+b}~LK(V38NSOs=)N><*n$xBs*M~h$PnsyrhXHx1>GQFz^Jf@;9;0Vv^nbP zSRS`FCbZlQEdMl@%?6g5xf0+!*acs9__KMJRKorYpz~d&zMpyfaBOk4plm?pR0GzM zmA$xxUWg1thhnc`B5=@$1y@9ZjkWWq#v>0Wo|+ZI2sCTUH3J=j+6ddE5YDe?1T&b{ z9;4X!_hsbXkdO^Ki3E&({8aJod>O{B4+Sw7gzVlxIRP`hf1X%Y2T%BHXlu<#oJ&WH9L1R#KWHTTc2!xPIuU2TjR-y{{`w zd%iMTH@}@JbQij$&eBH}rzGd`@N{-WN;Ot;f6F8rB%f~owRTg>VDZ9pi{ZijK1US_%$ z?YbYwf#ZPfQ?HzXGPYGH^mm*vK$e*@Pf&kQXHYWg>nBV5_av?JjUx~V9T1=*1p)y5 z-%3RPRUB&YQggs&iGO?-obZvo@uE^*>`eLj+7aYgDnn(}Gr_2>(p2n0w4wd|{Smh; zRt+u94G}=;Cc-sIv;vgK9?-VyZQG~Y=lP_1Jtk*s%geQH-mA9#{^Y4Yqg`j)`(-#G z3%85sJ?Aq^B`|JAq?M%l7_xttqd42s|BrgyyC;Q^V z+vj^YB?i~W{r>&(eL1JA<$eE2K=k$UYX5!tdAA$)`}SoX7uQDTo88F$`^v7nz1{8O z>v0{9qc)J1XDQL{dELfldn0?J^Y#AoGUQ!#WO&`B`dZ+f=kx0+Mn-e(orP(z)93Rx z$LH&o$L4D58zKDV@Up%6`8y42)9vAFG9~5v#rFC3k@lLu`+KueyL-2;_&arPyW8vj z_G*69=2<6j4`(=djT@Jf+Z9Xv?XBDlOWWHM8SMS(_53+6`g*$yuK&yI_;y+6^Nrcj z=7S`Ld+Y1T@VMsv?xybi>Ftlz*vtOD z^K{%TeXO%Ul26B%?fVJO_9ucn+wI2o=k3E&^ZWj~%k>a@+pg~M>^aM`&3BvEZ`PcP zpWA$Vp1lpzNP4~SKA&!{zBj#7)Bh|oGuu%q(+~6Ox5@|@aDQ$uL=|tQ$h2=Re!1H) zB;UARiM?fbI5AIV((!ixyyn}q%k%cu=lR~#C6705#+DZXl-K=n@l0D9D)-b&RM*EN z4{3AGR^TYY+s7cI?#}`S@%MMf^u0)9`+UD`+r@5uxqrVWWH~(#y4$#%ygjZ=e@AY& zuiJuF6UeYMxzgmr-5XF5etfD(;x?)E$G;vv&42!mvbQ9qA~8%4hxC#9V_-lLp(gid zmlkC{$Vrk5a?ns6UcMMLuzSOwwr%l>^q<9g$# zn!)=09*z%{js}-c*)2E<>7ddfT?{41Sk**2Z5WUC>8EpCx(rXC_c2(yidpyP#yV`} z+2LSMj>kwv6~6(Pw%k4(#^#Jjyq3X{dKh=a!-R@Y4;1!GeGHFk%QIYJ2(ZuHEx62J zXULTsu+M`v!-b880{{kt^_AUnR?|zu^7Bu5>ui6s8wV8IMiJb92%d51YP^dLO_T0)kTF7!u^fAszGvOx3K*{zNNbm%D=eUv_h-Wl<{ zogs#bN*|+W5t2UCw)1#HH)Wc1sg#-6`J$g8JFsM#&~c~{aYSowRoK&oShmDKJ*`_6 z!8AM7ae+bE@*u+=N5UX3q1*vsLH?2BvUYgqXLA zZ9JUCY8&clbCt$dj-L7QxG$WW6UcYqo!^RVJOnt8z1l+Aa-!2ZPL1+WUy#TR^0*fy zcaibV99*yq^c)3)B`piAICJKTnrGuUbM}gw=D%RgxF~3tph6n(K$p!`oNi;43l1h}CEJQqIb<_Pu`UOei>lh3w~~yR(;OyEISO3HJS`L5 z!%>H|!7~C}_2EC_6U&jxBRUZh%ZU((d6wEW%j-~3RhH~CzR24#NTQv;@s7Udk02qh zzbYUY*%W2Y6k#0gaK652hjl3EhlAa*R+t3aTa&58)vYS~V3VIeK0&8zvcw@OmcQ;} zsUtd3AF?-TF0>{_w8h7l(8dvQ@0KhS=G^36foLlku+2))#ndjbhZ_0Fizm)-MThaB z;WD8nx$?6qn61N^&vFA(pQxNs^2A7%E5d?qN?kS3@`{yf|LFvgEGn?k&A_TfYp5mB z(Wese3ga8yC*14JAt0G6mSvM6D}E*)*uc;#q&`|wjXsM@UK#M`Kt?JRP!A}~RKkXu zFA@tGvR4dQkoFd&Y7zJo$6i2k1bH|?lRQ6?Xnv3(jpAtRwv=(%5<$z=x~%SbR*J{O z*g2;Yok|WHU8^CiqH`mtFURku0GL}a32GUDXsj~8$llqM5w1*J9cJNZM69`9cYqfy zE}y_h1jAhEBzv|gCn7n87vF~pE(Z-bmhpRFC$rh1gCzhxZ2+%I#oS6qLCzc=n|uw_ zM<|023;M@Uq>}PWn|cm@=~ML~a3-=agdPvFR{%ug zEY2h<0&h5q`{E)flmXF`&jN-aAI+8MlF7M@m4-c;h#e<83Kb{<63LeVu0^s4BC_M< z+Fb{tLcB-=M0pS+^YxPQ7*i_QJ{%=E@*VZQV-~s-bckaMR@S`X*`XlwD=vv^z;ENz z6i|v)Lr!pqPsWKEzuql>{poc~{qs z;U8C?C&|L4Je2YCU>WeI*(5E(v)O115mi-0yK478B%UXz$1+d0lsF1(JcvKK`i-ft z7eWZz7Cw&P%BhtL!l3TiMP^x{M1bnJP>7PFPJOWlZwO}DF<2hyrj4b%pS#PfhYuuP zRZEILsSrf9sUy@CjS2$&a9!oE1~rQ*NQq~b4Vf(0E_ziTXCzg9!VzP2RcHf7UbHP*Q^Fj>0U-u*}?@*)eMo`7PrfUnww%_$O_sk z!KPOXBsJ9E$`k-=bj&5O+$(E3|HG?T1!8HLuTFsVncZYvsj=0Z*=&mXg3cvTsX& z)RfnrRgx{;R;rBisp8|#F0a#Cj1OqdtTO(LNK|n|Q9N^LOcJo;q&8L}=&QETynUt3bx4=Mk*uA(ubp?WrXcgyvw%Pbzp|wP})Lv#9(=cA{ujnZuzAtCcDMe9|`vj#aJ9%FPxaP%v%KW zOm1afx7(LcDWeXUS)wr>l!EsH7ZhXrHzGz>D|h*=2^JnwR2!j@XqKO!o|NUNGZZn@ z1j^}dpjwu|9Fjv?_g2bQ9VJV*+{2j+hn~`*Y_Ty4F!GzKo|@A;u=12iAC*r^ve`=d zHK!nq^6L_tjfEQJ=aqS-Fu|;l|D?>9TFNHh8K)>xEU zTAilm&o^Wgn-qs7;$)Ll;^VI5L-qR+bI*Ai|KoOu?EKl6$f9Kx2%84CWrf{B+3N}$ z2zy+9nUeZCLz!+++a|hiiX)^!$!EkvUi?8?S|D3Q$jodO|JH1t!!7ck2xIq(Pif8c zHbQ}z(paumW*@+4@sl)-Ov|)3a{AY$O6BN`ny*M!hP*$<_H8H;w)_T}EH1OW$He8^|GyIXoz|W4HC7O8AF#X00qJ`ix@dZ8|jAzp`cf=J^W^ z%qpY0$g&dArR>k;@?{LC3U@ zmg+h5nP66~FfvmV-!;ma(YVc-l?;>=c<%bbt_PC}QUp%_poZc|yL4{Az4 z{y`1nRdGue^ve{8lr>)ELM@Cfb6QMFCjc)oD+h6kj!}W7`l*NlpL$sd8ftVZBqn*{ z*=2Z8N$!VgC2|IgtYt&q1gCVhKI9gd=%I>NMW-_RgktQQs(OGP&IYBp(=YL<3>LC5 zN*h_AqDSGzNAk0nC{PEv(r~M5rrf%T&ft_#ixrje7t9Ts+Q7^6iD-#mS zYq>H)Ju)V2k-`a`9_G}W-#_T--;Ek&HosJiMOAW_V@P1&=3it`xi_G|!No6rQYUv( z;A@jH7K@;Scsn3L*@d7GpY*(U&@a7vyk`1APmzE2#mdd9Hs$mB4+7V;Ivf9>Md!&xyp zBaW~M9L+u~y}taWXux4bp|fTdz&++ID0%uvgoM}`BMz$hEtRr%p6Wk5+?tu7_$A{% zx{?NFyee$rg8K>Sm&h|ex}wVaR5o8wjE#RMc^Q^el_*jaxp3H`*!1a6dSXB^+~8p+ zn$(o;t~-PKiO?#PFs8U#eGBrLKd^$VPIk))r6@U9rfi;n$u8v{*Y)?AIB=90U~JTh zzdy2K+8bLp|M^Sf>#|vXy2#(rQNp5YBCyd-{4u$7aq2-p=m%XdB9cx+Q{I%9#uTD( zG0wX`s^HwyE>yNAv!QtjS^Ih7fFi^ff{NCSO?MJA6H37+F*|F|Pm*MuL_U@Q{e>XG z{Q{o)fwCgLzb29=hb^N^f+h14@jy|lwY77ZS5VN$?NsnK_xOxjdz(I$vxiFYxP~Xb zgs%8akb}x+sTNYxwMu%{&CtvZDX14llvuCb{M;|2ANeT1kAGBa;nkCwcB86Lwoje6 zFrkX8oh$5Xie@Om8O8s~Wm@~%d3^yS zu|f97an^~Xm6>EmYcUl;aVt}TLgt1^R{?P@FFBPb;kW=iuwtX?;S{T^ zo&#kzSE*D!lmX|?r?PklsT&pL%9b~LP8=Rzn*8W)+L!!(#)i_UWF1?AVi4Md#&XNH zu3nmrEgwE;*;|eyu>k_^Rk(_sp>5r&5PmQ|axeE*v*-;dg+-j7cn*VoIZk0#kK@9l zYax0rpld+cMB1gjGOoy0vLOk{nxdfX%NtsPFmqjc#aG? zCC}cQ?Jb?#@yyF&WU(eSwTA~L;V$QoHqx$rrZ|=KI;@-H&Rh{C_~SmUo0AC8BSxZQ2z`V~uU6T|eE`Ir}c$<=D!NB~xYPGZY=3;BOHj zm5(4N-++Q3XM$jBkW>%wy+&c))wK5o79YClJ5MghadzRZp-h|o6-9X+=B{D0ivg+= zOeywS2-bNM!`&43SP^Cb{V>=MAXej>(p zA!wkilzG2wX?>Ozy)jDXL=FZ?z#@pod<6*x%a*vxP(=`dPMntEK%N=n{s{36GW@2O zbmw70nqdh+TL@{(+WdnGdNtpG*!NCBMOFGV9DvdpDY*OMfGzd3f|T!m$rS>89CV}j zmO%Q^2E{Z((SV0nl=m6K3#FAh1*5sY_#nLGP#0FORjDM2VgOYDcUyE)6bTSIfOa^9 zdyoX#1bb;jWuwF&dJ!aOth*-3$~eY(+5$#iS-pea;%-jQ|q$)iV6d?;i#8 z%xDFbY1|X05d3$mizFMi!njkwG>&lmnkW7rmIdcB#N@bsvmt4tvmxZGNN1Vt(zx01 z5b2ixi>Y@EjHG*_hog;cdxDMaY@Cg=v7Lz~oLC!M8{4*>jcwbuHeS5*{Qj>#)Q9Q5 z-F>_J-l{t1)a}thjZX0AEy6f;CJ>Y_ttIknNB0U;U_2Yd=r=l}eI1})hfS8NF-E|Y z*r(^#QzQQ#2)2U3Cjg^;vV0IHM9qOS)!|nB8rifM*-rXIA3unx|6xJTrI$l zxMIrTWRvoZGjgQfn)?T*4Z98!N`L6jDIYpU4Dv~o616SP`DESX5MbqEe=vfL z*8j|cf8a$Y;9aw)%8BPHp}kX%b;xy zqJwY$y(o{vES|M)c)VgR1ur|CZ{cyg5mD1mcS;;W2UKR_&aF6*xHQPVxSZWNi!YhOqZiQrLy;pp>RM{DB09+tWnOmVO?3_bD#rE1i@4aUwT~z z%lF_LBIfDtmwR7_OiXdRV^+_=O`tTU6xzCW;sr^WeJ!Fb(1~&`t|hWbZV4S65S1v> z^J&k$oDomd^j9H)QKBg?2bGvqhCGhrct8Z_g>VFeqzTSrW$GfYN<|_jAUc(svpQy; zL0tZdeu_j3s#MBvU=rQ5q`KN8dMyfuleb(;jF;;e@l|T7z6FVpJq>&lmnfnim)KOG zc2FVY!MC5(ybcQNIL+zG3gG>#e2Y)zHKtl|?|_wd=fJ`8Eo-D%feLhI8DUaH0EnZ#ud^^)gVMCGCq(Mhq zS}~3-P*r2AC(Oml4@n#kibebbF@x8vhEVHM?sj8er;#|Ae-6(P~ITS7$d6!Y+$I)Lq(WSA@K6@r{a`5NC6u zsNWSEeT4r^-jjXtEm)nkWG}yHp!lTs55C&-SEmeVNO9p}{pk&DXUu)7Y9qZbgMghK zO)`m{9gcQMjR`^qO@eMTQ%8@1F9JsC8R zF8J2|Uiw@CM93qmroYWkN)UBtAMUrRsvJ7%o{JFP;hmO%g>wy1h@JnA%*wOmkuOWb zOUrGtX;8p%ac4gy+UOFapj3!X^j(qMy}Sr=jF?vB^QZy%TZ)<_3_i=ZF-*^d=SFfj z?1nK^b@Ijtu$3knqM60E){qu9$&gls-B-n8=^`Z5>=uD!fcTFq>k}5zi5#No$2iZ6 zEiG(%n{O}TI)h++xvQLXj)*9}@BW>=KHuG6?*Cjmv44pfvNC3)Rm@$o=UF3p7y@i* zDJpDh#oR4k`~F!rHYV}Fqc6Mptbjrh#{Kcj;>&zUSCsXD;eVsbYr#-DX2I}N#3;kZ z|Lxx=YCIRG@Pt!}NvTgNj^jE=>!1NX8x*IkuT`q*0liUcQd@&pF}pKL_zkb(6-c|{ zyy_b-?af9VQ^p+npNX^t>;K`fD)x?30F9fYMw&pIC`vgO{rjc><27LA1j-`sLo7#( zeGkF~?xtz_czL&lhq`)eM*l#%=6TvSVNy~@HzQM=T?Q;~b{DthH`)Si<+f9@6s_#W z{AO3yN@#oFCZ!HD?9L`f8ejf=>fL}iz`9y))qf%-;)kBw#iOvo8lf@^stYK9*rFw^ z8%oz0W`i#P-$GsqPrMYWHRXBmQwC>~GrhmldtGum#pPNMe<3k1*M$M5Xz5BGG|N|t z0~|FdxxCLmDg7#6gML*Upe&R{v4LtniMEtyuD2tmOm~y-9-FT7uXpVXcA$jIN3vWt zp(|jdCsr9n{;8iD11j?z#fI@AO`;|P*+BzQ5-CB3#H~sde@&k#TW4x>iCgQvt36Cw z)HWS;RLa@wGh|yIfJVavsp@#fI&=}UyTw@oh?w5HBm9UDuYP2J#b4Tm!sQ?HuXRm> zv_ZSrLa5@CUhe5q${!?G>@W&R?&$)TG6n- zk%XpBdiJ{)&}n3B!l4g1Cj5gU$|5}JB3-%?C|#oI@CH;l_+$y~X6E~8o_-5iKPg5S2Q|59GKq}{2U-a*AN7Lr-#ke*3 z&c{^yDxsq46Ojx8IkfC2K)xTW_3pq*#^;}dIrW`Q*FzY}|E6!^!{r)!G8Giutn@Eu z^XtTos8EQ{X54&bQ;t80Yil|t_-Xozlj6T7vx9*9IHh^~dDd=LCl4V7^>@==7&C@* zIguG1^qtVLLLI)hh7;~n>Y=F~ zQ0k2{bR)~a7H_2x=ht6DvcU7-Gf!totZZa+n06RGenKk3hxdS;&RBuT$=5)HCi=a0 z8a>Yy(~)AUjZ{~`rfCDK|A7rfWK&_*f8M1vzzwFXr!YB5zNSxK=smcp$f*vtnz%oZ z4zh*PTxPbTr5F!s@lBTO1}v;!d8|lGpL@_Zf=RuV($w7-XXTnT@~ni#yhwG%2iTEu zb>*MDA+vM+F0_u+Mxu^BbMDf9=PtwCsA3iNU~4~_%NLj>;tN#B7GhxQLQ#Io7~W0- z6vCL&5HIt^$F6;ABrw|F`ee*wJMNT!G61e+zOC}_2R*DLihRH^weSUF>U%#&?)7Ku z^<2{9FqkFvph}2mHnn&$k3j+yN@)mu1+cu{1b=!i)8`NN@H}V{dt^R)cz?@nBm>UG zV2LOHYlitCcHq1_OP!3%O%SmhNSB8bB-~J&JlVU-Muks+rmoR=6v_pzrN(H4bcdfMJEg@}ANs&{`GL?i$U^F&3*!Nk6iekg$manL1M68 z!dznX3Yuy#pL->C+M(M_k%Bu$P}&vU+6ZqR8bjTP|1^!_$jTJP0}0KoIAPK@T>Dz7 zomfh|nAc4#sX;}>9a&~aGN0}P$)#bKeK>JR+!)N~dNM%FM=vBpPJbFB zyoFxl!l|9}V^yJi{1Yc-YB5!XE200%gAC&bI?n0LxoJI_42F4a5cvqm&0B}9fQ|r- zZf-E<2f<|)ABsH(xUmT0Zf3^J$!Eu+SG!N#BVZ3t9L@}M^osnt(b9lZ1Y^KDFLB-% z2WvKGb^<@~UpKv?wq%!JXLf;gJYswV_1;(h)dYW%Ln1Rsh~|)S+=y5qL`a-Hw?3?~ zs#o+4PE8^^j7@r!fNh3Fj2+X&CH_&PW!)^Ox=3@TWZpe(uww$mSaQ1Qp385-U<`>| zfoC(ZoAyy%ozl9??_0Q1QU@lnea{%(blMC+g!%iOHV8^z2ChXAWkIF9^nDoLFTwRB z>QUVI{m?=iPP(^?Kb2~~WRN~a_{KYefY1b7gA=oUM88xPW_++PRRv05$>AGVoKrwu zmEMGHOn2R*T;X%Xc;1YlA>RPZba3sSxYUX}Y!mlItw$xYK{CRJNOeH849>c>)(b7G zW9g`cwqewG#=P(){h6N4$eI;XM%5h%(6oFrUPQJ6RDsvp&s{bM(Jik|IP?$dbfY@s z7hvNxLz8ZR&a?}DG%(+vmIbQ!ds#LhoCkgWwD76^Z9#hAkX080k=$dpTyqL?-YvF6Qi@c@PYv;d9Mrj#2aMFYa)p@&(;$4AC8Z|}zp<*>;AaTlE)+#< zZp$-q$+{|v8O?IHpDo|@TH0C5_M+hVOnzGH^7=AuVrwq<3Dl8+*xG0} z?J5U%Zu==l74S4(mOJ5;eUP1v079+e)JpV-qG5eGQr|`8;!V|XjlwCcf_)qgZD-=E zR3Wk&{Nxbs9HlPw+3g%S*C-N{%0r(AWF2Kx4)u&81X#(OW48{zx0M$slFNWnymfXJ zF|y2rhBNn2J#)AbWm}1W8)V{BkO}$niZj zQ*dOD|MFs{z%1ued__PTx_Gb3IdkvregBnW=RmMgBG@_RQQ29B1K%LBOzuJo$H4(- zIB-57RN11MFOsNw_Z5Y5c5ySgc8(zoJ!nqM@!<2k_wav7shE>$@H+EA0H%M9dNw36 zBEa)e(Ja{VD!__nKtjU}pPQLJ717jjF_&~Tr{oqZ>5Gk(f81U(ttQUcRhN_I;{^-M zh{!*4qsh;ppzVzyK%;!F)LOPaxt2{IJLw-X3Zf>7Z-kTPJ%Iyn}vYmgOmf3RewEwYM_|OAt3n$A0JUtaVR@`;$AESkC>whMmY^P zwRz6bG+>!B(W_{k}@28I2qbe{} zHuH~S*7#3}8*78D>RTvXCGb**;H7@HZor$tLhP|6)@i?e-aB1h4f2gKcNLxS?}u1- zxqa!!SWY+qpw#IRBL68W_V=F!GtG%@Sy=h%j%_8O0x~D!7uR%|ckVb!o?Z4kB&;gl zU6J2}HADF0vF_opRIu(9u}ie(QI9&Upe|hVcvVJb4B~c^k?%Fu5dsZfa2#BdV&Q@e zE`t{uL|=S`=zU1WgH>xkkS;rvb_0~{az95sS-#_=I1dXhe>=T(fLGe4`D*=WHZ^rT zEmv@UL12Ee^;Y$BO3TSpJy=9RuVx$Q3=M~DUwin=%gI*RebpgU6jC_rH;t!RnKZ3h z<`a_AZRNqN_Do8_f_ESvi0p=K#!Iq`=bX|kXI8aD2l>L%3!MZ3O<9b*1Z z==XWoj82f>w95)QjM(A~nFrC7SWvpn?ExOfKId`o!hgBwyQmpfest0_+b*i{dNd$H`9zsG*19)d_ z;}_kh{QmxDWkVe&S!3=k#ee?G6=uM+@ZJZSMX(y;%7wqJDKy*r(q8KDPXXf5z2i7= zR>A7wIT}-FR2y>;F3dGl0gM@we1VQ$4K8+I8U!1{kbjJ*kz4H{a$LlgB6jPDOzTZV zopzTI3ztQ2EzoAaCf?BSJI~IFno5+B*j%a~!wItdzCt+BXGe9vu(HyFnDEtabtaLf z5`T9EAp~CtI`DU&VETR4+D$UU^yg}b;m=ioXG~+>|Ic|-h7{WWxx${_Bt4ie@_K=! zCdN!0?F1~O`N20CXxe5@n?Hvogv~R++Rru1!I>g3F0KCVNRjp*slEME5L$Ib@sgB} z5Dg!4lBwg@b;gXJS@%ugo1na$HQ^s$D&$Q|sGnSg=9f0?OI4}UftOZkPV*z@jQfSt z9T1-tGRO8#+SPQ8Ox&tM)pL}P;ZNBrUqHoCLZBpo+sy9&T=8?=ze$}HLg@Wq@Bp&U zdLJ+%qB+QZ<_@sRM!}I7^d9+UL&+b$7BJUm|L9Nz%G5Pc*5q{B4ti1-ygY_9QSGnB)8%0gtujh7}0=^?oIara1;1Q;A+`o zq?*rxk4G`YNrp}l?CJW>dAnGUxd2OOGwIt}JLu zpm(n(T;jg73Pu0LoYmAf0QL-#e?6$Te<48&CJfOA5P;V0bGvl$`LQT+^+W--Xc?S; z8+mx|Oo6s-7uK_^f;VQR3-4!tAJH+?#GI^7szI;EU;g(=`@5fguKE7alCy)&sez#< zQuu72F^3ZW3}c;B_U3~Ff1PVKPLXRi?Een|tNDH{KLT`;OCpv@%o)I&(T&QEpN-A@ z0nHemez%9m+2RUu+~A4b$17zxKQP*TXse`v!`b2sMv4QZfdYS%WVNpuGs47<(e>kd zS}zaMe)&w_Fem~vjf|4cD(5klHRvhlzF}#!m8}xV^Pp97u|N#93bm36e9>&xs=-&^ z4DRz7<}M&nH7X!k`|nvSp%J>fZKe;>40**w&`0olsP3hGRjwep;_D(3NGaYmO>q1Z zwu42SL?ghk&SfRwk>fy#WtkQMC!>Sc8OX7mF?pGFcbsWWd|G>zb?3r*L2}2sQG2{h zj#OleI)EKhnfasW&%6bfofMu}YUb=f)VebntJDh)x=ZY-at|8aWy6^KbLv40Ro3Da1)q5{AwG2_qI( z8FT51PU(Ach8f5kX;4#V}rHP=TEH%1N0ZD_yON4O7*9uLT)XWDO)Pp@t6 zwKLQFL?*}*VU1qvbJiU?`BKZwVN9Te==6Jq9DmCE=QH->vIG7w&aA0KLL4LAkm9C) zggC;$AZa9MSm1$@zH}(skb9u-Y2`W-mdLAb%?M^>L#fJhfq(4hn0lh$P>T2dbbk1- zU=yH`Z6S(+x^a0zbl=?I7ga!f!zRy-1ro1a&=xjmCA$jBq)F>_ew>hF6^%vl>MK*6 zl?BSjot6RgK7uz!kTGfqli3M=LJ$HYp8wa%KzY9kI%l^uUt74{jq6NyM{=FEw7yQ6 zYG@O~$BIaLYwT`C){eDqcjsYHNnO0SSI=CXRHY&J5L89$CXcMlgKA4pNF|RMn%HtC z&A%b_vKo1(b?H9{^uX?j;Xqz&J&L!y&k0!3vD;=53R2AJsowMvrMWBLR)%b5K@}bY z5N*RaeQSOQa|fvq={AJrHtbRU7LH?L>=Pw<(bfOPjyJtj#sV%UWoMq>Vy?Jt(+?D& z3$y3Qv>P=6BxD3R!jo>&?5#Phl4_Xo)`16X?4-Gf*i&+F_WwysKwB@4i1e@38LgTT z8J!)7k2Uyl9j)mkiW--a0lkiNSO|VOjqH-hd3vB9cR;OsfM` zoZ8tiBYmY7vwfvUR{}&!=tU#OVDP2ueE|`&J+s_2-DC3asnGDqq#Q73cD7Jh_@=3% zB9JLN$+WeTa&8W_hBviXR-J^GD~&I6z3oWAI6rI0GH()7L;gQr(qr=k7BeSUMJN2`yX;!rSb_pGLBq(!6xi4xSJUC?M4r0~1v!G8F z_$cT!Bea(m}89ZnwszA=~(@L5;X7&UJdd+@Yn=+29U!*?f{ z;Y(e}ENayg*bfOdsD`^rt_Xkq_sNA#ppndOYF=!Iu&}s61W;u>Gmt;PtGQMAb%;sF}$DYwKXMc zgFQRTHZLJICwVU4COm!FW>`rmhUDKq*Gg#SO2*E1@@DzThSlgki}8n=>to)Q{4 zRzi6^x23;>X;_}iO2Inb>#=gP1*{=#U?)UR{)=-3UR!O0SJhkscXR%o&bO0p6CUP- zYcp)uUrE zBEc|o&3p#BtWW}cHW5y1ao9}t9g3YG3iOv)XHAZz)t0N8?7;s?ta)M3bB(QVTwaDa z{=`j;PB#;^Jd0MCV;SqX>EoArxV|$DX$2w9`0+jL`YWl3Rop8nE*+yr@R4b)*4r@K zW5}ijMCa;k4Lpy-z(W?w_GZv4aer&z9Z!R1SRLSDqwpIwpGK#$pdXG&`bCzpZqs10 z$ooh~)4p9Tl|2HYF^)c?uM#L_{}QO<2s_|?IhBEQ;-cK6+ITvUe>7zs2C#ancO6%n zd?5nW_?@}@C&Aj2cMg@T-|-Mre+Z&7Ph%LXq}#L93ZolyAfgq;c>*S}0PC14L`O+m#rb?ARP*GbGh zm-#nKGv!RBvn_aNQ9*Ui)W@a$j&#k_9%BC!ezbXDm<(8@Awes;UC04Xpe<+~@zqzb zMK}&2QpL)ZCqSjFPR1GQe3?P4%S_Li-@NUiZLht40B^6Dtb?hqo;x}{n2D#|Fk!lf znNQKvLCM`T1a*}tFL!9I35WW7d7?}7GHuTQL4z!g;=HdmYr%0X6qmkpobXxxaY+0M zFl77@@XOy^`sCXsJcJ(6l%I)l!t@*CZ!U~)moIb#Do7a@tQ0?Z=_IwrQHUoe6S z0}*A=p_egl90inYlPKsH9;~zFv^7tbd+sZYQXkRrEk1CvG~#{nx2V!A(l>NNvGTss zyNG?t37cT^^k)i3qDKu=L@^w#Iwt;6!{JO2x zgmrGq`k#RH@?ALrWR5ISUQ+r+#cv8v*-0X&<*3?Ux7q;4FVO9d!9#x08@7uyxQH+I zt7pzoFD$$)o<@sb2}k_YCk7a;lyXZ%V4J~^hn~qV5AC%3AE`H91Zj=-|8Um0X?=jQ zOatml?B}gn(e_xUU9ESlXs0{E`x*}sb3?N>7F&ur+a6fNqPcbXr1Hq-oZrqQxToPO zz`?vsEIMy*{|FnihopDPU90A#ytM_el!ieg<-if2uj#|$^H2K;p2Z;n>MTCRzvh#Yl?mzf~0v=4AQ_Uo{4wYb_JL{7;hv zNe|HvW&HReuB>_gNkDU$;79|{I6+<0*R+i3Zd?=4@He&kb4-KPl{M0{l~xMe2iGXN zfXDtCRfCs|hOdq#l)+!5qFOFGIX)6|9% z8cCxXS_gSV&B8wAkKg!843L!XZU&e=q>g=(fK;$H&!3?_Vad=t2@ShnQCOR=&cW-||Nc!#8 z#4!3oP%&AWN}!pFPeDkoCB{=Z@?UUTEG>py$!edP;!Qj7sf8Dfuz~0VYg4X& z$kTvm?3K+X0sW;J88|>GP*x^Z?u%v6ZB|cZG!PE)6fPOeMH4Zdg~hR+^2i~;MH7^b zfX2Z^J@z)HmHhalWGO6NWkOS;BSJOo z66&i;P-Z?+Q(-FoBGNLWS7_diN;(z?<_@W&My;Ky;9H#7$7Ik$<6VD6;+lo4VDvCd z&^us+fIzjz9F#2VEH)sBxQr%Sn5eAjfXSART3J>=Iw7Mp9Im*CRC zNd0x%>dPPKdqT@E|94Rzz$`?x-P&b&`1}DXBp8m8do)tOgGxEP z9#bj%MyOUX7kb4}&>v%6Ya{bFhbhUvUkWRB>8Ihvg}dz7=l;|>?)ML>G_9Be=b8b1 zxI)h%`pHEtm52i>(cKR^DoTQB*5U_;n9blH)Hxq%$yY=j*;C2J+9- z?c71%VC=Sci2=5TeCjPP`S>6Wd*GvtXzGFV2fqi^hAhbJt9Y~HBxH$x9tJ~|K0vb+^figtM{8{qr5i(EGVwnqlIy0NS7@tc@_EWgRkRi736M?m?8-aWncdo4WueV~ z^O{WaAvCAHvb$bD>pt{PV;{YC3S62Y^(-Ms(>o*PeGoKLX(qKEab;TQ2kGTC4X+AG zi8aOELy;eLuG_p=U|WS)vkFXeX1xM=K99j^W?XhD(}Dq-G=D=+>@${riIA9C4=Zt5 zr*$5jPs?HQcdZ~7tC4dTvHT`rc5Qmi(Wlad&wlVYW_CCTIOe?*Pc~CxKyc8MSHOB; zBG;hTi17OGTTqAmyyy}W=5=t+s{C17yBbN8cuB^e8w7*Q?dEcBq9%@cQJu1HMe*$m zX3g;vRWZ*>^&R%5RP}4(%_>3ABr0`quv&>MzN0#kOO<^da3IQOc!k9kwbw1MO||tO zMC&?WCclf#HJwh?-@Pxv#16pBbhW)bZ0#Syow#(EZZuT?6PCi3MXYvnx$dVckks1c zrZB0PUr2Dck})UUjRZI(OSohGlXz=n3OZtura6LYan6(Thv{l#?>xlUV%Kb6-hifj z@OvpUARPB3{+{Q_<3WdVY)tp6!A-J=8bbHMmW_InBk-UDcCUxrT5O=#@myAY*3fN> zWFAHrG|1@gfI{N#x`*I|K4OIz1@jFCw59}eN_^^x&;Md37SY%fS&XTD{GJrhs6Yn| zlYDIt**%d-H3lNjY^M(YDcuE+RdO8TVd@ABWQ=GP_1br-UBAGZHI9+TYA zmOf2V;ky>=;?tU}p--!ETNnzJ?0M^*9ikokuDNKXhNR5X16Vru?3?e)uVUoInTLaz z8i)?4kSoPg46dd0Q^{(FY+HnEQ{O;KOO>D_qdwSbNPZ-A{(t2>srM-r^X}8YKBYy5 zixJ9ouC$0kHDxSm%Pma=i{PZivx<_?c!hrAdp8;-DV0c-Eth7m!P8hT%U`&d5FD7j z|EOp7+MNo4hJdiyEbQe|yl<(}oG{i}be({Hv+3=4VV$eK4wQM85Q44+gqS?A&D+^Z zbcdSh&r6|yyJozXL47){wrQ_B6-!&a#S6tua(K^>(Ei~!NE%B~zbA*RhID_vFM^tc z|A`LOIDJ&}IJClW`DeaTKxDf-2-EFdbz2O;)x_=DBFdZ>**;hG(xt~WdXD|um`H&Y#il)R(_d^E&eFHfaPMT^&bf!&x^ zWNO!8dW-w~7RU6a{P|5e+SgX8rIBV(pW-#(ai&p@DbD!KAjnj%3vXh6RbP% zM)q00%+iPO5ew|=bk6Qd_vZxl%`NlXlvyIgVe7vdQ4~;p(^HW23hwK*mz+#x7EM|c zOTUd1;HzIr7IfEt#WXJbQ9iyq!Ba1xx*PY_ooSMwzN%#I!=#m8?=-z_ejiQG7btynHglGC6Z+$idRmm7cm`Na={VdGvj4#m6%u!W3P1hSHCP zV~YB}(v)1S#B5ua7G%a6_jv%5TeuDIftD%fTU?pbuZ(2@54m$VmIil%G_CqBlisP| zW^p9(6yh$F#`U>6^@`T66IKhAfrEhn?idjU1<4_+>)H-y2~EfWj}@>@6Bb`k)w?SF z#0_PQ2im&yhHwbkzZNH%1|c^TcakZPFs6-ec=g~za3l>6#b>Y5=XQ)8Fn ziiro2UVRrTi(+)<=b-ISLFg-1bxBoZ(|`gD3U*hAR zwh&l@0WF%*_tmz;RMi>yDsW5m&vuW%Y1}LZJCZ@_l~V~*ehB} z801^zcYK%%z4OB6iO;nw()mci%N-|8EiUCr6QIPf&XKMt!>2?*)n z53Etw`-tBq4t@jiaF5r|Hn(`<;M{5m$GnCP z+|kh)F|xL8OeXM=JDMGAICW^+i{|5ln>siR95i)3I>-jMbz2NGqc0R}YPY#FtE`ce z1dBS3f}8%$D1(tQ7^Sy@I{B?ATY)q+ML{>bpuJy|njVGxt?P#WY0!+ZsGp%gk z%7QDV<_*ekrzbjp!O$fO3|X^M`Z`%_@PqOg?l)I;Q)86Lx7rC5=pUu!)sB~kM|am+vZFPt zrN6e`QLYYFnhJ+%Mhoj!+AmIw)?xdX|LBbqx4ronu?zbu*uKt05A1Jpti_{gbv>=s z$nS{5qoOSL5>sMemb=kS6chhM@}hI;xaCoo|mG^5Uji?aE3> zg5R1MfDD=j2eykl{O%vPzDe#iP9N-^!e$onZ%p)z79~CN%lt;AARU#N^Go%WZM#Io z-rfD6!uqGx;hmazuejX~59V#rTSM0pe*q{OG>IsyaFoD-#+?e47WgE|)7c)H7G}-c z6(Qy?E(T8(^LHdFkK9L|P;oH6PAau3m3-R2V-3HGgecDxi4~QcqvoF2Md&MdBg8fI zH}0;z5#OIEMS7;nXEOiwLbcB4@Xwb9!VGTHhJX6+o)zY~zgk}vO>+u4mTBxE#hU*P zTG=jSNNY216m*oe?CB;8UJiku$gSCkI`ZVmpy6(=rr}oI%}RL+34__T2cvq;hF~bZ zj)kZgouv^8xO3SsF=h@NMV$ihVFCEvqBG3uOxtpLCM;B5LdciL*Q)mE!(UCm-f|L- zZ|jh4uTE|fEz+y|@Qevvf3#0G2<9i|r6sgEuAqo< zs(1*kMaqX}l@P|Gvb^&Pv6+_m)Im)Kg`(V7H|}^LRW*};OKcl7aidjXdu-M7iwHit zR`s*lnej53;)seag*1V+WYT@CqE6iD)?*p z&xE76hC8`7LEE)KOPKnzN_aI2Uxg%E{X~D>3);KHaQ`dsbExl60q<|#c`fO3 z*f@!W@Yh;WO_}PC7Ms(j-kw0TeG6EUf$@6f9zGNr&_GK0jv-ud%Y!Fl|rqL zi_4wiy_5nM(<;xrI1%Nv%NEze={Jkdf-hc?c2dOM8oIRp`KdOhRfR|^c4MJ@Yn?-V zV&{ibJPV_-f$!#~Xn~iN|G0JTqG7V`Q*2>LK1k|twLk6fepRCg>d`IPelc8jbMgp& zCx>^A4{ne5y>m!(Y-gF|7Ob)kVnm^<>ThJ+6y>ce$?7UJ6YQe4V_nCysdLh{U~gnv zkayNTvJXy{K^`>x5reRfSHZc3hqv-wA*`L=OCikZA(h>rlZkba9|9rRVVs`b$O<@x zU{pUxURK(p(TL91p+LCsKnAWoK6^IZh2OnsTiMYk(i>eLC3{i*&4u=b{;t_pnx3!FGw0F%>z< zv!S7PXN;*1VkSh(Yt{8E>HDouurc*Tvo%CX@uZw?{@FK}BU^DpGmn1K0e1P%e&kBl zPD?lQ;#qJZV~Q<3Me4o4B%rf*i-HyIKdI7N zZ#+sk^iQ$nM^aO>TH|3;D^~CK;2(8Me^P#78nckHp5QmoVFjCnK5Z9LWp~?2@_U67 zvikSy)!yy3-&N(Ip%&hH%Zc7}W)r+I8p9azpmpjZ$m&+7_HciE|I_>L@%z8i-aN>^ z@BMrEj%3V~Zafpjj2Dt*-t}r4DgA9`np5{0SfRMZym?Mu14?0elCqeUdN$)c)wdy= zX>0Um`@0EoVn0)0{Iu|}cA5?_6x-eAKD3m}j9V~fOw)FMt$r6y9E1L;S;4BpI6s=< zXjzg~^^8D7iGgmpSjw4n69+(|`(54`zJJ#vL2xR~Lzwr19V02ySEEZ4(3D;R8Zp$xrA%9<+*7 zPe_n0rRzfXk6m+jyMWly`6JCHHZ6i4%Oajx_5XP16KK7%bo3wE#&s`liD7}o0LP@O ztbglm6&jekbd)xD$2)XM%Z^DCzdIhS1-`JtR~fS>i{NZUk7tV)SZ2Lce>2yW5`zi7nGwedy-x%tj)yG;)$Rz)j zgZbUo5NuQNKSyj+(TtOx8pY#V#)GLAgMs6D179V_@jpk*tP^ZgVb1Tx1HY&?>eTp( zR$B7xWXh8bY$uQ0k2;+}OX<<5N}M99Um(*`G*!~NvY{#$W_#ji8PevKmLSijlLRmZ zz4LGLz(1(z3f*mW6vEHuP?Qa)M3wT(J8dngt}|5NG?McTUt9TYDJocA_kmBNE-Xtv zgV>oMXMxw?4(%TTpN37qH<7_DEKEc8j_*v?a|+Ol(fwk>`67D&XK>g74zBqVuHN;Y z-s^&mXwkA{l_q&xYN<@FdqSHl#HX{;rHO*kpX)QaK(+`zEwed~lg6Rd7?d!nFZOs( z-?Uv2(o*=lnNw;xf~VBr;hDQ-qI+uqB+aF_YT@?gW0Aa&LR|gBlYPLYvm$gV+2`fL zVpzxM#B}vW04#eQn})$n%ccJ!kai?ur!mh>c)~BOZ^3)5{W)UYV()`-0t=6>DiS#* z^zmpP&))!53kQ$EhpwFpnNdRAL3jc%^0>R$x3~TKVHCoG(SdA^?p8R9uMb_xQjzNM$n07`(TNpgT_}g z@Q12C8%G($V4sE(!g>d{!CuUotgGxXv$I>(xY9Sow}kqJi<$OtGnU4d$j$4?W#W!n z+NhP;@S4ppDI{^KK7UlZ14j^b&(Ud$>&a_yqbT>;4-jV0eLq#==ynlB{Dtu7d)YKMFF zNXi$UQV=z{M}3AZFnB_%QxcJ}S`rZpH$Aa2)V`;(l|3P+jU9J_RIK3lUKKmYG$J_< zJG3!$S>m7hjv{y{sxqKf-3c_&lb>{jT$0+N#!Oqx;9sne`Zf zj1R5-=hY}NKt?qdPfrC?2XNGG+V3n3?J2e2PFC&8nFp|=Kbj@%4e0~-A}=NvksV9l zHl@{nwcU%jRVefy{4~};ir4zO%WbA!vP~Xm3Y&~HjU8(ydd(CXX#WyAaBS(5nUc@?<$~zje3KXD;k~5@Tbl{cghtv9OR) zacvuqwU0PdVT^k@(V@@o+#4D_`d68>W;4dvKlb!uTBE6A1qwwvAU4*7OY}6SL4Hvo7Vv{ zoH{F91c{O;P?9dtkKNX2=HH65ZRLy~ zT3iPw64QK#T^;*P&}JO_+XaL^tF!8}W>ShEA;^mqf$~>I&+S@8$s3v+%ieUQaekrB z5E3$r4tE8;n&o_-^GvU z>Z!<4GuQY%WaOn9$-eSq!s1?S+?d|?EEJ0FSRxMfHN_xYJr|sD6)b5sIzfYr-_7Hx zHRa4r4QE-AM?u#U!!5a5kPx-ytwpfgsfE%uvpi7aQ#B_P)Hd^MRCc!1)KCJG$KCiv zEJFVqtId#w+d{;Iw;T<8Rg#P<-Iqo|7=rBI6ID}y*m8)O=)PsFHj3JWARb%E6#t%L zNX{b)ec&om^*_-&^FJBX6dw9jrJGb$s=P1;e=slPlkHike_rrN5niQ>;Gw1TLm`@v zY|9=Jho%{(wK{X+#5aS^3E?k`%~kDrOiAb_s}Ci@nXt*Cc>lsrj5HCEZpgPS(xa}( z<&~T0zr(Rao#ParG5zqPYOFKY^gYZ8_=Ti4_)`4u{$lcf7_~$tLGL^E`X(LN-CxoB z{mvAVzV1-)i?Afd`wfCK25C6CySA}s88Amp$l!uo@{ABg= z0p=I9g1`AaL7SR?x009t_7`+I6feDH*ma@*Nq&hOSqqYVBna0GQGG4R(Wn0R`(3L` znvQkp-JX^ULp$oA!OdstMUTisZS*hinib~_(-cb{Xe*MJ62Y>=oSpIuKdQsaKKtHf zD{K45Zwc9dCljf!fgHMSE3B?-@w-W)v@eIGwb=?UwH=Z$%56VbjV^Jb>9d3&iygnT zEnsI?unJ?C1HiJkpMTwgJc*8T04yV2lmanRWQAywOL8SY_%}P}x=|9DU~9GATU+dN zIv&@CL)}J0f9>#iSbxQMAq=%lD#Key3JuqQu_#s~S2}bLQME9%1Xyhxs8KNq1Rpbb z6$|?N0m>qGeh3N~Ffx;TOFJVoqFlFL9i6_`8Ohq+u^qOZ5p%;h2cR-onSM3K~j}+3{F^*v}Qus|1;Xa4>4kF4;+zL3+ zriXD8oA)E{N92jY4+KZ0o{o|sX*PKR+lGs7#h9nY))C!zFiBmPCBX#4NVhg zG^?6APHBZIj!#FL6er`i*oA=BP{X+G!I}k+v*N_hj47;9MbFWY7sc1Uka)${qfr0* zHKj*jG$a!5=@kbTU>`_OSWPvgkekPOEOyrvBH@P;9`h42Um9@rI5KUU#_8%Kf~)Jv z!Bfr0Q}+TYrVDCP%x>+`=c*T*TI-&H-6G1=jr!;4Zq+Hj$`4VlB*>ZyLj*_uqiNn* z>HZ6^di1vpsB8@MJie#WMVf#A4=}DUzxt=LfUOHyCc64I3Sns!!helF2!jY z%l~lB-%uM7k7(Duq<0pGvle0eOhqaW{(G-KLUw7MmmRj%FyOt#u_)7Sjx5O+Zx>yW zkAN&W(%(6E5?8@Fz|T-S$$uwm5ffZIFqJ8^G(9+exYg~6e4)D0q?CL2n)ke>lxvA_ z)L@I0gfM0v>SaHMrAn9~YypKR+sE`Nt`Bk^#B$ED&Suj~OGEU7A&R+dtb407S%p7Z zv<@r90$SXG!>Ii%!2pzG(G&Qc|BI)$42z>_+J=L>y9al72$JCL?m-uKf+hraclQ8` zySuvwcemgc;G10c^SwX%*xlKg>FJ)T?y9rS>L!EJMA%Nn!Ij^hPIk~Is(h@Ubsgx+ zK4`~NV9Q6pX4mG)pNKpONWO3!2h#_d@|crEr-3MmIfKZD+?xs-IHN15V65qB|Wwj(t_vD{>i^x^5gLS-+e0 zuZX_XcW<6L1BTFtqrBq+zx#bo-0Q|tutlTBqG=5|AJHqm=5$Q$?#P*Q{8OWguD##ZI?lv_uMxPyT@^W@ajqc!rKT4Z(~)-(@zPt zoMj&E#TLzBB|oLRCV_Dt8zhrP9H5po9%qU5MZO^xlKApN)E5w`>J0WSHM%92I>(=9 zKGW_B*ANIT?HGuzZWd%dMp=AErsr1FeGxwwWWJqF&1M=XMM3|OIqg2cLfjDIg?*{% zv4$nKd6jv7ZyfPLZa%izy@0)2N82IgLltRSSU60v=5OX2K?Tw-v_QlLzvhUQelpqQIs2XKMl*e$w z0^`K4Vr>b~i0(9=-XCiC0(tsGY+KmDKA~=T6F=0<<=Wjule6xcj=cif(Fn+#HF;^D z^||~Pppct;Fj*AHTpa%70HS8n{qGi~JZ5Zkk@DGjM4jL8wl*LFS|;G_A9qG~_Trcw z?Q~Om@cV?^?}93<(wjPrNX+qSe-Ai>4wvUw+eSC6*)8KsQwRRnPbDj{5GB<<133qK zm&??8PCTQb4FAU8ASj(h-PXPzb;angYl&|7j>S>`o)wudC=SOc#?DpKM-sdS%e&vl zbM%UnlMN}O^%wLc=^gJ--v$f2W{mJu1T;BQ;|soH(B1zoMm%NTs<$(HH>RZkS{h8ZQ&{A1<$V4~gOLYV>nVd9+JtNhnBqX7rTn@<{C};MMht~gI>wW%RwsO+g+yp@kby_`!j;{8txMM;55m@EC(}F51k>d zGFi{1W2ajtuP|24Aa}_1Vh<#d2^k2RojPV4H$oWl3oq)HL(!)MWDgAm8sZOqKQ zx1a@i%?@(k>s|nSb0hBcU8Aw;;E;~iYZOp)L7(!|EF|t`C!h* z=+c+xDcUY)u5*vN&Huc}7+?F@1fP3*<)e8(FWV0(FVW~~WplGRqmY8GW3=r(Zi3#C zdJ8^jx`c|5EvgsZcK6!5SP&g;TkWyPM1}~u!yAWxU+|&y`&|cajOPl@Dclv^)MftB z+T`DJG)Gl=l?|y`al=DO(EWvMS3yi+Oct=2py#$IjqohP4Nwy9Chx_UKjea$&dSH< zF2(6wFyd;33zTt9u}85bfIY``kG>loPh?J!kO0`_t9`DS!opBmj9HPOFs2Q{RUGzW z9d8=X4kbJORopM0+c>bD9a$Jd1m1KwXJzxG*HgDsb?2+%ck8En?OOY+mMQ);M+r6L zfHQKGb>n3!o6Ru$BJYGqALI}|?y?HO5lP_+%1J~bh$nPip6j`)0rm*`95Wuh~#JAJ`k zbowHxd<`3G*yH}B1w)zB@nRCQp6HJzb<_I$jaPhe1ev&ZWc({%qf%|n@WTiQjP=5-rtQhF=b3(~R8FDj(+S5M%Q~YCe^b{yZu^!2e=s zKG_Mt*SKXvhhIMeosS$>TbSo~YJJW*{55EpmKAwyp+2#l(uweDR9wvbGzke}h;@<# z>^gN%p$x9w(9%4(v(wpQ^`zA`4i5yc64~r{){tc+oUB5H>@m zol_w?Og0*(NFo?Lp@uv2x(lWkWDdBN{_@iHI5x_7%t9LQF;sZ+=SR&}UQ3OG*84t5z{9+@+UKLp~L`rjF8 zsya(1_`M_Ef`JM9w(zuL%jk;tTd0$)mb63F9fw5>>8*!BC`s+=&)Qm?fAGPsL#E2w zL#FtjeTAy+F=DnM3rL|#BcSoE44U&8z-@Wa+ZW&n1IXwTN+Rp34K}C}3`bf?FY3KH zdV$fpgmPJ!nVJu9x+*M=#NKv2QR?X%W!rEohSHY<0`>YH{m?rEW%Me+a-(`e7}m zBx;g<0)KkF*$xUkQMP+cvN$gr($Ja-B3lK*bv9^}I;?F%nT`DPOfM}48*+c`A9`dx zrCnV@S9GrjP=0R`eeJtqCrjEdh-)F zBu^1A(6)j}+r`+Z5&mCir_F}D6m$LS?2SatT;8IvKiN3ItS&|4 zbN!`ja!vkbD!kYbHQGPkO_I#AxIXD3brwubWfR;JO0Uq6M_*ALO|Os?mn7+Apq9R) zs`hN5t0*}Gz09`7Pw=m2HDOa{HCs((>l$Ni@qs=C6-NOzA}Puzhq!VwI~#G`DKZh! z5qaRXz&Wo1FTe~qXAkM@D+Lhu76%+ExWs>GLJ~L)MNH72hGX$LYf)6*OjzESf(XnL zR|8B7Rkdxg0b)!<7RVmFzmyt_^1RGT2zy5k7J7mzYzUED#hUTh;!pszG8zUFYx%z_ z+?vlZ65AmtBWKY9o}!S1;gphUq9U9GV^gWs0O40V+}sJbFLsiUnA>7z=bh2Yu&1c< z`zfb3bQ>~@{4}YYHTadolA^pRp|Hj(?qtJ-{bR%MfGsW-f!SAzDh`MLikOa0|2%;+ zhzS@};Nog=^OP;n5Y3Z5Z!e0u%Z*QPb(LG4qz|7*eprZ0AJ!Gnv+Tw6il$LSXx#)m z$$SsnC5=|aXVMebV%BL5NFqI5JFnleoSCm{K~8j4AhRSG)@*GNk;de)8Fh2(3Vru= zDDm`=P-{mYzZvv^gEAMJ?qpe!^=On1a%&t$Wk8N-l^E3;gVX`1wVLd&#gz=5{d zhaalO*>6NiSXd1n<**naT^dIm%|@g1W=~t?!9Hw6VS2GJ7plt_odTn83o*X^pD%5q z%C9H>_O$9M`shH9&BRc!cB(?sV`e;Do?G+^fO zTTXP8yIAkfvkRZ4|E#U7h?%n!lk;donN2)B!7O5PD=~0%l}okw14d3n=_#WeBdne6 zurpnlUFCsQJ~Yra`C4f^qxW<#8d~5d@0fx>7`(1ydYSIoPbk-zx0_Ulao`|k1LH&# z4tI#G;UJa)UI~^@wiR35wI-sdwWRQ7*Xck>18)RNFY_j}*o7iorvAxBAWQudhmg}g ztx&eB(QbL7)s&~9CJzz$5MW35#<9BF@4GCE#=J1ZI8@fT8>GVxkwc;^J_c#{TQ7GhZvdH^@EIfwL7RG+unkDhhO=LJ&0~}gjF+r zyh0A^h^s7g?8}P{7tex6B{$OS<8;Y057@bLqID?ZCFJ1%y&8=gprjE7yLm$bTm7SI}G! z2$eAZKC8I!@R1|$Oer++6(OirBv1LC7JKwf9qE;7g+KW~#MmzpG5-mp%hgRikyAuo zGlPs_Y#hy7KZ6W#OixZ?90ZHfB zCY$P@1@P%iyk&vmWKy$SL5pRjShLHb%YysuU;Ze_nihpeJLFeKJ8=Are@NhKvvn~v zIY;&a7U|__i;XWGzuT*8;%AUXeX(`Kemu-d0(_bTKAPwV{{Z0gId{D>*gXdBmuKW?qVI&Kgn&=XjgTClUtI*wmaba)FG*fq*DNRtNrE%A{+?9ZAR)catL%5Ilq#-@q5{Rb4$fuB3CS34yS0<^o&2J-A z8o~J%zS4;M9~FzQV};Y!SHiq5`vf=5dpUhI@;zFDAI=EfPEZ`W!J%_1-`I8t2h0Lc zk~<(L{^nG;Ug8+fuei_%=nwV{f5%4}1Lkx;vAO+ZOPZfB6` z9oIXKb|}>K>YRabzlzdU*&#BS(Xz>$w?64aUtW@39EC4oYrhDb|C5C$@e+-uHV(g8 zztD+s|4s`US*0mY!D-A)>*TqxSKfU6cwvJ6@O$8C|ICYUS)0oZiZ^)Fu*{-!bw<`B zlQPIHvjAhBOfMPkQySwzhajtlj-HYQnkUw248+jVr!>X$9+$BGg= zvhc+)p1@u&-X`rL11%f*oObz0RG8JRupQ@=Q!h+l18%k6I%tVrBEcx~b{Zi4!S6>eq;-;U(M&L$wJ>LTbzu&tR*z+{u3{fsm&f>x%t`F`|! zYMi*9hji)9XPrel*(#abloqmA1$doK0)zh{V^ThXTwkzVik65=UyQ;JJ z)jkheu>wHA*pg)!?HEV5mHle(&QOC-X$OCWJc0+r;`2)^l3}s@+xH@QCCGqd`eM9t z>{l_=KIR`FO1*CQGdLoic8VVlAFQ}^P8Vh8+Uzt%>|Sbm6_^NKsR>{fydNu~BN*LFBsgx#Z)jKYM|!mHncVC0G!$B@H#g5|XqD~R+J5Y7bN z!Z{3dip*MPW&2!TwPu5+)zU)Bc`U#b+s$`DR3K%vQID13RJw)gA z8JSMgb{U-7bjfⅇgJp#y)Z9y+{A@(t3Z7nm_8eq19s4^x|P%0IP33y^HBLTttUE z|Lq#Fels#ZJPVDez%OWxDV`jF09(0rCu|wYAMAY4T^xY;kF>=vi+IZ~`~PCO4;7j* zw+V7T65N*nE)j*@uRxyZA)Wa6B+@Yo;mZ$rNN+-{iZj@1g?QS0$iV!-uU$>0dyLvQ zw(?WUj~HiB&d+28zpuRcbFjyyPl-p=Cj=tXH}_Hp&gC729Vy>T_I7}a@`nLD^vBQ` zFE|C@qOjunHZ%$b<2e~I>L+X$Wp$t7fwu)KATIyn{~NZr`yv|Ns9sYR)C=B)f<2IF zGsXcLN-*FSa{!)j4M0Ot6`HWy#JcF0?5IHk1bV3J4NYu2mIziq(_EOP4J_}kL z6HDkjDOQ!$PY+~{9^}T!{%XB-vOA{({-a$Q=8{xW=AjiN&(BqhAMubNGA@yVFm$6e z!{?HEq?0i&A*Y=YPygL+7WkZXHfgPwQ%GwhL+B|`U_{v(F<6`D9!Y^O@5l;s~aTcR67%Pb=Eh@%L`^W0% z&+<#jD0#H+Z}@VMH!tq4Li1YqXk|xVogvWJ1;|Tml39!|mCK_) zjqoWAS9(}|Gg%UBjvLuqzqSt2fmk^ub(+{DZP(*HHO}?aSTC0mRA7#$+tL<4jQg_ME0E` z5}Ade=kzW2h48}QY<|N%10l+G_%Mtdl(3tyzf_Xon7YsaVSAziX~=man4WI}P54)UUIt$q zO#BCw# zLKphHPyQTmv$Tozi6NcB!{>ukzp)Iy8d(Vq%=4+^Z4h^0;1LcFe!hr2k{J+LQH<@e zsJ6}2|42m4!@QpRU4&Fe49Jud^Qt)3K6D{XMn8Wvt4^dws4BU^+~htFO=%VswFq6) z)b(}!?dC4qY+DF6n zpLTZ%4{wb0_`B^wVaEh!qj9Z4i*X>Cfx}ddwH=SE-#hCw#yV2^s_bW1y3g0BLTSB< z#DNXb9iX!#`oYhsJom*Ic8>4eMys*&!fTjSxhcE~2Gji_s95u!sh7({(c^ueL~}Qc zWxD0aN^B@4b^A_Uj(;(DkwY&UVtz4Zi=XN>j-8^gu^!T4)?e$Qvt2ggnf*f~kaKU) zMScbHi2I)6p=Pq|@Edi=`WP082}+c(_6!n+!5b~ey#3rsH`sOtx(%_K9(HW7lw@sT zR-sX!U4eH0G>#k3NiKnvQGOxEGv|*P^32a4( zOiWxrE-dH>@GeuvwlUk&4_O>@srP;Ioy0g2tq0rs%<=iyv`P3xmv4$MegYmE60wy| z-bXM!2X_N~O05IUjXxC3b2r34-Ox)p-HAb_Kj>e{$2nfwo#Xmm0Fd30px}aKkI;QH z?Mea4&Pr`@Y`1@}S0VG9BqSU%P}GTFQ33tvhR_H;&FF1CUB$n6vx+(m8fJagJzWK* zLuqh*PNuMRgB?3CUiAmOGyY-w#~!^6bv+MMOgqo5Ev|_KMj-TqLL8n~3t=bdtl5gi zr>xED=;&_%2?wS_AU2*^q8$C7U589Ot!TXU!RA%b=A%E9usr&IjqCm&TF7DP(<7BA zg1mD9>r{INzWIe!{SCig$lb}LBy*4Q~quI@9D5u(x3gI0?c>k?*kiLIUTzRzd*tvp2DDF z^WgLGDY&FY(BLbs-RkpjL8Ge6;qpxnO?3Nz9fbUMV}Mrm-;IUtoSs)Iu37~gyHBWH zX#(Q9Ap$T260{Kgp%5c3_Kl=akxoa@0-^@+6z3o#CDcSZjjPW>?BMVl>R(J`Xc$ab zb#CCjM~nkI_Exs;8DYnk$L8vf%x0jwU;?E9rNAAH2J`ZLmW@vC{EPdYSf^v0+Ykq? ziHhrzXaTn81G|9?oqJDpM(?0uL52Z9UBu$mael}xR!So4Bbp6~ z4h}&iI2>70Q^F9Wjq_fs_|zuOJ}f5Cs;)KU$@yYINCZsYmx#y(J(xRsWR@?f!uIH! zInm+AFrM1pBOD{fW@!L>Sl-#LT7I^%=yP@k=&u;?nB z{QN|m4C85E+>!{ici0pdXfl-$R>P9*VLh?u5U#5a;yS%(iss)h$>oxHb(EX6L9Lzpcb4tv@*XY9hwIOSb17Xeb+Go=S*m7Y_ zr2Iq5P(%4W;1HY4L8rJ&?okF#lFbK{`)w$!QQ{d<RL(KON4ep+_ zNiasIBBY-@Re+ES;{QS}4QzkgCttozA+!>GjWq>NDkDIZ#;A=+pIULm8pVL=sagk( zsaho)Ok5RAHs;_ZrvU7c-AU&lLQ=~-YjXo}ydY(nBQOD>uv3e*)qQ4ZMcclFM35;x zKgz#u(0BwqGqhYo%(xy_S<@J6%8z&|v6R~QsnuQZyfZbwl*oWnohO$?A3-uB=|X%7 zdoiNYz&PcIkWn_@M*H?Iw3amqd?gcBg$>)_S5QrD;r|}NwI|3L?!omZF5pK-&&dxW z_y2iKr!Z^sz-r#Szb^gIAJ{^@iTi!IG7oW3bs+E0>-D0;iywu*7*8rMzZ_*M4Bs~Z zDwf%s?l*tq1br8hx8`U#)JFFHk9tG$1jZzyy4InFrF;}Nhs z{yQhiU-!T?!$UyZHcg0YZ=_4TI)-?&O0#UplWLby+fkiw=1t)5`wi8%LX#`*77>2NHuRf!4|SUU|u&}>BFV`x}qSQE?3VyY}IeTl3PIlg0$=n=69>8 zg)2;0a}Z{|8t8dUN}(Zlhu5&mknx!}d7IQ76xQ5u;Ye zNc7}-Wrpu+YQ$F+e{Ja;^7`d|_IFZeeN-WUrPPXL$6r;IDcTD}T?o$kNVVJ3sIE!7 ztSab1UXha%-@+G|kk-7Nu2)nru)$5QLzS`VE~ED% zyGs2Vyt5G^q{viQ;hK?HpwN>P+#8#?yYeHEQ#&JZchtCuU3=(v@^Wo0Z3km`)1aGl zi>#5Ugn+?>vyPU6=;(kP6puEKO*+Kvf7jc6R-H5^QH{2ilWCb-pz=8CD=U>6wfki& znh`hu?+i}uki>FhB6_I^3VNyVPRwPzGF0Zo8r`ldKmR3h!fPRd`0m=j-2Zq3464!d z&k4h3QnLkPB&zo4w2U*c!poxoZN3dit>`1__2pW_r}t=0A0P&&dljw)k8TVtL@56K z@xOW!61~6v;?jF_`+}}`!u(} zC%0UQTnQ(=K8bU@qjs;u1-#b3BOr7{CKP z3Go+H?H+#&AbgFrXthpg{86>B>=xVKMjnvwUzrZCTqQE4{$@_Wj`@+M_>uVOU$rd` zO;De3+9A>;sp8M#VGl+^9enCTIgwfYdO;ro;oCC^b&OOQ$%m7kF%x#1(MmdJw4FZL zTUd|Aj<7fmd5se>XRn#wT~<1F>%gYCw!CXg#xU_Z;q2^+}{B%Uqk^nw}9alD??EnN^>yyH7er#_Ao1C-SOT zYMEA0wh;!z8ASCAS4uJt7(_LpxN`%EBMK(j3`oT*o2yeFi%+Q8Q9QUc7K=s)9nm!H z1h=2+GY&rDDwvSVa9k)Irky5NEf@Nfe%!Fea>&)rAkRr?UFo%c$N8u)D zZX@5ssKEikic$D(;sW&yHlwvjMEf~_O$l0N&K+5V_sCW8^FC=GBJ2ZMRDz+s9~*K!{K1o_vF>ze zx|W>+N=Tif#ITIsXq!|*1h!c`aquy?WXdL^R|5?ufA)D%<}hG`Y{$M!SpqI%qD=MI+wUQ~p0^^YDXUmY?&80(ydB zWqzrgAR)sQDv-YtrG3m!BMWPyxf$wGBiP%k!mx%L{YTqxz`d+2iS%rZE8>w@$UmlM zK#)=?c+{`ieeqY)#k4Kr>5MJj?;s0P351DY38M;|XbaPmP$7Qx)26auflQpiN25aW zO-~iqsmI}gf;B+CEc*V*7lqAlSeG)E!VDL^C|CtO#m zI|S@s+F?R&?fCYR7|ua4vKThf7tp=W475-HSOpj_ZB}n|TYJ9w2-gJ1-lD)#>ca+X zE2PL2#io2-4WU}@0&J0`F+Ue}x zJKYUVc^grWT;K82Ego17r@{Xq&B~?C@!^?Iulnu^9->bE1_O{+0=`$+F|WmTo|D3& z4Cu(O9DRc?!(&t;*W2n`SJJ;ZCUO|lKcarPjOmHz17!V-!gnn)uqL=$CtQg(=#Ih! zFuQsI<0=p^uB7pq!z&lj%hbT;JQ?I3eKVfmW)TTxh`%#S>FMo21hTTI29b>dP zrX3JqE4)gl_S9y#AnAR?EH283V;gX#Fafvpdlh#4jM>h{k7UEESCxO;w}YZg=$#&> z+WmZu{i}9&~b0ephS9bNZFA@ueNs>wQQRkmhB-cEi7d+ z-4bjZ+XhdyIL=~Npo;lZVCsPp3zs2u92=k(y-z94Un*llkZVA1^IxtdAMgH#T5hmez_rGbp*#qEcBk_Vs%M0C!_V zde5S9(GbN?=ZANysa&gYEP_xsF>_xV+IXE~MR8@5j?gU__b~X{d@71i2_q%C7uAvU zum>@~%3YD(5#sr0g|9Z;tG#?N~9HwIzPRLk^$WTxT_fI+ME=0gMBMoG$%0?J=_w}DS{58 z)`Ia=8+vfoc2rl{JwTN~d17(`vc$S&Oq+!?{Pi5~+;C`BQo*hyMv zR%U=sXTtm5F6M+MOqDnB_>S%D6%c9UKT#e-4g9_OgF%}eMxE27KHqR+`*zsNQSA|u0v5fQ6J$oxk-SMF6 zXZiLJx{&{W%++DN+Asz{rvDQ#E2#ng6^yY?Ac0DdVR|n5|3G(2EMZTRRQAWh&PsZ!~zGA&8T7(vlAO zib=>z)#GI=HXC)B*WKy`-5+}I`@dQA`MtoPL6AZ|iq6X3D`-GJVtg`-|M(^?dk!Ss z&4pfyq907QEJNemRgeV4t&s2%^?BJhk~Fq0D{E|7+-PhXeL5GDuxVWm)_uirhO*~* zC(m)zaLC?{bFt^~U$E!dJi%k5qUz(5Ty&|6+RjG3rrhS8XBp`uCk`7XUt{b+X)@haOSAnYLp^!#^lBq||888Tw9v|`HT93y7PJYBfU$yvxH>;W>u zYjN?g#oZLPy)73FqErnY)`tKd7W2}nU{VIcWJ9K>IywQ81Icc7jBCt%ch3)$@{P6n zD8=3&P*g`^AT8GGxyC|m5e7~}5uA1(avP;Wek-#?JRggwOS{M9SjTKN8U4Xkzg zXewZO`~7Heyl)$gipTFY=lkD>&G+Z)ruUaF-W8Ac)0~hw)~>fJ*7w%;bF!|td*0sl zzuS-NId7C*25v2TY^f_AXtXJOOx1t&+WNg&Q1`v;3y)*J;{Ml0V2Vx1IAggoG@kkJ zt6k;r$My;(YU&slk<;#;*8%1w4DOx$`tg?jynfs950mj!r~{6X==Lt#Ovjy9^K_vm zCudZHF2CPrNEF25)cPXArIQl9(;+{k@%y~u*n)u(9~l_&-G7rJ1ZZ@WazhtLQrVbhW0ckOEiUv{@OGW8B64` z750&f|2@3-KGr1$vUsm?fiPxp*93hU`azOB8|g2znwF@fax)8g#BC1E=bF6nfA0^OxfsjXJar12S=19kP$TE zFP%7*LiwT0b7!SdY9g34)xRvyS2dg6)i6xQQz;td>)3e|1LCSBO1qwh3ZpH{54JDg z@0N_>i(GbU>Bdi2+Q;&A+f`b~1?ygk3>QyW{9Jv-J)$F%$G4J0GoN}6^EOCetN zEghAt0{UAO(z&`-j_*R%m;CbhLIxo=YN3iyC5)O|aHV0ZCYIcx_19xVnv>9_eC+eT zE|{R5sWc7KXFb13K{B%q;l5ACAL|9GN4Rdvs%IKN*xDIYP#M{hBDH-pRhb|L;18VN zw{FLllWuOtSm?)=_tMX4LUDc;N=zj4yy5hPPiaZn@*+39FOA`#mc$Eoz4THM!PcPp;yrqiK}cDO#I(-JJYmv;KEDO%PAZX$v!l-fhq ze&qjXLuWu7eehc#hAlZl^I+L_G}pdmY;M8iwYQ;hk{gm0>xXj{s|Gj5`ju7~w=P5lou<%7 zY>XW89U+QjREASc%A_N0dkauPT0)vWi(ON0H3iE+&xWRT(}dn5{oBXlZh-^ly@Lro z_?tG(KX!vTuNb`61q|O&J14w`8n`k*UtIVZca874SBTRVAUwHD~jrV7pe_-OJi-I1v4VK^(#Dl{X1r_qv^)zKhFFH}Kt#D@0 z5OCO)iRKc_=xBC32TXqVo~dFHXl$B7N)R2Pv#ZA%fLWBmt}>=pA=bPL+sQrg7Jd0( zbqjUX;)3&3jnPErL<^=?>dkj#EJghM9tF2o!v6aZvb?tUbGgxnsD8xn2F$RE(qQCm zD@u~yxJQEj$_(mSPnrbxSfjrEbPYj9rk-+KqAG#PA_mY4BqoqHg1zV``e`Z_nHFgd zV<;S(EQZf?HxmM`fpWioJ>I--z=z~Gcd{3}=^C46R{`&aJ(XW4=5auY-W>TkPIWMM z;xtY&II`z||Fm>2M_xkqO)Al&KIGamM&F&YO^mPd0f&hXC5%6BHuJH$7P+rZFB$*3j17XO$DFDUE^S$d7Ju+(w(EXh>80D>N7p^yH`b*MW<5h~ zND(W$sK@*8K*zPeztuWAw*BOr)Vea(BkIOSK%PTRF+tJze1GY8O^iXtrDB5?0vg;J z9Fb>X)mbh6coXUh2l`4E+e%!lV@^bi_rXIizZ()IK7vwE%NotyKHWVtp5@E{o99C( zJl#pUYV^62|3B@Y!(M?>wzB)+gP}anjT7bQ)ir-{^oo3X^!foO`&yrlz+|!U!xti! zm8?}Hu^3fimi0AB#uWoyE6Fw(?q4@*ESq2z$j_K~=Z1~iD5kH~TKd>~*%o`NVK0$3#HBQqUbIm$@~(`H`qS`jKd zm;}>LZv`xJ=ED)cFJy~-bZbRrlV#}eFa&Dd8yq=_SM zB`c2S2PfV&Yz(uu<5hwR)UNbZr0S6Bb}LRO{{ zq`*a_-(#!$4fLm=Tc{e$_FdATVtJiGdbP!+R|dBR`Y}c)JIPR&glrcf1v)`CBknC>`-xUm);9wWZ*#_a$kNL;pes<_IIQFR4=>F zWqY>9B27oF>Fx73ki^N>&V4UX z1)a9~qkPXm+=rc=gZnq<&pD8gPRK-DqfHNuW70FwPmADjn2t5yWM8na zeQ)`ZxvBu81>V>I=Vre5BtOzM7=ji)j`)^u)ef@0ZDkIkzJmI;#eXO+?WDT&4lrSM zn%$-R&F51g%QsItt)YLcx}^;1*3DEg9)j34{P!(?h8<>GHhOvXU7hIq@2AW9CpCqg zCg4hCj4QRl+lV$mo`P6ET&P&d`tP^O`rrNSlr^a6=1^v={_%*c(IwSC`#H<0>|1({ z4!x(A0?Xn?ecxzAbYuLIpSEY5Wm-n1!%Dmh<(>xyR>-}P6fm}tL7WeTH!5kq-(v@6 zMN3Y-LhC*vObg?sBlhc+tWPyB)Um^K{lK--y-qy~>C6Fk*DeW_o~u=NI1K-3VO9Lx z2&n9o`YYspmxx+|bygLH-Za*4DUV7(NwYd$q1{W@N65`tj?WK-zAqidB7!%x*N}Z^ zqcFX49#!2+d_OeD1ZjQ`v)LIL`?-pn@)VW0?-a%L*};=+YI3Q3^V(gfRG*lhLbWX+ ziDAlf$@IHGYQ@P!ZQnguT^+})=(+3?LhyOH)}|@m=C%$;mpLO+0O`t8ZG3fQiI=Zs8ZbVW zQf(U3)oe_dKBEs8$XA&iH#@7{@C)%kJl$I4C0 z`iLo2{b*#X>?a7U*KbZBqvxb=A~35hD*AeY^yAub!U63t#@6QAm#$cQu*JAm*xI_L zXx(yniG*7ybbmjz6QHRIUzfOXdJH)hLL*-ll)}S4Vk=1`jkqtUL#NpeMIguKK7X@dp99e30py2{n^zdZnpCADKs`S9BPs~6e+%;953n5DO)hOW`bG1s6Y5E+K zj6w#ycYE{jukN3Ph%C{yJ}ufUsJ9Z9g?hPYHM_TTYzaGuvjwSofqA( zSu#zJyBsvQKLxhp+9i&%$SjzNbm2;Oik9S@oUt0@C!FAuDoBO+I2(B*jftKn{XPm) z%Y`BoUz|rf%XKTB9-J*b7aR8GdA$$D6s~e6umxw%yPC-ROQ_Z*UC9`H7G`AS<}736 ze)<{XI}tzcTHh4ZXyDb1fDvDaDiuFJBONb5D5EM>;CXJvRYekY&`>bb?#`9I6fJqP zGGk>ZNH}35C3mxe1v2!em^hW^x>=$8@2ibcq33y+Ifv*~`r3D`z2^BH98b(k{gb6M zlbQC(0Y06d{fyTANq&x4iOJH)ZI6 z@;lItRavwXZAtw}Sbh%SRCrU$*sU|BWCm^T`ls}TS^DUM2~e)wK-~MS0-JE?AZ|}8 zJDO~1xp6E|m?s5uO}Z8CB-av52k92x58)JQLRMg*^AmbroVtZBZ4_MN$=o*|B(BwF80I#iIExJ0SzE?_cS5vZ@>tU@ zg$UYMchH6VTyj#&+WbS&8UBz+79a7XCOJ#jWp+&fqhY+{>Lb4NF2?UlpLPKFfXek{ z;@S_dy_9*??lCKV`zN+5N| zvkN7w=ti9cm+e)iIScQy2>M0FER#fGYuA@?q|i+nS$o81;!7?n+*!r4v-oL47tP}l zfxfHtlr;<)vM`@VL0qG%7d2>=AqwhxM@teRTJ7v5F~Z+089w7$ohRWM=fm%vVM#z2 z-!Y}oL$)l-W9X*YQ(2jFC|s&#OWRbU>)E6(##hNB4Pk*!uf=Dn!neXUgv2pm8v7olI@scg6*b=IY+%NePzPPV-s13 z>b*LwP%WbHixbic8ehFCuV4cHn?}zbo+opCk8QZ%{ut%<-2^Qsuj1lIFe&y#Oe-@o z5*(}GDP1GNU@~lsujhFW<8grZbFsQD>QTWTr4_Y1i&(juSjD4V%^q*Yv8-!)L+(Mg z&of#1YlMH_+8iS}@kmWQHnMC=_Oh&g&VD^;Z}!SOBPX4$P{!RIsh8G+kggS6T@{px z`O@<3-rc8GOu0Z4k0LG7IO(e?*B;1Yem!qo_`3p1-y^T*%xhI#=)}ubyevXbl+{A4r4Dkn1~rzqQzxdH0Rb)a1@09Fn{dA=n?g! z{OSK!@;9Bb@m5nygeN&~?&!^rdY4Xe&e)rY<_nw_cr99ubpB+YOtnhG=CKXcjziWB z!Vrbl7350Ln?CK$Zseew3AWV3!$Fn;M7kcEJ6 zzl}XDaxU@os|tgRh_*bANioY*`*u#&=?%2*&&XmQ5fdU|%xu(;6c|2-#yX1QwIE8a z^=nFajgV=uK<;p7hc3N;AQ78ccX>?0N|uq+;;ViGoE`iYLNV(uB4--72G=aGabOJ%yxu*>$P;|igzeCIgz zDEh&Qm$-itNGfLVH^Hx}ARd9IL|?B3W%8H#Ll^^mT!l`3Vt%cbM$)pc(HFQ$Te>zW zG)9%nSw6O^F$C%l4@gUul8IEWT?vWKX%?dPnXn0}ESfPT zRs_t!o=tT2D7K$G1m|oXBJ(ri%`b%XQr*`mKXHxf*saSzTT z^m4`q=apOzL zHS^8x6#jo)y#sJ$U(g2{XX9*)O|mgIw!N`7Ha50xCmY+gZQGpKb~3T?=KpguS2OK_DnhQ-~p{e^Q0G9e}Q@XnsysR?xP(q|;*y@UVuZnPYu zg+hjIBE8chH#oBXSNFh@ZXCEzB6ETQ%)#C;RhMQVbkSS8sFzsUXpqKoP4H?iW{V6@ zO}9O>(sU2-XQ|nE+5Xvd#BdXSpyV%P0#%NJdohJ0WX%TQEi4n~h^yTY*VGIZl`Rn* zJEVfR$Zc2k#CV@Y2QWD!U!J)oT@7S<+PJv2&%D01XLX6cl7yqw#CuT* zX~(9=iWth-$3BVmBCHsAZLM^yex%DCKF>Vu!lW$t7$3{bQzg`vwkb$?%oaM^9Bg z;NIl+L%1Rj)6vX7N9^QbU*atk>d(xYd>Rn!pkIWhw@Gr%WSf9L z6V?cP5eB$FvHbph&{Z&JRpU_@)pPnzEa_fIf_lvi4r5kfa5ClYLw~7|??kywNrf0( zD(%*GebX{dQS<3wQ$}$@(~!Q29G|bWkb!Rm25fNxM$0>0 zK-qGU02)}&qf_l?a)0HeZQn*_4>U>~U&IS|zp(FwM?qw2g^v)1Ze2K8Ti5J1$&mkS z>|SzDQR6HIUH~3C-g(r&1#LE|pNjkMbZuS3RK^tkJ-;nlg2c@8s9B*FzvDsRW8#em zbXhP88J$>t(49xYBWWBbVT1~kF5A3l1^r&%R_rbyyamiv#x6sgKWqJLX~>eaohWJg zpzCYF-F)B+a`#05(L_Zq${R!BLhplE+MwDLzCIc(c4;NYcUwctVOrTL?(o}vYtH!Y~8n-=BTJzIa3t{!M*^408~E)V1oCrR-) z&ZWVaR`ls@2+e1V`)w;Rfv7%yZ1qE1a8Ng4MN`}OitaH6?QeX-h{oDLNK!ZP56J;! zxrzP()(V?_BdCyvmP!ctB@ArX(=L#nZkwdGxd%EA)K2M-D}3KPqxkFX&kkD-9);xt zFvLA!TIN`@c3f8!npj!QxCx5W+^r3&`c3ylx+Y*9)-Ael>9xEc{nO_{m-+dpS@EH zw$D#CSpPGK+-4!G7O{IOyLONf|K*vcb~W8{&2Y2}Gga~GebsJqN-jGF2gb*S5$uYlB8QQ~HMiL*&pj85~vQW`tCw{qa&dXnSXKEG}__K$~*1{ zdv++})~s2Z*F2dG8Giz&Z9G(r;$8plFF3m((BP3Lm7j4mXm2>V6acTMZNwfjHxcoj zTtKc+t2pFzOj~mE`;^%;A}$>+iyJbSrkv$0tZhog2vSBRJu*#PtuiaW=Gz9LF>#u; zf3yu6;BS#f>-YW-A>%&~qP<&BlOr2!kx$oFOaG`x(AjGNkTigHiFBSRt-S#`84;u@ zoE8TMI(vxcZG*%dK(tWCFGoY0N2E*4{>~BU_F0#35tCl>=~f{irA{=9IbfBO3w^vz z02)j7U*@;S%Seu27ElLrES1M-p&OmjKl*zM!MG-SiGuN+>FrO2@0KKa2|?L6#3+YY zQ^4J+GrNzf`*fi(r{I$6thOtunp9E;I|kdnvr+m<|L|tA;}=eK4F@uwpoMDt`R!C7 z@jyUCKESmOw#`*bYug#p-waLn=5hC5zHgEGV0h5z>$;v0U_ z+Wb}fXrbFMqNt%)+nlV^y8N5?Eask z6C{x4h94bgnHX$GADAOh*?rmBAB2Dq!L7Y@kcXDxF-fCi1}yc3Hka(?h5xL#cpk6@ zN4%DCFr4YI#jEYi|5jSwyFHS9cwg$O&&)9hDTaLWV8L*kTEny z)%y?eaCXu%KB|S{U=2B{7l)g_Q3ijGm2-#M>Wkt)Rt*RynSzW1)?yI<+Lxq=3)9AB zo%ZSx&xed%R|r#ns|aZ?sd+OHmF(3MKGpTJ?bp|$f6m6*?xI`u>CH3$Hv*ltms(z- z?{fxKKKt73SD7{dLOx{2A!~H#<#*m>NIdV6w3)@JfUet*)=Iy8wjvU}$G8L)i>Jn) zIU{bSIy?dxCTs4-YhJ$?FJ~KL;%B9BCys*{ft_mxv+mGsZpWAd%K82?$3c^Rt{L_^ z$Cw9dUFoelm=gY0VOmc}!;=7WRaFm?k)s3UxQuuH9hy?J{AOk$qCywG+Z}GSdveOR z1BNLuVWJOhNO0_wg>1I|kZ&(NCW)B1{ELG+T9BRZ$4_H2lFH2%13FZj zAIi-?`oVdscfM9fs(Y$9er5xE5FWa;JJKNQoX1MD*xTikHI7(QA%%c)vUtT&N*q=U zr9Z7^hB!stdmQXpU?IFiXZ-b*8DIkp0=ZD{iw`UNpz^8)&i3B40$Gpd%$omtvZlAS zra|?kMq7gC%AI!$H_8aeBe+;+z8cv3L)RgKRFOXwNIxCcG5Z9upaT49zpa#_2<+H8 zYM`PXHT=X`T0PV2tIqDH4ZCa1+y$ZiJ9M=t$2NzEU$yySpd14p8mO@uGXZ{#*Ny{> z@e=`l8=cuyI%cq3#4Nd#%r=ZW-q}YHAVU(pNa+AnWmd{WmSLlaE{#9sIoFZ z!#GK-o(a%bpNS3H=&j*%V0~74u%3+#0xg4a_~$tBvAClF`r6B}7#r$XqVtp8#0Y;Y zOj_a>vzV~eSw#{VW{rjHF6FSGUNK^!`)YNup!Q(ue;xq1HBhhDdnRNfiHn(;Q%%oOmg*S(&!h=?*aK$z^hUUYPfxn6= zSliTDl}L;SDBk_Vd3&&Gm-9)54_#LIHn%7Ugm^~$K1K#|UFva;`X6kF&pB4A4E&gm zrnEsyb=w=l4UJU15zSk?5iL%0%m0J)-=N$N&whm10ijfT;o53L=zKk(Ib{SLw{$=J z{{>G7a5JX1?S|UrVVk)>{ooun?I}H`?JDOxr(#y2}GeijPF1I8dxx8BYqfZ|luLaVS zRSwh^V?ESDD0^XVWGUj+;1%cX+iQ8&Wkg2|6!F;cMr%<08t9_vzAE)@FkZ{;c$PaA zSBv@)mf809yj;~aJlYg9X@6O)l*ObX^PbeW_Ct1U!C{{dn|T06XVjHu$9WMf&@S8) z-F|b;64CArhhW*pBNi6`_ixO#w6?OxLo$`RV@R(Hs_iAg5@bu%{0(b+&bK7-1tbWd zx;faARBL%2VmmEw+1pcT!|cgT=2L1jmsk*YCEMa-&|_mpw3{5T%Pmo#To4FBFY#fE zOTl7u1S1$G+O3*Td z8Gl^{IRbHnZGJ8Ua-$5w1PuM%XP!!5;pEy*b__?LeYMv#?Il#Lt}1GmMEBBAc(8S| z)Z_M5=@Vse$4J)&TapH0;st0X={k=7E>Rts;`;8fQ?}PuhkFv7j&*o^)>!kX$0&0o z!*gc5ELA+&xT-vQGcNn@LaC=C5?w&guV$TvENiqyp2?}t1t9SxIlqrzttOcnDad9E zXM?lN_}GROO`VlAk?Vxnw9Um+%m~Xv3_~+(&iukE9kfVfk>RqppUbdFF;IbmbZr7u z^yg43TBAGg0xUT~QVVlpA~S)V_lC;yubArOAIw#6B1S8v_ZcRSx_+ykrSZ?4y%e?Y zA~?Ge^YX#+lSZ8>dym@3mCKvnG9BRsbA!{3S8gWi@~{3|ff)WDJT#}S%mspfkznKz zBM0$rS(P^;)ibb0TETce6b>Ip<)>;-N^J1YHYDCkj_!3Il(03mDv6~DPS9}KX_ktM zigo>pd>UN^HAFm>+I0^WZm$%PY*Rv2s z$Rg%9Lb7?9J3b|#sh}rE0wkwvrn%oc){n8Ra22iSkzyprQN{S>S2q>#Dt0(pL>h?Q z;*su7wGTWh8J5y;vK>`)!(Q-%t&RL!;$?&3*_DraVR(Vk0xKE5X2jipbKF(U!MpoE zQT~!6g<^x$ZVXbFa&B=3vRTIl z(50N6tyDbc!-lV`8I zkg>(LeCTaB3-qc^csfmU{_xH455Ppl8K*PV+t&x4Hpv-BJoj0xlWd3?GMW$7y(k!y z1U5LGSPGdmGgfHvzSR;R91Vong}no|zG1z6fi!cIAWMO?Pi!M4O1m$X1O>B$wJ5#o z!++h7-=ZeX70fCD(G}L2?Zm=D&;^4-akD#n#j}FjyTLF89>ReJfx?DaF51@n3rMi= zG5!{FH$SSC`9&$A?W#HgC0jQ`QS5y!hu`T5T# zj}|!=XAZd!)WY6;xH)7Yhs)Oy7&*6lYI>-bR_4m%pC&7%jfybr-X|P9#Y=T|1-${I zu-M|lSrPd3!gwWhj3fix(M}7$uA8w2*2K-W#!60e3sFe(#e{Ia_w6z6m3Jbkea!c+ z+ts!(3h00)*l8fdg!T^`nYOrLhL7?_h4Xi_T_e@a-~@vLo&;vr8az3DGeWOXJC)*M zqG|2Pfm7iS?GC0)lwXD(^YC8uc=vVJKU=tHsuEW{7IR~QVbwyQ!I9{Zi;`NjrcgxY zEod)BYO@>h5Z;&?9>;c`Zq1K2iV@z%aHuDE5Z|iCi@VP#e;~YBBVjQekaTK;4#aLq zXd&kD8e|BI_S~z7#TXR)mC#sJLpoLuv$YO=Zso)f0oiGCN-timid}1{ers^B=VuIF z)rRw2iM+qOjC{09ew3wyd{`$uUHfD3#hfCj0DKUCF&)4k67L=b9-P{gY{_kn}>iDQc2N#Dv;m9x{}BxZ6L zGGUSpY_)4mU;SI;Gg0$TU^qh&dfC1TYa{hc;##Afw83G(!g0z~o3nDNRHkhEwiYY4 z*)S@|E3ju3*2KkS-204#1zZ3-y^j+ph%|iPXlkiNV2~^)MF&}QuP@(Dt`cUy!lgNG zm==G|;WL%;Y?v!EHYsL2E);BDtyspcYID2Z_&N}^lfS!n+lxW>u+9wajTlcIc|MLY z95tR;cml+h*5;_(3FzC8T6Suti14?S$DXfc3uG_qWU4fBW=tr?6HHL){+;GHO+(k( ztRck=e{&Z)@;IZ!JRa;80EA?QZ;CL&_~d7K$bo`HUt7Mxt^I+(6>)MxkB4w(2F_^5H4 zFcm-1JLc6{2V|Iy$@MyZ>`zoAv~|_?Z4AAO41%;f3Gf!rq6Gg?q6ml@RrqT2;VEd| z;ihh4t3FuR8|N>>Qt^oiBSO8|*Jlxc@wQKEDvgt$6U14+ED_o`CQvh8&QI?7`4`RH ztG;9jPB7q-iV?1xI9d`589c%52LwgeqZ|isM1BsnmySIbe=F@O~n6&Ijd^WzAJFCK|BwTveK;$T_48>hDYV_!zuTNxKqJ@^<%8tWXcaNjs#I99Jo8FSPN55oS47y8k1Q7Jyh zN8}a4zdpL}7DXko>2>2y;G?P=1v|J?k+pVK=@-}v!L#p+ zSwCtO>Fbdza;VDf`9Y73+j45R@g{S&bygV^#0cTB@3(_UjP2t7XsA;18=KWnn8Xn4 z8EAl!YPjK+^~|AlL6#6-L6!lii>4MAen;rYoeML z9N!)5ji5^^UF69sHqpl{O!J%9(n_mb^s*{lDDWx>6vnclmFw5QlP(|xH{UFf-Ki@7 zjLP59=0~Y;K>t>V6B<0+-J*VgrRxUp1{xY3HbUm)6SvleW{D6gf+mSk35oFm0hAIw zpO1aLPv@_70iTac+r($*yU=}C-`AK6g+g4Yjg4HEal-37y(2Um=6NZAPf@1GJ(~?A zaZ#fExNHOz>)x?VK<)-=(A`Xs*tRLVu@vO$i$69+g7FmC$JJKV98-dERQH8fhqO#b zY~CM{iVhAWKj?ixx!kx9I6!cffgfG?>}dlhGGYN~{n)+y3+}nKq9o(ay8FJsX?~(L zGbL~)Xve`ie-)u#n#CkJ!$97V%va92$bGGjxz6!Uu&>Fv&h^<)VbJg^^)*|B1)C}b zVRvU<)BrZ4IVt%^|Eii+3nsMRvE%g*o|`OFYU|3$rQNIQ9V}_a6;HTS*-j3Vj3U*L zsHP++R7xF{r{AQ1(s)M$t$3<=%6wE&JhU|Gihp}<^OR+r*0Tz* z-<_g>$}zpMuFNz6FRUFGhrAOxEO?2;vngQ_U`}{VgSxtS+HQhYOlNL$(0er6D0R+S z%Q~oAS8uC(495+K_>reg_=}&bbpglnUkOvfl}oJqLrY-5F9wQ4_E!PPYTh$(?wN=X z>&gpxhkJ8)PzFM6!hhoQw(`C(r>DSh*5$Mn0`=jCK~g;EFArh!X2%$*K4*HxzSfWx zo|%a6HkBK|tAgAB1m7n)65?gx`&C-_%O*nILo`H`!SF+g@Nm?>t~=g+FT=y(wGm$^ z?C7R{YOjLO%eE1GFw}LfmR9n&Bayulc|tlO-QvSd51U5$#34;H^jfopJ|a8Rh(6g> z3;~LU^UT?9N#jdFt0glnTdtFw@m%#vu_cmWZv(prW@ypULh(5uh8SjTl9%ZtWOY@D z+oOq`DK1&s9m3GoTYTOePA|*LLU?0a$oCdXajXQU)>D3LFd4;7(HRs*(7UQs#q^g& zI_ggf@9s@ZF2kPes`De)RMb`90+)z^y^rek60a`;*|39_TI{YrGt5M2PGuY2lFH)= zpK6g{fl`KJdIiT(q{Z(0Vde$_)0y&*E)4-JcM+Zn8AK<_zib90zoiX*bFDvubx%b_ zc2E5&fd42d-5({Ri6+A;-LC|Qzg}o0<7K0Rldtj-Yap|z%sO4-dElA6zX+K3h+94% zGtG(a97NBWxD$P1$5;l+I(_2s%@HukI*H3TK-~|eRZ2onwc0Q$aaSF8uVRgM{9EH& zuhmL_+j+~Brke5&V-bLFv->&SZa2T-8kls%k3O~Ww7~kr$2R3HFYCCi1OTy(1PjVM zPgNVagcXoxX3}0#oOV?PvY)a@Kg~}6 zA68fCQbvss;N6g2wu1#U{&4$wjcNBPmVNpNA$JCo68ehR0!TZJoM+kmo{;J~SUA%= z4dz|U`S<)31zlN2K0zil3d|d3Czl`6P9aC=J(ho8jAF`(BK`kg&VR)&EAs%7?w+2~ zPKQuBX6_Mc4^|TJ|wyDBDSk!>__5eMnob$G-Wt=SSJ+`5HBJCOA1o z6><%TvY7I+P2qwnYgh@8d9%R!ADfnLaUALJ_lw^VhV$PH<<1{NJzGxmR^A23)~xA5 zgT!ps=u`?>;w#5Zy`GMJi>G+Uhr*ZS7hK5N{hcieHAUjypTZ*Fk=RH1MBWwNF?Ms| z!Fy&TLK-DDBuakwi#AArx&)fMY{Z}vfaGSO@&DKi;vduASLutQa2gHKU$&KEEQePY z;kNTfW9KY?hE_FKQm<0j{O{#M=8E8w5Msie{>q2luQS@0%rTJmzUoql7bKmUHMXaU z38)uEf3wd~XNA_WPWPYh+I&grboG;BK~*q^fjHZe=Kiki<>4t{Ni!ul)F)R-miBd* z(lZD2cqYxE{mI2~2RmKggO%N)Z`w1#m<3NQngl-vBKPJaN4&_%Kik8H;ismqqxT)A z`EtQVB)GlI7pJbSivX0Ia0*N`1po@L?lkmi;eNpLY)dTxzO42!RG!`IW5CxF{z=CL zwsZxbvzMxtN-1_?z^{0LXcD7Sx_G@1+2of3EcWI=Gw7A*FAV5WV$dZ&<_Ia0ycJOz z9&3Dsi5NNz)mQqo35($*KDNBIBUyZq?)VBjFIvy|>6LLeM-G1hytT6>xU{pM>nNHD z+lN}wTVp0TZmCPHj0xH>Zv1c?IKpX6eLf@G#h>h7W+a8HaKb%vcD=O?d&yoyI4R6I zp=2N&zNH!+p~gC~!K5Gdcp6k1$*Rs38mA%AcF}&gckqM+PcWz4)!)CAEB2(+jB~E} z|Emt6w}7o3{(b2xiJr}>tx={r;CvHqtQ8S8C_*2@k-vfX5f$KTKJRC157fn4F(aHe z&L*g>V|M8s;+ccSG7hnKZ!NKRH>{;HRBF7P?) zs=xAVq7#w}{})Sn3x}>aI!JiRg5=WfY0wusgVn6XUDB()rlGeRVZ#ery8d;ZJeg?A z;XrS75C`AGLu2!v{iBE5VrK@wlk%$1jF;b-xfzN8#1rW#{i}!Tg&i`4_^ozm2h99a*&n;tvkz zY0XQr3##H29`~I|!7oPE@riocs37Mlb?v#5UyQ=-UkJuP_ntGyGZ&8U0pU-J`r zMNOpDnz{bZpPKEvRjK;ITfgr-D&~1E1~dhG?c4A;n8zZiBkq4*U!3V6vpBsd^}$0M zkK40buo}-_TAxMo5CPSu6c)=Y=t<`qeog1AbEB}QW(NUA=`MT-f7-HjteKaJJl7r& zON~MxX;wGc4(+PgR=Km!W{GpWX3fxP0<-;c0 zPp9uD>sFsKcZX;(4_qMj^z`7aqD4&Fa>Az}pWt;iGi1X<(Yxg8J$>r3p{NAu&`VcDH$@&eIE*>RcPFNL1}ZdB_#4vO+aTeiL4fU~^b zAf|6VgO<7VFY=4~QUeF)O5>dO!Oqb5snT$xeo^%ZsOg@wEXl7gR-2qpTa^^0e-Cp0Hg!jJEH6B+APVJ!R%Gc52FI`oR9CUm>Rzds37S&>pUzuQLli zux_T6aNqcsnzwserC$YWesm`#j?XQze)oDPe>-ai3-WGqR7e&}5;G`?SK063%JA=x zSx=m6**m8e!9ot%{H?1uFX`(Vo|ROvHqH5x8SqZL?Q2TLZfU0Zx1qU+oE^Ps&}EP{ z7_?d1m0?BWL5~`ASp;BAi~g$PW0N(ImsMI(0(dc_=XFEt`Lp^cYC1%)hzF(D} zE(NH__AMA-YhEgh>50$F!*QFGswffD2pxx$o$$s%5ui8a8s=j;b#udUQ{V}~mXe)- zu}xKMe58wL0<)z8kQF3nsmrr;?vw!oxfV2>bSDbN9X6*@HIU1MSWbX|#?V5ELeik| zS0|d%Tw$S-fW~QQWzAD~?rS!MS@5CNETQ7N^!aPQTzo~sgj^ABPm$RvrH^OaSHXt{ z=^fYQlV@C~s=2noKFEPaF-lRolUOlI+jdK#P*(03nE+&SCmGiNJ|i0gkS(0RGN1?+ zK+gxqT{=fy{*v^tf4f}xOfc(tMVUJXCkMx^{$ixlPJey*lZZ@Gs!N=^U< zXl+f8!p2>;jqY^9=SFsdv%GwQvx4o^Uso}gSB#IB<@5KmJ?CtD?&SV_%Y7g#J<@Fl zwy`PKaV!i15Fn@fsv01d4XajMftr+iCp!OM#btHg>X`n7|AWA-m&N+ORaZC%P6Nj+ zD0@y|;p8WUmzA$6#35f$&~$zYO?DF7@LiQZjW$Pi_Hb<=z$RNPG`sKdF*KJXDtf|D zXe3=zZ5GMGX=BSTcLEU>YO_=`1s9GG2k_wv(xVIC z-0AIn9qlc@6u#1noy!1JTXxE`)(i$IBKvA(a3_~G3@6<3u0*Z87*1U!9WUJUy9Jdj zg>y_j-MNPPdb4mNngxz1>xH>s7VX3*W>J$4B{r2-YYD#4Z$Dej)b?(v)Cv}Ck1b~V zjl^~IN4Q~Ft9@wE%Uiz*d|hYG;D=;fdktjTJMUvzmqKSSpD}0{~waJaW#?`!Ltn=$7Bh9EUs)^ z*qUyK^(^t-^C6T8uaxN@w@DJ!ooHjy-gjvbW0W)%!@G{q@$xLNE&2@&9lo8wyWw58 z{bN&P%6~aoTy8O+LG}`C{&#MDHhqUaZBtI|wo{xd5VO+zc7MRl+^tLcN7?^fdsPIk zCda%RMh>L`6Qtlx_tIMW+t?k|6Jw^bs9L#~OxY0ef9%`c7afHM$oH_V;>lqjuj27< za84}Mc2Z2(-Jh5^cgroyG>4%4_eXM1vJPkaUka^2R}~incZLL*(r!@Gq}h}z3q)$@+{;&F_aB#A7oLSyE=0a5_2pL--Qzk2wTU(Zz_G;gFygyltd zNy#4Q7@ybiL^r?f)o{CUM9X+CZ}~i3y#Hl**nP*!g|@dJe^7FaK5s#2Xi|nZ6U3nR zvN%r1%S~Gk@NS*qEZ9_pvcg?riKrzd8$qz=t=SWs-5klUxKm^>oe?S2_BbX9{?_`$ zMY03X!l=4ErHfGYc8hT@+D;X#F7aW$J4w$bc?=W{>+N=Z9r*eArUvZseh6_}oT{IZcEH%Z!}U?iGBxV_JU4vZlZwftc5=S5ja z5p0jI_b7JzQ}#q8VCFrwMne>08a^@uW zw86u(oi^4Tm3zBYbd&t~%c z#;M=8&LMyrdE@8%mI^}v9Dw7sM%xvlXQ&sh?|km>2peeaOkk@!91`%vPJ5vR8nric zKKJnJzMoJq*6D1$^mIi~y#uly6*?R-gMr$=n|RdzTu!TmY~GaL&~&W2+{4}oY?*m? zm^)hv=f|28aKv$Ijp&Ghj^Jn#d@mj!Cizl#e*GwMeH~%~DoFH9hk1RsFR2g1{_R@i zVE23TT&a&M0n4dv!i6T)bmM&g_qlG)zw4>HvP_%Ij^zl;R^158d8yDqsHHAY%UwO} zE#rlb7=Byoa;diXK@S|daj3R%q6aRXXzLE$FsscV$#m}{*~s>Iu<6fXt-qD**~|aF zJ|fvvoA7>^!C0?|_IHRECfAyd4*TU#cx!FSlQqUdcal?r2YQ=9Hs*w2( zTaBnwr}Yv(57|gwkB`^EQBWw^V>j=<-To2a*X!Bh08o#=)97jEG6Se9(CPDbbQmMQ z-TiiYI52R|A+XW;_2gR9{dGHMv$9cYr0poJI_J~58ohYwV%0Wm0l#c!+lW59y*Ebq zy78-~xowpVa2b*O)pB`ReQA@;wtpF6(z%M%?w_;BG4q`DZ2?`j#&Rk|;1S=Wpj!6z zxKKbQwu+-n?fgjd>1N#nGOGOu`=PkI==7wCw+t(@{py4*w*35G&(h_T&01p%L-CZG zW6hRJx!aI=`hCdj4eQOmp=&NrR3`)j16gA@LB=3*-i9(neVK<&2}+!WVh@%lJ6lc0 z>qdbOz`>KWc!6)D%;2z^@BwDu&QX56ZQUABX!*|e@S4~4k$z;d{M0Ee&>P?*!Pol; zIe8&Y^+aI%yMXY(^V(=bUP%e8tRcz^f&mPXPxJ`+W!!3Xc9< zwe5X4D4e5im-ShhUxu!nLcCQNlO(dH0x2wS**+h%m>PHLl2eP8k$wqq{kr@>1-oI? zjRNofCF?c5kPybj3q{xCSF@lYLKH#$Q~sXHvrUVZw{Gb?PdCc#oGPUJ!JjaK6)mO? z>)`w)X7RL)>`PQF}wBJ<*IAVtn?-qN3|{e`?y?t1UN{{YqiHe#unn zUeBKUi`!ND{DK+<^1)KK%IoDp-z`^>x%-XwZo{mMeYw6%@y5ETT?cc3qI~6q&djI$tGACL$}x;ifse~Jj3a_u+KK-qYB%D!Oyx<_1`{}`v$_duNFL+h!MRYV5oAw zn-`*F=u_@zhRlef2>q!EC1-6PzRQqPL_9ZpMnf6^1>@SoUui7*6T@M7zbm!{A08kJyy)B4KYrC8!;bV$!XwSwXOu<_OC+Hm=xix|d7AFBuIqEqL~p;D%j zNh@<&(jR3tOw$kFNw5D}8Qf7}Ma~NqB)0l|d0n_8;pyxTM0Qa5YizMQc4DPSU+;}dyWu!HY1}dCA=rOAY8O+I$9^?!&#%uqgDtkosBj9=CP!lo* z0?F7aTH?*)N}0{v*2t2XLs-3jvPq`Md7x;Bg%{lu)1s~4yL!W<8$Q;CPzMdmK3BwY^L$M;?37qJ)DllZ5$gmWs&xIj%L2;q z*PR1{NJACusj2t8RB@q{-w;p=LV3(jc~3rAbq{Nk_Oe%6(mOxRc)?sr&%&($+tz3R zZ*y~$oz1J+Q^)Y0GAU;C1W!+#p=&p3Wik<^*Bf2Lod<4*%$upma-$`SBI*i0;I9Z8 z^>={>0FRYI9j~g77W2?)&cC4N&y1dr=QEIdDuJHY+qsMulpfEwqus-E4j|CS>*eUH z)7R;4lVRJo=k4|nL(9{#Yt44I=f|}xmgSl3Kupib+sk?kgKx*%*}2}wOU7k`-lp2u zEyLGkXz16p!{e!KkGq%KpzW!f55RPz%v88$t|)I_9IQdi2JF|BA-LP}F-+yq>1PPm z>c#}ux-|3C?SvW4L;8BxJM*W)dCdl0iWLJWiCZy9PYLjNL~ih%Kel+bvA@ARMVJ(Z z{@bR^u@oSV^?cEO=i!sm#q@UKrqfN*^dXV|7xG57;~CB!MHoqTdH4&I=A0~GKEo4% zhs5C0E#WXJhx`|Z$aAv^=OP7K_HK_3Zb3mUGIGe3y<}l@yttI63?A(PEWHG7-`ykJ}I8nOxXvBu`MMo2*9gR92c@Z z&N^==3lkTjmPi*=@-BlF+jFbE%7^D|u6(D<9vzZlylS>!*n4R_i5m7YB?NEKhzwILMeI7Sr2@Nyr6q4jmnBq!#*JNko)^ zmS9FW1@1Km}zZIMKRbB`!`I92XZ?Lm_rK1%Rhm`HeQ&kGgK6#|ql zI%;MTH?>DMdj`DG3p$}un`3^?ev=tlnU@X!TX3$(-1uz;U6yWvL@BlcI_3rP14amY z=N^6%MbVsoQ}lItpyzrO&@&%c6sE+abn_b>5|s(U95lJBYN2Q0)6hcHD`Fj`j2aY2S0rn^u1HLrL-B9Jh`4amaNak?_JI2Q z-+5(=2)p?u-PM*W;or}s0rM2I4&J9FC6TQ!_qdj|XdgmE(7CEJ!oH{EMRW6C^OO>i zmpJ!=BZFsJ2nCHjI1W1qpPRds9=_jBs0k{5zD8xoS2CoaVNm>dWziI~jvqrBmv$`z zmP;P^yTpge#)Biq;uJ6ct|(l_G{XI%NgJ*Cp)#(3BEK-Vcy=x|&wlFbkyL1l=JVnc zM?C4U=JicUVFtHfVVciRi3$*aE=VuDPnXre3NX6iH+m_9xP3l?^8nT zyu6olC;vIlJxXABRo&iYICv8wD%D7H1;B0tly(EuTLB8K0Et$BVD20nKSz@;s*9g~ zbL-Fe(UUAOuqcnwudG3$zwavjzLcw>v@;2<07Q#cjd%~rH#ZKF)Hva?{k6Eqi-kQ%cJkx>D-iW=ll0#KDrH0 z-_v=$`?m~Nf%n4+arqb9UT8;p0dJ`~G#8-#nY{Xa3~RVkg3^z=fqFOkax1`wBKiRo>W;@8IRWy1mil`|Oa>OR0 zz`4|F*WU+F6;7&-4xVP2g4O$>7n*DVx-EqB?F^C%3>+r#$ZXp~%L2|W=e_(nk5Hrv zmxWFuXD~BYN1@~W>QKd5Q8t`Pz}_Ge9~ImIbDb;MUsVUC z>y@Q7$VDtFo+2_GM8qi;fdpEq?D5Ksi)eg1VEW^avonr(KfTKzf)O+qJ!Xaix7O3| z7IIo2zOU@*;q-acJ{gVCE>(98Z}isb<`p_TmvKPHBUP4y`)>IZZ$5vvk8hJKE$O_) z*;S(`35OY|(;zOEZ&~#K)}v*xjpCeI_0Hk}wT{FJ!IfjZG1KmpqD-!7dXvL9k8rKc zI!HAgi1~&Z=y_zVsM=4E{IX2q=h+g}P9det)%G`GxZQAOZ~ssi%Q&*y9kWIy6E5oS zFS|xF2pV;bh$GUlg7j<&Vb(Wz8Pt>2&ivb_19-4SF(uIHbrytwQ0+_kV9Kh8*b>Vy zFJkLIVi8tF*#bvo>6sW8lLi=<%+S$KfThU1xS*<|7?wND!2 z6#Txl{nS0_*|ZEz$=p-K!zhG-R3|zyTxaMSMlkw-4Ta8NZrij2+=clQ+vOjGuFs^$ z;}^ZKClf_siL4qd=}teFj}=y#Nwo>}+upbGc)^rkL^ALchu%s*O7>y}?%{?Cb0Bak zFwnKg3+xQS@|kyi?g@%98uvu0(4tlK8L6|WyFf+JVh-38J3-x5Ar`-{0IvUxiU{X? zx`su5+f}STjmHu>>P{9b+ykFjvW< zRnqM5bkdPH#Wo3~o0$CY6kN5;pRZb=e z>;&FAS2o^zWdF`srvyrQfD$pZJ4e)y{9U1%S#~>oB&v(;rPOYd4KmK(CldRe&^^X@ zt^r@d&s7;`BWp!{i679cPVvUVxhH|TmqiGug`6E%eT50hownS4MG1XGujcxvg+yxe ze$sJ}DVh|E1er(_4$`kSx&TZZ8Sd-&EfH%xb*77@-=OoxwrRJ9^7|CftLG7gz66=w zI6mja#Z_#SdyrfIwT&D+8%#Ioesp~`t?q?4-B*2st1d7J(IDNc<-YG}u^>@$RQypB3Q?KkT`41=MIF5pu zj565@X>9to(#IPa?`MM`51F_EelPB*E~hIp@7nvC0Y8~g#(Y~t9i8%~%E^w~9^}B- zmOm3*0r&J4fSrT=+2j3E9k0wJVkzhBbHaRX@0m9mrf)Bj07ig;rDAqr;8Yx{U~!Ej z@sRJmwKhj0Cqkx)Ha9_fZ3U7+%e2j{EARiq(_03_5iD(^xVr`jF2UUiED+q?-Q6L< z7I!DOyC%51`{FLaH4t1D7Py>q-tYdJ9qF3tlI^FfYq}yh0A6vl7O0Ovwlx1A?rT-*Q;Ow4%6E_jKB!iYWnDB#A zr`mGALkXnCO;m$sK$Hfxb7YO-FruCywAd?2@BnubwOuW((%ulpur*gWimmZR#F3ubd~18@D8RB~3I^AF#`3{$ z2&N~IBG)yb{c6w33WTCuY#an?4Vt%+?$tMYr&jMtv_U1LI@7|X(X$Nd@(Dsu6F><` ziC-dbaPk{cOP^(&^Iwv%gz)Hr)e`W6k_y`5c)l~4hGR{$qQb}%=VIyD|C`0ndsl~I zUc;1ilEihPxjH|BNg8-gTLTni<~MTWEYE{gll&^q`AzL`Rw5Ae8hd(X@spDI z`bde==hQ^6}&V zNpSPcTc_Bo9tMpG!YP%C{bkLHbn!AI7_vprA+HuMJ3r^ouZDn7v&JeKmRTfKnYn9_ zj;-y`%9|~iYzjg9c@!af&VdLTx%?@T!{zTb(sp2(p;iE zwlP#D5Ca7~Ge#~DSEl|5{|^;$>IprDfDHgPOF_BCi}`>ZNMnNTAhQyt1rWZF#Q;DE z6=Yd+J(GvubD}S{9Kq!&-r_$M4<^nWtg5snmg6RvX2eq#%6vcd{Kd5AW z$LYz_!Oy`M1DYO|b*T>#iz?=&->&+MmNtB<8dP~yojlhUJ3K5S`}x!10pVt&)Hj_= zRmL={+;Fytruu&+15;ZQw4r$Mnb$^1Qh39O$?nc(#~NFvFk$AX8{GBl7?7oQEV1gF zZ5fh*?bEtY*G?)?>teL%4B1TEbR0cwvBQtl` zb!yYG(iYY=ChE#chv+|ZyBC99T;?bqG+m*GW;BViv*wf9X%GQuI^T!&LvI`T!WULs z`!ThPPE6ijF{Z7{4U`yzvY+MPu*~Y~T{VooTJ0pbg%XNo;v9>wn*U0qh-P72OJ~?| z<)Jg!{K?cy>#M?jL9KY38~MmI?)u{f)nzMa9zdU>Xxu=KbW=K1q{_ChN7hIe(B^^7YzQz#DBV?QxwD&ONra*(rI5cLTGGad9y8b~ zBPD@U(9o*TCwVc4FZwV8pJfh{=#wp&5tg2rfK6s{5~@`Bt2k%Tf0PTQR(?HJr=-(L zMr+=svhy~iTQ!EF+wwRO{iQF0_sjdF_BR*2Mwavnk)bW+s8|-3mzFf_&L?N`2|)Ig ze8ALQt<||yXAkZY*ND*uYD>z_BWS@osIl2C*F3#w2GNgGd=R*|XXv`2R%{?QtMZ(g zAL(IxS!-upGZr=c`C2^+_?yaa-;wDFIkR67ozw?c=>M>>k)i$T@o&i^!^fOR*#`ixX~_Jt z%wsvcrR<@ZKKsH^;>7_{_NQNCtJ`3yN;0+EYE01>U3vl6%RR6yy=WUTr0e?6zbMYX z+%-?*s;MsX+*i*r{&hqS0E8}DH4;OZL&ku>65BYg0gdc_JDqA-eVFQHZ`P%k6~ifQ?)0VYIYJw=b|GUrSG97{`9lAyS=Rh_S3MKCoQ z|N0MmhX>Ok7v%a10A~+sCi5#;!{?vPfQy$RfC(1-UoA;D`lPN6TtJ-k3(y5c_RHk< zcVYa)Zxi#(Dfdjx4xNxp)_DR*seMW42r=;4*Zi9oxa)XwTe`>3Uj6uMn3#y zU@d|`rsu~hL!mFWCEEMERK3d==%6uH@r8(IQ?)@4>@W4@Tqc0`0o z@b?NrGyg(&5N!$lOHv2?Qv+j?-&%z&;|_)i5XzE0q?8`!oPp!M-RS+KWM8I!7I6qY z55xccx7_QjM1~!Ur(Ai{S6&nli~{;@lh!&W<|bhu_?Mx#cz%)rTSu*|f4+hg?@DU&jP742B7>U8 zUwi;dG~B3gF~}@$qFEk>9bDunDuZ)bWv|421_ zZ}}X>&i_h;g*D=QkZcdv}-bVtRn|wC}xoTx)8*1Ce)KkfOmwy#8 zR5Y_Q-0(`;q+*H4IbsAU%hC_5A?E%ut0gR;JPIX5$}pK{C00CVlOPCurQyirRda1@ z&V2U)NSadR8g>bh#-G@wQ7?T{TC^WK5)T=g-I$lqagHk>SAq|?Ay1n{rTAh2jHYZ6 zfO$!MDuIclrMn3U%j6xh%4V%ImM7GKy3ZBe7O>G?4#7N@ujNTe>+f?&m4cNREXv~+ z)fqm^%7Y%@L6EUn50e*IQ3S#WV^7zrd7~nXl|YMYnix^A*Eq5c154}7p;tR)!EF=T&x z!a?qSP-Ovn7bTuZr{aEjxtYvF{x&8-7+Bj1tW;mCX5BNtw&JSG&F@2>w#o-=D&Odq z%~~ZZ{;XgGI_aiDjK-a+G^4rkiiYMZc7J8-D1_eH*M8vFaX~<&lQGm6SYCuh=1DK0 zfBy$ElLpK2qpJ%Zc~o9EWMT^e_LM_W{eYYwg-40^OU-~zx#JL%%kpr=bqXExF2RRE zLzY=Q8AKKV(E+nylUVKJh$UGE)K%Cf0!CiWYx72rnr1Dv0sL8n&Pp}QeviG~Jr1k5 zbYle7(A$K1ETwD=)#3fk-Bj`~X85pnj%mhlT-cymGbV!WvL+k1(_`xa-gHesN&HMc zAcTZlwVtDH+2^-~D-#p}wn;xb((+W7#t)EYJ(v)UR{yt#Lu~7^A9&ar_Y}g)r-yok zz=_$SgGt@OWaI#Jgwo~#L|QyJI##t!EBDb2tO>}6eSC41%lT3@gFGo?wVj5C>@L!% ze3S=?@bJ1#taJaw8NQ;&1*lUF1KbLsP%O#bDo)T;_xvD5&aBg2>S$s*ut*E`fHn%z z?!wq@4riqu)_2N|Vp&5sY*szzcN}6d&-$8f37C#p7@$?ELt%r&?KUq@Cn(^~ooAo0 z7n*D9Ihq)zyc!M~uk6sy!yoX4FRphqPuX+HSk7cH#eWqz0s_Mi@trjgUrog*t=riX@&j|A??M{{z4~1tNrzhT$+mF2YF2%m3(kc49q2v5F zcvroR+@_>2*YNY-5rg!KbN7x6qh|8EHlRD`u2*sgn~5@mc?yw~)dr_n)YdOO5B#P? z;C+|rYZbX-`DU`P^Q(~I{niiEbMvVc62_bpQ~pTRJ$|6YsF&uy8&7?4FA=*S&nw$u5eb!1$io4z;?~CZ;+YIZAU~fPA%TWqk%w(f^oc?_(+1kG>8$ zzrgTcjxr)US@Z{Ti@Jjn2PAXxkTt#f{YAntIMyM;xyH---0lH>maa05YlE`KlU1dy zydlczRkp0FSu%tf{vq1!pQ)B($MV`g{gQZ##$UUBz$NnsBsInzJ=kYOD%FL9YHxjJ zsBcJGfM=_LNCVABAmvP&qBTPFe?wMTs0)Rj42ys5X6~uw6h7Hf6xt zr(SaLwcJUoc&A$Cbou7uD9)txuNG|+GS!W1kcFDN{g8-uYxfr#jqzO)H_epvNd^7qIkJA~ymLh`C>Yw2|Sty)`L{#mzF!Z~v6PG!LeI{pn0XxR@_VL1>t_R$ z5w{#mV^d-%egLPWv|&A9e1j8)sz)U0*&TCqrfz6SXcFe7zehIOH)cEj4A$}@vZdo7O_odH2p}tY&7-NpO5XWq(EcF@I zffC&L=na4rOApu!o(a8Fw4;|Bp@FNXer!yxbr}b)f}hj!iRQ43iw=|7@UOu z=8?^9%MUENvzW|i}7%FLQ zjEjz2CVb|zb+GI4qMd~wfS%|B8>4E5O<8=ua+gYr!5U5FL(>J>lSGAkn( zoL!Llni%X6#d(3aOPn7@ZNl_s0qn9#fo^QF_!q4w%fYYRRXp||TjWsZ<+1pQA^XFQ zwsRAZJ{kxhLN0Htq$B~XN`|67#Z%@iW8TK>?eZQe^Kjg`DTI@)_+j~C!uS{3Pj_57 zIL-Z{DgKz6uc7`IRj5N?yl0scK`IJTh$BDjL9NE*if_Q6Qlp(eABe`o1f{IqjC5?H zNDJ?u9LUrMdvM}oUl=I9V7vi%DX6+RB-m^(j-h2|T?TAzsO#GxTrisrj8d9n^4gR1 zh9rM)aMW%S#^i+V!w0qW++>JPJkNGyGO z`(XVh?L)vvxaTq1ZOEI+6P&b%Z1Cw}`}0FX?e_&GU7g??^KNdyAy$oNkY-@UlMa9u z-h)4e8SHxV&#g+TAs7vI9REa;yW3N1UZfP)kndmyg=#gU6icUbZ2lS9k;0&lIY^6u z25#kQv?QGPs$AlC(MG+fvQjQz~^XNw$`oA z)(dR^9xUHz@^7L~IEV0~Ob zVsvGP-+O>)NSsXmw;Wu`qB;f+=?munZGMDURK(f1f3TIBQAUUK>-ZP(AQw(Ws3-_D zFBeM}ikd+i+!t)}J4CC!(`1%8DGQm-{!03X{lXKky=f`@Rgo$ZjQea&M(MYfSSBqd zxS;C^=tc{!CtjxdQuu?n_OA$iQhw5K{vtB3GK$!&>@wf@f0L)Faj+gQ!n^!?P9u`s z#%Y^%w=%CLTS|d$9 zmdY4vv|)@XKa}jrDNk89qFbr$*4v+e(?N5n9M{hyBHv9=tq;XUED2UmxAAY(F!t`N z`OnxVpybHKy#l!U#5KZ zJY;K_nyMD`f$Qcbr9au_rrhaUTX#UI(Ey=6B=^)mt=vm>w=nvxR8eI3$oTcC&q;W& zUIT}Du~{juB~TIiv%-qkYgZ6KF#2v-agp7gnvf^#xKb*aZ`<2GUw~r#lpy2YDewam z>|NsGj-57mBi_cA7+nR%_dlQ|w;oTlF*ZBcDhQf*z_y#c7mLiivCsAN(>KSn!wy}6 zBrPZgy3>JQ?Vc#O9eO{9VvIf!s*pFN82+6-l4LW~S41SMd5D>Sfm>#3p6C0{1mXWB z!QHyh5bx)j8H%mA{0 zrNT#VU|hSee-X5*Zak`75z${9?i=SQA-$`vH8$aHeKlIvlY`4Iw}Ql*;CDN3Vc%kM+`T~ z=5G}^6X!k>5{vL)RA);S>6mr2o-iD073BDbBUz-ng(1rx(6l=)EOF~h6_<2D{rlUD z^oCv$Tcnk7%xB-0gpot4=ZW*n4qX3>QJJietR?$f-OWAfqRcJlV7hx7bCch)kJRRQ z_)wEb(a_Djn=?6Skw;ccqH8?l>bnv0t;jM%96y7i4Pk4c&_hvA5@n|Av*!5`PUOS} z>)Gn2c*46Z=3PFOFxjG0W*I{vEc=a6?r9egqwDddUcd5NJcjs2AS zVsRiiiXJ9V_LAi8bjOyoE2~H)e{N(8x|20?53L;0(yol|YK&2X`I|ecxviqj0CyOj z&R?ZiBID%vlTF+9XvZJF;z)aOiB7h^ln(xdYlWWSG$_WCxxO-=bK4kgY4vO(A=fn5 zgi$42xKy~~Qw7fgkgny}{4JCt3m~x!TX%Z2-x;G9W#c5^FT(qos62{Z$iC{;1p|Bf zBW02QchbYY&%?)`OO@j29tul2f?7Z|FmRX`)A{fVP`>1r#MX3M`dUvtS5A#J!8#J3 z7LO&cepL)ZKjy+ZNM7UivYIZb?G~zb^LID;+o7ZO`}6_#ILgJVY{X?9?zg61w(fd248QmHc-nb5 znk71$-w+KaDuckvkI|dEc3A0XwB4SB*U^Sbp*h^H^yCZoEf-Jt0x=`N#mgA#xMnE` zF$+okci~OrQ|61!sd9en% zukfH0%4PPjdR96-fEZ5&q}8%vg491CoeKE+pYI>x$I)$1Qbb!@n8Ey=F>tIMEiEng zt^5al9t|c22GpH{)f^8yn}uW@i9wC;?uw!R>rz$f=M;FCn|})Gwp7V>=&9tdEFY0A z;(psk4lN*oS`qEX&~;FOrdi@7>d3{W1w85fpNM%hfX}LX=#BfEp2Y(@R197A!FNZ4 z+nDc!yAXxA-KKDq@?j=xgAZZVrbtn%B^g0`hgUjLL?T&R+hKjM1ms-yht4_Z7%VM9 zKGA4ECoX#qN6GpxR7YQu8xH*dEdIq)Xi4IaJkC}bXW^4EAA$~dS;zBR(xcjd@PF@y zXk-PJtmk;7lCQJ<596b!=1=_ikABEg04YD(CtKAsn5Jo$0N*M8@BY$+ZO8}V*P#i3 zVrb=u;H=R;)`I`5Aw2Y%A@CjI6!vj@0%Iik2S9{1XsOp&2G^JP}5r~ zm2Tp4zkN@GQHEDRSC8oU|1pfv1uMF0$oay@1onGKi@FWW;Pw%9HN;?)Dks14Kl-8l z?$Dm62lXXP!?p6iCN-h##QguWoR~dPx#p_Itz=29b~jQwxJ`Fh1-V=Pe~nAwout)n z_c!B6J~|v(vQCtmzoHk~$i?%q_Ej~(22lUt+Ts7`R^9xMqhR$>ne@(>!AifpcorN2i+lON-hK)T+ln?0d5H|0#$8#hRh=!@KA- zEebxoYq|o0Tl@cb0#}~=$MMS2QUm_y2Mg{0QO|$zW0EwvGPdrTqo1vH=GvtL+^#D>hEs}nFs=HV2^C&mq2pJVR+g-J%m(vk^Nr)_l zabYIOiBpaWEH`!yame9uEa4VJNffQDUi-8>-aM83$Vn|3I}1rZu00DPj4yMf{fi@G zM6c95DjqSBoNl6a-WFvYNjCNwH<_7qZ&CX;n^S`|7C5I%*SE{8uV++aoV?NyOo^!vwG~$h1KaIWIpXLjN_kCX zo5nnc_-M?D3aTIyX0!aR&CFJ25@rCO|ce<<&22_&M9P6^Ji0wENmc> zgHYS1pwZWDkjv7ltliNtMU+27yx~^Uqke#S*`fjn6loeKkFYAcbk{!9FqM~4WRhEz zlqnAjzBn-Mk&AC&g5|aAhp}D%WwcJ4J~R0xPR)SE+T$mz_OF!lFHlp~=x~QAbuTTm z4^u%yyW}Zy+^9N5iDwe1pq|cv8wJfvxkYAl2Iafi&lPm5sF-jCv<-Dbi{+rfU2-8` zH)GKNaqcov5cfEMD%IvFUG>he4{Q-<_jbCq_El6qFRHBN}IJ0i66n|7QId>#c!aK1;Iqm^Y+{{Fnf z2=&u~y-*l2+sf?lSCY-q(eW+4ig`L@P(RAbsepNVnBOk#5)vZypR-4G<(7ViCawXZ zRj|#CI<p+b6ok)a9Ac0u{+i%>zf|Gcyn{loY1zEYe@8bhkJa=rV?*x!GXu;3T}L73Xs z0v2!^1H!|{@>xJ2|Ki6&)r8&_(YSy0c(o2KWB^LaZjpYfbmC7?>VdpzJLO_&mfmR|!{zpZCZd#$&B z;q1ZI2eH}kEP?ONJEENF^6FxP50lNf*ZcigyZ7tY4)DM9%hqjwaD^ELd&msN3}_?Y zxZ4+e^{|zmaLz{d^l^B*beMR&zXiP8y_DDXfRDg@z0V8U%01w%*V?C-UXeq`_d~t} zW!%B-uOdi8Yp${Q{MKMx0OIkM^-k9dT+XQI)4%({zpc(jZ%=m@o%u#0U%P;}u7>u8$BSAGrt3Jo?$jMMbBsOq-+pEQF-I z!y%nf4$g@~X*UNSL_sK#rbkDB?fUVS1ZJ@$Y=8@%%R z%eT2J9RAeyuOlj*iYIKKG*L#>WdHJZ@re0RsQW@WVH^1V`q$Z582ElGB-;D_w^|z$@cPvD$DwR= zVLv~Eqd=Cz?Qh5MCE&Uh7b?ST{MPvO=A!y;^Uqh$o*R4grQ>ur}v0sI%!+5m{^_EV7Z+mY?_s4?&<*W(YUll<-GkXrQX z)>Xd9g}M92{-82>%vzMjSuUOOS2{&8;0vNs#eHjlhVQq0cBi5VD(%x+x&Yx!rY`>Sw}YbM0pd%-FU9f9Xd6 zMje*R?~KZ)2sP36L|fCs-~7`~x)eO0eA4V<(QdnKu!?{K5fZlVw+eb+#0F1j^KMFl zotXXj#+5DnG@n@6Cc}gz#CqDUE~C3hLDe4{x75-Y%RhL>K!pBq7!O5-@X&Y<%KmXp zRu&l7!{uMC)p$x*6+u{JYWvwrid%brDC`{{zIiRuel@{u1kU)8ipGA;M5x>B_w_2j zt@!dbj4(b_?RL;WSGOSl9{;!BL*6#&36?+VjZtvYHagimlZ^St}ol)aE{LJST|N>Xp&mfM$nGjFPl{MzyDuqNCCOu09sl3a>jSv{&5 z@@MjZpv|||*PYl4D9GjUMS*qgH+#c4hhI0#(o1?MjEaLTJL(Ou!(LF@=iVcvb<};c zR5r;k2DIaGu6&XT%r_!VJ9N!8gC5a*EvtQssvz6y4y!+Tv9?@iuLw>bskBweuvB!u zn5xMvSzmqs-D+aLxUl+@wZk3{x0`7>B&dUTvltl&4rAS$y*8dMvm;4=n%_8lZ1nQ^ z=WF&$wVOhp5V`vl-`}Gf^|;cQn?kx&`3yMrl%BJ?ni)cD+_zmK0fb?-qPv3(f43>4 zRC5^X)s*Hz&DLZ&Jm0UQIF^nLQmXj0KS7IhO?=owbfYC@W)T5yXdvwNN4|?_&h^(% z^+!*}&ho?f{E^(w8l=^gDGCeKiSE@sks0QUUQ+SxcFXp&l}ytPgG`{5yI4F3i;#J$BEVuTwwvDEBt93Jeu9IlPIUZ zqbK)v7w0Wiy0D(+zcrrM(DH1nmD0~S?-lW>Z2Gy1zI;(A8WM~Dwyqu~;j2C*5|@$R z!7)9jHQ!_>M{Aa2rHQKU&N~VElHV9*mF=vhGyDZEHcZA{V)_h+h1E@Z*)>T>pm(%7 z8b?+BCBv;4ugQ%xD$PN?r%{_=tE@p#%TRpG_96!77-O8DfC|KM1CnJ5pHy56&lxTY zcHmv*uauT@%c(~6=1bOQ3Udl^8vgCyB5>_2K)In48G2IXSA-7{keEixt{%4&CNY!M zTuSBg+%HHc(#A9oU}hq&T1BQbqvR%S_NYwiJ@{9~#SPj}tQ)9sa4A(KBdEM|*Z$30 z?jS#WMxah=`Etid740KYXTjNL$GU#=boE`DT@R){p^D$Z^3d8dx>8n+u4VYApoZ`R zygznkH?=qoEnIcdNDmy-7XGiT)9NM;#}$vW?8*r?A&qalqPrxf)f`&~X%FRWEClY- zi95OtBtgSEn?waYrskZ)z2|vOwx{+oiyAHs$SBy=EpPF!QcvUz1wQoLee%OT4jlPFbLY(P!^Gj^_ zn@~iBCauIBLX^@Yifm7yYYCad<4cd^*Aj(R7?S$yD(RnCc7Sktjgds7hqjN@b_P66 zpCqdtgUV?lTTm|&_5_b~QyN@~*}mc}b|6hB&@t9)SwrJoO_+wa09>``tMEiuAoT zBm1&}e@;00XVpl4GG_X41Lz5vEe(GK&NfsoUCwb%ld8?tVFIlCa^sjw zG7$Qd7Fx$0&zHLrbq%j$mfbK&@}Xke>>E<9-;We$2GT|;wf+>7Vvk8e_*qepfK|qg zIyUdmrkp=NxiC*Q&xekBOQ4iwccK*Cj!=|-9p>PX8fCgT<*AVY@w%5 zrE4alaCHH~%wqPe)iwy|rM`Jnh`!_diYxyE^uds(Z`7*P7lJ>{p>>UFdt{cC}Aw^>8`{?BV)(o2vRbH%&sSQ^)f z!SF{i8{eMMBxDma){T~Iu?*v9*zwWs{M^(}%WM&#Q^QpI>dX*wkD5|(An1rRIh?v? zbvG1)HD^`Pkg=n7ycKRyOLe0HHu?0k{)YYbj*%Uq$*$FFvY%1ku6!{E1dQ$taH2vJ zRNYX61LK>B9rj8VcXV3jOfg&(1_ZGO)=@6XpoGWv0N9tm^%DPP04&2 zX1_l$-8Fi!U^yv_wzMp&zq%TS*F567bE91>U(5tUFZ;zQ6pyko+GM}FiC7a*(+0z? zWcTn>!n`MvqcoDx3W-WF4c`C3PUqkOgtJ|lq-`0hu8ZH5{VlG$KV01T>D9o1dXS1R zPiz&wbPKeDUOCLr6Bn#$$cqug{%XV9Uh*2s-o1K|r)L(#$ViscVCm!J79pZg44vK+-bGA-TmDE1EFOm@fE9+q%1`36?)k zoNMh=%{Z_VZqaYT{WK}fRG9DL2bJa%(F(EN=VoF{`@#`-itYxAZasJ5V?C?^GH1qX zbGLEf_JbN9)+mj&QTqFOE#j#;)81lJc7h#Xox=o)!2G(T^@C#X3El${&(q+e2Okd^ zj?-LrO`ff2SVtWjcN`*ya@9d>Tg;`7Hr08`Gn3Li1F4%u3c1p~qCr_G!wa39scvzU z;uwD9MB|#IIaHgJbth>@yY_LZdE3GOM(8n6omJ96ginXfxdc}va6ia;SUc&Kr46xJ z5S_zDDI^a}w&)`hD^YsL7?;*|v4id?Cc=*XS@TGNbW9svJOZQURNRsDSVUwuaa}0| zaZnT7xD@q@>I{y7Fd0d-?Qa=8P2vNomMa6lX-_B@tX(kS(iX=hV+Vol zWMRXAdHJVG{6xNn3bp=nQS>=9z!r%`H2ryA{})_Esi!hNMX2J8PT;Rj$tGmGFx5f! zUstPh!H-!kW3xE+c&Nb4S9;ml5~WD&8fIhdD5N14Ca!0W41y>RsAlLCng^ks(G)N4 z&`)y>lNXh2;6$(luy2I#!p%(b*?Za=@ebJ-E>0YC3}#?53p(tZ8A^i>!uPIGG;d#| zx|py;G41A4m5r@XBng#|5Niy*6IRhK-q$IKAp_AMyy27^Dv9evxgZwNlIYqh{FZf9 zdS6{U=H@f}0xXv+@oExewX7|M3?f9q)s03K_K48Put=>3Ma8f-%?R<=uk0y-avbQR zg($C_>1(NR)XdM-NDh~>_%Z~!stk2l$VoC@F;A4~*?Dq4)oc?rGQx-#UxV9WH^Uw% z2Xz(;v7W>+d6inVtI-}3=d;6PB5MSD&VK)ZeLlArXpoU$z#dybd85rd6k3j_Tm*|# zl!ks2tYn7EFl;-m#G6neG7<9-v%!I8YqjzIf>W^;U1WNS#e`zf02arcAWxP=Qj&>u z66~QmYpTAW;v~LdwhM2FkMc&a>Wb#{_gS&2J$eY1CQvGTHjR^ubQ)My6>=62m4~H$ z6h%g%!20nzk+xE3krm2Wp?DVtA*-EXzQRf+X80W4eX5Ih!x}T;U~^V|KahL;qsPsRzkv6+Q*A*?3dWhHT7h8MTM+I;um-qsPxddJbZq! z@q-@let)^XV0b7i5;AG-E;WOp7%4Ca^)z;+uAD(i(ZwK)+To941yyN zGf|I0QHX?s;b9F zw_iu?fX2ISRU(sB2UdGdX$J|RIlG7A)m)ye1*zo7oufrL`2s8lcxYf6k=Mw*1e z1K#+dIgEPj9yd6%FG`wj6KGJ-qT!}%jy~^9g*RCx5Yw-qvLJqsWsUw3VJ70el*Ic{ z?j1UmFxa-BM@Th`qiRoF3z|(RH!2HwAB!?tK@>3x!)xGKh2Cj!MsX(Pp)?%TpOF9Q zl~+B{1Jgn^3OzHBPbd#CtSJxZQ7~{`zlJzvX{7NHnX)cL^NSDQgovrKM|v<3N2At> zzmU%4Cd)BPe2%VV9N%)%C`>nA3KG&?B~TZHi=lslN;TsYr8Lko4A|Ym#V{S~fD%ia zRMc(4cO1jLZwmV)XPkM45hY&vuYfZ+hGXIS8oWT#lAK7IYdSof6CO z-f{wG^3Ujj#86~dD>N)}=2eqxjYW2fe=1^bPPbP<(Wx&Zx!dEyz% z3Kf-7Lc3B5q0{p?b8sbIt0WVR9)hQ@af*|wRdzdQ=J*mUWU3T|pZz7KCW|hU#c?f; zhcaoQo%*}qka}ZFFuKqP;$(5IkZ~-ikm<8~pyCWPuc2q)Qm4c`QpK@Ko(~ndgV)qC|ZOv>dG!YNih`!#a=!^)8^+15GozoAB z=MA8tpd>|l802aAu&6j`TMb-QQ-L+FS`nM}<8zW|hCA2oEe7YdjK=m$F?KS8^%O)0 ziL%4)NSd^JFrWECkS-%f7uzeC3WlUbm7^(->aDEEx54_2YlWXiVh=IBM%s~8t6DN*pX0n1?xXy7sH$=s}+Qc#K}4KfA-G*j+!0;+K|~c#(%t(X1I^qL4&M5`X`7 z>0op<1@QyP7Q=E06dRIi7embE!-?Imc)b%-RB6~eNm#z4u%P^);c}j06hDGTN@9SJARN%XcVtY^J?8Saymx)Q?X--Nmz(TMIim{v5XPAICI&8m(L zH9yXG${x8pGb2%<$JK;Aa?G)@Aa`(t$w0J4yv@Pcds+!Y0!;L=sSqgNpa(HC2 zvuub*grEKpM z-leZD4Mf?b)1hUMUY@ zKK%5p%spw#jL>Blb~!R0S6T1690zZ(=;VQ0`z7wp^CA>A=U}TEtALS(hYo$oYfUO5p@ov}tnU4EdiVp0I5jMi{!LMmZ=N>WEr=k; zo>Ue0Q{+?(bMXpFnS`qnUv)v;rICY2 zDWwef303Xx)apt7%|DeT)O#)@NEY=}R&eQ?Lc%vH2wH`A>3+(9?g|{7(%3PB>0{O0&eL4T@B^=s#NR z6JH!KPn}q(24uMrUUCMDy6OiRGEt*%z|)8fl;bW~B>qvUag6ZDXxEvkih4809u#gA#pt-br!&k>tvso?W1;uc{9i z$0HN_G{lAOd~3^qG>X)mxq~j-9PzpX`&|xWF2kG$;P(wm^&b{4b1>JgoBE*voUB-AArzssTtU3GfZJe>B-hsz?OE{l5%Oy$~0*`qKlu28Eh;-X9<%qM2kDaJ~ zzf;vve=W{Bi`kTa*RSDo^zBUkOi!`f_!AQv!Ld^^md{Qr+txE_PgKj$X*u z)jwK7Gv&nl3tG|3V`nQVKzKPdNYQSSQkJI$P zIDQ(1!T-~JL}tP(>jy50!^6-8>}2jhlLaLoy!Ce<;wOXs;$L$niKNOyEu2&~6XTG2?TAh)_v=0r%tAU|VUoJ!W52&E>{0*z!XdPy#|saO<^6Xw zjBw_4FK8xmme;o-a&2cQ^@?-Fi%^umyA9SI6TpYltZ#vf*}HZ|uBrL=co2|{DIi>* zm>t|GB)nU~p&D8y4cDIRgdHogj%D)ibGtxx519HMtF&`A|WEdVX<6gfPY}C<+ z_fYL>+$0u~hulJ^vn>&t{XN3_k!VW$*|hx+jZ*`D_3g;thQtb7EBU^)8*IzI+E!4Z zzvs~~GQr&t(W_Pw^|GMB_Q;9yJMY`*N7VoCHW2(a>D>EKW@p9u9WrX%6Yzex()<3l z@D4dW4hVSPe?HzmJTmTmy?qD1Z|4WRy)6VlK|#I0!$PUZ!@}V~AwVI0oKr$A=BCe+ z5Ptj=g@VHVIQ(#6^D;A4adWn_H1}XNvvoSxNB2-4P0f3xA<i2a7PdT4rU9_dJ< zn-&nPF5eJ}?1i=(sGee?n^s@vz>thamm={=X4PpvIrL)wW7p6oi;bh&gM?7U4xUi2 z4dHC36Uyus-|6tOQvuNFnxj&SK(>=w({?W3Oqylpr^e2;^V5(SuFD>9JD2gj@>$v;WC#Zb9kqB{iUJ)EXHkHk$T#6D#H*~B{%p*X zAm+dkKLQgdHz;a$k}=pC_#-HHXk2#8F+>!oBpoz7=zQE$`U~=W z|#lUG@I#JKT46Z>}$g_ zxUZxY{!pJRg!+e50dzJy8Vp%V$aFLv5p-N+^T#EFQMt-l@7z5pirMen5zS!b=MaxT z-gjB$L=2hy_YzzgL}q9_69yHS6qw1t!#)%fS`~y}Fj}xH(1)V%D#(dX8PKRE@KsPG zD(I_0#03NuuxCMkgPKKQU0|=g3$Q8H++kP?kX>NO0@s&gU4&hz>!59*^@6ekc}=M6 zkXO-~U`eUAwXnUYx`>`&>PW9(TA^BDgaTRnzRW*kKR`hj5UwKML5rCXisBH#AOwn0 zph*O71k#H(;39?xZuOCwd@5M;6RN{}qN*crgKfi=ftrVjlD(vKgI05arj&(6UIb7Z zP=}_3T7(3kj?iS51PQ|Ah#TxJ2hu%MeNw~Le#=MVd9+(d4q^F(-c9+vH}T>ew!l|QtuXkKrwmp);?lrho`x5j1841(n2 z2iSAKp0P7&M0<-*(N^pmH*4UnvnxN`HXB{oBzp-I)=bjfVH_)GIjpH(&M}u|$_X%# zhgo5(iQE%4;(xKNQ1DmqE-NYrW;2pH!{^`5Jt{jSt?HZmO;Nag6l3vjHdmunL7N-@ zIfb1d9kTV!l|ZFM@cZTgiD-!!!|BPOT?5PKi%X0M#aCKyseNH3V};~Pj!Uj=kk;*p zp1dJESEeVz3bPi)vHaweRkr_oP#0SbYFMW~<*BE-@6d7jzsD!>XB~>xQGE2LJp|+L zCt0*4#X)(+&;etk4J(gz)@Y=2gn1c7B)By0me5E736Ma55L|-0Hf{;lSn%M4 z;4Z=4H8k$-5L|-0Yns>RobS8mCilEC-v9UZk8PvYteUmgs@kJg)hfA`9XB-AaQ(&Z z^29IzX3tK0=Ft8A$m_VYd&}z|J0)B0JR^<6#~n%gwbV-$#`%WnD4)s|t2xI?2&mXR zOpT7`I%^5}AAS4*KN)P`Q;Qc)`t(X-I9B)k?A-fWX&UWwdN23fM-2~s@aWTax-U3W z=g$&-_veYlWn!9 z$3fBwg#67NzP^t=w*~8(nU^gfe)8WfAnNxKE7Md-lPn-tbX^<-QJT) zj;~H*;p-Mu+)Bh{k;te;D~1h>So1O)ITe9PdBI{hOU^{^D7Iy{*v420!NNEdt1Q_2 z#SK6hzCcbU>zU%~S|507`uJi|D9G=_!_n~+LXvec-~xb(8qcBNREteV?-S+3o7c=~ zc(nvLq-UtmU_uL=zUWphvOyXu#J+-W*2mjTAyUbUjQM!^&1~98wPly*VG@$G+x;QJ zw7XlFEO>g2^2gX0EU;DuVX`x9py9c0PTAziJ5?OzKKAbquLjhtMvbmhWr)cFqPiLOrP5fi9LG+Gh7v}fGi;1-AAyZ_8D2+J zmZ^OVEM8ku?h}lz7g_XIiS7eSgVUbNf>Z0*xDa#Hqf4pT^@g|Fq1X_!AgN6LK7|1O z{=C$88xP<5n4wqGPLZH@#6Z=LS$(}<_EAkn?3a>k%eM~G-XJ?_K!RS7TW{IM=Xl7;dlzx32>^ChDG}5!o4;tE1Z^W6o2~7FB>vfV6(wi6y#|NidKx?yi}0? zDQTVBJyfaLG1a%J0lTAHw29E0NHe|f(hhUd817H&*Uqq$Q5NuZhaq(yrL~77 z7cd@%pTaYjOnMSCm%(6;z1uF~&t-?wt}{_>O?+=!Uez9IFl5bM*0(O4a8EXYDbPRM zHhJVFv6A+}C=Ey~mo#hGhG&4&kz)lAUYAXe!?>jka>8X6Y%3KS%A= zSbbCTZor@86&a42G%+Ks$?LD}UK$a38cT)q9c}L+_I9Rv^BOr??@H8FUmTn{MYCiU zqApx~dhF79D`hB`dR*Ox9P5VpC-%;o4-%232BKn`;;L_tpicKaZmv~F#q zNP5YWd{_be5898#EZvl}-0Hbc*f5`az~LDZuzAiCX#E)e#cjCX4!QQ{Vh4Ya-a%N( zf^&|*FtlbSA-mD(AX?yfBw{4?N#%euUSw21Lng^;KK*~u@Od25SwQc{*L zzB4Z|>0#a}2rPe_#gc9Gy&WxyM!uqEsKeGqvOH#OUR`f=$frt5whgl{7)S@=C50rn=UxTi2vV(*pHlkY5B zrkb>?gmD@%P2lU-I7L_}mQ`buxFsya2%6WV}`oc<>SdEW4WVvY&8=INL zw0x4~p-XSsXgAOLpxp57gY_`POM385wb$g$(2vJ86j-KYGZhrEm-s^$fxA>QFP3k{ z-XmgUV}VKKr$Zf*=z9H8Bx}C#&6Ub?=(+5Toy0JEZF<|s#hyBO%xi^!NrYX{t`@S_ zr*q} z+1~V)XQdsoTd(mCQ>=nQ^vy?-lp)NFyjUX|KCY1%Li~&LSHuqzqqva;J*TWh zk3~NO3~%)odCIa#r%oH?tl%=)@ba-cpBQj4eZ#cbWw)jo`Nsmax0a zw|>_jC>IY2r9J^|eD9e}61hbVKeEByTEnNhdRNYVI^Hjw-u3mm$zpL4U7tl3)6IAHId4f4oi?YRz;-C83e za}6H~DJUt}e7qdxI_Tc{GA`e9wvH!26K{El@|@R)Bo?>cMY#dxR^LD<>S%{(Lsr1TunjYiFKUFSYXJ+ ztGTY>J2y@XH_jT}nPs=@Cw{#1Vr8QIFldOVNt-q*t0zUdP4p=0!GiXKPr~#X6x8<< zE45)^O++8oz3+J62P9x->R~6G2!CQ55jANEiYHiFxcYi?M0r(^ia!fn2p$)yW~}A` z{VYu2vtFL^t%QO+RY01fM%Ju68&SrVOcm+A7hf{`D>OJ%OI{o~#p7-uBX+O>JnZZ% zKL56ppIo#c87Esc4z7I=YT0spJik2sWz!;fjt#|~uv;g?sYeW3HJ9;Z!X;9Ye?-WO zP29`3g?5?Kj>L}74tPbdEZvg!;1Y28Ko7OY){}6>qvdA{GGIt|CJjjs1y1ptW9((% z5$!VAs~HG?2qlFAp@dibN7&22BhsVk7CxktpC8Gg6wn7yeCR_csHLD4);mnYpqolS z8>$P3)3wEUjkhcTz=$;)OGJoB?zb!VsAyX_j;FfV?VJh8QBJf$z<$(h&e860CH)sK zA>5Li?Pnw2`0Q=)$l#>9=A6}ncfsR7s_;5xWfEi}>!m&?1Pg=;Sp-Oqb(LS48sVBV zpWaK(b2#fik8&CV=$SXwrZufZz!&x$KfkM@fVkpTte`l{7&=lD%X~hf|&N zt%#@{fCN6!VY2>E$X%7}-Io7atw-TK35#4QzlZ0%uLT~nCzvA-sJ;B2*B-HE=wR8X zP_}L$*LAZqB?f-2hc+GR-lb|mxppwyXsN(vncMCi|DKC6{h_Du;PRr|+oDTXf{S%! zf)`uPu;9e&q#ZVotF%0mNv*z=?E4#h&AzJz;uY=`NARK}{Kg`C=`_04W{$s&;5WPESri{PN2#4|D~w4e?C4lPd0*c$RB#RyLaxnl zLI{odc4qFl@RQYfE__U-0)>+dessq%8@ze7wS$|L{bZx7b#X*ucY2m_Fjhm%$6F;@SNN$t=j#y-PI|VlOC;utC^#a-u>yymZgFJ8pi5gdSWIes@&deR&0%~)k-46^Ed!F-9D@q<>rVVF? z)STkGo|+EUk1%&-S3yCxCpX7dyThg=VHGb-t$p~p zEBv`t5rdK9j2YY5yE7C${5a>lVJEk%{Uqz8MUUdKtUKRS&IQ+A))F!M!5xU=swz;S zy5dw7WwqK4q#ALNQ+mAE z`&-OXEB?Cx>?Hx%SJPe9fVZoq zO|7Bu_$5kVK5&+WC`n@;OUt5>?SUx2X6DiNVoM-X5LQu)I&NTCGcj%EEk9RXu`*I>BldUgbTwxLs*38O$G+tTYbNoCzsbYdM^G2qRDzjgWC4Q8U zEct8D9^$YrMR>Y5r6u z{ksF(v*WifW9<05jxw>1xRRj9k%mdKKQlaDn+~M%uu@MZrl}$`wWNsMe>b+NFm}?V z7_@j>zB6yoz&HLb)Bnzy=tpEo%dv!x@ST|w-ZZkwOSY%1F{9w&jUf=|aTSeLp{a5x z6;73@t5;5H8lyr4>e$s)%tLU*S?qI@)U2c+u5+WUF$>*iA*#%1T1v~3*4vr{-aIucRIht16@Yprqd zsqA-SNGZ(-J;fyr<;(g2GkL@FQKKbof^es}8iQKJgd8~RB0ftnv^V8V>I`I>S;~sp z=0^%^yNb&<%01e?`yo5xP+=ky)i5_<@XFt1Wygh8LlPEkYEx~ zgZi~xABtOubRdKJP1KvsQdCk!CuY*Ze}vY%&{0QJGOD=u!0DS6v0F<2ssu{!zPPDq zQ0CN1US&h!Zh^8_)6k^CyS0M%b9+v4{nnLrg1}tzw3E=er1tW0w?MArh-{E%cupD5<8cj0U~1K;ylN>0=5B@fbS}%Sj@IQvj|8pc= zKH0iZ8VLX}eDKFeIy#cEtr21v-Oe6tWcvZa0kyWG`3gj0Ne3X3{O>;8BNe6FISKuj zQ0_&0-I9za>9Y5QyWQW@s4Kc-_UfovMMZQt-d^VHtFjYN+Yi?-y}XRHaxqKNf7CT4 zwGk)|M4_q2uP*vRgsLzmuSy2bwvZ#Y|vgbcV%yDiF?`o6(12b{=4>XJ!X``1hhC)X~t5+*JIvMF>QU@{_uaTfutR5p{ z1CzRT{k8!?>K;@PbbVue(?IBXkSI^*_onU%6TwH!U1OLS8EHA9mbgbFK=1M_V<~t661I6r zb-xnT&^^!sXtNvf(x>}|mP95{FT|Kgv&%S+ojHrjf#Ca3^|6~IC1?CC2pzdmhzRH{1w(oY4tn3iDE#@dyY(D{zh+8X)P|N zc_hUoy~h{3c;ttd1hsSyG}F!_MmiM&*Xc;efaL5XHU7}Yo@u&)SiOFISET8L zJ(KesgDDw4c#&xVAB%}j6laOe30vB=uC+w*=S<;JkE?byI1$@?^{}Rm5bQs-#}M#Q zc|E+X8MO2 zB983l+v@VJ_Gjd~vrr(T5NHQy0C#q_&QJ5aYNz#`3|WIG#au!U9OQ?Tiwlz+0vZ;* z=B4bKb(WA6>OS+q24qA&j!!gtF+F5?DGh#$MAF^Xs{df6mCJCu2l>^6Wz-h=>UuKN zI3CKJJXYPfr`Gb`v}q^m8ionJnu$5?!fgz2o>xxlV#s@bC|VcrsbOtCl3J#OoS;Sl zX4!=EDfeR{yizw6e3JH}d9^6_NB8igEu#AW>PL_sJOTXelieoofW#v7Rtg0GAo%|u z>0ehZQCoyb+c@YcyVybOb^cIf1?gV_s#Q4Y&kzDK2*tX3YGmN%DS~&PF#_Nh;V=XlM5AVJX7B-GtmJ@b+f42MiNAm~w{$B)QUpPT z{uhJ_>VIW#Zw7%l*n|IK^ydTDf6E7!-VBpQ0{|%Le*Yp>G=Bm*m_e)|;6KlQqWsQD zF#%5QilFXHhXla>r9_-8e{phfv4Z>~8Q6`09|0*6pePOCa5B-ig`{-*JJ0e<)M z{|!VXh4i0Z|KG)b{ki#D7yvLcKmz>7ug>q{zxPak1MC?6nfw2wpZXp2*XI3iNC4o* f_}|L({~CJ*X%vJC0}!>34S*ojyUY}!9Dx4=0: + return s[:i] + i = s.find('/*') # Remove comments within a line + j = s.find('*/') + if i>=0 and j>=0: + return decomment(s[:i] + s[j+2:]) + return s + +#-------------------------------------------------------------------------------- +# Generate a sequential-or form for all control wires +#-------------------------------------------------------------------------------- +def sequential_or(f, t, tokens): + incond = False # Inside an "if" condition state + cond = [] # Condition nested lists + ccond = [] # Currently scanned condition list + ctls = {} # Dictionary of control wires and their equations + ccwires = [] # List of wires at the current condition list level + i = 0 # Current index into the tokens list + while i < len(tokens): + tok = tokens[i] + (toknum, tokval, _, _, _) = tok + if incond and not (toknum==NAME and tokval=='begin'): + if toknum != DEDENT and toknum != INDENT: + ccond.append(tok) + if toknum==NAME: + if tokval=='if': + incond = True + if tokval=='begin': # Push a condition list + incond = False + cond.append(copy.deepcopy(ccond)) + ccond.clear() + ccwires.clear() + if tokval=='end': # Pop a condition list + cond.pop() + if is_ctl(tokval) and not incond: + rval = get_rval(tokens, i) + linesub = tok2str(cond) + rhs = tok2str(rval) + line = "{0} = {0} | ".format(tokval) + if tokval in ccwires: # Check for duplicate assignments + hint = [ cond[n][m].string for n in range(len(cond)) for m in range(len(cond[n])) ] + print ("WARNING: {0}: Multiple assignment of {1}".format(''.join(hint), tokval)) + ccwires.append(tokval) # Track this wire as assigned at this condition level + if tokval in ctls_wide: + tr = linesub.translate(str.maketrans(dict.fromkeys('~','n'))) # Make temporary name + tmpname = "{0}_{1}_{2}".format(tokval, tr.translate(str.maketrans(dict.fromkeys('[]()&',None))), len(ccwires)) + t.write("reg {0};\n".format(tmpname)) + line = "{0} = {1};\n".format(tmpname, linesub) + line + line += "({{{0},{0}}}){1}".format(tmpname, rhs) + else: + line += linesub + rhs + line = line.replace(')(', ')&(') + line = line.replace('&&', '&') + line = line.replace('(1)&', '') + line = line.replace('&(1)', '') + i += len(rval[0]) + f.write ('{0};\n'.format(line)) + i += 1 + +#-------------------------------------------------------------------------------- +tokens = [] +# Input file which we are processing +with open(fname) as f: + lines = f.readlines() + +for line in lines: + src = decomment(line) + src = bytes(src.encode()) + src = io.BytesIO(src) + toklist = list(tokenize.tokenize(src.readline)) + tokens.extend(toklist) + +with open(oname, 'w') as f: + with open(tname, 'w') as t: + f.write("// Automatically generated by gencompile.py\n\n") + t.write("// Automatically generated by gencompile.py\n\n") + sequential_or(f, t, tokens) + +# Touch a file that includes 'exec_matrix_compiled.vh' to ensure it will recompile correctly +os.utime("execute.v", None) diff --git a/cpu/control/genmatrix.py b/cpu/control/genmatrix.py new file mode 100644 index 0000000..7bece81 --- /dev/null +++ b/cpu/control/genmatrix.py @@ -0,0 +1,189 @@ +#!/usr/bin/env python3 +# +# This script reads A-Z80 instruction timing data from a spreadsheet text file +# 'Timings.csv' (which is a TAB-delimited text file exported from 'Timings.xlsm') +# and generates a Verilog include file defining the control block execution matrix. +# Token keywords in the timing spreadsheet are substituted using a list of keys +# defined in 'timing_macros.i'. +# +#------------------------------------------------------------------------------- +# Copyright (C) 2014,2016 Goran Devic +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +#------------------------------------------------------------------------------- +import string +import sys +import csv +import os + +# Input file (exported from 'Timings.xlsm'): +fname = "Timings.csv" + +# Input file containing macro substitution keys +kname = "timing_macros.i" + +# Set this to 1 if you want abbreviated matrix (no-action lines removed) +abbr = 1 + +# Set this to 0 if you want to strip all comments from the resulting file +comment = 1 + +# Set this to 1 if you want debug $display() printout on each PLA line +debug = 0 + +# Print this string in front of every line that starts with "ctl_". This helps +# formatting the output to be more readable. +ctl_prefix = "\n"+" "*19 + +# Read in the content of the macro substitution file +macros = [] +with open(kname, 'r') as f: + for line in f: + if len(line.strip())>0 and line[0]!='/': + # Wrap up non-starting //-style comments into /* ... */ so the + # line can be concatenated while preserving comments + i = line.find("//") + if i>0: + if comment==1: + macros.append( line.rstrip().replace("//", "/*", 1) + " */" ) + else: + macros.append( line.rstrip()[0:i] ) + else: + macros.append(line.rstrip()) + +# List of errors / keys and macros that did not match. We stash them as we go +# and then print at the end so it is easier to find them +errors = [] + +# Returns a substitution string given the section name (key) and the macro token +# This is done by simply traversing macro substitution list of lines, finding a +# section that starts with a :key and copying the substitution lines verbatim. +def getSubst(key, token): + subst = [] + multiline = False + validset = False + if key=="Comments": # Special case: ignore "Comments" column! + return "" + for l in macros: + if multiline==True: + # Multiline copies lines until a char at [0] is not a space + if len(l.strip())==0 or l[0]!=' ': + return '\n' + "\n".join(subst).rstrip() + else: + subst.append(l.rstrip()) + lx = l.split(' ') # Split the string and then ignore (duplicate) + lx = list(filter(None, lx)) # spaces in the list left by the split() + if l.startswith(":"): # Find and recognize a matching set (key) section + if validset: # Error if there is a new section going from the macthing one + break # meaning we did not find our macro in there + if l[1:]==key: + validset = True + elif validset and lx[0]==token: + if len(lx)==1: + return "" + if lx[1]=='\\': # Multi-line macro state starts with '\' character + multiline = True + continue + lx.pop(0) + s = " ".join(lx) + return ' ' + s.strip() + err = "{0} not in {1}".format(token, key) + if err not in errors: + errors.append(err) + return " --- {0} ?? {1} --- ".format(token, key) + +# Read the content of a file and using the csv reader and remove any quotes from the input fields +content = [] # Content of the spreadsheet timing file +with open(fname, 'r') as csvFile: + reader = csv.reader(csvFile, delimiter='\t', quotechar='"') + for row in reader: + content.append('\t'.join(row)) + +# The first line is special: it contains names of sets for our macro substitutions +tkeys = {} # Spreadsheet table column keys +tokens = content.pop(0).split('\t') +for col in range(len(tokens)): + if len(tokens[col])==0: + continue + tkeys[col] = tokens[col] + +# Process each line separately (stateless processor) +imatrix = [] # Verilog execution matrix code +for line in content: + col = line.split('\t') # Split the string into a list of columns + col_clean = list(filter(None, col)) # Removed all empty fields (between the separators) + if len(col_clean)==0: # Ignore completely empty lines + continue + + if col_clean[0].startswith('//') and comment==1: + imatrix.append(col_clean[0]) # Optionally print comment lines + + if col_clean[0].startswith("#end"): # Print the end of a condition + imatrix.append("end\n") + + if col_clean[0].startswith('#if'): # Print the start of a condition + s = col_clean[0] + tag = s.find(":") + condition = s[4:tag] + imatrix.append("if ({0}) begin".format(condition.strip())) + if debug and len(s[tag:])>1: # Print only in debug and there is something to print + imatrix.append(" $display(\"{0}\");".format(s[4:])) + + # We recognize 2 kinds of timing statements based on the starting characters: + # "#0".. common timings using M and T cycles (M being optional) + # "#always" timing that does not depend on M and T cycles (ex. ALU operations) + if col_clean[0].startswith('#0') or col_clean[0].startswith('#always'): + # M and T states are hard-coded in the table at the index 1 and 2 + if col_clean[0].startswith('#0'): + if col[1]=='?': # M is optional, use '?' to skip it + state = " if (T{0}) begin".format(col[2]) + else: + state = " if (M{0} & T{1}) begin".format(col[1], col[2]) + else: + state = " begin" + + # Loop over all other columns and perform verbatim substitution + action = "" + for i in range(3,len(col)): + # There may be multiple tokens separated by commas + tokList = col[i].strip().split(',') + tokList = list(filter(None, tokList)) # Filter out empty lines + for token in tokList: + token = token.strip() + if i in tkeys and len(token)>0: + macro = getSubst(tkeys[i], token) + if macro.strip().startswith("ctl_"): + action += ctl_prefix + action += macro + if state.find("ERROR")>=0: + print ("{0} {1}".format(state, action)) + break + + # Complete and write out a line + if abbr and len(action)==0: + continue + imatrix.append("{0}{1} end".format(state, action)) + +# Create a file containing the logic matrix code +with open('exec_matrix.vh', 'w') as file: + if comment==1: + file.write("// Automatically generated by genmatrix.py\n\n") + # If there were errors, print them first (and output to the console) + if len(errors)>0: + for error in errors: + print (error) + file.write(error + "\n") + file.write("-" * 80 + "\n") + for item in imatrix: + file.write("{}\n".format(item)) + +# Touch a file that includes 'exec_matrix.vh' to ensure it will recompile correctly +os.utime("execute.v", None) diff --git a/cpu/control/genref.py b/cpu/control/genref.py new file mode 100644 index 0000000..cb23edd --- /dev/null +++ b/cpu/control/genref.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python3 +# +# This script reads and parses selected Verilog and SystemVerilog modules +# and generates a set of Verilog include files for the control block. +# +#------------------------------------------------------------------------------- +# Copyright (C) 2014 Goran Devic +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +#------------------------------------------------------------------------------- +import glob +import os + +with open('../top-level-files.txt') as f: + files = f.read().splitlines() + +# Create 2 files that should be included by the execution engine: +# 1. A file listing all control signals +# 2. A file containing statements initializing control signals to zero +with open('exec_module.vh', 'w') as file1, open('exec_zero.vh', 'w') as file0: + file1.write("// Automatically generated by genref.py\n") + file0.write("// Automatically generated by genref.py\n") + +# Read and parse each file from the list of input files +for infile in files: + wires = [] + if not os.path.isfile('../' + infile): + continue + with open('../' + infile, "r") as f: + for line in f: + info = line.split() + # input wire register case + if len(info)>2 and info[0]=="input" and info[1]=="wire" and info[2].startswith("ctl_"): + wires.append(info[2].strip(';,')) + # input wire bus case (ex. "[1:0]") + if len(info)>3 and info[0]=="input" and info[1]=="wire" and info[2].startswith("[") and info[3].startswith("ctl_"): + wires.append(info[2] + " " + info[3].strip(';,')) + + if len(wires)>0: + with open('exec_module.vh', 'a') as file1, open('exec_zero.vh', 'a') as file0: + print ("MODULE:", infile) + file0.write("\n// Module: " + infile + "\n") + file1.write("\n// Module: " + infile + "\n") + for wire in wires: + print (" ", wire) + file1.write("output reg " + wire + ",\n") + if "[" in wire: + file0.write(wire.split()[1] + " = 0;\n") + else: + file0.write(wire + " = 0;\n") + +# Touch a file that includes 'exec_module.vh' and 'exec_zero.vh' to ensure it will recompile correctly +os.utime("execute.v", None) diff --git a/cpu/control/interrupts.bdf b/cpu/control/interrupts.bdf new file mode 100644 index 0000000..3e24763 --- /dev/null +++ b/cpu/control/interrupts.bdf @@ -0,0 +1,1885 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 152 208 168) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_iff1_iff2" (rect 9 0 68 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 504 208 520) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nmi" (rect 9 0 26 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 728 208 744) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "setM1" (rect 9 0 38 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 672 208 688) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "intr" (rect 9 0 24 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 168 208 184) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_iffx_we" (rect 9 0 63 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 232 208 248) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_iffx_bit" (rect 9 0 62 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1072 200 1088) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_im_we" (rect 9 0 57 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 888 208 904) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "db[1..0]" (rect 9 0 46 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1040 200 1056) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "clk" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 744 208 760) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_no_ints" (rect 9 0 62 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 1096 200 1112) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nreset" (rect 9 0 39 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 728 232 904 248) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "iff2" (rect 90 0 107 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 688 912 864 928) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "im1" (rect 90 0 107 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 688 1000 864 1016) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "im2" (rect 90 0 107 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 744 488 920 504) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "in_nmi" (rect 90 0 121 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 744 656 920 672) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "in_intr" (rect 90 0 119 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 328 984 392 1032) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst14" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 392 896 456 944) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst15" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 384 440 416 456) + (text "VCC" (rect 7 0 27 10)(font "Arial" (font_size 6))) + (text "inst18" (rect 3 5 32 17)(font "Arial" )(invisible)) + (port + (pt 16 16) + (output) + (text "1" (rect 19 7 24 19)(font "Courier New" (bold))(invisible)) + (text "1" (rect 19 7 24 19)(font "Courier New" (bold))(invisible)) + (line (pt 16 16)(pt 16 8)) + ) + (drawing + (line (pt 8 8)(pt 24 8)) + ) +) +(symbol + (rect 664 640 728 688) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst19" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 288 648 352 696) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst20" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 624 528 656 576) + (text "NOT" (rect 22 1 32 21)(font "Arial" (font_size 6))(vertical)) + (text "inst13" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 13)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 39)(pt 16 48)) + ) + (drawing + (line (pt 7 13)(pt 25 13)) + (line (pt 25 13)(pt 16 31)) + (line (pt 7 13)(pt 16 31)) + (circle (rect 12 31 20 39)) + ) + (rotate270) +) +(symbol + (rect 328 912 376 944) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst11" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 304 144 368 192) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 37 20 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 224 736 272 768) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst7" (rect 3 21 26 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 288 720 352 768) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst23" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 424 472 488 552) + (text "DFF" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst28" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 3 29 20 41)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 3 29 20 41)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 45 20 50 32)(font "Courier New" (bold))) + (text "Q" (rect 43 20 48 32)(font "Courier New" (bold))) + (line (pt 52 24)(pt 64 24)) + ) + (drawing + (line (pt 12 12)(pt 52 12)) + (line (pt 12 68)(pt 52 68)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 19 40)(pt 12 47)) + (line (pt 12 32)(pt 20 40)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 552 472 616 552) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst43" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 552 648 616 728) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst44" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 424 648 488 728) + (text "DFF" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst47" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 3 29 20 41)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 3 29 20 41)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 45 20 50 32)(font "Courier New" (bold))) + (text "Q" (rect 43 20 48 32)(font "Courier New" (bold))) + (line (pt 52 24)(pt 64 24)) + ) + (drawing + (line (pt 12 12)(pt 52 12)) + (line (pt 12 68)(pt 52 68)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 19 40)(pt 12 47)) + (line (pt 12 32)(pt 20 40)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 552 896 616 976) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "instIIM1" (rect 3 68 41 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 448 984 512 1064) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "instIIM2" (rect 3 68 41 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 624 88 688 168) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "instIFF1" (rect 3 68 44 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 304 216 368 296) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "instIFF2" (rect 3 68 44 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 400 64 464 112) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "iff1mux1" (rect 3 37 47 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 400 112 464 160) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "iff1mux2" (rect 3 37 47 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 496 88 560 136) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "iff1mux3" (rect 3 37 47 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 312 80 360 112) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst10" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 264 304 328 352) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst1" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 192 304 240 336) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "nin_intr" (rect 3 21 38 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 192 344 240 376) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "nin_nmi" (rect 3 21 40 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 496 320 560 368) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst2" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 288 776 352 824) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst4" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 224 776 272 808) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "nin_intr2" (rect 3 21 44 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 288 560 352 608) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst5" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 224 560 272 592) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "nin_nmi2" (rect 3 21 46 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(connector + (text "iff1" (rect 177 648 194 660)(font "Arial" )) + (pt 288 664) + (pt 176 664) +) +(connector + (pt 480 88) + (pt 480 104) +) +(connector + (pt 480 136) + (pt 480 120) +) +(connector + (text "clk" (rect 586 112 600 124)(font "Arial" )) + (pt 576 128) + (pt 624 128) +) +(connector + (pt 592 144) + (pt 624 144) +) +(connector + (pt 480 120) + (pt 496 120) +) +(connector + (pt 480 104) + (pt 496 104) +) +(connector + (pt 400 144) + (pt 384 144) +) +(connector + (pt 384 144) + (pt 384 240) +) +(connector + (pt 240 160) + (pt 240 128) +) +(connector + (pt 336 328) + (pt 336 296) +) +(connector + (pt 240 176) + (pt 240 272) +) +(connector + (text "clk" (rect 264 240 278 252)(font "Arial" )) + (pt 256 256) + (pt 304 256) +) +(connector + (pt 240 272) + (pt 304 272) +) +(connector + (pt 592 144) + (pt 592 168) +) +(connector + (pt 312 96) + (pt 296 96) +) +(connector + (pt 296 96) + (pt 296 128) +) +(connector + (pt 224 80) + (pt 400 80) +) +(connector + (pt 224 240) + (pt 224 80) +) +(connector + (pt 656 168) + (pt 656 344) +) +(connector + (pt 496 336) + (pt 480 336) +) +(connector + (pt 496 352) + (pt 480 352) +) +(connector + (pt 480 336) + (pt 480 328) +) +(connector + (pt 240 160) + (pt 304 160) +) +(connector + (pt 240 176) + (pt 304 176) +) +(connector + (pt 240 128) + (pt 296 128) +) +(connector + (pt 296 128) + (pt 400 128) +) +(connector + (pt 224 240) + (pt 304 240) +) +(connector + (pt 384 240) + (pt 728 240) +) +(connector + (pt 560 344) + (pt 656 344) +) +(connector + (pt 368 168) + (pt 592 168) +) +(connector + (pt 272 752) + (pt 288 752) +) +(connector + (pt 368 240) + (pt 384 240) +) +(connector + (pt 464 88) + (pt 480 88) +) +(connector + (pt 464 136) + (pt 480 136) +) +(connector + (pt 560 112) + (pt 624 112) +) +(connector + (pt 360 96) + (pt 400 96) +) +(connector + (pt 208 160) + (pt 240 160) +) +(connector + (pt 208 736) + (pt 288 736) +) +(connector + (pt 208 680) + (pt 288 680) +) +(connector + (pt 208 176) + (pt 240 176) +) +(connector + (pt 208 240) + (pt 224 240) +) +(connector + (pt 208 752) + (pt 224 752) +) +(connector + (pt 328 328) + (pt 336 328) +) +(connector + (text "in_intr" (rect 133 304 162 316)(font "Arial" )) + (pt 128 320) + (pt 192 320) +) +(connector + (pt 240 320) + (pt 264 320) +) +(connector + (pt 480 352) + (pt 480 360) +) +(connector + (pt 480 360) + (pt 240 360) +) +(connector + (text "nreset" (rect 132 320 162 332)(font "Arial" )) + (pt 128 336) + (pt 264 336) +) +(connector + (text "in_nmi" (rect 133 344 164 356)(font "Arial" )) + (pt 128 360) + (pt 192 360) +) +(connector + (pt 336 328) + (pt 480 328) +) +(connector + (text "db[0]" (rect 242 1000 266 1012)(font "Arial" )) + (pt 232 1016) + (pt 328 1016) +) +(connector + (text "db[1]" (rect 242 984 266 996)(font "Arial" )) + (pt 232 1000) + (pt 328 1000) +) +(connector + (text "db[1]" (rect 242 896 266 908)(font "Arial" )) + (pt 232 912) + (pt 392 912) +) +(connector + (text "db[0]" (rect 242 912 266 924)(font "Arial" )) + (pt 232 928) + (pt 328 928) +) +(connector + (pt 536 1080) + (pt 536 952) +) +(connector + (pt 536 952) + (pt 552 952) +) +(connector + (text "clk" (rect 520 920 534 932)(font "Arial" )) + (pt 552 936) + (pt 512 936) +) +(connector + (pt 448 1040) + (pt 424 1040) +) +(connector + (pt 424 1040) + (pt 424 1080) +) +(connector + (pt 480 1064) + (pt 480 1104) +) +(connector + (pt 584 976) + (pt 584 1104) +) +(connector + (pt 448 1024) + (pt 408 1024) +) +(connector + (pt 408 1024) + (pt 408 1048) +) +(connector + (pt 392 1008) + (pt 448 1008) +) +(connector + (pt 456 920) + (pt 552 920) +) +(connector + (pt 376 928) + (pt 392 928) +) +(connector + (pt 616 920) + (pt 688 920) +) +(connector + (pt 512 1008) + (pt 688 1008) +) +(connector + (pt 208 896) + (pt 232 896) + (bus) +) +(connector + (pt 200 1048) + (pt 408 1048) +) +(connector + (pt 232 896) + (pt 232 912) + (bus) +) +(connector + (pt 232 912) + (pt 232 928) + (bus) +) +(connector + (pt 232 928) + (pt 232 1000) + (bus) +) +(connector + (pt 232 1000) + (pt 232 1016) + (bus) +) +(connector + (pt 200 1080) + (pt 424 1080) +) +(connector + (pt 424 1080) + (pt 536 1080) +) +(connector + (pt 200 1104) + (pt 480 1104) +) +(connector + (pt 480 1104) + (pt 584 1104) +) +(connector + (pt 272 792) + (pt 288 792) +) +(connector + (text "nreset" (rect 185 792 215 804)(font "Arial" )) + (pt 288 808) + (pt 176 808) +) +(connector + (text "in_intr" (rect 183 776 212 788)(font "Arial" )) + (pt 224 792) + (pt 176 792) +) +(connector + (pt 288 576) + (pt 272 576) +) +(connector + (text "in_nmi" (rect 175 560 206 572)(font "Arial" )) + (pt 168 576) + (pt 224 576) +) +(connector + (text "nreset" (rect 175 576 205 588)(font "Arial" )) + (pt 288 592) + (pt 168 592) +) +(connector + (pt 584 728) + (pt 584 760) +) +(connector + (pt 640 576) + (pt 640 656) +) +(connector + (pt 640 496) + (pt 640 528) +) +(connector + (pt 352 800) + (pt 456 800) +) +(connector + (pt 456 728) + (pt 456 800) +) +(connector + (pt 584 568) + (pt 584 552) +) +(connector + (text "nreset" (rect 521 552 551 564)(font "Arial" )) + (pt 520 568) + (pt 584 568) +) +(connector + (pt 640 656) + (pt 664 656) +) +(connector + (text "clk" (rect 522 496 536 508)(font "Arial" )) + (pt 520 512) + (pt 552 512) +) +(connector + (text "clk" (rect 519 672 533 684)(font "Arial" )) + (pt 520 688) + (pt 552 688) +) +(connector + (text "clk" (rect 388 672 402 684)(font "Arial" )) + (pt 392 688) + (pt 424 688) +) +(connector + (pt 352 672) + (pt 424 672) +) +(connector + (pt 368 632) + (pt 368 744) +) +(connector + (pt 504 632) + (pt 504 528) +) +(connector + (pt 552 528) + (pt 504 528) +) +(connector + (text "test1" (rect 377 616 401 628)(font "Arial" )) + (pt 368 632) + (pt 504 632) +) +(connector + (pt 352 584) + (pt 456 584) +) +(connector + (pt 456 584) + (pt 456 552) +) +(connector + (pt 208 512) + (pt 424 512) +) +(connector + (pt 400 496) + (pt 400 456) +) +(connector + (pt 424 496) + (pt 400 496) +) +(connector + (pt 640 496) + (pt 744 496) +) +(connector + (pt 728 664) + (pt 744 664) +) +(connector + (text "nmi_armed" (rect 627 480 681 492)(font "Arial" )) + (pt 488 496) + (pt 552 496) +) +(connector + (pt 616 496) + (pt 640 496) +) +(connector + (pt 616 672) + (pt 664 672) +) +(connector + (text "int_armed" (rect 497 656 545 668)(font "Arial" )) + (pt 488 672) + (pt 552 672) +) +(connector + (pt 504 744) + (pt 504 704) +) +(connector + (pt 552 704) + (pt 504 704) +) +(connector + (pt 352 744) + (pt 368 744) +) +(connector + (pt 368 744) + (pt 504 744) +) +(connector + (text "nreset" (rect 520 744 550 756)(font "Arial" )) + (pt 520 760) + (pt 584 760) +) +(connector + (text "iff1" (rect 756 96 773 108)(font "Arial" )) + (pt 768 112) + (pt 688 112) +) +(junction (pt 240 160)) +(junction (pt 240 176)) +(junction (pt 296 128)) +(junction (pt 224 240)) +(junction (pt 384 240)) +(junction (pt 336 328)) +(junction (pt 232 912)) +(junction (pt 232 928)) +(junction (pt 232 1000)) +(junction (pt 424 1080)) +(junction (pt 480 1104)) +(junction (pt 640 496)) +(junction (pt 368 744)) +(text "IM (Interrupt Mode) register" (rect 320 840 504 856)(font "Arial" (font_size 10))) +(text "IFF1 and IFF2 flags" (rect 336 24 468 40)(font "Arial" (font_size 10))) +(text "INT and NMI state flags" (rect 328 400 487 416)(font "Arial" (font_size 10))) +(text "Reading opcode[4:3] from the db0" (rect 32 912 224 926)(font "Arial" (font_size 8))) +(text "Clear IFF1 on NMI" (rect 40 368 137 382)(font "Arial" (font_size 8))) +(text "Clear IFF1, IFF2 on INTR" (rect 40 288 174 302)(font "Arial" (font_size 8))) +(text "MUX: IFF1 can be loaded from IFF2 or op3" (rect 400 176 637 190)(font "Arial" (font_size 8))) +(title_block + (rect 24 1144 281 1196) + (name "title-custom-small") + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "July 19, 2014, 2016" (rect 56 3 166 17)(font "Arial" (font_size 8)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "interrupts" (rect 43 2 109 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.4" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/control/interrupts.bsf b/cpu/control/interrupts.bsf new file mode 100644 index 0000000..2417fc9 --- /dev/null +++ b/cpu/control/interrupts.bsf @@ -0,0 +1,141 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 64 64 216 288) + (text "interrupts" (rect 5 0 59 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 208 25 220)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "ctl_iff1_iff2" (rect 0 0 64 14)(font "Arial" (font_size 8))) + (text "ctl_iff1_iff2" (rect 21 27 85 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "ctl_iffx_we" (rect 0 0 64 14)(font "Arial" (font_size 8))) + (text "ctl_iffx_we" (rect 21 43 85 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "ctl_iffx_bit" (rect 0 0 59 14)(font "Arial" (font_size 8))) + (text "ctl_iffx_bit" (rect 21 59 80 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "nmi" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "nmi" (rect 21 75 39 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "intr" (rect 0 0 17 14)(font "Arial" (font_size 8))) + (text "intr" (rect 21 91 38 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "setM1" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "setM1" (rect 21 107 55 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 0 128) + (input) + (text "ctl_no_ints" (rect 0 0 61 14)(font "Arial" (font_size 8))) + (text "ctl_no_ints" (rect 21 123 82 137)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)) + ) + (port + (pt 0 144) + (input) + (text "db[1..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[1..0]" (rect 21 139 63 153)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)(line_width 3)) + ) + (port + (pt 0 160) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 21 155 36 169)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 16 160)) + ) + (port + (pt 0 176) + (input) + (text "ctl_im_we" (rect 0 0 57 14)(font "Arial" (font_size 8))) + (text "ctl_im_we" (rect 21 171 78 185)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 16 176)) + ) + (port + (pt 0 192) + (input) + (text "nreset" (rect 0 0 36 14)(font "Arial" (font_size 8))) + (text "nreset" (rect 21 187 57 201)(font "Arial" (font_size 8))) + (line (pt 0 192)(pt 16 192)) + ) + (port + (pt 152 32) + (output) + (text "iff2" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "iff2" (rect 113 27 131 41)(font "Arial" (font_size 8))) + (line (pt 152 32)(pt 136 32)) + ) + (port + (pt 152 48) + (output) + (text "in_nmi" (rect 0 0 35 14)(font "Arial" (font_size 8))) + (text "in_nmi" (rect 96 43 131 57)(font "Arial" (font_size 8))) + (line (pt 152 48)(pt 136 48)) + ) + (port + (pt 152 64) + (output) + (text "in_intr" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "in_intr" (rect 97 59 131 73)(font "Arial" (font_size 8))) + (line (pt 152 64)(pt 136 64)) + ) + (port + (pt 152 80) + (output) + (text "im1" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "im1" (rect 113 75 131 89)(font "Arial" (font_size 8))) + (line (pt 152 80)(pt 136 80)) + ) + (port + (pt 152 96) + (output) + (text "im2" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "im2" (rect 113 91 131 105)(font "Arial" (font_size 8))) + (line (pt 152 96)(pt 136 96)) + ) + (drawing + (rectangle (rect 16 16 136 208)) + ) +) diff --git a/cpu/control/interrupts.v b/cpu/control/interrupts.v new file mode 100644 index 0000000..3820c12 --- /dev/null +++ b/cpu/control/interrupts.v @@ -0,0 +1,248 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Sat Feb 13 19:23:03 2016" + +module interrupts( + ctl_iff1_iff2, + nmi, + setM1, + intr, + ctl_iffx_we, + ctl_iffx_bit, + ctl_im_we, + clk, + ctl_no_ints, + nreset, + db, + iff2, + im1, + im2, + in_nmi, + in_intr +); + + +input wire ctl_iff1_iff2; +input wire nmi; +input wire setM1; +input wire intr; +input wire ctl_iffx_we; +input wire ctl_iffx_bit; +input wire ctl_im_we; +input wire clk; +input wire ctl_no_ints; +input wire nreset; +input wire [1:0] db; +output wire iff2; +output reg im1; +output reg im2; +output wire in_nmi; +output wire in_intr; + +reg iff1; +wire in_intr_ALTERA_SYNTHESIZED; +reg in_nmi_ALTERA_SYNTHESIZED; +reg int_armed; +reg nmi_armed; +wire test1; +wire SYNTHESIZED_WIRE_0; +reg DFFE_instIFF2; +wire SYNTHESIZED_WIRE_1; +wire SYNTHESIZED_WIRE_2; +wire SYNTHESIZED_WIRE_3; +wire SYNTHESIZED_WIRE_4; +wire SYNTHESIZED_WIRE_5; +reg DFFE_inst44; +wire SYNTHESIZED_WIRE_21; +wire SYNTHESIZED_WIRE_7; +wire SYNTHESIZED_WIRE_8; +wire SYNTHESIZED_WIRE_9; +wire SYNTHESIZED_WIRE_10; +wire SYNTHESIZED_WIRE_11; +wire SYNTHESIZED_WIRE_12; +wire SYNTHESIZED_WIRE_13; +wire SYNTHESIZED_WIRE_14; +wire SYNTHESIZED_WIRE_15; +wire SYNTHESIZED_WIRE_16; +wire SYNTHESIZED_WIRE_17; +wire SYNTHESIZED_WIRE_19; +wire SYNTHESIZED_WIRE_20; + +assign iff2 = DFFE_instIFF2; +assign SYNTHESIZED_WIRE_10 = 1; + + + +assign SYNTHESIZED_WIRE_2 = ctl_iffx_bit & SYNTHESIZED_WIRE_0; + +assign SYNTHESIZED_WIRE_1 = ctl_iff1_iff2 & DFFE_instIFF2; + +assign SYNTHESIZED_WIRE_16 = SYNTHESIZED_WIRE_1 | SYNTHESIZED_WIRE_2; + +assign SYNTHESIZED_WIRE_17 = ctl_iffx_we | ctl_iff1_iff2; + +assign SYNTHESIZED_WIRE_21 = SYNTHESIZED_WIRE_3 & nreset; + +assign SYNTHESIZED_WIRE_0 = ~ctl_iff1_iff2; + +assign SYNTHESIZED_WIRE_4 = ~db[0]; + +assign SYNTHESIZED_WIRE_5 = ~in_nmi_ALTERA_SYNTHESIZED; + +assign SYNTHESIZED_WIRE_20 = db[1] & db[0]; + +assign SYNTHESIZED_WIRE_19 = db[1] & SYNTHESIZED_WIRE_4; + + +assign in_intr_ALTERA_SYNTHESIZED = SYNTHESIZED_WIRE_5 & DFFE_inst44; + +assign SYNTHESIZED_WIRE_15 = SYNTHESIZED_WIRE_21 & SYNTHESIZED_WIRE_7; + +assign SYNTHESIZED_WIRE_13 = iff1 & intr; + +assign test1 = setM1 & SYNTHESIZED_WIRE_8; + + +always@(posedge nmi or negedge SYNTHESIZED_WIRE_9) +begin +if (!SYNTHESIZED_WIRE_9) + begin + nmi_armed <= 0; + end +else + begin + nmi_armed <= SYNTHESIZED_WIRE_10; + end +end + + +assign SYNTHESIZED_WIRE_12 = SYNTHESIZED_WIRE_11 & nreset; + + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + in_nmi_ALTERA_SYNTHESIZED <= 0; + end +else +if (test1) + begin + in_nmi_ALTERA_SYNTHESIZED <= nmi_armed; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_inst44 <= 0; + end +else +if (test1) + begin + DFFE_inst44 <= int_armed; + end +end + + +always@(posedge clk or negedge SYNTHESIZED_WIRE_12) +begin +if (!SYNTHESIZED_WIRE_12) + begin + int_armed <= 0; + end +else + begin + int_armed <= SYNTHESIZED_WIRE_13; + end +end + +assign SYNTHESIZED_WIRE_9 = SYNTHESIZED_WIRE_14 & nreset; + +assign SYNTHESIZED_WIRE_8 = ~ctl_no_ints; + + +always@(posedge clk or negedge SYNTHESIZED_WIRE_15) +begin +if (!SYNTHESIZED_WIRE_15) + begin + iff1 <= 0; + end +else +if (SYNTHESIZED_WIRE_17) + begin + iff1 <= SYNTHESIZED_WIRE_16; + end +end + + +always@(posedge clk or negedge SYNTHESIZED_WIRE_21) +begin +if (!SYNTHESIZED_WIRE_21) + begin + DFFE_instIFF2 <= 0; + end +else +if (ctl_iffx_we) + begin + DFFE_instIFF2 <= ctl_iffx_bit; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + im1 <= 0; + end +else +if (ctl_im_we) + begin + im1 <= SYNTHESIZED_WIRE_19; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + im2 <= 0; + end +else +if (ctl_im_we) + begin + im2 <= SYNTHESIZED_WIRE_20; + end +end + +assign SYNTHESIZED_WIRE_3 = ~in_intr_ALTERA_SYNTHESIZED; + +assign SYNTHESIZED_WIRE_11 = ~in_intr_ALTERA_SYNTHESIZED; + +assign SYNTHESIZED_WIRE_7 = ~in_nmi_ALTERA_SYNTHESIZED; + +assign SYNTHESIZED_WIRE_14 = ~in_nmi_ALTERA_SYNTHESIZED; + +assign in_nmi = in_nmi_ALTERA_SYNTHESIZED; +assign in_intr = in_intr_ALTERA_SYNTHESIZED; + +endmodule diff --git a/cpu/control/interrupts.v.bak b/cpu/control/interrupts.v.bak new file mode 100644 index 0000000..6b2be1a --- /dev/null +++ b/cpu/control/interrupts.v.bak @@ -0,0 +1,246 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Sat Feb 13 19:23:03 2016" + +module interrupts( + ctl_iff1_iff2, + nmi, + setM1, + intr, + ctl_iffx_we, + ctl_iffx_bit, + ctl_im_we, + clk, + ctl_no_ints, + nreset, + db, + iff2, + im1, + im2, + in_nmi, + in_intr +); + + +input wire ctl_iff1_iff2; +input wire nmi; +input wire setM1; +input wire intr; +input wire ctl_iffx_we; +input wire ctl_iffx_bit; +input wire ctl_im_we; +input wire clk; +input wire ctl_no_ints; +input wire nreset; +input wire [1:0] db; +output wire iff2; +output reg im1; +output reg im2; +output wire in_nmi; +output wire in_intr; + +reg iff1; +wire in_intr_ALTERA_SYNTHESIZED; +reg in_nmi_ALTERA_SYNTHESIZED; +reg int_armed; +reg nmi_armed; +wire test1; +wire SYNTHESIZED_WIRE_0; +reg DFFE_instIFF2; +wire SYNTHESIZED_WIRE_1; +wire SYNTHESIZED_WIRE_2; +wire SYNTHESIZED_WIRE_3; +wire SYNTHESIZED_WIRE_4; +wire SYNTHESIZED_WIRE_5; +reg DFFE_inst44; +wire SYNTHESIZED_WIRE_21; +wire SYNTHESIZED_WIRE_7; +wire SYNTHESIZED_WIRE_8; +wire SYNTHESIZED_WIRE_9; +wire SYNTHESIZED_WIRE_10; +wire SYNTHESIZED_WIRE_11; +wire SYNTHESIZED_WIRE_12; +wire SYNTHESIZED_WIRE_13; +wire SYNTHESIZED_WIRE_14; +wire SYNTHESIZED_WIRE_15; +wire SYNTHESIZED_WIRE_16; +wire SYNTHESIZED_WIRE_17; +wire SYNTHESIZED_WIRE_19; +wire SYNTHESIZED_WIRE_20; + +assign iff2 = DFFE_instIFF2; +assign SYNTHESIZED_WIRE_10 = 1; + + + +assign SYNTHESIZED_WIRE_2 = ctl_iffx_bit & SYNTHESIZED_WIRE_0; + +assign SYNTHESIZED_WIRE_1 = ctl_iff1_iff2 & DFFE_instIFF2; + +assign SYNTHESIZED_WIRE_16 = SYNTHESIZED_WIRE_1 | SYNTHESIZED_WIRE_2; + +assign SYNTHESIZED_WIRE_17 = ctl_iffx_we | ctl_iff1_iff2; + +assign SYNTHESIZED_WIRE_21 = SYNTHESIZED_WIRE_3 & nreset; + +assign SYNTHESIZED_WIRE_0 = ~ctl_iff1_iff2; + +assign SYNTHESIZED_WIRE_4 = ~db[0]; + +assign SYNTHESIZED_WIRE_5 = ~in_nmi_ALTERA_SYNTHESIZED; + +assign SYNTHESIZED_WIRE_20 = db[1] & db[0]; + +assign SYNTHESIZED_WIRE_19 = db[1] & SYNTHESIZED_WIRE_4; + + +assign in_intr_ALTERA_SYNTHESIZED = SYNTHESIZED_WIRE_5 & DFFE_inst44; + +assign SYNTHESIZED_WIRE_15 = SYNTHESIZED_WIRE_21 & SYNTHESIZED_WIRE_7; + +assign SYNTHESIZED_WIRE_13 = iff1 & intr; + +assign test1 = setM1 & SYNTHESIZED_WIRE_8; + + +always@(posedge nmi or negedge SYNTHESIZED_WIRE_9) +begin +if (!SYNTHESIZED_WIRE_9) + begin + nmi_armed <= 0; + end +else + begin + nmi_armed <= SYNTHESIZED_WIRE_10; + end +end + +assign SYNTHESIZED_WIRE_12 = SYNTHESIZED_WIRE_11 & nreset; + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + in_nmi_ALTERA_SYNTHESIZED <= 0; + end +else +if (test1) + begin + in_nmi_ALTERA_SYNTHESIZED <= nmi_armed; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_inst44 <= 0; + end +else +if (test1) + begin + DFFE_inst44 <= int_armed; + end +end + + +always@(posedge clk or negedge SYNTHESIZED_WIRE_12) +begin +if (!SYNTHESIZED_WIRE_12) + begin + int_armed <= 0; + end +else + begin + int_armed <= SYNTHESIZED_WIRE_13; + end +end + +assign SYNTHESIZED_WIRE_9 = SYNTHESIZED_WIRE_14 & nreset; + +assign SYNTHESIZED_WIRE_8 = ~ctl_no_ints; + + +always@(posedge clk or negedge SYNTHESIZED_WIRE_15) +begin +if (!SYNTHESIZED_WIRE_15) + begin + iff1 <= 0; + end +else +if (SYNTHESIZED_WIRE_17) + begin + iff1 <= SYNTHESIZED_WIRE_16; + end +end + + +always@(posedge clk or negedge SYNTHESIZED_WIRE_21) +begin +if (!SYNTHESIZED_WIRE_21) + begin + DFFE_instIFF2 <= 0; + end +else +if (ctl_iffx_we) + begin + DFFE_instIFF2 <= ctl_iffx_bit; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + im1 <= 0; + end +else +if (ctl_im_we) + begin + im1 <= SYNTHESIZED_WIRE_19; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + im2 <= 0; + end +else +if (ctl_im_we) + begin + im2 <= SYNTHESIZED_WIRE_20; + end +end + +assign SYNTHESIZED_WIRE_3 = ~in_intr_ALTERA_SYNTHESIZED; + +assign SYNTHESIZED_WIRE_11 = ~in_intr_ALTERA_SYNTHESIZED; + +assign SYNTHESIZED_WIRE_7 = ~in_nmi_ALTERA_SYNTHESIZED; + +assign SYNTHESIZED_WIRE_14 = ~in_nmi_ALTERA_SYNTHESIZED; + +assign in_nmi = in_nmi_ALTERA_SYNTHESIZED; +assign in_intr = in_intr_ALTERA_SYNTHESIZED; + +endmodule diff --git a/cpu/control/ir.bdf b/cpu/control/ir.bdf new file mode 100644 index 0000000..26d621f --- /dev/null +++ b/cpu/control/ir.bdf @@ -0,0 +1,260 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 40 96 216 112) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_ir_we" (rect 9 0 51 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 48 216 64) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "db[7..0]" (rect 9 0 46 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 64 216 80) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "clk" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 152 216 168) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nreset" (rect 9 0 39 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 40 112 216 128) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nhold_clk_wait" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 504 48 680 64) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "opcode[7..0]" (rect 90 0 151 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 392 32 456 112) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "ir" (rect 3 68 8 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 48 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 296 88 360 136) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst5" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(connector + (pt 216 56) + (pt 392 56) + (bus) +) +(connector + (pt 216 72) + (pt 392 72) +) +(connector + (pt 456 56) + (pt 504 56) + (bus) +) +(connector + (pt 424 160) + (pt 216 160) +) +(connector + (pt 424 112) + (pt 424 160) +) +(connector + (pt 392 88) + (pt 376 88) +) +(connector + (pt 376 88) + (pt 376 112) +) +(connector + (pt 376 112) + (pt 360 112) +) +(connector + (pt 216 104) + (pt 296 104) +) +(connector + (pt 216 120) + (pt 296 120) +) +(text "8 latches implement the opcode Instruction Register" (rect 328 216 619 230)(font "Arial" (font_size 8))) +(title_block + (rect 40 216 297 268) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "ir" (rect 43 2 52 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 3, 2014, 2016" (rect 56 3 161 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.5" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/control/ir.bsf b/cpu/control/ir.bsf new file mode 100644 index 0000000..4f52490 --- /dev/null +++ b/cpu/control/ir.bsf @@ -0,0 +1,71 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 224 144) + (text "ir" (rect 5 0 12 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 112 25 124)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 21 27 63 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 21 43 36 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "ctl_ir_we" (rect 0 0 53 14)(font "Arial" (font_size 8))) + (text "ctl_ir_we" (rect 21 59 74 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "nhold_clk_wait" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "nhold_clk_wait" (rect 21 75 105 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "nreset" (rect 0 0 36 14)(font "Arial" (font_size 8))) + (text "nreset" (rect 21 91 57 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 208 32) + (output) + (text "opcode[7..0]" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "opcode[7..0]" (rect 117 27 187 41)(font "Arial" (font_size 8))) + (line (pt 208 32)(pt 192 32)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 192 112)) + ) +) diff --git a/cpu/control/ir.v b/cpu/control/ir.v new file mode 100644 index 0000000..a0fcf7c --- /dev/null +++ b/cpu/control/ir.v @@ -0,0 +1,58 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Sat Dec 10 08:56:46 2016" + +module ir( + ctl_ir_we, + clk, + nreset, + nhold_clk_wait, + db, + opcode +); + + +input wire ctl_ir_we; +input wire clk; +input wire nreset; +input wire nhold_clk_wait; +input wire [7:0] db; +output reg [7:0] opcode; + +wire SYNTHESIZED_WIRE_0; + + + + +assign SYNTHESIZED_WIRE_0 = ctl_ir_we & nhold_clk_wait; + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + opcode[7:0] <= 8'b00000000; + end +else +if (SYNTHESIZED_WIRE_0) + begin + opcode[7:0] <= db[7:0]; + end +end + + +endmodule diff --git a/cpu/control/memory_ifc.bdf b/cpu/control/memory_ifc.bdf new file mode 100644 index 0000000..2486588 --- /dev/null +++ b/cpu/control/memory_ifc.bdf @@ -0,0 +1,3677 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 136 208 152) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "clk" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 120 208 136) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nM1_int" (rect 9 0 46 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 712 208 728) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_mRead" (rect 9 0 62 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 912 208 928) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_mWrite" (rect 9 0 62 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 648 208 664) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "in_intr" (rect 9 0 38 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 224 208 240) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nreset" (rect 9 0 39 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1272 208 1288) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "fIORead" (rect 9 0 51 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1320 208 1336) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "fIOWrite" (rect 9 0 51 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 512 208 528) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "setM1" (rect 9 0 38 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1104 208 1120) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_iorw" (rect 9 0 45 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 552 208 568) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "timings_en" (rect 9 0 62 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1408 208 1424) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "iorq_Tw" (rect 9 0 45 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1496 208 1512) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nhold_clk_wait" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 800 184 976 200) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "nM1_out" (rect 90 0 131 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 800 112 976 128) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "nRFSH_out" (rect 90 0 147 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 800 296 976 312) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "nMREQ_out" (rect 90 0 149 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 768 1624 944 1640) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "nRD_out" (rect 90 0 133 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 768 1688 944 1704) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "nWR_out" (rect 90 0 136 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 768 1752 944 1768) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "nIORQ_out" (rect 90 0 145 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 768 1824 944 1840) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "latch_wait" (rect 90 0 138 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 800 472 976 488) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "wait_m1" (rect 90 0 130 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 640 112 688 144) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "notff" (rect 3 21 27 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 720 96 784 144) + (text "NAND2" (rect 1 0 32 10)(font "Arial" (font_size 6))) + (text "inst_nrfsh" (rect 3 37 52 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 52 24)(pt 64 24)) + ) + (drawing + (line (pt 15 37)(pt 32 37)) + (line (pt 15 12)(pt 32 12)) + (line (pt 15 36)(pt 15 12)) + (arc (pt 32 36)(pt 32 12)(rect 20 12 45 37)) + (circle (rect 44 20 52 28)) + ) +) +(symbol + (rect 256 256 288 304) + (text "NOT" (rect 22 1 32 21)(font "Arial" (font_size 6))(vertical)) + (text "nclk" (rect -1 3 11 23)(font "Arial" )(vertical)) + (port + (pt 16 0) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 13 2 25 13)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 13)) + ) + (port + (pt 16 48) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 13 32 25 49)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 39)(pt 16 48)) + ) + (drawing + (line (pt 7 13)(pt 25 13)) + (line (pt 25 13)(pt 16 31)) + (line (pt 7 13)(pt 16 31)) + (circle (rect 12 31 20 39)) + ) + (rotate270) +) +(symbol + (rect 528 288 576 320) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "notff2" (rect 3 21 33 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 608 272 672 320) + (text "NAND2" (rect 1 0 32 10)(font "Arial" (font_size 6))) + (text "inst_nmreq" (rect 3 37 57 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 52 24)(pt 64 24)) + ) + (drawing + (line (pt 15 37)(pt 32 37)) + (line (pt 15 12)(pt 32 12)) + (line (pt 15 36)(pt 15 12)) + (arc (pt 32 36)(pt 32 12)(rect 20 12 45 37)) + (circle (rect 44 20 52 28)) + ) +) +(symbol + (rect 720 280 784 328) + (text "BNOR2" (rect 1 0 32 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 37 20 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 8 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 8 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 56 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 8 29)(pt 8 19)(rect -13 8 20 41)) + (arc (pt 48 24)(pt 25 13)(rect -4 13 55 72)) + (arc (pt 25 35)(pt 48 24)(rect -4 -23 55 36)) + (circle (rect 48 20 56 28)) + (circle (rect 8 12 16 20)) + (circle (rect 8 28 16 36)) + ) +) +(symbol + (rect 768 1080 832 1128) + (text "OR3" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst19" (rect 3 37 37 51)(font "Arial" (font_size 8))) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 18 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 640 488 704 536) + (text "NOR2" (rect 1 0 26 10)(font "Arial" (font_size 6))) + (text "inst16" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 54 24)(pt 64 24)) + ) + (drawing + (line (pt 12 36)(pt 23 36)) + (line (pt 12 13)(pt 23 13)) + (arc (pt 46 24)(pt 23 13)(rect -6 13 53 72)) + (arc (pt 5 29)(pt 5 19)(rect -16 8 17 41)) + (arc (pt 23 35)(pt 46 24)(rect -6 -23 53 36)) + (circle (rect 46 20 54 28)) + ) +) +(symbol + (rect 736 496 800 544) + (text "NOR2" (rect 1 0 26 10)(font "Arial" (font_size 6))) + (text "inst18" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 54 24)(pt 64 24)) + ) + (drawing + (line (pt 12 36)(pt 23 36)) + (line (pt 12 13)(pt 23 13)) + (arc (pt 46 24)(pt 23 13)(rect -6 13 53 72)) + (arc (pt 5 29)(pt 5 19)(rect -16 8 17 41)) + (arc (pt 23 35)(pt 46 24)(rect -6 -23 53 36)) + (circle (rect 46 20 54 28)) + ) +) +(symbol + (rect 688 1544 752 1592) + (text "NOR3" (rect 1 0 26 10)(font "Arial" (font_size 6))) + (text "inst33" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 54 24)(pt 64 24)) + ) + (drawing + (line (pt 12 13)(pt 23 13)) + (line (pt 12 36)(pt 23 36)) + (arc (pt 5 29)(pt 5 19)(rect -16 8 17 41)) + (arc (pt 23 35)(pt 46 24)(rect -6 -23 53 36)) + (arc (pt 46 24)(pt 23 13)(rect -6 13 53 72)) + (circle (rect 46 20 54 28)) + ) +) +(symbol + (rect 688 1608 752 1656) + (text "NOR3" (rect 1 0 26 10)(font "Arial" (font_size 6))) + (text "inst34" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 54 24)(pt 64 24)) + ) + (drawing + (line (pt 12 13)(pt 23 13)) + (line (pt 12 36)(pt 23 36)) + (arc (pt 5 29)(pt 5 19)(rect -16 8 17 41)) + (arc (pt 23 35)(pt 46 24)(rect -6 -23 53 36)) + (arc (pt 46 24)(pt 23 13)(rect -6 13 53 72)) + (circle (rect 46 20 54 28)) + ) +) +(symbol + (rect 640 688 704 736) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst36" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 688 1672 752 1720) + (text "NOR2" (rect 1 0 26 10)(font "Arial" (font_size 6))) + (text "inst37" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 54 24)(pt 64 24)) + ) + (drawing + (line (pt 12 36)(pt 23 36)) + (line (pt 12 13)(pt 23 13)) + (arc (pt 46 24)(pt 23 13)(rect -6 13 53 72)) + (arc (pt 5 29)(pt 5 19)(rect -16 8 17 41)) + (arc (pt 23 35)(pt 46 24)(rect -6 -23 53 36)) + (circle (rect 46 20 54 28)) + ) +) +(symbol + (rect 640 864 704 912) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst38" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 688 1736 752 1784) + (text "NOR2" (rect 1 0 26 10)(font "Arial" (font_size 6))) + (text "inst39" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 54 24)(pt 64 24)) + ) + (drawing + (line (pt 12 36)(pt 23 36)) + (line (pt 12 13)(pt 23 13)) + (arc (pt 46 24)(pt 23 13)(rect -6 13 53 72)) + (arc (pt 5 29)(pt 5 19)(rect -16 8 17 41)) + (arc (pt 23 35)(pt 46 24)(rect -6 -23 53 36)) + (circle (rect 46 20 54 28)) + ) +) +(symbol + (rect 504 1248 568 1296) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst1" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 504 1296 568 1344) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst2" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 320 104 384 184) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "m1_ff" (rect 3 68 33 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 448 104 512 184) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "q1_ff" (rect 3 68 30 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 560 104 624 184) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "q2_ff" (rect 3 68 30 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 320 280 384 360) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "mreq_ff1" (rect 3 68 49 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 448 280 512 360) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "mreq_ff2" (rect 3 68 49 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 320 496 384 576) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "m1_ff1" (rect 3 68 39 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 432 496 496 576) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "m1_ff2" (rect 3 68 39 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 544 496 608 576) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "m1_ff3" (rect 3 68 39 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 320 696 384 776) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "mrd_ff1" (rect 3 68 43 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 432 696 496 776) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "mrd_ff2" (rect 3 68 43 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 544 696 608 776) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "mrd_ff3" (rect 3 68 43 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 320 896 384 976) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "mwr_ff1" (rect 3 68 44 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 432 896 496 976) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "mwr_ff2" (rect 3 68 44 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 544 896 608 976) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "mwr_ff3" (rect 3 68 44 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 320 1088 384 1168) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "iorq_ff1" (rect 3 68 41 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 432 1088 496 1168) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "iorq_ff2" (rect 3 68 41 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 544 1088 608 1168) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "iorq_ff3" (rect 3 68 41 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 656 1088 720 1168) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "iorq_ff4" (rect 3 68 41 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 296 1392 360 1472) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "intr_ff1" (rect 3 68 39 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 504 1384 568 1432) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst40" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 688 1792 752 1872) + (text "OR4" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst3" (rect 3 69 26 81)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 15 48)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 13 64)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (line (pt 48 40)(pt 64 40)) + ) + (drawing + (line (pt 13 67)(pt 13 51)) + (line (pt 25 52)(pt 13 52)) + (line (pt 13 12)(pt 13 29)) + (line (pt 13 29)(pt 25 29)) + (arc (pt 7 45)(pt 7 35)(rect -14 24 19 57)) + (arc (pt 49 40)(pt 25 29)(rect -6 29 57 92)) + (arc (pt 25 51)(pt 49 40)(rect -6 -11 57 52)) + ) +) +(symbol + (rect 408 1392 472 1472) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "intr_ff3" (rect 3 68 39 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 720 168 784 216) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst41" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 640 184 688 216) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "notff1" (rect 3 21 33 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 688 1344 752 1392) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst4" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(connector + (pt 704 112) + (pt 720 112) +) +(connector + (pt 208 128) + (pt 320 128) +) +(connector + (pt 416 304) + (pt 416 264) +) +(connector + (pt 592 264) + (pt 416 264) +) +(connector + (pt 592 264) + (pt 592 288) +) +(connector + (pt 592 288) + (pt 608 288) +) +(connector + (pt 352 360) + (pt 352 408) +) +(connector + (text "nMEMRQ_int" (rect 680 362 692 425)(font "Arial" )(vertical)) + (pt 696 312) + (pt 696 432) +) +(connector + (pt 480 360) + (pt 480 408) +) +(connector + (pt 720 312) + (pt 696 312) +) +(connector + (pt 304 304) + (pt 304 256) +) +(connector + (pt 400 256) + (pt 304 256) +) +(connector + (pt 320 304) + (pt 304 304) +) +(connector + (pt 400 88) + (pt 704 88) +) +(connector + (pt 400 88) + (pt 400 128) +) +(connector + (pt 400 128) + (pt 400 256) +) +(connector + (text "nreset" (rect 176 392 206 404)(font "Arial" )) + (pt 168 408) + (pt 352 408) +) +(connector + (pt 352 408) + (pt 480 408) +) +(connector + (pt 400 128) + (pt 448 128) +) +(connector + (pt 416 304) + (pt 448 304) +) +(connector + (text "nq2" (rect 690 96 707 108)(font "Arial" )) + (pt 688 128) + (pt 720 128) +) +(connector + (pt 784 120) + (pt 800 120) +) +(connector + (pt 576 304) + (pt 608 304) +) +(connector + (pt 672 296) + (pt 720 296) +) +(connector + (pt 784 304) + (pt 800 304) +) +(connector + (pt 384 128) + (pt 400 128) +) +(connector + (text "q1" (rect 518 112 529 124)(font "Arial" )) + (pt 512 128) + (pt 560 128) +) +(connector + (text "q2" (rect 631 112 642 124)(font "Arial" )) + (pt 624 128) + (pt 640 128) +) +(connector + (pt 384 304) + (pt 416 304) +) +(connector + (pt 512 304) + (pt 528 304) +) +(connector + (pt 480 184) + (pt 480 232) +) +(connector + (pt 480 232) + (pt 592 232) +) +(connector + (pt 352 184) + (pt 352 232) +) +(connector + (pt 208 232) + (pt 352 232) +) +(connector + (pt 352 232) + (pt 480 232) +) +(connector + (pt 624 504) + (pt 640 504) +) +(connector + (pt 208 520) + (pt 320 520) +) +(connector + (pt 384 520) + (pt 432 520) +) +(connector + (pt 624 480) + (pt 624 504) +) +(connector + (pt 512 520) + (pt 512 480) +) +(connector + (pt 608 520) + (pt 640 520) +) +(connector + (pt 624 680) + (pt 624 704) +) +(connector + (text "mrd_mreq" (rect 730 696 779 708)(font "Arial" )) + (pt 704 712) + (pt 776 712) +) +(connector + (pt 512 720) + (pt 512 680) +) +(connector + (pt 608 720) + (pt 640 720) +) +(connector + (pt 624 704) + (pt 640 704) +) +(connector + (pt 208 920) + (pt 320 920) +) +(connector + (pt 384 920) + (pt 432 920) +) +(connector + (pt 208 1112) + (pt 320 1112) +) +(connector + (pt 384 1112) + (pt 432 1112) +) +(connector + (pt 512 1112) + (pt 512 1056) +) +(connector + (pt 624 1112) + (pt 624 1072) +) +(connector + (pt 512 1056) + (pt 752 1056) +) +(connector + (pt 736 1072) + (pt 736 1104) +) +(connector + (pt 752 1056) + (pt 752 1096) +) +(connector + (text "iorq" (rect 886 1088 903 1100)(font "Arial" )) + (pt 832 1104) + (pt 904 1104) +) +(connector + (pt 736 1104) + (pt 768 1104) +) +(connector + (pt 720 1112) + (pt 768 1112) +) +(connector + (pt 752 1096) + (pt 768 1096) +) +(connector + (pt 384 720) + (pt 432 720) +) +(connector + (pt 320 720) + (pt 208 720) +) +(connector + (pt 752 1632) + (pt 768 1632) +) +(connector + (text "m1_mreq" (rect 618 1608 664 1620)(font "Arial" )) + (pt 688 1624) + (pt 608 1624) +) +(connector + (pt 752 1696) + (pt 768 1696) +) +(connector + (text "m1_mreq" (rect 617 1544 663 1556)(font "Arial" )) + (pt 688 1560) + (pt 608 1560) +) +(connector + (text "mwr_wr" (rect 617 1672 653 1684)(font "Arial" )) + (pt 688 1688) + (pt 608 1688) +) +(connector + (text "mrd_mreq" (rect 536 1552 585 1564)(font "Arial" )) + (pt 528 1568) + (pt 688 1568) +) +(connector + (text "mwr_mreq" (rect 455 1560 505 1572)(font "Arial" )) + (pt 448 1576) + (pt 688 1576) +) +(connector + (text "mrd_mreq" (rect 534 1616 583 1628)(font "Arial" )) + (pt 528 1632) + (pt 688 1632) +) +(connector + (text "ioRead" (rect 455 1624 489 1636)(font "Arial" )) + (pt 448 1640) + (pt 688 1640) +) +(connector + (text "ioWrite" (rect 537 1688 571 1700)(font "Arial" )) + (pt 528 1704) + (pt 688 1704) +) +(connector + (text "nMEMRQ_int" (rect 834 1552 897 1564)(font "Arial" )) + (pt 752 1568) + (pt 896 1568) +) +(connector + (pt 752 1760) + (pt 768 1760) +) +(connector + (text "iorq" (rect 617 1736 634 1748)(font "Arial" )) + (pt 608 1752) + (pt 688 1752) +) +(connector + (text "intr_iorq" (rect 536 1752 574 1764)(font "Arial" )) + (pt 528 1768) + (pt 688 1768) +) +(connector + (pt 208 1416) + (pt 296 1416) +) +(connector + (pt 392 1504) + (pt 392 1448) +) +(connector + (pt 384 1376) + (pt 384 1416) +) +(connector + (pt 392 1448) + (pt 408 1448) +) +(connector + (pt 488 1376) + (pt 488 1400) +) +(connector + (pt 472 1416) + (pt 504 1416) +) +(connector + (pt 488 1400) + (pt 504 1400) +) +(connector + (text "intr_iorq" (rect 635 1392 673 1404)(font "Arial" )) + (pt 568 1408) + (pt 672 1408) +) +(connector + (pt 480 1264) + (pt 480 1312) +) +(connector + (text "ioRead" (rect 638 1256 672 1268)(font "Arial" )) + (pt 568 1272) + (pt 672 1272) +) +(connector + (text "ioWrite" (rect 641 1304 675 1316)(font "Arial" )) + (pt 568 1320) + (pt 672 1320) +) +(connector + (pt 480 1264) + (pt 504 1264) +) +(connector + (pt 208 1280) + (pt 504 1280) +) +(connector + (pt 208 1328) + (pt 504 1328) +) +(connector + (pt 720 656) + (pt 208 656) +) +(connector + (pt 720 528) + (pt 736 528) +) +(connector + (pt 720 656) + (pt 720 528) +) +(connector + (pt 704 512) + (pt 736 512) +) +(connector + (text "m1_mreq" (rect 821 504 867 516)(font "Arial" )) + (pt 800 520) + (pt 864 520) +) +(connector + (pt 496 520) + (pt 512 520) +) +(connector + (pt 512 520) + (pt 544 520) +) +(connector + (pt 496 720) + (pt 512 720) +) +(connector + (pt 512 720) + (pt 544 720) +) +(connector + (pt 496 1112) + (pt 512 1112) +) +(connector + (pt 512 1112) + (pt 544 1112) +) +(connector + (pt 608 1112) + (pt 624 1112) +) +(connector + (pt 624 1112) + (pt 656 1112) +) +(connector + (pt 512 680) + (pt 624 680) +) +(connector + (text "wait_mrd" (rect 738 664 781 676)(font "Arial" )) + (pt 624 680) + (pt 776 680) +) +(connector + (pt 360 1416) + (pt 384 1416) +) +(connector + (pt 384 1416) + (pt 408 1416) +) +(connector + (text "iorq" (rect 408 1296 425 1308)(font "Arial" )) + (pt 400 1312) + (pt 480 1312) +) +(connector + (pt 480 1312) + (pt 504 1312) +) +(connector + (text "nreset" (rect 176 624 206 636)(font "Arial" )) + (pt 168 640) + (pt 464 640) +) +(connector + (pt 464 640) + (pt 576 640) +) +(connector + (text "nreset" (rect 174 808 204 820)(font "Arial" )) + (pt 168 824) + (pt 352 824) +) +(connector + (text "nreset" (rect 174 1008 204 1020)(font "Arial" )) + (pt 168 1024) + (pt 352 1024) +) +(connector + (pt 352 1024) + (pt 464 1024) +) +(connector + (pt 464 1024) + (pt 576 1024) +) +(connector + (text "nreset" (rect 176 1216 206 1228)(font "Arial" )) + (pt 168 1232) + (pt 352 1232) +) +(connector + (pt 352 1232) + (pt 464 1232) +) +(connector + (pt 464 1232) + (pt 576 1232) +) +(connector + (pt 576 1232) + (pt 688 1232) +) +(connector + (text "nreset" (rect 175 1520 205 1532)(font "Arial" )) + (pt 168 1536) + (pt 328 1536) +) +(connector + (pt 328 1536) + (pt 440 1536) +) +(connector + (pt 464 576) + (pt 464 640) +) +(connector + (pt 576 576) + (pt 576 640) +) +(connector + (pt 352 776) + (pt 352 824) +) +(connector + (pt 352 976) + (pt 352 1024) +) +(connector + (pt 464 976) + (pt 464 1024) +) +(connector + (pt 576 976) + (pt 576 1024) +) +(connector + (pt 352 1168) + (pt 352 1232) +) +(connector + (pt 464 1168) + (pt 464 1232) +) +(connector + (pt 576 1168) + (pt 576 1232) +) +(connector + (pt 688 1168) + (pt 688 1232) +) +(connector + (pt 328 1472) + (pt 328 1536) +) +(connector + (pt 440 1472) + (pt 440 1536) +) +(connector + (pt 352 496) + (pt 352 480) +) +(connector + (text "nreset" (rect 174 464 204 476)(font "Arial" )) + (pt 352 480) + (pt 168 480) +) +(connector + (pt 624 920) + (pt 624 896) +) +(connector + (pt 512 920) + (pt 512 880) +) +(connector + (pt 624 896) + (pt 640 896) +) +(connector + (text "mwr_mreq" (rect 725 872 775 884)(font "Arial" )) + (pt 704 888) + (pt 776 888) +) +(connector + (pt 608 920) + (pt 624 920) +) +(connector + (text "mwr_wr" (rect 739 904 775 916)(font "Arial" )) + (pt 624 920) + (pt 776 920) +) +(connector + (pt 496 920) + (pt 512 920) +) +(connector + (pt 512 920) + (pt 544 920) +) +(connector + (pt 464 776) + (pt 464 824) +) +(connector + (pt 576 776) + (pt 576 824) +) +(connector + (pt 352 824) + (pt 464 824) +) +(connector + (pt 464 824) + (pt 576 824) +) +(connector + (pt 624 880) + (pt 624 856) +) +(connector + (text "wait_mwr" (rect 727 840 771 852)(font "Arial" )) + (pt 776 856) + (pt 624 856) +) +(connector + (pt 512 880) + (pt 624 880) +) +(connector + (pt 624 880) + (pt 640 880) +) +(connector + (pt 448 144) + (pt 416 144) + (color 84 84 252) +) +(connector + (pt 560 144) + (pt 528 144) + (color 84 84 252) +) +(connector + (pt 208 144) + (pt 248 144) + (color 84 84 252) +) +(connector + (pt 528 144) + (pt 528 200) + (color 84 84 252) +) +(connector + (pt 416 144) + (pt 416 200) + (color 84 84 252) +) +(connector + (pt 248 200) + (pt 416 200) + (color 84 84 252) +) +(connector + (pt 416 200) + (pt 528 200) + (color 84 84 252) +) +(connector + (pt 248 144) + (pt 320 144) + (color 84 84 252) +) +(connector + (pt 272 256) + (pt 272 248) + (color 84 84 252) +) +(connector + (pt 272 248) + (pt 248 248) + (color 84 84 252) +) +(connector + (pt 544 536) + (pt 512 536) + (color 84 84 252) +) +(connector + (pt 248 608) + (pt 512 608) + (color 84 84 252) +) +(connector + (pt 512 536) + (pt 512 608) + (color 84 84 252) +) +(connector + (pt 248 736) + (pt 320 736) + (color 84 84 252) +) +(connector + (pt 248 936) + (pt 320 936) + (color 84 84 252) +) +(connector + (pt 248 1128) + (pt 320 1128) + (color 84 84 252) +) +(connector + (pt 432 1128) + (pt 400 1128) + (color 84 84 252) +) +(connector + (pt 248 1184) + (pt 400 1184) + (color 84 84 252) +) +(connector + (pt 400 1128) + (pt 400 1184) + (color 84 84 252) +) +(connector + (pt 376 1432) + (pt 376 1488) + (color 84 84 252) +) +(connector + (pt 248 1488) + (pt 376 1488) + (color 84 84 252) +) +(connector + (pt 376 1432) + (pt 408 1432) + (color 84 84 252) +) +(connector + (pt 248 144) + (pt 248 200) + (color 84 84 252) +) +(connector + (pt 248 200) + (pt 248 248) + (color 84 84 252) +) +(connector + (pt 248 248) + (pt 248 608) + (color 84 84 252) +) +(connector + (pt 248 608) + (pt 248 736) + (color 84 84 252) +) +(connector + (pt 248 736) + (pt 248 936) + (color 84 84 252) +) +(connector + (pt 248 936) + (pt 248 1128) + (color 84 84 252) +) +(connector + (pt 248 1128) + (pt 248 1184) + (color 84 84 252) +) +(connector + (pt 248 1184) + (pt 248 1488) + (color 84 84 252) +) +(connector + (pt 272 320) + (pt 320 320) + (color 250 0 0) +) +(connector + (pt 448 320) + (pt 416 320) + (color 250 0 0) +) +(connector + (pt 416 320) + (pt 416 376) + (color 250 0 0) +) +(connector + (pt 272 376) + (pt 416 376) + (color 250 0 0) +) +(connector + (pt 272 536) + (pt 320 536) + (color 250 0 0) +) +(connector + (pt 432 536) + (pt 400 536) + (color 250 0 0) +) +(connector + (pt 272 592) + (pt 400 592) + (color 250 0 0) +) +(connector + (pt 400 536) + (pt 400 592) + (color 250 0 0) +) +(connector + (pt 432 736) + (pt 400 736) + (color 250 0 0) +) +(connector + (pt 544 736) + (pt 512 736) + (color 250 0 0) +) +(connector + (pt 432 936) + (pt 400 936) + (color 250 0 0) +) +(connector + (pt 544 936) + (pt 512 936) + (color 250 0 0) +) +(connector + (pt 544 1128) + (pt 512 1128) + (color 250 0 0) +) +(connector + (pt 656 1128) + (pt 624 1128) + (color 250 0 0) +) +(connector + (pt 512 1128) + (pt 512 1200) + (color 250 0 0) +) +(connector + (pt 624 1128) + (pt 624 1200) + (color 250 0 0) +) +(connector + (pt 400 936) + (pt 400 992) + (color 250 0 0) +) +(connector + (pt 512 936) + (pt 512 992) + (color 250 0 0) +) +(connector + (pt 400 736) + (pt 400 792) + (color 250 0 0) +) +(connector + (pt 512 736) + (pt 512 792) + (color 250 0 0) +) +(connector + (pt 272 1432) + (pt 296 1432) + (color 250 0 0) +) +(connector + (pt 272 1200) + (pt 512 1200) + (color 250 0 0) +) +(connector + (pt 512 1200) + (pt 624 1200) + (color 250 0 0) +) +(connector + (pt 272 992) + (pt 400 992) + (color 250 0 0) +) +(connector + (pt 400 992) + (pt 512 992) + (color 250 0 0) +) +(connector + (pt 272 792) + (pt 400 792) + (color 250 0 0) +) +(connector + (pt 400 792) + (pt 512 792) + (color 250 0 0) +) +(connector + (pt 272 304) + (pt 272 320) + (color 250 0 0) +) +(connector + (pt 272 320) + (pt 272 376) + (color 250 0 0) +) +(connector + (pt 272 376) + (pt 272 536) + (color 250 0 0) +) +(connector + (pt 272 536) + (pt 272 592) + (color 250 0 0) +) +(connector + (pt 272 592) + (pt 272 792) + (color 250 0 0) +) +(connector + (pt 272 792) + (pt 272 992) + (color 250 0 0) +) +(connector + (pt 272 992) + (pt 272 1200) + (color 250 0 0) +) +(connector + (pt 272 1200) + (pt 272 1432) + (color 250 0 0) +) +(connector + (pt 752 1832) + (pt 768 1832) +) +(connector + (text "wait_mwr" (rect 532 1808 576 1820)(font "Arial" )) + (pt 528 1824) + (pt 688 1824) +) +(connector + (text "wait_mrd" (rect 612 1792 655 1804)(font "Arial" )) + (pt 608 1808) + (pt 688 1808) +) +(connector + (pt 784 192) + (pt 800 192) +) +(connector + (pt 720 184) + (pt 704 184) +) +(connector + (pt 704 88) + (pt 704 112) +) +(connector + (pt 704 112) + (pt 704 184) +) +(connector + (pt 592 200) + (pt 640 200) +) +(connector + (pt 592 184) + (pt 592 200) +) +(connector + (pt 592 200) + (pt 592 232) +) +(connector + (pt 688 200) + (pt 720 200) +) +(connector + (pt 512 480) + (pt 624 480) +) +(connector + (text "wait_m1" (rect 752 464 792 476)(font "Arial" )) + (pt 624 480) + (pt 800 480) +) +(connector + (text "wait_m1" (rect 377 1840 417 1852)(font "Arial" )) + (pt 376 1856) + (pt 688 1856) +) +(connector + (pt 560 160) + (pt 544 160) + (color 76 152 0) +) +(connector + (pt 448 160) + (pt 432 160) + (color 76 152 0) +) +(connector + (pt 448 336) + (pt 432 336) + (color 76 152 0) +) +(connector + (pt 224 160) + (pt 320 160) + (color 76 152 0) +) +(connector + (pt 320 336) + (pt 304 336) + (color 76 152 0) +) +(connector + (pt 432 336) + (pt 432 392) + (color 76 152 0) +) +(connector + (pt 304 336) + (pt 304 392) + (color 76 152 0) +) +(connector + (pt 224 392) + (pt 304 392) + (color 76 152 0) +) +(connector + (pt 304 392) + (pt 432 392) + (color 76 152 0) +) +(connector + (pt 544 160) + (pt 544 216) + (color 76 152 0) +) +(connector + (pt 432 160) + (pt 432 216) + (color 76 152 0) +) +(connector + (pt 224 216) + (pt 432 216) + (color 76 152 0) +) +(connector + (pt 432 216) + (pt 544 216) + (color 76 152 0) +) +(connector + (pt 544 552) + (pt 536 552) + (color 76 152 0) +) +(connector + (pt 432 552) + (pt 416 552) + (color 76 152 0) +) +(connector + (pt 320 552) + (pt 304 552) + (color 76 152 0) +) +(connector + (pt 304 552) + (pt 304 624) + (color 76 152 0) +) +(connector + (pt 416 552) + (pt 416 624) + (color 76 152 0) +) +(connector + (pt 536 552) + (pt 536 624) + (color 76 152 0) +) +(connector + (pt 224 560) + (pt 208 560) + (color 76 152 0) +) +(connector + (pt 544 752) + (pt 528 752) + (color 76 152 0) +) +(connector + (pt 432 752) + (pt 416 752) + (color 76 152 0) +) +(connector + (pt 320 752) + (pt 304 752) + (color 76 152 0) +) +(connector + (pt 544 952) + (pt 528 952) + (color 76 152 0) +) +(connector + (pt 432 952) + (pt 416 952) + (color 76 152 0) +) +(connector + (pt 320 952) + (pt 304 952) + (color 76 152 0) +) +(connector + (pt 656 1144) + (pt 640 1144) + (color 76 152 0) +) +(connector + (pt 544 1144) + (pt 528 1144) + (color 76 152 0) +) +(connector + (pt 432 1144) + (pt 416 1144) + (color 76 152 0) +) +(connector + (pt 320 1144) + (pt 304 1144) + (color 76 152 0) +) +(connector + (pt 640 1144) + (pt 640 1216) + (color 76 152 0) +) +(connector + (pt 528 1144) + (pt 528 1216) + (color 76 152 0) +) +(connector + (pt 416 1144) + (pt 416 1216) + (color 76 152 0) +) +(connector + (pt 304 1144) + (pt 304 1216) + (color 76 152 0) +) +(connector + (pt 528 952) + (pt 528 1008) + (color 76 152 0) +) +(connector + (pt 416 952) + (pt 416 1008) + (color 76 152 0) +) +(connector + (pt 304 952) + (pt 304 1008) + (color 76 152 0) +) +(connector + (pt 528 752) + (pt 528 808) + (color 76 152 0) +) +(connector + (pt 416 752) + (pt 416 808) + (color 76 152 0) +) +(connector + (pt 304 752) + (pt 304 808) + (color 76 152 0) +) +(connector + (pt 224 624) + (pt 304 624) + (color 76 152 0) +) +(connector + (pt 304 624) + (pt 416 624) + (color 76 152 0) +) +(connector + (pt 416 624) + (pt 536 624) + (color 76 152 0) +) +(connector + (pt 224 1216) + (pt 304 1216) + (color 76 152 0) +) +(connector + (pt 304 1216) + (pt 416 1216) + (color 76 152 0) +) +(connector + (pt 416 1216) + (pt 528 1216) + (color 76 152 0) +) +(connector + (pt 528 1216) + (pt 640 1216) + (color 76 152 0) +) +(connector + (pt 224 1008) + (pt 304 1008) + (color 76 152 0) +) +(connector + (pt 304 1008) + (pt 416 1008) + (color 76 152 0) +) +(connector + (pt 416 1008) + (pt 528 1008) + (color 76 152 0) +) +(connector + (pt 224 808) + (pt 304 808) + (color 76 152 0) +) +(connector + (pt 304 808) + (pt 416 808) + (color 76 152 0) +) +(connector + (pt 416 808) + (pt 528 808) + (color 76 152 0) +) +(connector + (pt 224 160) + (pt 224 216) + (color 76 152 0) +) +(connector + (pt 224 216) + (pt 224 392) + (color 76 152 0) +) +(connector + (pt 224 392) + (pt 224 560) + (color 76 152 0) +) +(connector + (pt 224 560) + (pt 224 624) + (color 76 152 0) +) +(connector + (pt 224 624) + (pt 224 808) + (color 76 152 0) +) +(connector + (pt 224 808) + (pt 224 1008) + (color 76 152 0) +) +(connector + (pt 224 1008) + (pt 224 1216) + (color 76 152 0) +) +(connector + (pt 624 1072) + (pt 736 1072) +) +(connector + (text "wait_iorq" (rect 865 1056 907 1068)(font "Arial" )) + (pt 736 1072) + (pt 904 1072) +) +(connector + (text "wait_io" (rect 447 1824 480 1836)(font "Arial" )) + (pt 448 1840) + (pt 688 1840) +) +(connector + (pt 384 1376) + (pt 488 1376) +) +(connector + (text "wait_iorqinta" (rect 619 1360 679 1372)(font "Arial" )) + (pt 488 1376) + (pt 688 1376) +) +(connector + (text "wait_io" (rect 793 1352 826 1364)(font "Arial" )) + (pt 752 1368) + (pt 824 1368) +) +(connector + (text "wait_iorq" (rect 619 1344 661 1356)(font "Arial" )) + (pt 616 1360) + (pt 688 1360) +) +(connector + (pt 208 1504) + (pt 392 1504) +) +(junction (pt 248 144)) +(junction (pt 272 320)) +(junction (pt 416 304)) +(junction (pt 400 128)) +(junction (pt 352 408)) +(junction (pt 272 376)) +(junction (pt 304 392)) +(junction (pt 224 392)) +(junction (pt 480 232)) +(junction (pt 432 216)) +(junction (pt 224 216)) +(junction (pt 416 200)) +(junction (pt 248 200)) +(junction (pt 352 232)) +(junction (pt 248 248)) +(junction (pt 304 624)) +(junction (pt 416 624)) +(junction (pt 512 520)) +(junction (pt 624 480)) +(junction (pt 512 720)) +(junction (pt 512 1112)) +(junction (pt 624 1112)) +(junction (pt 304 1216)) +(junction (pt 416 1216)) +(junction (pt 528 1216)) +(junction (pt 304 1008)) +(junction (pt 416 1008)) +(junction (pt 304 808)) +(junction (pt 416 808)) +(junction (pt 224 560)) +(junction (pt 624 680)) +(junction (pt 512 920)) +(junction (pt 624 920)) +(junction (pt 224 624)) +(junction (pt 224 808)) +(junction (pt 224 1008)) +(junction (pt 512 1200)) +(junction (pt 400 992)) +(junction (pt 400 792)) +(junction (pt 272 536)) +(junction (pt 272 592)) +(junction (pt 272 792)) +(junction (pt 272 992)) +(junction (pt 272 1200)) +(junction (pt 384 1416)) +(junction (pt 488 1376)) +(junction (pt 480 1312)) +(junction (pt 248 608)) +(junction (pt 248 736)) +(junction (pt 248 936)) +(junction (pt 248 1128)) +(junction (pt 248 1184)) +(junction (pt 464 640)) +(junction (pt 352 824)) +(junction (pt 464 824)) +(junction (pt 352 1024)) +(junction (pt 464 1024)) +(junction (pt 352 1232)) +(junction (pt 464 1232)) +(junction (pt 576 1232)) +(junction (pt 328 1536)) +(junction (pt 624 880)) +(junction (pt 704 112)) +(junction (pt 592 200)) +(junction (pt 736 1072)) +(text "MREQ DURING REFRESH" (rect 640 248 780 262)(font "Arial" (font_size 8))) +(text "STANDARD MEM REQ" (rect 712 408 837 422)(font "Arial" (font_size 8))) +(text "Refresh generator logic, USPTO 4,332,008 by Shima et al. FIG. 9A" (rect 40 32 506 48)(font "Arial" (font_size 10))(border)) +(text "(End of patented circuit)" (rect 56 424 234 440)(font "Arial" (font_size 10)(bold))) +(text "MREQ DURING M1" (rect 736 600 838 614)(font "Arial" (font_size 8))) +(text "MEMORY WRITE" (rect 640 936 733 950)(font "Arial" (font_size 8))) +(text "IO READ /. WRITE" (rect 736 1216 835 1230)(font "Arial" (font_size 8))) +(text "IORQ DURING INTERRUPT ACK" (rect 504 1456 678 1470)(font "Arial" (font_size 8))) +(text "MEMORY READ" (rect 640 752 729 766)(font "Arial" (font_size 8))) +(line (pt 32 448)(pt 992 448)(color 0 255 0)) +(title_block + (rect 32 1816 289 1868) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "memory_ifc" (rect 43 2 123 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "November 1, 2014, 2016" (rect 56 3 195 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.2" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/control/memory_ifc.bsf b/cpu/control/memory_ifc.bsf new file mode 100644 index 0000000..35c0027 --- /dev/null +++ b/cpu/control/memory_ifc.bsf @@ -0,0 +1,176 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 224 272) + (text "memory_ifc" (rect 5 0 71 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 240 25 252)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "nM1_int" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "nM1_int" (rect 21 27 64 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 21 43 36 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "nreset" (rect 0 0 36 14)(font "Arial" (font_size 8))) + (text "nreset" (rect 21 59 57 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "setM1" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "setM1" (rect 21 75 55 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "timings_en" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "timings_en" (rect 21 91 81 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "in_intr" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "in_intr" (rect 21 107 55 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 0 128) + (input) + (text "ctl_mRead" (rect 0 0 59 14)(font "Arial" (font_size 8))) + (text "ctl_mRead" (rect 21 123 80 137)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)) + ) + (port + (pt 0 144) + (input) + (text "ctl_mWrite" (rect 0 0 59 14)(font "Arial" (font_size 8))) + (text "ctl_mWrite" (rect 21 139 80 153)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)) + ) + (port + (pt 0 160) + (input) + (text "ctl_iorw" (rect 0 0 46 14)(font "Arial" (font_size 8))) + (text "ctl_iorw" (rect 21 155 67 169)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 16 160)) + ) + (port + (pt 0 176) + (input) + (text "fIORead" (rect 0 0 46 14)(font "Arial" (font_size 8))) + (text "fIORead" (rect 21 171 67 185)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 16 176)) + ) + (port + (pt 0 192) + (input) + (text "fIOWrite" (rect 0 0 46 14)(font "Arial" (font_size 8))) + (text "fIOWrite" (rect 21 187 67 201)(font "Arial" (font_size 8))) + (line (pt 0 192)(pt 16 192)) + ) + (port + (pt 0 208) + (input) + (text "iorq_Tw" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "iorq_Tw" (rect 21 203 68 217)(font "Arial" (font_size 8))) + (line (pt 0 208)(pt 16 208)) + ) + (port + (pt 0 224) + (input) + (text "nhold_clk_wait" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "nhold_clk_wait" (rect 21 219 105 233)(font "Arial" (font_size 8))) + (line (pt 0 224)(pt 16 224)) + ) + (port + (pt 208 32) + (output) + (text "nRFSH_out" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "nRFSH_out" (rect 124 27 187 41)(font "Arial" (font_size 8))) + (line (pt 208 32)(pt 192 32)) + ) + (port + (pt 208 48) + (output) + (text "nM1_out" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "nM1_out" (rect 139 43 187 57)(font "Arial" (font_size 8))) + (line (pt 208 48)(pt 192 48)) + ) + (port + (pt 208 64) + (output) + (text "nMREQ_out" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "nMREQ_out" (rect 121 59 187 73)(font "Arial" (font_size 8))) + (line (pt 208 64)(pt 192 64)) + ) + (port + (pt 208 80) + (output) + (text "wait_m1" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "wait_m1" (rect 139 75 187 89)(font "Arial" (font_size 8))) + (line (pt 208 80)(pt 192 80)) + ) + (port + (pt 208 96) + (output) + (text "nRD_out" (rect 0 0 48 14)(font "Arial" (font_size 8))) + (text "nRD_out" (rect 139 91 187 105)(font "Arial" (font_size 8))) + (line (pt 208 96)(pt 192 96)) + ) + (port + (pt 208 112) + (output) + (text "nWR_out" (rect 0 0 51 14)(font "Arial" (font_size 8))) + (text "nWR_out" (rect 136 107 187 121)(font "Arial" (font_size 8))) + (line (pt 208 112)(pt 192 112)) + ) + (port + (pt 208 128) + (output) + (text "nIORQ_out" (rect 0 0 61 14)(font "Arial" (font_size 8))) + (text "nIORQ_out" (rect 126 123 187 137)(font "Arial" (font_size 8))) + (line (pt 208 128)(pt 192 128)) + ) + (port + (pt 208 144) + (output) + (text "latch_wait" (rect 0 0 59 14)(font "Arial" (font_size 8))) + (text "latch_wait" (rect 128 139 187 153)(font "Arial" (font_size 8))) + (line (pt 208 144)(pt 192 144)) + ) + (drawing + (rectangle (rect 16 16 192 240)) + ) +) diff --git a/cpu/control/memory_ifc.v b/cpu/control/memory_ifc.v new file mode 100644 index 0000000..d7423ea --- /dev/null +++ b/cpu/control/memory_ifc.v @@ -0,0 +1,430 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Sun Dec 09 19:14:29 2018" + +module memory_ifc( + clk, + nM1_int, + ctl_mRead, + ctl_mWrite, + in_intr, + nreset, + fIORead, + fIOWrite, + setM1, + ctl_iorw, + timings_en, + iorq_Tw, + nhold_clk_wait, + nM1_out, + nRFSH_out, + nMREQ_out, + nRD_out, + nWR_out, + nIORQ_out, + latch_wait, + wait_m1 +); + + +input wire clk; +input wire nM1_int; +input wire ctl_mRead; +input wire ctl_mWrite; +input wire in_intr; +input wire nreset; +input wire fIORead; +input wire fIOWrite; +input wire setM1; +input wire ctl_iorw; +input wire timings_en; +input wire iorq_Tw; +input wire nhold_clk_wait; +output wire nM1_out; +output wire nRFSH_out; +output wire nMREQ_out; +output wire nRD_out; +output wire nWR_out; +output wire nIORQ_out; +output wire latch_wait; +output wire wait_m1; + +wire intr_iorq; +wire ioRead; +wire iorq; +wire ioWrite; +wire m1_mreq; +wire mrd_mreq; +wire mwr_mreq; +reg mwr_wr; +wire nMEMRQ_int; +wire nq2; +reg q1; +reg q2; +wire wait_io; +reg wait_iorq; +reg wait_iorqinta; +reg wait_m_ALTERA_SYNTHESIZED1; +reg wait_mrd; +reg wait_mwr; +wire SYNTHESIZED_WIRE_0; +reg DFFE_m1_ff3; +wire SYNTHESIZED_WIRE_1; +reg DFFE_iorq_ff4; +reg SYNTHESIZED_WIRE_15; +reg DFFE_mrd_ff3; +reg DFFE_intr_ff3; +wire SYNTHESIZED_WIRE_2; +reg SYNTHESIZED_WIRE_16; +wire SYNTHESIZED_WIRE_3; +reg SYNTHESIZED_WIRE_17; +wire SYNTHESIZED_WIRE_18; +reg DFFE_iorq_ff1; +reg DFFE_m1_ff1; +reg DFFE_mrd_ff1; +reg DFFE_mwr_ff1; +reg DFFE_mreq_ff2; + + + + +assign nMREQ_out = SYNTHESIZED_WIRE_0 & nMEMRQ_int; + +assign ioRead = iorq & fIORead; + +assign SYNTHESIZED_WIRE_1 = ~(DFFE_m1_ff3 | wait_m_ALTERA_SYNTHESIZED1); + +assign m1_mreq = ~(in_intr | SYNTHESIZED_WIRE_1); + +assign iorq = wait_iorq | DFFE_iorq_ff4 | SYNTHESIZED_WIRE_15; + +assign ioWrite = iorq & fIOWrite; + +assign latch_wait = wait_mrd | wait_io | wait_m_ALTERA_SYNTHESIZED1 | wait_mwr; + +assign nMEMRQ_int = ~(m1_mreq | mrd_mreq | mwr_mreq); + +assign nRD_out = ~(m1_mreq | mrd_mreq | ioRead); + +assign mrd_mreq = DFFE_mrd_ff3 | wait_mrd; + +assign nWR_out = ~(ioWrite | mwr_wr); + +assign mwr_mreq = mwr_wr | wait_mwr; + +assign nIORQ_out = ~(intr_iorq | iorq); + +assign wait_io = wait_iorqinta | wait_iorq; + +assign intr_iorq = DFFE_intr_ff3 | wait_iorqinta; + +assign nM1_out = SYNTHESIZED_WIRE_2 | SYNTHESIZED_WIRE_16; + +assign SYNTHESIZED_WIRE_0 = ~(SYNTHESIZED_WIRE_3 & SYNTHESIZED_WIRE_17); + +assign nRFSH_out = ~(nq2 & SYNTHESIZED_WIRE_16); + + +always@(posedge SYNTHESIZED_WIRE_18 or negedge nreset) +begin +if (!nreset) + begin + wait_iorqinta <= 0; + end +else + begin + wait_iorqinta <= iorq_Tw; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_intr_ff3 <= 0; + end +else +if (nhold_clk_wait) + begin + DFFE_intr_ff3 <= wait_iorqinta; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_iorq_ff1 <= 0; + end +else +if (timings_en) + begin + DFFE_iorq_ff1 <= ctl_iorw; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + SYNTHESIZED_WIRE_15 <= 0; + end +else +if (timings_en) + begin + SYNTHESIZED_WIRE_15 <= DFFE_iorq_ff1; + end +end + + +always@(posedge SYNTHESIZED_WIRE_18 or negedge nreset) +begin +if (!nreset) + begin + wait_iorq <= 0; + end +else +if (timings_en) + begin + wait_iorq <= SYNTHESIZED_WIRE_15; + end +end + + +always@(posedge SYNTHESIZED_WIRE_18 or negedge nreset) +begin +if (!nreset) + begin + DFFE_iorq_ff4 <= 0; + end +else +if (timings_en) + begin + DFFE_iorq_ff4 <= wait_iorq; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + SYNTHESIZED_WIRE_16 <= 0; + end +else +if (timings_en) + begin + SYNTHESIZED_WIRE_16 <= nM1_int; + end +end + + +always@(posedge SYNTHESIZED_WIRE_18 or negedge nreset) +begin +if (!nreset) + begin + DFFE_m1_ff1 <= 1; + end +else +if (timings_en) + begin + DFFE_m1_ff1 <= setM1; + end +end + + +always@(posedge SYNTHESIZED_WIRE_18 or negedge nreset) +begin +if (!nreset) + begin + wait_m_ALTERA_SYNTHESIZED1 <= 0; + end +else +if (timings_en) + begin + wait_m_ALTERA_SYNTHESIZED1 <= DFFE_m1_ff1; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_m1_ff3 <= 0; + end +else +if (timings_en) + begin + DFFE_m1_ff3 <= wait_m_ALTERA_SYNTHESIZED1; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_mrd_ff1 <= 0; + end +else +if (timings_en) + begin + DFFE_mrd_ff1 <= ctl_mRead; + end +end + + +always@(posedge SYNTHESIZED_WIRE_18 or negedge nreset) +begin +if (!nreset) + begin + wait_mrd <= 0; + end +else +if (timings_en) + begin + wait_mrd <= DFFE_mrd_ff1; + end +end + + +always@(posedge SYNTHESIZED_WIRE_18 or negedge nreset) +begin +if (!nreset) + begin + DFFE_mrd_ff3 <= 0; + end +else +if (timings_en) + begin + DFFE_mrd_ff3 <= wait_mrd; + end +end + + +always@(posedge SYNTHESIZED_WIRE_18 or negedge nreset) +begin +if (!nreset) + begin + SYNTHESIZED_WIRE_17 <= 0; + end +else +if (timings_en) + begin + SYNTHESIZED_WIRE_17 <= SYNTHESIZED_WIRE_16; + end +end + + +always@(posedge SYNTHESIZED_WIRE_18 or negedge nreset) +begin +if (!nreset) + begin + DFFE_mreq_ff2 <= 0; + end +else +if (timings_en) + begin + DFFE_mreq_ff2 <= SYNTHESIZED_WIRE_17; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_mwr_ff1 <= 0; + end +else +if (timings_en) + begin + DFFE_mwr_ff1 <= ctl_mWrite; + end +end + + +always@(posedge SYNTHESIZED_WIRE_18 or negedge nreset) +begin +if (!nreset) + begin + wait_mwr <= 0; + end +else +if (timings_en) + begin + wait_mwr <= DFFE_mwr_ff1; + end +end + + +always@(posedge SYNTHESIZED_WIRE_18 or negedge nreset) +begin +if (!nreset) + begin + mwr_wr <= 0; + end +else +if (timings_en) + begin + mwr_wr <= wait_mwr; + end +end + +assign SYNTHESIZED_WIRE_18 = ~clk; + +assign nq2 = ~q2; + +assign SYNTHESIZED_WIRE_2 = ~nreset; + +assign SYNTHESIZED_WIRE_3 = ~DFFE_mreq_ff2; + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + q1 <= 0; + end +else +if (timings_en) + begin + q1 <= SYNTHESIZED_WIRE_16; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + q2 <= 0; + end +else +if (timings_en) + begin + q2 <= q1; + end +end + +assign wait_m1 = wait_m_ALTERA_SYNTHESIZED1; + +endmodule diff --git a/cpu/control/pin_control.bdf b/cpu/control/pin_control.bdf new file mode 100644 index 0000000..1c8426c --- /dev/null +++ b/cpu/control/pin_control.bdf @@ -0,0 +1,1087 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 112 208 128) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "fFetch" (rect 9 0 42 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 128 208 144) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "fMRead" (rect 9 0 47 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 144 208 160) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "fMWrite" (rect 9 0 47 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 160 208 176) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "fIORead" (rect 9 0 51 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 176 208 192) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "fIOWrite" (rect 9 0 51 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 32 208 48) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "T1" (rect 9 0 20 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 48 208 64) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "T2" (rect 9 0 20 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 64 208 80) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "T3" (rect 9 0 20 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 80 208 96) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "T4" (rect 9 0 20 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 672 248 848 264) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "bus_ab_pin_we" (rect 90 0 164 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 672 448 848 464) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "bus_db_pin_oe" (rect 90 0 163 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 672 616 848 632) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "bus_db_pin_re" (rect 90 0 160 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 400 408 464 456) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst11" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 496 400 560 448) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst4" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 496 464 560 512) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst5" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 592 432 656 480) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst13" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 496 552 560 600) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst6" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 496 600 560 648) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst7" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 496 648 560 696) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst14" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 592 600 656 648) + (text "OR3" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst15" (rect 3 37 37 51)(font "Arial" (font_size 8))) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 18 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 400 248 464 360) + (text "OR6" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 101 20 113)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 15 48)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 13 32)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 15 64)) + ) + (port + (pt 0 80) + (input) + (text "IN5" (rect 2 71 19 83)(font "Courier New" (bold))(invisible)) + (text "IN5" (rect 2 71 19 83)(font "Courier New" (bold))(invisible)) + (line (pt 0 80)(pt 13 80)) + ) + (port + (pt 0 96) + (input) + (text "IN6" (rect 2 87 19 99)(font "Courier New" (bold))(invisible)) + (text "IN6" (rect 2 87 19 99)(font "Courier New" (bold))(invisible)) + (line (pt 0 96)(pt 13 96)) + ) + (port + (pt 64 56) + (output) + (text "OUT" (rect 48 47 65 59)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 47 65 59)(font "Courier New" (bold))(invisible)) + (line (pt 48 56)(pt 64 56)) + ) + (drawing + (line (pt 13 99)(pt 13 67)) + (line (pt 13 45)(pt 13 13)) + (line (pt 14 68)(pt 25 68)) + (line (pt 14 45)(pt 25 45)) + (arc (pt 7 61)(pt 7 51)(rect -14 40 19 73)) + (arc (pt 49 56)(pt 25 45)(rect -6 45 57 108)) + (arc (pt 25 67)(pt 49 56)(rect -6 5 57 68)) + ) +) +(symbol + (rect 496 192 560 240) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst8" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 496 272 560 320) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst9" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 592 232 656 280) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst16" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 400 456 464 504) + (text "OR3" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst17" (rect 3 37 37 51)(font "Arial" (font_size 8))) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 18 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 24 19 36)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 47 15 64 27)(font "Courier New" (bold))(invisible)) + (line (pt 49 24)(pt 64 24)) + ) + (drawing + (line (pt 14 13)(pt 25 13)) + (line (pt 14 36)(pt 25 36)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(connector + (pt 400 264) + (pt 232 264) +) +(connector + (pt 400 280) + (pt 248 280) +) +(connector + (pt 400 296) + (pt 264 296) +) +(connector + (pt 400 312) + (pt 280 312) +) +(connector + (pt 400 344) + (pt 384 344) +) +(connector + (pt 384 344) + (pt 384 328) +) +(connector + (pt 400 424) + (pt 328 424) +) +(connector + (pt 400 440) + (pt 344 440) +) +(connector + (pt 480 416) + (pt 480 400) +) +(connector + (pt 264 400) + (pt 480 400) +) +(connector + (pt 480 496) + (pt 480 512) +) +(connector + (pt 296 512) + (pt 480 512) +) +(connector + (pt 576 448) + (pt 576 424) +) +(connector + (pt 576 464) + (pt 576 488) +) +(connector + (pt 480 40) + (pt 480 288) +) +(connector + (pt 384 72) + (pt 384 208) +) +(connector + (pt 576 296) + (pt 576 264) +) +(connector + (pt 576 216) + (pt 576 248) +) +(connector + (pt 576 616) + (pt 576 576) +) +(connector + (pt 576 632) + (pt 576 672) +) +(connector + (pt 480 416) + (pt 496 416) +) +(connector + (pt 480 496) + (pt 496 496) +) +(connector + (pt 576 464) + (pt 592 464) +) +(connector + (pt 576 448) + (pt 592 448) +) +(connector + (pt 328 568) + (pt 496 568) +) +(connector + (pt 232 584) + (pt 496 584) +) +(connector + (pt 328 616) + (pt 496 616) +) +(connector + (pt 248 632) + (pt 496 632) +) +(connector + (pt 344 664) + (pt 496 664) +) +(connector + (pt 280 680) + (pt 496 680) +) +(connector + (pt 576 632) + (pt 592 632) +) +(connector + (pt 576 616) + (pt 592 616) +) +(connector + (pt 384 208) + (pt 496 208) +) +(connector + (pt 232 224) + (pt 496 224) +) +(connector + (pt 480 288) + (pt 496 288) +) +(connector + (pt 464 304) + (pt 496 304) +) +(connector + (pt 576 264) + (pt 592 264) +) +(connector + (pt 576 248) + (pt 592 248) +) +(connector + (pt 560 424) + (pt 576 424) +) +(connector + (pt 560 488) + (pt 576 488) +) +(connector + (pt 656 456) + (pt 672 456) +) +(connector + (pt 560 576) + (pt 576 576) +) +(connector + (pt 560 624) + (pt 592 624) +) +(connector + (pt 560 672) + (pt 576 672) +) +(connector + (pt 656 624) + (pt 672 624) +) +(connector + (pt 560 216) + (pt 576 216) +) +(connector + (pt 560 296) + (pt 576 296) +) +(connector + (pt 656 256) + (pt 672 256) +) +(connector + (pt 464 480) + (pt 496 480) +) +(connector + (pt 464 432) + (pt 496 432) +) +(connector + (pt 400 472) + (pt 360 472) +) +(connector + (pt 360 88) + (pt 360 472) +) +(connector + (pt 400 480) + (pt 328 480) +) +(connector + (pt 400 488) + (pt 344 488) +) +(connector + (pt 208 120) + (pt 232 120) +) +(connector + (pt 208 136) + (pt 248 136) +) +(connector + (pt 208 152) + (pt 264 152) +) +(connector + (pt 208 168) + (pt 280 168) +) +(connector + (pt 208 184) + (pt 296 184) +) +(connector + (pt 296 328) + (pt 384 328) +) +(connector + (pt 384 328) + (pt 400 328) +) +(connector + (pt 264 152) + (pt 264 296) +) +(connector + (pt 264 296) + (pt 264 400) +) +(connector + (pt 264 400) + (pt 264 696) +) +(connector + (pt 296 184) + (pt 296 328) +) +(connector + (pt 296 328) + (pt 296 512) +) +(connector + (pt 296 512) + (pt 296 696) +) +(connector + (pt 248 136) + (pt 248 280) +) +(connector + (pt 248 280) + (pt 248 632) +) +(connector + (pt 248 632) + (pt 248 696) +) +(connector + (pt 280 168) + (pt 280 312) +) +(connector + (pt 280 312) + (pt 280 680) +) +(connector + (pt 280 680) + (pt 280 696) +) +(connector + (pt 232 120) + (pt 232 224) +) +(connector + (pt 232 224) + (pt 232 264) +) +(connector + (pt 232 264) + (pt 232 584) +) +(connector + (pt 232 584) + (pt 232 696) +) +(connector + (pt 328 56) + (pt 328 424) +) +(connector + (pt 328 424) + (pt 328 480) +) +(connector + (pt 328 480) + (pt 328 568) +) +(connector + (pt 328 568) + (pt 328 616) +) +(connector + (pt 344 72) + (pt 344 440) +) +(connector + (pt 344 440) + (pt 344 488) +) +(connector + (pt 344 488) + (pt 344 664) +) +(connector + (pt 384 72) + (pt 600 72) +) +(connector + (pt 208 40) + (pt 480 40) +) +(connector + (pt 480 40) + (pt 600 40) +) +(connector + (pt 208 56) + (pt 328 56) +) +(connector + (pt 328 56) + (pt 600 56) +) +(connector + (pt 208 72) + (pt 344 72) +) +(connector + (pt 344 72) + (pt 384 72) +) +(connector + (pt 208 88) + (pt 360 88) +) +(connector + (pt 360 88) + (pt 600 88) +) +(junction (pt 384 328)) +(junction (pt 264 296)) +(junction (pt 264 400)) +(junction (pt 296 328)) +(junction (pt 296 512)) +(junction (pt 248 280)) +(junction (pt 248 632)) +(junction (pt 280 312)) +(junction (pt 280 680)) +(junction (pt 232 224)) +(junction (pt 232 264)) +(junction (pt 232 584)) +(junction (pt 384 72)) +(junction (pt 344 440)) +(junction (pt 328 424)) +(junction (pt 328 568)) +(junction (pt 328 480)) +(junction (pt 344 488)) +(junction (pt 360 88)) +(junction (pt 480 40)) +(junction (pt 344 72)) +(junction (pt 328 56)) +(text "bus_ab_pin_we = (fFetch & (T1 | T3)) |\n (fMRead & (T1)) |\n (fMWrite & (T1)) |\n (fIORead & (T1)) |\n (fIOWrite & (T1));\n" (rect 624 296 851 380)(font "Arial" (color 170 0 0)(font_size 8))) +(text "bus_db_pin_oe = (fFetch & 1'h0) |\n (fMRead & 1'h0) |\n (fMWrite & (T2 | T3)) |\n (fIORead & 1'h0) |\n (fIOWrite & (T2 | T3 | T4));\n" (rect 608 496 834 580)(font "Arial" (color 170 0 0)(font_size 8))) +(text "bus_db_pin_re = (fFetch & (T2)) |\n (fMRead & (T2)) |\n (fMWrite & 1'h0) |\n (fIORead & (T3)) |\n (fIOWrite & 1'h0);" (rect 608 664 805 734)(font "Arial" (color 170 0 0)(font_size 8))) +(title_block + (rect 32 720 289 772) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "pin_control" (rect 43 2 118 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "November 16, 2014" (rect 56 3 166 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.0" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/control/pin_control.bsf b/cpu/control/pin_control.bsf new file mode 100644 index 0000000..85d1576 --- /dev/null +++ b/cpu/control/pin_control.bsf @@ -0,0 +1,113 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 208 208) + (text "pin_control" (rect 5 0 67 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 176 25 188)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "T1" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "T1" (rect 21 27 35 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "T2" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "T2" (rect 21 43 35 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "T3" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "T3" (rect 21 59 35 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "T4" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "T4" (rect 21 75 35 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "fFetch" (rect 0 0 36 14)(font "Arial" (font_size 8))) + (text "fFetch" (rect 21 91 57 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "fMRead" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "fMRead" (rect 21 107 64 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 0 128) + (input) + (text "fMWrite" (rect 0 0 43 14)(font "Arial" (font_size 8))) + (text "fMWrite" (rect 21 123 64 137)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)) + ) + (port + (pt 0 144) + (input) + (text "fIORead" (rect 0 0 46 14)(font "Arial" (font_size 8))) + (text "fIORead" (rect 21 139 67 153)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)) + ) + (port + (pt 0 160) + (input) + (text "fIOWrite" (rect 0 0 46 14)(font "Arial" (font_size 8))) + (text "fIOWrite" (rect 21 155 67 169)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 16 160)) + ) + (port + (pt 192 32) + (output) + (text "bus_ab_pin_we" (rect 0 0 92 14)(font "Arial" (font_size 8))) + (text "bus_ab_pin_we" (rect 79 27 171 41)(font "Arial" (font_size 8))) + (line (pt 192 32)(pt 176 32)) + ) + (port + (pt 192 48) + (output) + (text "bus_db_pin_oe" (rect 0 0 87 14)(font "Arial" (font_size 8))) + (text "bus_db_pin_oe" (rect 84 43 171 57)(font "Arial" (font_size 8))) + (line (pt 192 48)(pt 176 48)) + ) + (port + (pt 192 64) + (output) + (text "bus_db_pin_re" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "bus_db_pin_re" (rect 87 59 171 73)(font "Arial" (font_size 8))) + (line (pt 192 64)(pt 176 64)) + ) + (drawing + (rectangle (rect 16 16 176 176)) + ) +) diff --git a/cpu/control/pin_control.v b/cpu/control/pin_control.v new file mode 100644 index 0000000..2c232cd --- /dev/null +++ b/cpu/control/pin_control.v @@ -0,0 +1,89 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Sun Nov 16 21:18:37 2014" + +module pin_control( + fFetch, + fMRead, + fMWrite, + fIORead, + fIOWrite, + T1, + T2, + T3, + T4, + bus_ab_pin_we, + bus_db_pin_oe, + bus_db_pin_re +); + + +input wire fFetch; +input wire fMRead; +input wire fMWrite; +input wire fIORead; +input wire fIOWrite; +input wire T1; +input wire T2; +input wire T3; +input wire T4; +output wire bus_ab_pin_we; +output wire bus_db_pin_oe; +output wire bus_db_pin_re; + +wire SYNTHESIZED_WIRE_0; +wire SYNTHESIZED_WIRE_1; +wire SYNTHESIZED_WIRE_2; +wire SYNTHESIZED_WIRE_3; +wire SYNTHESIZED_WIRE_4; +wire SYNTHESIZED_WIRE_5; +wire SYNTHESIZED_WIRE_6; +wire SYNTHESIZED_WIRE_7; +wire SYNTHESIZED_WIRE_8; +wire SYNTHESIZED_WIRE_9; + + + + +assign SYNTHESIZED_WIRE_9 = fFetch | fMWrite | fMRead | fIORead | fIOWrite | fIOWrite; + +assign SYNTHESIZED_WIRE_7 = T3 | T2; + +assign bus_db_pin_oe = SYNTHESIZED_WIRE_0 | SYNTHESIZED_WIRE_1; + +assign SYNTHESIZED_WIRE_3 = T3 & fIORead; + +assign bus_db_pin_re = SYNTHESIZED_WIRE_2 | SYNTHESIZED_WIRE_3 | SYNTHESIZED_WIRE_4; + +assign bus_ab_pin_we = SYNTHESIZED_WIRE_5 | SYNTHESIZED_WIRE_6; + +assign SYNTHESIZED_WIRE_8 = T2 | T3 | T4; + +assign SYNTHESIZED_WIRE_1 = fMWrite & SYNTHESIZED_WIRE_7; + +assign SYNTHESIZED_WIRE_0 = SYNTHESIZED_WIRE_8 & fIOWrite; + +assign SYNTHESIZED_WIRE_4 = T2 & fFetch; + +assign SYNTHESIZED_WIRE_2 = T2 & fMRead; + +assign SYNTHESIZED_WIRE_6 = T3 & fFetch; + +assign SYNTHESIZED_WIRE_5 = T1 & SYNTHESIZED_WIRE_9; + + +endmodule diff --git a/cpu/control/pla_decode.bsf b/cpu/control/pla_decode.bsf new file mode 100644 index 0000000..2b2f805 --- /dev/null +++ b/cpu/control/pla_decode.bsf @@ -0,0 +1,50 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.1")) +(symbol + (rect 16 16 208 96) + (text "pla_decode" (rect 5 0 49 12)(font "Arial" )) + (text "inst" (rect 8 64 20 76)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "opcode[7..0]" (rect 0 0 48 12)(font "Arial" )) + (text "opcode[7..0]" (rect 21 27 69 39)(font "Arial" )) + (line (pt 0 32)(pt 16 32)(line_width 3)) + ) + (port + (pt 0 48) + (input) + (text "prefix[6..0]" (rect 0 0 42 12)(font "Arial" )) + (text "prefix[6..0]" (rect 21 43 63 55)(font "Arial" )) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 192 32) + (output) + (text "pla[104..0]" (rect 0 0 40 12)(font "Arial" )) + (text "pla[104..0]" (rect 131 27 171 39)(font "Arial" )) + (line (pt 192 32)(pt 176 32)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 176 64)(line_width 1)) + ) +) diff --git a/cpu/control/pla_decode.v b/cpu/control/pla_decode.v new file mode 100644 index 0000000..fa4f022 --- /dev/null +++ b/cpu/control/pla_decode.v @@ -0,0 +1,121 @@ +//===================================================================================== +// This file is automatically generated by the z80_pla_checker tool. Do not edit! +//===================================================================================== +module pla_decode +( + input wire [6:0] prefix, + input wire [7:0] opcode, + output wire [104:0] pla +); + +assign pla[ 0] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11110100) == 15'b0000001_10100000) ? 1'b1 : 1'b0; // ldx/cpx/inx/outx brk +assign pla[ 1] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_11011001) ? 1'b1 : 1'b0; // exx +assign pla[ 2] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_11101011) ? 1'b1 : 1'b0; // ex de,hl +assign pla[ 3] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11011111) == 15'b0000100_11011101) ? 1'b1 : 1'b0; // IX/IY prefix +assign pla[ 5] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_11111001) ? 1'b1 : 1'b0; // ld sp,hl +assign pla[ 6] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_11101001) ? 1'b1 : 1'b0; // jp hl +assign pla[ 7] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11001111) == 15'b0000100_00000001) ? 1'b1 : 1'b0; // ld rr,nn +assign pla[ 8] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11100111) == 15'b0000100_00000010) ? 1'b1 : 1'b0; // ld (rr),a/a,(rr) +assign pla[ 9] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11000111) == 15'b0000100_00000011) ? 1'b1 : 1'b0; // inc/dec rr +assign pla[ 10] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_11100011) ? 1'b1 : 1'b0; // ex (sp),hl +assign pla[ 11] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11100111) == 15'b0000001_10100001) ? 1'b1 : 1'b0; // cpi/cpir/cpd/cpdr +assign pla[ 12] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11100111) == 15'b0000001_10100000) ? 1'b1 : 1'b0; // ldi/ldir/ldd/lddr +assign pla[ 13] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11001111) == 15'b0000100_00000010) ? 1'b1 : 1'b0; // ld direction +assign pla[ 15] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11110111) == 15'b0000001_01100111) ? 1'b1 : 1'b0; // rrd/rld +assign pla[ 16] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11001111) == 15'b0000100_11000101) ? 1'b1 : 1'b0; // push rr +assign pla[ 17] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11000111) == 15'b0000100_00000110) ? 1'b1 : 1'b0; // ld r,n +assign pla[ 20] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11100111) == 15'b0000001_10100011) ? 1'b1 : 1'b0; // outx/otxr +assign pla[ 21] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11100111) == 15'b0000001_10100010) ? 1'b1 : 1'b0; // inx/inxr +assign pla[ 23] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11001011) == 15'b0000100_11000001) ? 1'b1 : 1'b0; // push/pop +assign pla[ 24] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_11001101) ? 1'b1 : 1'b0; // call nn +assign pla[ 25] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11100111) == 15'b0000100_00000111) ? 1'b1 : 1'b0; // rlca/rla/rrca/rra +assign pla[ 26] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_00010000) ? 1'b1 : 1'b0; // djnz e +assign pla[ 27] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11000110) == 15'b0000001_01000000) ? 1'b1 : 1'b0; // in/out r,(c) +assign pla[ 28] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_11010011) ? 1'b1 : 1'b0; // out (n),a +assign pla[ 29] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_11000011) ? 1'b1 : 1'b0; // jp nn +assign pla[ 30] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11110111) == 15'b0000100_00100010) ? 1'b1 : 1'b0; // ld hl,(nn)/(nn),hl +assign pla[ 31] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11000111) == 15'b0000001_01000011) ? 1'b1 : 1'b0; // ld rr,(nn)/(nn),rr +assign pla[ 33] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11001111) == 15'b0000001_01000011) ? 1'b1 : 1'b0; // ld direction +assign pla[ 34] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11000111) == 15'b0000001_01000001) ? 1'b1 : 1'b0; // out (c),r +assign pla[ 35] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_11001001) ? 1'b1 : 1'b0; // ret +assign pla[ 37] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11110111) == 15'b0000100_11010011) ? 1'b1 : 1'b0; // out (n),a/a,(n) +assign pla[ 38] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11110111) == 15'b0000100_00110010) ? 1'b1 : 1'b0; // ld (nn),a/a,(nn) +assign pla[ 39] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_00001000) ? 1'b1 : 1'b0; // ex af,af' +assign pla[ 40] = (({prefix[6:0], opcode[7:0]} & 15'b0100100_11111111) == 15'b0100100_00110110) ? 1'b1 : 1'b0; // ld (ix+d),n +assign pla[ 42] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11000111) == 15'b0000100_11000100) ? 1'b1 : 1'b0; // call cc,nn +assign pla[ 43] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11000111) == 15'b0000100_11000010) ? 1'b1 : 1'b0; // jp cc,nn +assign pla[ 44] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_11001011) ? 1'b1 : 1'b0; // CB prefix +assign pla[ 45] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11000111) == 15'b0000100_11000000) ? 1'b1 : 1'b0; // ret cc +assign pla[ 46] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11000111) == 15'b0000001_01000101) ? 1'b1 : 1'b0; // reti/retn +assign pla[ 47] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_00011000) ? 1'b1 : 1'b0; // jr e +assign pla[ 48] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11100111) == 15'b0000100_00100000) ? 1'b1 : 1'b0; // jr ss,e +assign pla[ 49] = (({prefix[6:0], opcode[7:0]} & 15'b0100000_11111111) == 15'b0100000_11001011) ? 1'b1 : 1'b0; // CB prefix with IX/IY +assign pla[ 50] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_00110110) ? 1'b1 : 1'b0; // ld (hl),n +assign pla[ 51] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_11101101) ? 1'b1 : 1'b0; // ED prefix +assign pla[ 52] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11000111) == 15'b0000100_10000110) ? 1'b1 : 1'b0; // add/sub/and/or/xor/cp (hl) +assign pla[ 53] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111110) == 15'b0000100_00110100) ? 1'b1 : 1'b0; // inc/dec (hl) +assign pla[ 55] = (({prefix[6:0], opcode[7:0]} & 15'b0000010_00000111) == 15'b0000010_00000110) ? 1'b1 : 1'b0; // Every CB op (hl) +assign pla[ 56] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11000111) == 15'b0000100_11000111) ? 1'b1 : 1'b0; // rst p +assign pla[ 57] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11110111) == 15'b0000001_01000111) ? 1'b1 : 1'b0; // ld i,a/r,a +assign pla[ 58] = (({prefix[6:0], opcode[7:0]} & 15'b0010100_11000111) == 15'b0010100_01000110) ? 1'b1 : 1'b0; // ld r,(hl) +assign pla[ 59] = (({prefix[6:0], opcode[7:0]} & 15'b0010100_11111000) == 15'b0010100_01110000) ? 1'b1 : 1'b0; // ld (hl),r +assign pla[ 61] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11000000) == 15'b0000100_01000000) ? 1'b1 : 1'b0; // ld r,r' +assign pla[ 64] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11000111) == 15'b0000100_11000110) ? 1'b1 : 1'b0; // add/sub/and/or/xor/cmp a,imm +assign pla[ 65] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11000000) == 15'b0000100_10000000) ? 1'b1 : 1'b0; // add/sub/and/or/xor/cmp a,r +assign pla[ 66] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11000110) == 15'b0000100_00000100) ? 1'b1 : 1'b0; // inc/dec r +assign pla[ 68] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11000111) == 15'b0000001_01000010) ? 1'b1 : 1'b0; // adc/sbc hl,rr +assign pla[ 69] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11001111) == 15'b0000100_00001001) ? 1'b1 : 1'b0; // add hl,rr +assign pla[ 70] = (({prefix[6:0], opcode[7:0]} & 15'b0000010_11000000) == 15'b0000010_00000000) ? 1'b1 : 1'b0; // rlc r +assign pla[ 72] = (({prefix[6:0], opcode[7:0]} & 15'b0000010_11000000) == 15'b0000010_01000000) ? 1'b1 : 1'b0; // bit b,r +assign pla[ 73] = (({prefix[6:0], opcode[7:0]} & 15'b0000010_11000000) == 15'b0000010_10000000) ? 1'b1 : 1'b0; // res b,r +assign pla[ 74] = (({prefix[6:0], opcode[7:0]} & 15'b0000010_11000000) == 15'b0000010_11000000) ? 1'b1 : 1'b0; // set b,r +assign pla[ 75] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11000111) == 15'b0000100_00000101) ? 1'b1 : 1'b0; // dec r +assign pla[ 76] = (({prefix[6:0], opcode[7:0]} & 15'b0001000_00111000) == 15'b0001000_00111000) ? 1'b1 : 1'b0; // 111 (CP) +assign pla[ 77] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_00100111) ? 1'b1 : 1'b0; // daa +assign pla[ 78] = (({prefix[6:0], opcode[7:0]} & 15'b0001000_00111000) == 15'b0001000_00010000) ? 1'b1 : 1'b0; // 010 (SUB) +assign pla[ 79] = (({prefix[6:0], opcode[7:0]} & 15'b0001000_00111000) == 15'b0001000_00011000) ? 1'b1 : 1'b0; // 011 (SBC) +assign pla[ 80] = (({prefix[6:0], opcode[7:0]} & 15'b0001000_00111000) == 15'b0001000_00001000) ? 1'b1 : 1'b0; // 001 (ADC) +assign pla[ 81] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_00101111) ? 1'b1 : 1'b0; // cpl +assign pla[ 82] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11000111) == 15'b0000001_01000100) ? 1'b1 : 1'b0; // neg +assign pla[ 83] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11110111) == 15'b0000001_01010111) ? 1'b1 : 1'b0; // ld a,i/a,r +assign pla[ 84] = (({prefix[6:0], opcode[7:0]} & 15'b0001000_00111000) == 15'b0001000_00000000) ? 1'b1 : 1'b0; // 000 (ADD) +assign pla[ 85] = (({prefix[6:0], opcode[7:0]} & 15'b0001000_00111000) == 15'b0001000_00100000) ? 1'b1 : 1'b0; // 100 (AND) +assign pla[ 86] = (({prefix[6:0], opcode[7:0]} & 15'b0001000_00111000) == 15'b0001000_00110000) ? 1'b1 : 1'b0; // 110 (OR) +assign pla[ 88] = (({prefix[6:0], opcode[7:0]} & 15'b0001000_00111000) == 15'b0001000_00101000) ? 1'b1 : 1'b0; // 101 (XOR) +assign pla[ 89] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_00111111) ? 1'b1 : 1'b0; // ccf +assign pla[ 91] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11100110) == 15'b0000001_10100010) ? 1'b1 : 1'b0; // inx/outx/inxr/otxr +assign pla[ 92] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_00110111) ? 1'b1 : 1'b0; // scf +assign pla[ 95] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11111111) == 15'b0000100_01110110) ? 1'b1 : 1'b0; // halt +assign pla[ 96] = (({prefix[6:0], opcode[7:0]} & 15'b0000001_11000111) == 15'b0000001_01000110) ? 1'b1 : 1'b0; // im n +assign pla[ 97] = (({prefix[6:0], opcode[7:0]} & 15'b0000100_11110111) == 15'b0000100_11110011) ? 1'b1 : 1'b0; // di/ei +assign pla[ 99] = (({prefix[6:0], opcode[7:0]} & 15'b0000000_00000001) == 15'b0000000_00000001) ? 1'b1 : 1'b0; // opcode[0] +assign pla[100] = (({prefix[6:0], opcode[7:0]} & 15'b0000000_00000010) == 15'b0000000_00000010) ? 1'b1 : 1'b0; // opcode[1] +assign pla[101] = (({prefix[6:0], opcode[7:0]} & 15'b0000000_00000100) == 15'b0000000_00000100) ? 1'b1 : 1'b0; // opcode[2] +assign pla[102] = (({prefix[6:0], opcode[7:0]} & 15'b0000000_00001000) == 15'b0000000_00001000) ? 1'b1 : 1'b0; // opcode[3] +assign pla[103] = (({prefix[6:0], opcode[7:0]} & 15'b0000000_00010000) == 15'b0000000_00010000) ? 1'b1 : 1'b0; // opcode[4] +assign pla[104] = (({prefix[6:0], opcode[7:0]} & 15'b0000000_00100000) == 15'b0000000_00100000) ? 1'b1 : 1'b0; // opcode[5] + +// Entries not used by our timing matrix +assign pla[ 67] = 1'b0; // in +assign pla[ 62] = 1'b0; // For all CB opcodes +assign pla[ 54] = 1'b0; // Every CB with IX/IY +assign pla[ 22] = 1'b0; // CB prefix w/o IX/IY +assign pla[ 14] = 1'b0; // dec rr +assign pla[ 4] = 1'b0; // ld x,a/a,x + +// Duplicate entries +assign pla[ 18] = 1'b0; // ldi/ldir/ldd/lddr +assign pla[ 19] = 1'b0; // cpi/cpir/cpd/cpdr +assign pla[ 32] = 1'b0; // ld i,a/a,i/r,a/a,r +assign pla[ 36] = 1'b0; // ld(rr),a/a,(rr) +assign pla[ 41] = 1'b0; // IX/IY +assign pla[ 60] = 1'b0; // rrd/rld +assign pla[ 63] = 1'b0; // ld r,* +assign pla[ 71] = 1'b0; // rlca/rla/rrca/rra +assign pla[ 87] = 1'b0; // ld a,i / ld a,r +assign pla[ 90] = 1'b0; // djnz * +assign pla[ 93] = 1'b0; // cpi/cpir/cpd/cpdr +assign pla[ 94] = 1'b0; // ldi/ldir/ldd/lddr +assign pla[ 98] = 1'b0; // out (*),a/in a,(*) + +endmodule diff --git a/cpu/control/resets.bdf b/cpu/control/resets.bdf new file mode 100644 index 0000000..ae71f39 --- /dev/null +++ b/cpu/control/resets.bdf @@ -0,0 +1,1114 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 136 208 152) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "reset_in" (rect 9 0 47 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 344 208 360) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "clk" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 256 208 272) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "M1" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 272 208 288) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "T2" (rect 9 0 20 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 88 208 104) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "fpga_reset" (rect 9 0 62 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 632 208 648) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nhold_clk_wait" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 776 488 952 504) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "clrpc" (rect 90 0 113 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 776 216 952 232) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "nreset" (rect 90 0 120 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 248 160 296 192) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst1" (rect 3 21 26 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 488 128 552 176) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst10" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 488 240 552 288) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst12" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 352 256 400 288) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst5" (rect 3 21 26 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 240 248 304 296) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst11" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 680 128 744 208) + (text "SRFF" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "sr" (rect 3 68 12 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "S" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "S" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 56) + (input) + (text "R" (rect 14 51 19 63)(font "Courier New" (bold))) + (text "R" (rect 14 51 19 63)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 29 19 41)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 29 19 41)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 45 20 50 32)(font "Courier New" (bold))) + (text "Q" (rect 43 20 47 32)(font "Courier New" (bold))) + (line (pt 52 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 19 40)(pt 12 47)) + (line (pt 12 33)(pt 19 40)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 248 304 296 336) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst7" (rect 3 21 26 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 336 120 400 200) + (text "JKFF" (rect 1 0 23 10)(font "Arial" (font_size 6))) + (text "ff1" (rect 3 68 18 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 56) + (input) + (text "K" (rect 15 51 20 63)(font "Courier New" (bold))) + (text "K" (rect 15 51 20 63)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 0 24) + (input) + (text "J" (rect 15 20 20 32)(font "Courier New" (bold))) + (text "J" (rect 15 20 20 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 31 19 43)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 31 19 43)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 45 20 50 32)(font "Courier New" (bold))) + (text "Q" (rect 43 20 47 32)(font "Courier New" (bold))) + (line (pt 52 24)(pt 64 24)) + ) + (drawing + (line (pt 12 12)(pt 52 12)) + (line (pt 12 68)(pt 52 68)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 12 33)) + (line (pt 19 40)(pt 12 47)) + (line (pt 12 32)(pt 20 40)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 248 80 296 112) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst8" (rect 3 21 26 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 608 312 672 392) + (text "DFF" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "res" (rect 3 68 18 80)(font "Arial" )) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 3 29 20 41)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 3 29 20 41)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 45 20 50 32)(font "Courier New" (bold))) + (text "Q" (rect 43 20 47 32)(font "Courier New" (bold))) + (line (pt 52 24)(pt 64 24)) + ) + (drawing + (line (pt 12 12)(pt 52 12)) + (line (pt 12 68)(pt 52 68)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 19 40)(pt 12 47)) + (line (pt 12 32)(pt 20 40)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 696 248 728 296) + (text "NOT" (rect 0 27 10 47)(font "Arial" (font_size 6))(vertical)) + (text "inst2" (rect 21 22 33 45)(font "Arial" )(vertical)) + (port + (pt 16 48) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 7 35 19 46)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 48)(pt 16 35)) + ) + (port + (pt 16 0) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 7 2 19 16)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 9)(pt 16 0)) + ) + (drawing + (line (pt 25 35)(pt 7 35)) + (line (pt 7 35)(pt 16 17)) + (line (pt 25 35)(pt 16 17)) + (circle (rect 12 9 20 17)) + ) + (rotate90) +) +(symbol + (rect 680 456 744 536) + (text "OR4" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 69 20 81)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 0 48) + (input) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 39 19 51)(font "Courier New" (bold))(invisible)) + (line (pt 0 48)(pt 15 48)) + ) + (port + (pt 0 64) + (input) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (text "IN4" (rect 2 55 19 67)(font "Courier New" (bold))(invisible)) + (line (pt 0 64)(pt 13 64)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 64 40) + (output) + (text "OUT" (rect 48 31 65 43)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 31 62 43)(font "Courier New" (bold))(invisible)) + (line (pt 48 40)(pt 64 40)) + ) + (drawing + (line (pt 13 67)(pt 13 51)) + (line (pt 25 52)(pt 13 52)) + (line (pt 13 12)(pt 13 29)) + (line (pt 13 29)(pt 25 29)) + (arc (pt 7 45)(pt 7 35)(rect -14 24 19 57)) + (arc (pt 49 40)(pt 25 29)(rect -6 29 57 92)) + (arc (pt 25 51)(pt 49 40)(rect -6 -11 57 52)) + ) +) +(symbol + (rect 520 520 584 600) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "intr_ff3" (rect 3 68 39 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 48 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 296 520 360 600) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "intr_ff4" (rect 3 68 39 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 48 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 408 520 472 600) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "intr_ff5" (rect 3 68 39 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 48 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(connector + (pt 232 144) + (pt 232 176) +) +(connector + (pt 232 176) + (pt 248 176) +) +(connector + (pt 208 96) + (pt 248 96) +) +(connector + (pt 208 264) + (pt 240 264) +) +(connector + (pt 208 280) + (pt 240 280) +) +(connector + (pt 368 120) + (pt 368 96) +) +(connector + (pt 296 176) + (pt 336 176) +) +(connector + (pt 208 144) + (pt 232 144) +) +(connector + (pt 232 144) + (pt 336 144) +) +(connector + (pt 464 144) + (pt 464 256) +) +(connector + (text "x1" (rect 427 128 438 140)(font "Arial" )) + (pt 400 144) + (pt 464 144) +) +(connector + (pt 464 144) + (pt 488 144) +) +(connector + (pt 440 160) + (pt 488 160) +) +(connector + (pt 464 256) + (pt 488 256) +) +(connector + (pt 400 272) + (pt 488 272) +) +(connector + (pt 336 272) + (pt 336 240) +) +(connector + (pt 336 240) + (pt 440 240) +) +(connector + (pt 304 272) + (pt 336 272) +) +(connector + (pt 336 272) + (pt 352 272) +) +(connector + (pt 336 160) + (pt 320 160) +) +(connector + (text "x3" (rect 557 248 568 260)(font "Arial" )) + (pt 552 264) + (pt 592 264) +) +(connector + (pt 232 320) + (pt 248 320) +) +(connector + (pt 320 160) + (pt 320 320) +) +(connector + (pt 296 320) + (pt 320 320) +) +(connector + (text "nclk" (rect 339 304 359 316)(font "Arial" )) + (pt 320 320) + (pt 576 320) +) +(connector + (pt 208 352) + (pt 232 352) +) +(connector + (pt 592 264) + (pt 592 336) +) +(connector + (pt 592 336) + (pt 608 336) +) +(connector + (pt 296 96) + (pt 368 96) +) +(connector + (pt 576 320) + (pt 576 168) +) +(connector + (text "x2" (rect 530 136 541 148)(font "Arial" )) + (pt 552 152) + (pt 680 152) +) +(connector + (pt 440 184) + (pt 680 184) +) +(connector + (pt 576 168) + (pt 680 168) +) +(connector + (pt 712 224) + (pt 776 224) +) +(connector + (pt 440 160) + (pt 440 184) +) +(connector + (pt 440 184) + (pt 440 240) +) +(connector + (pt 712 208) + (pt 712 224) +) +(connector + (pt 712 224) + (pt 712 248) +) +(connector + (pt 672 336) + (pt 712 336) +) +(connector + (pt 368 96) + (pt 640 96) +) +(connector + (pt 232 352) + (pt 608 352) +) +(connector + (pt 640 96) + (pt 640 312) +) +(connector + (text "clrpc_int" (rect 779 136 820 148)(font "Arial" )) + (pt 744 152) + (pt 808 152) +) +(connector + (pt 680 520) + (pt 624 520) +) +(connector + (pt 624 520) + (pt 624 544) +) +(connector + (pt 584 544) + (pt 624 544) +) +(connector + (text "clrpc_int" (rect 630 456 671 468)(font "Arial" )) + (pt 680 472) + (pt 624 472) +) +(connector + (pt 744 496) + (pt 776 496) +) +(connector + (pt 232 320) + (pt 232 352) +) +(connector + (pt 296 560) + (pt 264 560) +) +(connector + (pt 264 616) + (pt 264 560) +) +(connector + (text "nclk" (rect 216 600 236 612)(font "Arial" )) + (pt 208 616) + (pt 264 616) +) +(connector + (pt 296 544) + (pt 264 544) +) +(connector + (pt 408 560) + (pt 376 560) +) +(connector + (pt 376 616) + (pt 376 560) +) +(connector + (pt 680 488) + (pt 376 488) +) +(connector + (pt 376 544) + (pt 376 488) +) +(connector + (pt 360 544) + (pt 376 544) +) +(connector + (pt 376 544) + (pt 408 544) +) +(connector + (pt 520 560) + (pt 488 560) +) +(connector + (pt 488 560) + (pt 488 616) +) +(connector + (pt 264 616) + (pt 376 616) +) +(connector + (pt 376 616) + (pt 488 616) +) +(connector + (pt 680 504) + (pt 488 504) +) +(connector + (pt 488 544) + (pt 488 504) +) +(connector + (pt 472 544) + (pt 488 544) +) +(connector + (pt 488 544) + (pt 520 544) +) +(connector + (pt 504 576) + (pt 504 640) +) +(connector + (pt 520 576) + (pt 504 576) +) +(connector + (pt 408 576) + (pt 392 576) +) +(connector + (pt 392 576) + (pt 392 640) +) +(connector + (pt 296 576) + (pt 280 576) +) +(connector + (pt 280 576) + (pt 280 640) +) +(connector + (pt 392 640) + (pt 504 640) +) +(connector + (pt 208 640) + (pt 280 640) +) +(connector + (pt 280 640) + (pt 392 640) +) +(connector + (pt 712 432) + (pt 264 432) +) +(connector + (pt 264 544) + (pt 264 432) +) +(connector + (pt 712 296) + (pt 712 336) +) +(connector + (pt 712 336) + (pt 712 432) +) +(junction (pt 232 144)) +(junction (pt 368 96)) +(junction (pt 336 272)) +(junction (pt 464 144)) +(junction (pt 440 184)) +(junction (pt 320 320)) +(junction (pt 232 352)) +(junction (pt 712 224)) +(junction (pt 712 336)) +(junction (pt 264 616)) +(junction (pt 376 616)) +(junction (pt 376 544)) +(junction (pt 488 544)) +(junction (pt 392 640)) +(junction (pt 280 640)) +(text "Needed only for FPGAs" (rect 40 72 174 86)(font "Arial" (font_size 8))) +(text "Special reset, USPTO 4,486,827 by Shima et al." (rect 40 24 371 40)(font "Arial" (font_size 10))(border)) +(text "Required 3 clock reset cycles to clear PC and IR" (rect 304 464 576 478)(font "Arial" (font_size 8))) +(text "(End of patented circuit)" (rect 64 384 242 400)(font "Arial" (font_size 10)(bold))) +(line (pt 32 408)(pt 952 408)(color 0 255 0)) +(title_block + (rect 696 584 953 636) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "resets" (rect 43 2 86 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "September 6, 2014, 2016" (rect 56 3 198 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.5" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/control/resets.bsf b/cpu/control/resets.bsf new file mode 100644 index 0000000..be8f5c8 --- /dev/null +++ b/cpu/control/resets.bsf @@ -0,0 +1,85 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 192 176) + (text "resets" (rect 5 0 41 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 144 25 156)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "fpga_reset" (rect 0 0 62 14)(font "Arial" (font_size 8))) + (text "fpga_reset" (rect 21 27 83 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "reset_in" (rect 0 0 46 14)(font "Arial" (font_size 8))) + (text "reset_in" (rect 21 43 67 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "M1" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "M1" (rect 21 59 37 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "T2" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "T2" (rect 21 75 35 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 21 91 36 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "nhold_clk_wait" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "nhold_clk_wait" (rect 21 107 105 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 176 32) + (output) + (text "nreset" (rect 0 0 36 14)(font "Arial" (font_size 8))) + (text "nreset" (rect 119 27 155 41)(font "Arial" (font_size 8))) + (line (pt 176 32)(pt 160 32)) + ) + (port + (pt 176 48) + (output) + (text "clrpc" (rect 0 0 28 14)(font "Arial" (font_size 8))) + (text "clrpc" (rect 127 43 155 57)(font "Arial" (font_size 8))) + (line (pt 176 48)(pt 160 48)) + ) + (drawing + (rectangle (rect 16 16 160 144)) + ) +) diff --git a/cpu/control/resets.v b/cpu/control/resets.v new file mode 100644 index 0000000..2848e10 --- /dev/null +++ b/cpu/control/resets.v @@ -0,0 +1,144 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Sat Dec 10 08:57:54 2016" + +module resets( + reset_in, + clk, + M1, + T2, + fpga_reset, + nhold_clk_wait, + clrpc, + nreset +); + + +input wire reset_in; +input wire clk; +input wire M1; +input wire T2; +input wire fpga_reset; +input wire nhold_clk_wait; +output wire clrpc; +output wire nreset; + +reg clrpc_int; +wire nclk; +reg x1; +wire x2; +wire x3; +wire SYNTHESIZED_WIRE_8; +wire SYNTHESIZED_WIRE_1; +reg SYNTHESIZED_WIRE_9; +reg DFFE_intr_ff3; +reg SYNTHESIZED_WIRE_10; +wire SYNTHESIZED_WIRE_11; +wire SYNTHESIZED_WIRE_3; +reg SYNTHESIZED_WIRE_12; +wire SYNTHESIZED_WIRE_6; + +assign nreset = SYNTHESIZED_WIRE_6; + + + + +always@(posedge nclk or negedge SYNTHESIZED_WIRE_8) +begin +if (!SYNTHESIZED_WIRE_8) + begin + x1 <= 1; + end +else + begin + x1 <= ~x1 & reset_in | x1 & ~SYNTHESIZED_WIRE_1; + end +end + +assign clrpc = clrpc_int | SYNTHESIZED_WIRE_9 | DFFE_intr_ff3 | SYNTHESIZED_WIRE_10; + +assign SYNTHESIZED_WIRE_1 = ~reset_in; + +assign x2 = x1 & SYNTHESIZED_WIRE_11; + +assign SYNTHESIZED_WIRE_11 = M1 & T2; + +assign x3 = x1 & SYNTHESIZED_WIRE_3; + +assign SYNTHESIZED_WIRE_6 = ~SYNTHESIZED_WIRE_12; + +assign SYNTHESIZED_WIRE_3 = ~SYNTHESIZED_WIRE_11; + +assign nclk = ~clk; + +assign SYNTHESIZED_WIRE_8 = ~fpga_reset; + + +always@(posedge nclk) +begin +if (nhold_clk_wait) + begin + DFFE_intr_ff3 <= SYNTHESIZED_WIRE_9; + end +end + + +always@(posedge nclk) +begin +if (nhold_clk_wait) + begin + SYNTHESIZED_WIRE_10 <= SYNTHESIZED_WIRE_12; + end +end + + +always@(posedge nclk) +begin +if (nhold_clk_wait) + begin + SYNTHESIZED_WIRE_9 <= SYNTHESIZED_WIRE_10; + end +end + + +always@(posedge clk or negedge SYNTHESIZED_WIRE_8) +begin +if (!SYNTHESIZED_WIRE_8) + begin + SYNTHESIZED_WIRE_12 <= 1; + end +else + begin + SYNTHESIZED_WIRE_12 <= x3; + end +end + + +always@(posedge nclk or negedge SYNTHESIZED_WIRE_6) +begin +if (!SYNTHESIZED_WIRE_6) + begin + clrpc_int <= 0; + end +else + begin + clrpc_int <= ~clrpc_int & x2 | clrpc_int & ~SYNTHESIZED_WIRE_11; + end +end + + +endmodule diff --git a/cpu/control/sequencer.bdf b/cpu/control/sequencer.bdf new file mode 100644 index 0000000..38d0e66 --- /dev/null +++ b/cpu/control/sequencer.bdf @@ -0,0 +1,2320 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 24 416 200 432) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "clk" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 360 200 376) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nextM" (rect 9 0 38 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 296 200 312) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "setM1" (rect 9 0 38 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 136 200 152) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nreset" (rect 9 0 39 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 536 200 552) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "hold_clk_iorq" (rect 9 0 72 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 560 200 576) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "hold_clk_wait" (rect 9 0 73 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 584 200 600) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "hold_clk_busrq" (rect 9 0 82 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 1360 64 1536 80) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "M1" (rect 90 0 104 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1360 88 1536 104) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "M2" (rect 90 0 104 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1360 112 1536 128) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "M3" (rect 90 0 104 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1360 136 1536 152) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "M4" (rect 90 0 104 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1360 176 1536 192) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "M5" (rect 90 0 104 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1360 328 1536 344) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "T1" (rect 90 0 101 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1360 352 1536 368) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "T2" (rect 90 0 101 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1360 376 1536 392) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "T3" (rect 90 0 101 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1360 400 1536 416) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "T4" (rect 90 0 101 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1360 424 1536 440) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "T5" (rect 90 0 101 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1360 464 1536 480) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "T6" (rect 90 0 101 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1360 560 1536 576) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "timings_en" (rect 90 0 143 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 440 448 504 528) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "T1_ff" (rect 3 68 30 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 608 448 672 528) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "T2_ff" (rect 3 68 30 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 776 448 840 528) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "T3_ff" (rect 3 68 30 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 944 448 1008 528) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "T4_ff" (rect 3 68 30 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 1112 448 1176 528) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "T5_ff" (rect 3 68 30 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 1280 448 1344 528) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "T6_ff" (rect 3 68 30 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 528 448 592 496) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst2" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 696 448 760 496) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst3" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 864 448 928 496) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst4" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1032 448 1096 496) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst5" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 392 576 440 608) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "nnextM" (rect 3 21 38 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 1200 448 1264 496) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst6" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 440 160 504 240) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "M1_ff" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 608 160 672 240) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "M2_ff" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 776 160 840 240) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "M3_ff" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 944 160 1008 240) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "M4_ff" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 1112 160 1176 240) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "M5_ff" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(symbol + (rect 528 160 592 208) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst7" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 696 160 760 208) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst8" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 864 160 928 208) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst9" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1032 160 1096 208) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst10" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 392 288 440 320) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "nsetM1" (rect 3 21 38 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 224 544 288 592) + (text "NOR3" (rect 1 0 26 10)(font "Arial" (font_size 6))) + (text "instHoldClk" (rect 3 37 59 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 54 24)(pt 64 24)) + ) + (drawing + (line (pt 12 13)(pt 23 13)) + (line (pt 12 36)(pt 23 36)) + (arc (pt 5 29)(pt 5 19)(rect -16 8 17 41)) + (arc (pt 23 35)(pt 46 24)(rect -6 -23 53 36)) + (arc (pt 46 24)(pt 23 13)(rect -6 13 53 72)) + (circle (rect 46 20 54 28)) + ) +) +(symbol + (rect 224 336 288 384) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 37 20 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(connector + (pt 504 184) + (pt 512 184) +) +(connector + (pt 672 184) + (pt 680 184) +) +(connector + (pt 840 184) + (pt 848 184) +) +(connector + (pt 1008 184) + (pt 1016 184) +) +(connector + (pt 608 184) + (pt 592 184) +) +(connector + (pt 760 184) + (pt 776 184) +) +(connector + (pt 928 184) + (pt 944 184) +) +(connector + (pt 1096 184) + (pt 1112 184) +) +(connector + (pt 528 176) + (pt 512 176) +) +(connector + (pt 696 176) + (pt 680 176) +) +(connector + (pt 864 176) + (pt 848 176) +) +(connector + (pt 1032 176) + (pt 1016 176) +) +(connector + (pt 504 472) + (pt 512 472) +) +(connector + (pt 672 472) + (pt 680 472) +) +(connector + (pt 840 472) + (pt 848 472) +) +(connector + (pt 1008 472) + (pt 1016 472) +) +(connector + (pt 528 464) + (pt 512 464) +) +(connector + (pt 696 464) + (pt 680 464) +) +(connector + (pt 592 472) + (pt 608 472) +) +(connector + (pt 760 472) + (pt 776 472) +) +(connector + (pt 864 464) + (pt 848 464) +) +(connector + (pt 928 472) + (pt 944 472) +) +(connector + (pt 1032 464) + (pt 1016 464) +) +(connector + (pt 1096 472) + (pt 1112 472) +) +(connector + (pt 1264 472) + (pt 1280 472) +) +(connector + (pt 512 336) + (pt 1360 336) +) +(connector + (pt 848 384) + (pt 1360 384) +) +(connector + (pt 1016 408) + (pt 1360 408) +) +(connector + (pt 1344 472) + (pt 1360 472) +) +(connector + (pt 1176 472) + (pt 1184 472) +) +(connector + (pt 1184 432) + (pt 1360 432) +) +(connector + (pt 1200 464) + (pt 1184 464) +) +(connector + (pt 640 240) + (pt 640 320) + (color 128 0 128) +) +(connector + (pt 808 240) + (pt 808 320) + (color 128 0 128) +) +(connector + (pt 976 240) + (pt 976 320) + (color 128 0 128) +) +(connector + (pt 1144 240) + (pt 1144 320) + (color 128 0 128) +) +(connector + (pt 528 192) + (pt 520 192) +) +(connector + (pt 520 192) + (pt 520 304) +) +(connector + (pt 696 192) + (pt 688 192) +) +(connector + (pt 688 192) + (pt 688 304) +) +(connector + (pt 864 192) + (pt 856 192) +) +(connector + (pt 856 192) + (pt 856 304) +) +(connector + (pt 1032 192) + (pt 1024 192) +) +(connector + (pt 1024 192) + (pt 1024 304) +) +(connector + (pt 680 464) + (pt 680 472) +) +(connector + (pt 512 336) + (pt 512 464) +) +(connector + (pt 512 464) + (pt 512 472) +) +(connector + (pt 848 384) + (pt 848 464) +) +(connector + (pt 848 464) + (pt 848 472) +) +(connector + (pt 1016 408) + (pt 1016 464) +) +(connector + (pt 1016 464) + (pt 1016 472) +) +(connector + (pt 1184 432) + (pt 1184 464) +) +(connector + (pt 1184 464) + (pt 1184 472) +) +(connector + (pt 808 320) + (pt 976 320) + (color 128 0 128) +) +(connector + (pt 976 320) + (pt 1144 320) + (color 128 0 128) +) +(connector + (pt 440 304) + (pt 520 304) +) +(connector + (pt 520 304) + (pt 688 304) +) +(connector + (pt 688 304) + (pt 856 304) +) +(connector + (pt 856 304) + (pt 1024 304) +) +(connector + (pt 640 320) + (pt 808 320) + (color 128 0 128) +) +(connector + (pt 640 528) + (pt 640 608) +) +(connector + (pt 808 528) + (pt 808 608) +) +(connector + (pt 976 528) + (pt 976 608) +) +(connector + (pt 1144 528) + (pt 1144 608) +) +(connector + (pt 1312 528) + (pt 1312 608) +) +(connector + (pt 640 608) + (pt 808 608) + (color 128 0 128) +) +(connector + (pt 808 608) + (pt 976 608) + (color 128 0 128) +) +(connector + (pt 976 608) + (pt 1144 608) + (color 128 0 128) +) +(connector + (pt 1144 608) + (pt 1312 608) + (color 128 0 128) +) +(connector + (pt 304 608) + (pt 640 608) + (color 128 0 128) +) +(connector + (pt 304 320) + (pt 640 320) + (color 128 0 128) +) +(connector + (pt 472 448) + (pt 472 392) +) +(connector + (pt 472 392) + (pt 304 392) +) +(connector + (pt 472 160) + (pt 472 144) +) +(connector + (pt 440 184) + (pt 344 184) +) +(connector + (pt 344 304) + (pt 344 184) +) +(connector + (pt 344 304) + (pt 392 304) +) +(connector + (pt 680 360) + (pt 1360 360) +) +(connector + (pt 680 360) + (pt 680 464) +) +(connector + (pt 200 424) + (pt 368 424) + (color 128 0 128) +) +(connector + (pt 368 264) + (pt 368 424) + (color 128 0 128) +) +(connector + (pt 368 424) + (pt 368 552) + (color 128 0 128) +) +(connector + (pt 1256 488) + (pt 1256 552) + (color 128 0 128) +) +(connector + (pt 1280 488) + (pt 1256 488) + (color 128 0 128) +) +(connector + (pt 1088 552) + (pt 1088 488) + (color 128 0 128) +) +(connector + (pt 1112 488) + (pt 1088 488) + (color 128 0 128) +) +(connector + (pt 1088 552) + (pt 1256 552) +) +(connector + (pt 920 552) + (pt 920 488) + (color 128 0 128) +) +(connector + (pt 944 488) + (pt 920 488) + (color 128 0 128) +) +(connector + (pt 920 552) + (pt 1088 552) +) +(connector + (pt 752 552) + (pt 752 488) + (color 128 0 128) +) +(connector + (pt 776 488) + (pt 752 488) + (color 128 0 128) +) +(connector + (pt 752 552) + (pt 920 552) +) +(connector + (pt 584 552) + (pt 584 488) + (color 128 0 128) +) +(connector + (pt 608 488) + (pt 584 488) + (color 128 0 128) +) +(connector + (pt 584 552) + (pt 752 552) +) +(connector + (pt 416 552) + (pt 416 488) + (color 128 0 128) +) +(connector + (pt 440 488) + (pt 416 488) + (color 128 0 128) +) +(connector + (pt 368 552) + (pt 416 552) +) +(connector + (pt 416 552) + (pt 584 552) +) +(connector + (pt 1088 264) + (pt 1088 200) + (color 128 0 128) +) +(connector + (pt 1112 200) + (pt 1088 200) + (color 128 0 128) +) +(connector + (pt 920 264) + (pt 920 200) + (color 128 0 128) +) +(connector + (pt 944 200) + (pt 920 200) + (color 128 0 128) +) +(connector + (pt 752 264) + (pt 752 200) + (color 128 0 128) +) +(connector + (pt 776 200) + (pt 752 200) + (color 128 0 128) +) +(connector + (pt 752 264) + (pt 920 264) +) +(connector + (pt 584 264) + (pt 584 200) + (color 128 0 128) +) +(connector + (pt 608 200) + (pt 584 200) + (color 128 0 128) +) +(connector + (pt 584 264) + (pt 752 264) +) +(connector + (pt 416 264) + (pt 416 200) + (color 128 0 128) +) +(connector + (pt 440 200) + (pt 416 200) + (color 128 0 128) +) +(connector + (pt 368 264) + (pt 416 264) +) +(connector + (pt 416 264) + (pt 584 264) +) +(connector + (pt 1272 568) + (pt 1272 504) + (color 85 170 0) +) +(connector + (pt 1280 504) + (pt 1272 504) + (color 85 170 0) +) +(connector + (pt 1272 568) + (pt 1360 568) + (color 85 170 0) +) +(connector + (pt 1104 568) + (pt 1104 504) + (color 85 170 0) +) +(connector + (pt 1112 504) + (pt 1104 504) + (color 85 170 0) +) +(connector + (pt 1104 568) + (pt 1272 568) + (color 85 170 0) +) +(connector + (pt 936 568) + (pt 936 504) + (color 85 170 0) +) +(connector + (pt 944 504) + (pt 936 504) + (color 85 170 0) +) +(connector + (pt 936 568) + (pt 1104 568) + (color 85 170 0) +) +(connector + (pt 768 568) + (pt 768 504) + (color 85 170 0) +) +(connector + (pt 776 504) + (pt 768 504) + (color 85 170 0) +) +(connector + (pt 768 568) + (pt 936 568) + (color 85 170 0) +) +(connector + (pt 600 568) + (pt 600 504) + (color 85 170 0) +) +(connector + (pt 608 504) + (pt 600 504) + (color 85 170 0) +) +(connector + (pt 600 568) + (pt 768 568) + (color 85 170 0) +) +(connector + (pt 432 568) + (pt 432 504) + (color 85 170 0) +) +(connector + (pt 440 504) + (pt 432 504) + (color 85 170 0) +) +(connector + (text "ena_T" (rect 332 552 361 564)(font "Arial" )) + (pt 288 568) + (pt 432 568) + (color 85 170 0) +) +(connector + (pt 432 568) + (pt 600 568) + (color 85 170 0) +) +(connector + (pt 528 480) + (pt 520 480) + (color 0 85 255) +) +(connector + (pt 520 480) + (pt 520 592) + (color 0 85 255) +) +(connector + (pt 696 480) + (pt 688 480) + (color 0 85 255) +) +(connector + (pt 688 480) + (pt 688 592) + (color 0 85 255) +) +(connector + (pt 864 480) + (pt 856 480) + (color 0 85 255) +) +(connector + (pt 856 480) + (pt 856 592) + (color 0 85 255) +) +(connector + (pt 1032 480) + (pt 1024 480) + (color 0 85 255) +) +(connector + (pt 1024 480) + (pt 1024 592) + (color 0 85 255) +) +(connector + (pt 1200 480) + (pt 1192 480) + (color 0 85 255) +) +(connector + (pt 1192 480) + (pt 1192 592) + (color 0 85 255) +) +(connector + (pt 440 592) + (pt 520 592) + (color 0 85 255) +) +(connector + (pt 520 592) + (pt 688 592) + (color 0 85 255) +) +(connector + (pt 688 592) + (pt 856 592) + (color 0 85 255) +) +(connector + (pt 856 592) + (pt 1024 592) + (color 0 85 255) +) +(connector + (pt 1024 592) + (pt 1192 592) + (color 0 85 255) +) +(connector + (pt 216 560) + (pt 216 544) +) +(connector + (pt 224 560) + (pt 216 560) +) +(connector + (pt 216 544) + (pt 200 544) +) +(connector + (pt 200 568) + (pt 224 568) +) +(connector + (pt 200 592) + (pt 216 592) +) +(connector + (pt 216 592) + (pt 216 576) +) +(connector + (pt 216 576) + (pt 224 576) +) +(connector + (pt 920 264) + (pt 1088 264) +) +(connector + (pt 224 352) + (pt 208 352) +) +(connector + (pt 208 352) + (pt 208 304) +) +(connector + (pt 200 304) + (pt 208 304) +) +(connector + (pt 208 304) + (pt 344 304) +) +(connector + (pt 200 368) + (pt 224 368) +) +(connector + (pt 320 592) + (pt 392 592) + (color 255 0 0) +) +(connector + (pt 320 472) + (pt 320 592) + (color 255 0 0) +) +(connector + (pt 1104 280) + (pt 1104 216) + (color 255 0 0) +) +(connector + (pt 1112 216) + (pt 1104 216) + (color 255 0 0) +) +(connector + (pt 936 280) + (pt 936 216) + (color 255 0 0) +) +(connector + (pt 944 216) + (pt 936 216) + (color 255 0 0) +) +(connector + (pt 768 280) + (pt 768 216) + (color 255 0 0) +) +(connector + (pt 776 216) + (pt 768 216) + (color 255 0 0) +) +(connector + (pt 768 280) + (pt 936 280) + (color 255 0 0) +) +(connector + (pt 600 280) + (pt 600 216) + (color 255 0 0) +) +(connector + (pt 608 216) + (pt 600 216) + (color 255 0 0) +) +(connector + (pt 600 280) + (pt 768 280) + (color 255 0 0) +) +(connector + (pt 432 280) + (pt 432 216) + (color 255 0 0) +) +(connector + (pt 440 216) + (pt 432 216) + (color 255 0 0) +) +(connector + (text "ena_M" (rect 333 264 364 276)(font "Arial" )) + (pt 320 280) + (pt 432 280) + (color 255 0 0) +) +(connector + (pt 432 280) + (pt 600 280) + (color 255 0 0) +) +(connector + (pt 936 280) + (pt 1104 280) + (color 255 0 0) +) +(connector + (pt 320 472) + (pt 440 472) + (color 255 0 0) +) +(connector + (pt 288 360) + (pt 320 360) + (color 255 0 0) +) +(connector + (pt 320 280) + (pt 320 360) + (color 255 0 0) +) +(connector + (pt 320 360) + (pt 320 472) + (color 255 0 0) +) +(connector + (pt 304 144) + (pt 304 320) +) +(connector + (pt 304 320) + (pt 304 392) +) +(connector + (pt 304 392) + (pt 304 608) +) +(connector + (pt 200 144) + (pt 304 144) +) +(connector + (pt 304 144) + (pt 472 144) +) +(connector + (pt 1176 184) + (pt 1360 184) +) +(connector + (pt 512 72) + (pt 1360 72) +) +(connector + (pt 680 96) + (pt 1360 96) +) +(connector + (pt 848 120) + (pt 1360 120) +) +(connector + (pt 1016 144) + (pt 1360 144) +) +(connector + (pt 512 72) + (pt 512 176) +) +(connector + (pt 512 176) + (pt 512 184) +) +(connector + (pt 680 96) + (pt 680 176) +) +(connector + (pt 680 176) + (pt 680 184) +) +(connector + (pt 848 120) + (pt 848 176) +) +(connector + (pt 848 176) + (pt 848 184) +) +(connector + (pt 1016 144) + (pt 1016 176) +) +(connector + (pt 1016 176) + (pt 1016 184) +) +(junction (pt 512 176)) +(junction (pt 680 176)) +(junction (pt 848 176)) +(junction (pt 1016 176)) +(junction (pt 680 464)) +(junction (pt 512 464)) +(junction (pt 848 464)) +(junction (pt 1016 464)) +(junction (pt 1184 464)) +(junction (pt 640 320)) +(junction (pt 808 320)) +(junction (pt 976 320)) +(junction (pt 520 304)) +(junction (pt 688 304)) +(junction (pt 856 304)) +(junction (pt 320 472)) +(junction (pt 368 424)) +(junction (pt 520 592)) +(junction (pt 688 592)) +(junction (pt 856 592)) +(junction (pt 1024 592)) +(junction (pt 640 608)) +(junction (pt 808 608)) +(junction (pt 976 608)) +(junction (pt 1144 608)) +(junction (pt 304 392)) +(junction (pt 344 304)) +(junction (pt 304 320)) +(junction (pt 1272 568)) +(junction (pt 1104 568)) +(junction (pt 1088 552)) +(junction (pt 936 568)) +(junction (pt 920 552)) +(junction (pt 768 568)) +(junction (pt 752 552)) +(junction (pt 600 568)) +(junction (pt 584 552)) +(junction (pt 432 568)) +(junction (pt 416 552)) +(junction (pt 936 280)) +(junction (pt 920 264)) +(junction (pt 768 280)) +(junction (pt 752 264)) +(junction (pt 600 280)) +(junction (pt 584 264)) +(junction (pt 432 280)) +(junction (pt 416 264)) +(junction (pt 208 304)) +(junction (pt 320 360)) +(junction (pt 304 144)) +(title_block + (rect 24 32 345 93) + (name "title-custom-medium") + (section (rect 0 41 240 60)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "July 5, 2014, 2016" (rect 56 3 181 19)(font "Arial" (font_size 10)))(border)) + (section (rect 0 21 320 40)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 151 19)(font "Arial" (font_size 11)))(border)) + (section (rect 130 0 320 20)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "sequencer" (rect 43 2 138 21)(font "Arial" (font_size 12)(bold)))(border)) + (section (rect 0 0 320 20)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 106 21)(font "Arial" (font_size 12)(bold)))(border)) + (section (rect 241 41 320 60)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.4" (rect 43 3 64 19)(font "Arial" (font_size 10)))(border)) + (drawing + ) +) diff --git a/cpu/control/sequencer.bsf b/cpu/control/sequencer.bsf new file mode 100644 index 0000000..ee25ab8 --- /dev/null +++ b/cpu/control/sequencer.bsf @@ -0,0 +1,162 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 216 272) + (text "sequencer" (rect 5 0 66 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 240 25 252)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "setM1" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "setM1" (rect 21 27 55 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 21 43 36 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "nreset" (rect 0 0 36 14)(font "Arial" (font_size 8))) + (text "nreset" (rect 21 59 57 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "nextM" (rect 0 0 34 14)(font "Arial" (font_size 8))) + (text "nextM" (rect 21 75 55 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "hold_clk_iorq" (rect 0 0 74 14)(font "Arial" (font_size 8))) + (text "hold_clk_iorq" (rect 21 91 95 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "hold_clk_wait" (rect 0 0 77 14)(font "Arial" (font_size 8))) + (text "hold_clk_wait" (rect 21 107 98 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 0 128) + (input) + (text "hold_clk_busrq" (rect 0 0 86 14)(font "Arial" (font_size 8))) + (text "hold_clk_busrq" (rect 21 123 107 137)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)) + ) + (port + (pt 200 32) + (output) + (text "M1" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "M1" (rect 163 27 179 41)(font "Arial" (font_size 8))) + (line (pt 200 32)(pt 184 32)) + ) + (port + (pt 200 48) + (output) + (text "M2" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "M2" (rect 163 43 179 57)(font "Arial" (font_size 8))) + (line (pt 200 48)(pt 184 48)) + ) + (port + (pt 200 64) + (output) + (text "M3" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "M3" (rect 163 59 179 73)(font "Arial" (font_size 8))) + (line (pt 200 64)(pt 184 64)) + ) + (port + (pt 200 80) + (output) + (text "M4" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "M4" (rect 163 75 179 89)(font "Arial" (font_size 8))) + (line (pt 200 80)(pt 184 80)) + ) + (port + (pt 200 96) + (output) + (text "M5" (rect 0 0 16 14)(font "Arial" (font_size 8))) + (text "M5" (rect 163 91 179 105)(font "Arial" (font_size 8))) + (line (pt 200 96)(pt 184 96)) + ) + (port + (pt 200 128) + (output) + (text "T1" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "T1" (rect 165 123 179 137)(font "Arial" (font_size 8))) + (line (pt 200 128)(pt 184 128)) + ) + (port + (pt 200 144) + (output) + (text "T2" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "T2" (rect 165 139 179 153)(font "Arial" (font_size 8))) + (line (pt 200 144)(pt 184 144)) + ) + (port + (pt 200 160) + (output) + (text "T3" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "T3" (rect 165 155 179 169)(font "Arial" (font_size 8))) + (line (pt 200 160)(pt 184 160)) + ) + (port + (pt 200 176) + (output) + (text "T4" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "T4" (rect 165 171 179 185)(font "Arial" (font_size 8))) + (line (pt 200 176)(pt 184 176)) + ) + (port + (pt 200 192) + (output) + (text "T5" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "T5" (rect 165 187 179 201)(font "Arial" (font_size 8))) + (line (pt 200 192)(pt 184 192)) + ) + (port + (pt 200 208) + (output) + (text "T6" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "T6" (rect 165 203 179 217)(font "Arial" (font_size 8))) + (line (pt 200 208)(pt 184 208)) + ) + (port + (pt 200 224) + (output) + (text "timings_en" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "timings_en" (rect 119 219 179 233)(font "Arial" (font_size 8))) + (line (pt 200 224)(pt 184 224)) + ) + (drawing + (rectangle (rect 16 16 184 240)) + ) +) diff --git a/cpu/control/sequencer.v b/cpu/control/sequencer.v new file mode 100644 index 0000000..1946b81 --- /dev/null +++ b/cpu/control/sequencer.v @@ -0,0 +1,279 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Sat Feb 13 17:56:57 2016" + +module sequencer( + clk, + nextM, + setM1, + nreset, + hold_clk_iorq, + hold_clk_wait, + hold_clk_busrq, + M1, + M2, + M3, + M4, + M5, + T1, + T2, + T3, + T4, + T5, + T6, + timings_en +); + + +input wire clk; +input wire nextM; +input wire setM1; +input wire nreset; +input wire hold_clk_iorq; +input wire hold_clk_wait; +input wire hold_clk_busrq; +output wire M1; +output wire M2; +output wire M3; +output wire M4; +output reg M5; +output wire T1; +output wire T2; +output wire T3; +output wire T4; +output wire T5; +output reg T6; +output wire timings_en; + +wire ena_M; +wire ena_T; +reg DFFE_M4_ff; +wire SYNTHESIZED_WIRE_18; +reg DFFE_T1_ff; +wire SYNTHESIZED_WIRE_19; +reg DFFE_T2_ff; +reg DFFE_T3_ff; +reg DFFE_T4_ff; +reg DFFE_T5_ff; +reg DFFE_M1_ff; +reg DFFE_M2_ff; +reg DFFE_M3_ff; +wire SYNTHESIZED_WIRE_9; +wire SYNTHESIZED_WIRE_10; +wire SYNTHESIZED_WIRE_11; +wire SYNTHESIZED_WIRE_12; +wire SYNTHESIZED_WIRE_13; +wire SYNTHESIZED_WIRE_14; +wire SYNTHESIZED_WIRE_15; +wire SYNTHESIZED_WIRE_16; +wire SYNTHESIZED_WIRE_17; + +assign M1 = DFFE_M1_ff; +assign M2 = DFFE_M2_ff; +assign M3 = DFFE_M3_ff; +assign M4 = DFFE_M4_ff; +assign T1 = DFFE_T1_ff; +assign T2 = DFFE_T2_ff; +assign T3 = DFFE_T3_ff; +assign T4 = DFFE_T4_ff; +assign T5 = DFFE_T5_ff; + + + +assign ena_M = nextM | setM1; + +assign SYNTHESIZED_WIRE_12 = DFFE_M4_ff & SYNTHESIZED_WIRE_18; + +assign SYNTHESIZED_WIRE_13 = DFFE_T1_ff & SYNTHESIZED_WIRE_19; + +assign SYNTHESIZED_WIRE_14 = DFFE_T2_ff & SYNTHESIZED_WIRE_19; + +assign SYNTHESIZED_WIRE_15 = DFFE_T3_ff & SYNTHESIZED_WIRE_19; + +assign SYNTHESIZED_WIRE_16 = DFFE_T4_ff & SYNTHESIZED_WIRE_19; + +assign SYNTHESIZED_WIRE_17 = DFFE_T5_ff & SYNTHESIZED_WIRE_19; + +assign SYNTHESIZED_WIRE_9 = DFFE_M1_ff & SYNTHESIZED_WIRE_18; + +assign SYNTHESIZED_WIRE_10 = DFFE_M2_ff & SYNTHESIZED_WIRE_18; + +assign SYNTHESIZED_WIRE_11 = DFFE_M3_ff & SYNTHESIZED_WIRE_18; + +assign ena_T = ~(hold_clk_iorq | hold_clk_wait | hold_clk_busrq); + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_M1_ff <= 1; + end +else +if (ena_M) + begin + DFFE_M1_ff <= setM1; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_M2_ff <= 0; + end +else +if (ena_M) + begin + DFFE_M2_ff <= SYNTHESIZED_WIRE_9; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_M3_ff <= 0; + end +else +if (ena_M) + begin + DFFE_M3_ff <= SYNTHESIZED_WIRE_10; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_M4_ff <= 0; + end +else +if (ena_M) + begin + DFFE_M4_ff <= SYNTHESIZED_WIRE_11; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + M5 <= 0; + end +else +if (ena_M) + begin + M5 <= SYNTHESIZED_WIRE_12; + end +end + +assign SYNTHESIZED_WIRE_19 = ~ena_M; + +assign SYNTHESIZED_WIRE_18 = ~setM1; + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_T1_ff <= 1; + end +else +if (ena_T) + begin + DFFE_T1_ff <= ena_M; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_T2_ff <= 0; + end +else +if (ena_T) + begin + DFFE_T2_ff <= SYNTHESIZED_WIRE_13; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_T3_ff <= 0; + end +else +if (ena_T) + begin + DFFE_T3_ff <= SYNTHESIZED_WIRE_14; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_T4_ff <= 0; + end +else +if (ena_T) + begin + DFFE_T4_ff <= SYNTHESIZED_WIRE_15; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + DFFE_T5_ff <= 0; + end +else +if (ena_T) + begin + DFFE_T5_ff <= SYNTHESIZED_WIRE_16; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + T6 <= 0; + end +else +if (ena_T) + begin + T6 <= SYNTHESIZED_WIRE_17; + end +end + +assign timings_en = ena_T; + +endmodule diff --git a/cpu/control/simulation/modelsim/r b/cpu/control/simulation/modelsim/r new file mode 100644 index 0000000..6504afb --- /dev/null +++ b/cpu/control/simulation/modelsim/r @@ -0,0 +1 @@ +restart -f ; run -all diff --git a/cpu/control/simulation/modelsim/test_control.mpf b/cpu/control/simulation/modelsim/test_control.mpf new file mode 100644 index 0000000..ff208d2 --- /dev/null +++ b/cpu/control/simulation/modelsim/test_control.mpf @@ -0,0 +1,524 @@ +; Copyright 1991-2009 Mentor Graphics Corporation +; +; All Rights Reserved. +; +; THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS THE PROPERTY OF +; MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS. +; + +[Library] +std = $MODEL_TECH/../std +ieee = $MODEL_TECH/../ieee +verilog = $MODEL_TECH/../verilog +vital2000 = $MODEL_TECH/../vital2000 +std_developerskit = $MODEL_TECH/../std_developerskit +synopsys = $MODEL_TECH/../synopsys +modelsim_lib = $MODEL_TECH/../modelsim_lib +sv_std = $MODEL_TECH/../sv_std + +; Altera Primitive libraries +; +; VHDL Section +; +altera_mf = $MODEL_TECH/../altera/vhdl/altera_mf +altera = $MODEL_TECH/../altera/vhdl/altera +altera_lnsim = $MODEL_TECH/../altera/vhdl/altera_lnsim +lpm = $MODEL_TECH/../altera/vhdl/220model +220model = $MODEL_TECH/../altera/vhdl/220model +max = $MODEL_TECH/../altera/vhdl/max +maxii = $MODEL_TECH/../altera/vhdl/maxii +maxv = $MODEL_TECH/../altera/vhdl/maxv +stratix = $MODEL_TECH/../altera/vhdl/stratix +stratixii = $MODEL_TECH/../altera/vhdl/stratixii +stratixiigx = $MODEL_TECH/../altera/vhdl/stratixiigx +hardcopyii = $MODEL_TECH/../altera/vhdl/hardcopyii +hardcopyiii = $MODEL_TECH/../altera/vhdl/hardcopyiii +hardcopyiv = $MODEL_TECH/../altera/vhdl/hardcopyiv +cyclone = $MODEL_TECH/../altera/vhdl/cyclone +cycloneii = $MODEL_TECH/../altera/vhdl/cycloneii +cycloneiii = $MODEL_TECH/../altera/vhdl/cycloneiii +cycloneiiils = $MODEL_TECH/../altera/vhdl/cycloneiiils +sgate = $MODEL_TECH/../altera/vhdl/sgate +stratixgx = $MODEL_TECH/../altera/vhdl/stratixgx +altgxb = $MODEL_TECH/../altera/vhdl/altgxb +stratixgx_gxb = $MODEL_TECH/../altera/vhdl/stratixgx_gxb +stratixiigx_hssi = $MODEL_TECH/../altera/vhdl/stratixiigx_hssi +arriagx_hssi = $MODEL_TECH/../altera/vhdl/arriagx_hssi +arriaii = $MODEL_TECH/../altera/vhdl/arriaii +arriaii_hssi = $MODEL_TECH/../altera/vhdl/arriaii_hssi +arriaii_pcie_hip = $MODEL_TECH/../altera/vhdl/arriaii_pcie_hip +arriaiigz = $MODEL_TECH/../altera/vhdl/arriaiigz +arriaiigz_hssi = $MODEL_TECH/../altera/vhdl/arriaiigz_hssi +arriaiigz_pcie_hip = $MODEL_TECH/../altera/vhdl/arriaiigz_pcie_hip +arriagx = $MODEL_TECH/../altera/vhdl/arriagx +altgxb_lib = $MODEL_TECH/../altera/vhdl/altgxb +stratixiv = $MODEL_TECH/../altera/vhdl/stratixiv +stratixiv_hssi = $MODEL_TECH/../altera/vhdl/stratixiv_hssi +stratixiv_pcie_hip = $MODEL_TECH/../altera/vhdl/stratixiv_pcie_hip +cycloneiv = $MODEL_TECH/../altera/vhdl/cycloneiv +cycloneiv_hssi = $MODEL_TECH/../altera/vhdl/cycloneiv_hssi +cycloneiv_pcie_hip = $MODEL_TECH/../altera/vhdl/cycloneiv_pcie_hip +cycloneive = $MODEL_TECH/../altera/vhdl/cycloneive +hardcopyiv_hssi = $MODEL_TECH/../altera/vhdl/hardcopyiv_hssi +hardcopyiv_pcie_hip = $MODEL_TECH/../altera/vhdl/hardcopyiv_pcie_hip +stratixv = $MODEL_TECH/../altera/vhdl/stratixv +stratixv_hssi = $MODEL_TECH/../altera/vhdl/stratixv_hssi +stratixv_pcie_hip = $MODEL_TECH/../altera/vhdl/stratixv_pcie_hip +arriavgz = $MODEL_TECH/../altera/vhdl/arriavgz +arriavgz_hssi = $MODEL_TECH/../altera/vhdl/arriavgz_hssi +arriavgz_pcie_hip = $MODEL_TECH/../altera/vhdl/arriavgz_pcie_hip +arriav = $MODEL_TECH/../altera/vhdl/arriav +cyclonev = $MODEL_TECH/../altera/vhdl/cyclonev +; +; Verilog Section +; +altera_mf_ver = $MODEL_TECH/../altera/verilog/altera_mf +altera_ver = $MODEL_TECH/../altera/verilog/altera +altera_lnsim_ver = $MODEL_TECH/../altera/verilog/altera_lnsim +lpm_ver = $MODEL_TECH/../altera/verilog/220model +220model_ver = $MODEL_TECH/../altera/verilog/220model +max_ver = $MODEL_TECH/../altera/verilog/max +maxii_ver = $MODEL_TECH/../altera/verilog/maxii +maxv_ver = $MODEL_TECH/../altera/verilog/maxv +stratix_ver = $MODEL_TECH/../altera/verilog/stratix +stratixii_ver = $MODEL_TECH/../altera/verilog/stratixii +stratixiigx_ver = $MODEL_TECH/../altera/verilog/stratixiigx +arriagx_ver = $MODEL_TECH/../altera/verilog/arriagx +hardcopyii_ver = $MODEL_TECH/../altera/verilog/hardcopyii +hardcopyiii_ver = $MODEL_TECH/../altera/verilog/hardcopyiii +hardcopyiv_ver = $MODEL_TECH/../altera/verilog/hardcopyiv +cyclone_ver = $MODEL_TECH/../altera/verilog/cyclone +cycloneii_ver = $MODEL_TECH/../altera/verilog/cycloneii +cycloneiii_ver = $MODEL_TECH/../altera/verilog/cycloneiii +cycloneiiils_ver = $MODEL_TECH/../altera/verilog/cycloneiiils +sgate_ver = $MODEL_TECH/../altera/verilog/sgate +stratixgx_ver = $MODEL_TECH/../altera/verilog/stratixgx +altgxb_ver = $MODEL_TECH/../altera/verilog/altgxb +stratixgx_gxb_ver = $MODEL_TECH/../altera/verilog/stratixgx_gxb +stratixiigx_hssi_ver = $MODEL_TECH/../altera/verilog/stratixiigx_hssi +arriagx_hssi_ver = $MODEL_TECH/../altera/verilog/arriagx_hssi +arriaii_ver = $MODEL_TECH/../altera/verilog/arriaii +arriaii_hssi_ver = $MODEL_TECH/../altera/verilog/arriaii_hssi +arriaii_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriaii_pcie_hip +arriaiigz_ver = $MODEL_TECH/../altera/verilog/arriaiigz +arriaiigz_hssi_ver = $MODEL_TECH/../altera/verilog/arriaiigz_hssi +arriaiigz_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriaiigz_pcie_hip +stratixiii_ver = $MODEL_TECH/../altera/verilog/stratixiii +stratixiii = $MODEL_TECH/../altera/vhdl/stratixiii +stratixiv_ver = $MODEL_TECH/../altera/verilog/stratixiv +stratixiv_hssi_ver = $MODEL_TECH/../altera/verilog/stratixiv_hssi +stratixiv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/stratixiv_pcie_hip +stratixv_ver = $MODEL_TECH/../altera/verilog/stratixv +stratixv_hssi_ver = $MODEL_TECH/../altera/verilog/stratixv_hssi +stratixv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/stratixv_pcie_hip +arriavgz_ver = $MODEL_TECH/../altera/verilog/arriavgz +arriavgz_hssi_ver = $MODEL_TECH/../altera/verilog/arriavgz_hssi +arriavgz_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriavgz_pcie_hip +arriav_ver = $MODEL_TECH/../altera/verilog/arriav +arriav_hssi_ver = $MODEL_TECH/../altera/verilog/arriav_hssi +arriav_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriav_pcie_hip +cyclonev_ver = $MODEL_TECH/../altera/verilog/cyclonev +cyclonev_hssi_ver = $MODEL_TECH/../altera/verilog/cyclonev_hssi +cyclonev_pcie_hip_ver = $MODEL_TECH/../altera/verilog/cyclonev_pcie_hip +cycloneiv_ver = $MODEL_TECH/../altera/verilog/cycloneiv +cycloneiv_hssi_ver = $MODEL_TECH/../altera/verilog/cycloneiv_hssi +cycloneiv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/cycloneiv_pcie_hip +cycloneive_ver = $MODEL_TECH/../altera/verilog/cycloneive +hardcopyiv_hssi_ver = $MODEL_TECH/../altera/verilog/hardcopyiv_hssi +hardcopyiv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/hardcopyiv_pcie_hip + +work = work +[vcom] +; VHDL93 variable selects language version as the default. +; Default is VHDL-2002. +; Value of 0 or 1987 for VHDL-1987. +; Value of 1 or 1993 for VHDL-1993. +; Default or value of 2 or 2002 for VHDL-2002. +; Default or value of 3 or 2008 for VHDL-2008. +VHDL93 = 2002 + +; Show source line containing error. Default is off. +; Show_source = 1 + +; Turn off unbound-component warnings. Default is on. +; Show_Warning1 = 0 + +; Turn off process-without-a-wait-statement warnings. Default is on. +; Show_Warning2 = 0 + +; Turn off null-range warnings. Default is on. +; Show_Warning3 = 0 + +; Turn off no-space-in-time-literal warnings. Default is on. +; Show_Warning4 = 0 + +; Turn off multiple-drivers-on-unresolved-signal warnings. Default is on. +; Show_Warning5 = 0 + +; Turn off optimization for IEEE std_logic_1164 package. Default is on. +; Optimize_1164 = 0 + +; Turn on resolving of ambiguous function overloading in favor of the +; "explicit" function declaration (not the one automatically created by +; the compiler for each type declaration). Default is off. +; The .ini file has Explicit enabled so that std_logic_signed/unsigned +; will match the behavior of synthesis tools. +Explicit = 1 + +; Turn off acceleration of the VITAL packages. Default is to accelerate. +; NoVital = 1 + +; Turn off VITAL compliance checking. Default is checking on. +; NoVitalCheck = 1 + +; Ignore VITAL compliance checking errors. Default is to not ignore. +; IgnoreVitalErrors = 1 + +; Turn off VITAL compliance checking warnings. Default is to show warnings. +; Show_VitalChecksWarnings = 0 + +; Keep silent about case statement static warnings. +; Default is to give a warning. +; NoCaseStaticError = 1 + +; Keep silent about warnings caused by aggregates that are not locally static. +; Default is to give a warning. +; NoOthersStaticError = 1 + +; Turn off inclusion of debugging info within design units. +; Default is to include debugging info. +; NoDebug = 1 + +; Turn off "Loading..." messages. Default is messages on. +; Quiet = 1 + +; Turn on some limited synthesis rule compliance checking. Checks only: +; -- signals used (read) by a process must be in the sensitivity list +; CheckSynthesis = 1 + +; Activate optimizations on expressions that do not involve signals, +; waits, or function/procedure/task invocations. Default is off. +; ScalarOpts = 1 + +; Require the user to specify a configuration for all bindings, +; and do not generate a compile time default binding for the +; component. This will result in an elaboration error of +; 'component not bound' if the user fails to do so. Avoids the rare +; issue of a false dependency upon the unused default binding. +; RequireConfigForAllDefaultBinding = 1 + +; Inhibit range checking on subscripts of arrays. Range checking on +; scalars defined with subtypes is inhibited by default. +; NoIndexCheck = 1 + +; Inhibit range checks on all (implicit and explicit) assignments to +; scalar objects defined with subtypes. +; NoRangeCheck = 1 + +[vlog] + +; Turn off inclusion of debugging info within design units. +; Default is to include debugging info. +; NoDebug = 1 + +; Turn off "loading..." messages. Default is messages on. +; Quiet = 1 + +; Turn on Verilog hazard checking (order-dependent accessing of global vars). +; Default is off. +; Hazard = 1 + +; Turn on converting regular Verilog identifiers to uppercase. Allows case +; insensitivity for module names. Default is no conversion. +; UpCase = 1 + +; Turn on incremental compilation of modules. Default is off. +; Incremental = 1 + +; Turns on lint-style checking. +; Show_Lint = 1 + +[vsim] +; Simulator resolution +; Set to fs, ps, ns, us, ms, or sec with optional prefix of 1, 10, or 100. +Resolution = ps + +; User time unit for run commands +; Set to default, fs, ps, ns, us, ms, or sec. The default is to use the +; unit specified for Resolution. For example, if Resolution is 100ps, +; then UserTimeUnit defaults to ps. +; Should generally be set to default. +UserTimeUnit = default + +; Default run length +RunLength = 0 ns + +; Maximum iterations that can be run without advancing simulation time +IterationLimit = 5000 + +; Directive to license manager: +; vhdl Immediately reserve a VHDL license +; vlog Immediately reserve a Verilog license +; plus Immediately reserve a VHDL and Verilog license +; nomgc Do not look for Mentor Graphics Licenses +; nomti Do not look for Model Technology Licenses +; noqueue Do not wait in the license queue when a license isn't available +; viewsim Try for viewer license but accept simulator license(s) instead +; of queuing for viewer license +; License = plus + +; Stop the simulator after a VHDL/Verilog assertion message +; 0 = Note 1 = Warning 2 = Error 3 = Failure 4 = Fatal +BreakOnAssertion = 4 + +; Assertion Message Format +; %S - Severity Level +; %R - Report Message +; %T - Time of assertion +; %D - Delta +; %I - Instance or Region pathname (if available) +; %% - print '%' character +; AssertionFormat = "** %S: %R\n Time: %T Iteration: %D%I\n" + +; Assertion File - alternate file for storing VHDL/Verilog assertion messages +; AssertFile = assert.log + +; Default radix for all windows and commands... +; Set to symbolic, ascii, binary, octal, decimal, hex, unsigned +DefaultRadix = symbolic + +; VSIM Startup command +; Startup = do startup.do + +; File for saving command transcript +TranscriptFile = transcript + +; File for saving command history +; CommandHistory = cmdhist.log + +; Specify whether paths in simulator commands should be described +; in VHDL or Verilog format. +; For VHDL, PathSeparator = / +; For Verilog, PathSeparator = . +; Must not be the same character as DatasetSeparator. +PathSeparator = / + +; Specify the dataset separator for fully rooted contexts. +; The default is ':'. For example, sim:/top +; Must not be the same character as PathSeparator. +DatasetSeparator = : + +; Disable VHDL assertion messages +; IgnoreNote = 1 +; IgnoreWarning = 1 +; IgnoreError = 1 +; IgnoreFailure = 1 + +; Default force kind. May be freeze, drive, deposit, or default +; or in other terms, fixed, wired, or charged. +; A value of "default" will use the signal kind to determine the +; force kind, drive for resolved signals, freeze for unresolved signals +; DefaultForceKind = freeze + +; If zero, open files when elaborated; otherwise, open files on +; first read or write. Default is 0. +; DelayFileOpen = 1 + +; Control VHDL files opened for write. +; 0 = Buffered, 1 = Unbuffered +UnbufferedOutput = 0 + +; Control the number of VHDL files open concurrently. +; This number should always be less than the current ulimit +; setting for max file descriptors. +; 0 = unlimited +ConcurrentFileLimit = 40 + +; Control the number of hierarchical regions displayed as +; part of a signal name shown in the Wave window. +; A value of zero tells VSIM to display the full name. +; The default is 0. +; WaveSignalNameWidth = 0 + +; Turn off warnings from the std_logic_arith, std_logic_unsigned +; and std_logic_signed packages. +; StdArithNoWarnings = 1 + +; Turn off warnings from the IEEE numeric_std and numeric_bit packages. +; NumericStdNoWarnings = 1 + +; Control the format of the (VHDL) FOR generate statement label +; for each iteration. Do not quote it. +; The format string here must contain the conversion codes %s and %d, +; in that order, and no other conversion codes. The %s represents +; the generate_label; the %d represents the generate parameter value +; at a particular generate iteration (this is the position number if +; the generate parameter is of an enumeration type). Embedded whitespace +; is allowed (but discouraged); leading and trailing whitespace is ignored. +; Application of the format must result in a unique scope name over all +; such names in the design so that name lookup can function properly. +; GenerateFormat = %s__%d + +; Specify whether checkpoint files should be compressed. +; The default is 1 (compressed). +; CheckpointCompressMode = 0 + +; List of dynamically loaded objects for Verilog PLI applications +; Veriuser = veriuser.sl + +; Specify default options for the restart command. Options can be one +; or more of: -force -nobreakpoint -nolist -nolog -nowave +; DefaultRestartOptions = -force + +; HP-UX 10.20 ONLY - Enable memory locking to speed up large designs +; (> 500 megabyte memory footprint). Default is disabled. +; Specify number of megabytes to lock. +; LockedMemory = 1000 + +; Turn on (1) or off (0) WLF file compression. +; The default is 1 (compress WLF file). +; WLFCompress = 0 + +; Specify whether to save all design hierarchy (1) in the WLF file +; or only regions containing logged signals (0). +; The default is 0 (save only regions with logged signals). +; WLFSaveAllRegions = 1 + +; WLF file time limit. Limit WLF file by time, as closely as possible, +; to the specified amount of simulation time. When the limit is exceeded +; the earliest times get truncated from the file. +; If both time and size limits are specified the most restrictive is used. +; UserTimeUnits are used if time units are not specified. +; The default is 0 (no limit). Example: WLFTimeLimit = {100 ms} +; WLFTimeLimit = 0 + +; WLF file size limit. Limit WLF file size, as closely as possible, +; to the specified number of megabytes. If both time and size limits +; are specified then the most restrictive is used. +; The default is 0 (no limit). +; WLFSizeLimit = 1000 + +; Specify whether or not a WLF file should be deleted when the +; simulation ends. A value of 1 will cause the WLF file to be deleted. +; The default is 0 (do not delete WLF file when simulation ends). +; WLFDeleteOnQuit = 1 + +; Automatic SDF compilation +; Disables automatic compilation of SDF files in flows that support it. +; Default is on, uncomment to turn off. +; NoAutoSDFCompile = 1 + +DelayFileOpen = 1 +[lmc] + +[msg_system] +; Change a message severity or suppress a message. +; The format is: = [,...] +; Examples: +; note = 3009 +; warning = 3033 +; error = 3010,3016 +; fatal = 3016,3033 +; suppress = 3009,3016,3043 +; The command verror can be used to get the complete +; description of a message. + +; Control transcripting of elaboration/runtime messages. +; The default is to have messages appear in the transcript and +; recorded in the wlf file (messages that are recorded in the +; wlf file can be viewed in the MsgViewer). The other settings +; are to send messages only to the transcript or only to the +; wlf file. The valid values are +; both {default} +; tran {transcript only} +; wlf {wlf file only} +; msgmode = both +[Project] +; Warning -- Do not edit the project properties directly. +; Property names are dynamic in nature and property +; values have special syntax. Changing property data directly +; can result in a corrupt MPF file. All project properties +; can be modified through project window dialogs. +Project_Version = 6 +Project_DefaultLib = work +Project_SortMethod = unused +Project_Files_Count = 8 +Project_File_0 = $ROOT/cpu/control/interrupts.v +Project_File_P_0 = compile_order 1 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder interrupts group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_1 = $ROOT/cpu/control/pin_control.v +Project_File_P_1 = compile_order 6 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder {pin control} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_2 = $ROOT/cpu/control/resets.v +Project_File_P_2 = compile_order 4 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder reset group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_3 = $ROOT/cpu/control/sequencer.v +Project_File_P_3 = compile_order 7 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder sequencer group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_4 = $ROOT/cpu/control/test_interrupts.sv +Project_File_P_4 = compile_order 2 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder interrupts group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_5 = $ROOT/cpu/control/test_pin_control.sv +Project_File_P_5 = compile_order 0 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder {pin control} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_6 = $ROOT/cpu/control/test_reset.sv +Project_File_P_6 = compile_order 3 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder reset group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_7 = $ROOT/cpu/control/test_sequencer.sv +Project_File_P_7 = compile_order 5 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder sequencer group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_Sim_Count = 4 +Project_Sim_0 = Test pin control +Project_Sim_P_0 = timing default -sdfnoerror 0 -t default -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} +notimingchecks 0 ok 1 folder {pin control} +pulse_e {} additional_dus work.test_pin_control -assertfile {} -std_output {} -L {} -nopsl 0 -nosva 0 +pulse_r {} -absentisempty 0 -assertcover 0 -multisource_delay {} OtherArgs {} -vital2.2b 0 is_vopt_flow 0 -memprof 0 -noglitch 0 -0in_options {} selected_du {} -sdf {} -hazards 0 -0in 0 vopt_env 1 -coverage 0 +plusarg {} -assertdebug 0 -wlf {} -sdfnowarn 0 -std_input {} +Project_Sim_1 = Test interrupts +Project_Sim_P_1 = timing default -sdfnoerror 0 -t default -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} +notimingchecks 0 ok 1 folder interrupts +pulse_e {} additional_dus work.test_interrupts -assertfile {} -std_output {} -L {} -nopsl 0 -nosva 0 +pulse_r {} -absentisempty 0 -assertcover 0 -multisource_delay {} OtherArgs {} -vital2.2b 0 is_vopt_flow 0 -memprof 0 -noglitch 0 -0in_options {} selected_du {} -sdf {} -hazards 0 -0in 0 vopt_env 1 -coverage 0 +plusarg {} -assertdebug 0 -wlf {} -sdfnowarn 0 -std_input {} +Project_Sim_2 = Test reset +Project_Sim_P_2 = timing default -sdfnoerror 0 -t default -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} +notimingchecks 0 ok 1 folder reset +pulse_e {} additional_dus work.test_reset -assertfile {} -std_output {} -L {} -nopsl 0 -nosva 0 +pulse_r {} -absentisempty 0 -assertcover 0 -multisource_delay {} OtherArgs {} -vital2.2b 0 is_vopt_flow 0 -memprof 0 -noglitch 0 -0in_options {} selected_du {} -sdf {} -hazards 0 -0in 0 vopt_env 1 -coverage 0 +plusarg {} -assertdebug 0 -wlf {} -sdfnowarn 0 -std_input {} +Project_Sim_3 = Test sequencer +Project_Sim_P_3 = timing default -t default -sdfnoerror 0 -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} +notimingchecks 0 ok 1 folder sequencer +pulse_e {} additional_dus work.test_sequencer -assertfile {} -std_output {} -L {} -nopsl 0 -nosva 0 +pulse_r {} -absentisempty 0 -assertcover 0 -multisource_delay {} OtherArgs {} -vital2.2b 0 is_vopt_flow 0 -memprof 0 -noglitch 0 -0in_options {} selected_du {} -sdf {} -hazards 0 -0in 0 vopt_env 1 -coverage 0 +plusarg {} -assertdebug 0 -wlf {} -sdfnowarn 0 -std_input {} +Project_Folder_Count = 4 +Project_Folder_0 = interrupts +Project_Folder_P_0 = folder {Top Level} +Project_Folder_1 = pin control +Project_Folder_P_1 = folder {Top Level} +Project_Folder_2 = reset +Project_Folder_P_2 = folder {Top Level} +Project_Folder_3 = sequencer +Project_Folder_P_3 = folder {Top Level} +Echo_Compile_Output = 0 +Save_Compile_Report = 1 +Project_Opt_Count = 0 +ForceSoftPaths = 1 +ProjectStatusDelay = 5000 +VERILOG_DoubleClick = Edit +VERILOG_CustomDoubleClick = +SYSTEMVERILOG_DoubleClick = Edit +SYSTEMVERILOG_CustomDoubleClick = +VHDL_DoubleClick = Edit +VHDL_CustomDoubleClick = +PSL_DoubleClick = Edit +PSL_CustomDoubleClick = +TEXT_DoubleClick = Edit +TEXT_CustomDoubleClick = +SYSTEMC_DoubleClick = Edit +SYSTEMC_CustomDoubleClick = +TCL_DoubleClick = Edit +TCL_CustomDoubleClick = +MACRO_DoubleClick = Edit +MACRO_CustomDoubleClick = +VCD_DoubleClick = Edit +VCD_CustomDoubleClick = +SDF_DoubleClick = Edit +SDF_CustomDoubleClick = +XML_DoubleClick = Edit +XML_CustomDoubleClick = +LOGFILE_DoubleClick = Edit +LOGFILE_CustomDoubleClick = +UCDB_DoubleClick = Edit +UCDB_CustomDoubleClick = +UPF_DoubleClick = Edit +UPF_CustomDoubleClick = +PCF_DoubleClick = Edit +PCF_CustomDoubleClick = +PROJECT_DoubleClick = Edit +PROJECT_CustomDoubleClick = +VRM_DoubleClick = Edit +VRM_CustomDoubleClick = +DEBUGDATABASE_DoubleClick = Edit +DEBUGDATABASE_CustomDoubleClick = +DEBUGARCHIVE_DoubleClick = Edit +DEBUGARCHIVE_CustomDoubleClick = +Project_Major_Version = 10 +Project_Minor_Version = 1 diff --git a/cpu/control/simulation/modelsim/wave_interrupts.do b/cpu/control/simulation/modelsim/wave_interrupts.do new file mode 100644 index 0000000..9bb5d41 --- /dev/null +++ b/cpu/control/simulation/modelsim/wave_interrupts.do @@ -0,0 +1,38 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /test_interrupts/clk +add wave -noupdate /test_interrupts/nreset +add wave -noupdate /test_interrupts/ctl_iff1_iff2_sig +add wave -noupdate /test_interrupts/nmi_sig +add wave -noupdate /test_interrupts/setM1_sig +add wave -noupdate /test_interrupts/intr_sig +add wave -noupdate /test_interrupts/ctl_iffx_we_sig +add wave -noupdate /test_interrupts/ctl_iffx_bit_sig +add wave -noupdate /test_interrupts/ctl_im_we_sig +add wave -noupdate /test_interrupts/db_sig +add wave -noupdate /test_interrupts/ctl_no_ints_sig +add wave -noupdate -divider STATE +add wave -noupdate -color Aquamarine /test_interrupts/iff1_sig +add wave -noupdate -color Aquamarine /test_interrupts/iff2_sig +add wave -noupdate -color Pink /test_interrupts/im1_sig +add wave -noupdate -color Pink /test_interrupts/im2_sig +add wave -noupdate /test_interrupts/in_nmi_sig +add wave -noupdate /test_interrupts/in_intr_sig +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {1800 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 202 +configure wave -valuecolwidth 66 +configure wave -justifyvalue left +configure wave -signalnamewidth 0 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ns} {25800 ns} diff --git a/cpu/control/simulation/modelsim/wave_pin_control.do b/cpu/control/simulation/modelsim/wave_pin_control.do new file mode 100644 index 0000000..533c7b7 --- /dev/null +++ b/cpu/control/simulation/modelsim/wave_pin_control.do @@ -0,0 +1,33 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /test_pin_control/fFetch_sig +add wave -noupdate /test_pin_control/fMRead_sig +add wave -noupdate /test_pin_control/fMWrite_sig +add wave -noupdate /test_pin_control/fIORead_sig +add wave -noupdate /test_pin_control/fIOWrite_sig +add wave -noupdate /test_pin_control/T1_sig +add wave -noupdate /test_pin_control/T2_sig +add wave -noupdate /test_pin_control/T3_sig +add wave -noupdate /test_pin_control/T4_sig +add wave -noupdate -divider STATE +add wave -noupdate -color Pink /test_pin_control/bus_ab_pin_we_sig +add wave -noupdate -color Pink /test_pin_control/bus_db_pin_oe_sig +add wave -noupdate -color Pink /test_pin_control/bus_db_pin_re_sig +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {1400 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 240 +configure wave -valuecolwidth 54 +configure wave -justifyvalue left +configure wave -signalnamewidth 2 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits us +update +WaveRestoreZoom {0 ns} {4600 ns} diff --git a/cpu/control/simulation/modelsim/wave_reset.do b/cpu/control/simulation/modelsim/wave_reset.do new file mode 100644 index 0000000..b0f2bff --- /dev/null +++ b/cpu/control/simulation/modelsim/wave_reset.do @@ -0,0 +1,31 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /test_reset/clk +add wave -noupdate /test_reset/reset_in +add wave -noupdate /test_reset/fpga_reset +add wave -noupdate /test_reset/M1 +add wave -noupdate /test_reset/T2 +add wave -noupdate -color Gold /test_reset/clrpc +add wave -noupdate /test_reset/reset_block/nhold_clk_wait +add wave -noupdate /test_reset/nreset +add wave -noupdate -color {Cadet Blue} /test_reset/reset_block/x1 +add wave -noupdate -color {Cadet Blue} /test_reset/reset_block/x2 +add wave -noupdate -color {Cadet Blue} /test_reset/reset_block/x3 +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {2800 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 112 +configure wave -valuecolwidth 73 +configure wave -justifyvalue right +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits us +update +WaveRestoreZoom {0 ns} {13700 ns} diff --git a/cpu/control/simulation/modelsim/wave_sequencer.do b/cpu/control/simulation/modelsim/wave_sequencer.do new file mode 100644 index 0000000..da07fd8 --- /dev/null +++ b/cpu/control/simulation/modelsim/wave_sequencer.do @@ -0,0 +1,40 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /test_sequencer/clk +add wave -noupdate /test_sequencer/nreset +add wave -noupdate /test_sequencer/nextM_sig +add wave -noupdate /test_sequencer/setM1_sig +add wave -noupdate /test_sequencer/hold_clk_iorq_sig +add wave -noupdate /test_sequencer/hold_clk_wait_sig +add wave -noupdate /test_sequencer/hold_clk_busrq_sig +add wave -noupdate -divider M-STATE +add wave -noupdate -color Aquamarine /test_sequencer/M1_sig +add wave -noupdate -color Aquamarine /test_sequencer/M2_sig +add wave -noupdate -color Aquamarine /test_sequencer/M3_sig +add wave -noupdate -color Aquamarine /test_sequencer/M4_sig +add wave -noupdate -color Aquamarine /test_sequencer/M5_sig +add wave -noupdate -divider T-STATE +add wave -noupdate -color Pink /test_sequencer/T1_sig +add wave -noupdate -color Pink /test_sequencer/T2_sig +add wave -noupdate -color Pink /test_sequencer/T3_sig +add wave -noupdate -color Pink /test_sequencer/T4_sig +add wave -noupdate -color Pink /test_sequencer/T5_sig +add wave -noupdate -color Pink /test_sequencer/T6_sig +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {6800 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 226 +configure wave -valuecolwidth 78 +configure wave -justifyvalue left +configure wave -signalnamewidth 2 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits us +update +WaveRestoreZoom {0 ns} {25 us} diff --git a/cpu/control/temp_wires.vh b/cpu/control/temp_wires.vh new file mode 100644 index 0000000..6327b06 --- /dev/null +++ b/cpu/control/temp_wires.vh @@ -0,0 +1,694 @@ +// Automatically generated by gencompile.py + +reg ctl_reg_gp_sel_pla17npla50M1T1_2; +reg ctl_reg_gp_hilo_pla17npla50M1T1_3; +reg ctl_reg_sys_hilo_pla17npla50M2T1_3; +reg ctl_reg_sys_hilo_pla17npla50M2T2_4; +reg ctl_reg_gp_sel_pla61npla58npla59M1T1_2; +reg ctl_reg_gp_hilo_pla61npla58npla59M1T1_3; +reg ctl_reg_gp_sel_pla61npla58npla59M1T4_3; +reg ctl_reg_gp_hilo_pla61npla58npla59M1T4_4; +reg ctl_reg_gp_sel_use_ixiypla58M1T1_2; +reg ctl_reg_gp_hilo_use_ixiypla58M1T1_3; +reg ctl_reg_sys_hilo_use_ixiypla58M2T1_3; +reg ctl_reg_sys_hilo_use_ixiypla58M2T2_4; +reg ctl_reg_gp_sel_nuse_ixiypla58M1T1_2; +reg ctl_reg_gp_hilo_nuse_ixiypla58M1T1_3; +reg ctl_reg_gp_sel_nuse_ixiypla58M2T1_2; +reg ctl_reg_gp_hilo_nuse_ixiypla58M2T1_3; +reg ctl_reg_sys_hilo_use_ixiypla59M2T1_3; +reg ctl_reg_sys_hilo_use_ixiypla59M2T2_4; +reg ctl_reg_gp_sel_nuse_ixiypla59M1T4_4; +reg ctl_reg_gp_hilo_nuse_ixiypla59M1T4_5; +reg ctl_reg_gp_sel_nuse_ixiypla59M2T1_2; +reg ctl_reg_gp_hilo_nuse_ixiypla59M2T1_3; +reg ctl_reg_gp_sel_nuse_ixiypla59M4T1_3; +reg ctl_reg_gp_hilo_nuse_ixiypla59M4T1_4; +reg ctl_reg_sys_hilo_pla40M2T1_3; +reg ctl_reg_sys_hilo_pla40M2T2_4; +reg ctl_reg_sys_hilo_pla40M3T1_3; +reg ctl_reg_sys_hilo_pla40M3T2_4; +reg ctl_reg_sys_hilo_pla50npla40M2T1_3; +reg ctl_reg_sys_hilo_pla50npla40M2T2_4; +reg ctl_reg_gp_sel_pla50npla40M3T1_2; +reg ctl_reg_gp_hilo_pla50npla40M3T1_3; +reg ctl_reg_gp_sel_pla8pla13M1T4_4; +reg ctl_reg_gp_hilo_pla8pla13M1T4_5; +reg ctl_reg_gp_sel_pla8pla13M2T1_2; +reg ctl_reg_gp_hilo_pla8pla13M2T1_3; +reg ctl_reg_sys_hilo_pla8pla13M2T2_4; +reg ctl_reg_gp_sel_pla8npla13M1T1_2; +reg ctl_reg_gp_hilo_pla8npla13M1T1_3; +reg ctl_reg_gp_sel_pla8npla13M2T1_2; +reg ctl_reg_gp_hilo_pla8npla13M2T1_3; +reg ctl_reg_sys_hilo_pla8npla13M2T2_4; +reg ctl_reg_sys_hilo_pla38pla13M2T1_3; +reg ctl_reg_sys_hilo_pla38pla13M2T2_4; +reg ctl_reg_sys_hilo_pla38pla13M2T3_6; +reg ctl_reg_sys_hilo_pla38pla13M3T1_3; +reg ctl_reg_sys_hilo_pla38pla13M3T2_4; +reg ctl_reg_sys_hilo_pla38pla13M3T3_5; +reg ctl_reg_sys_hilo_pla38pla13M3T3_10; +reg ctl_reg_gp_sel_pla38pla13M4T1_3; +reg ctl_reg_gp_hilo_pla38pla13M4T1_4; +reg ctl_reg_sys_hilo_pla38pla13M4T2_4; +reg ctl_reg_gp_sel_pla38npla13M1T1_2; +reg ctl_reg_gp_hilo_pla38npla13M1T1_3; +reg ctl_reg_sys_hilo_pla38npla13M2T1_3; +reg ctl_reg_sys_hilo_pla38npla13M2T2_4; +reg ctl_reg_sys_hilo_pla38npla13M2T3_6; +reg ctl_reg_sys_hilo_pla38npla13M3T1_3; +reg ctl_reg_sys_hilo_pla38npla13M3T2_4; +reg ctl_reg_sys_hilo_pla38npla13M3T3_6; +reg ctl_reg_sys_hilo_pla38npla13M4T1_3; +reg ctl_reg_sys_hilo_pla38npla13M4T2_4; +reg ctl_reg_gp_sel_pla83M1T1_2; +reg ctl_reg_gp_hilo_pla83M1T1_3; +reg ctl_pf_sel_pla83M1T1_19; +reg ctl_reg_gp_sel_pla83M1T2_2; +reg ctl_reg_gp_hilo_pla83M1T2_3; +reg ctl_reg_gp_sel_pla83M1T3_1; +reg ctl_reg_gp_hilo_pla83M1T3_2; +reg ctl_reg_sys_hilo_pla83M1T4_3; +reg ctl_reg_gp_sel_pla57M1T3_1; +reg ctl_reg_gp_hilo_pla57M1T3_2; +reg ctl_reg_sys_hilo_pla57M1T4_4; +reg ctl_reg_gp_sel_pla7M1T1_2; +reg ctl_reg_gp_hilo_pla7M1T1_3; +reg ctl_reg_sys_hilo_pla7M2T1_3; +reg ctl_reg_sys_hilo_pla7M2T2_4; +reg ctl_reg_sys_hilo_pla7M3T1_3; +reg ctl_reg_gp_sel_pla7M3T1_6; +reg ctl_reg_gp_hilo_pla7M3T1_7; +reg ctl_reg_sys_hilo_pla7M3T2_4; +reg ctl_reg_sys_hilo_pla30pla13M2T1_3; +reg ctl_reg_sys_hilo_pla30pla13M2T2_4; +reg ctl_reg_sys_hilo_pla30pla13M2T3_6; +reg ctl_reg_sys_hilo_pla30pla13M3T1_3; +reg ctl_reg_sys_hilo_pla30pla13M3T2_4; +reg ctl_reg_sys_hilo_pla30pla13M3T3_5; +reg ctl_reg_sys_hilo_pla30pla13M3T3_10; +reg ctl_reg_gp_sel_pla30pla13M4T1_3; +reg ctl_reg_gp_hilo_pla30pla13M4T1_4; +reg ctl_reg_sys_hilo_pla30pla13M4T2_4; +reg ctl_reg_sys_hilo_pla30pla13M4T3_5; +reg ctl_reg_gp_sel_pla30pla13M5T1_3; +reg ctl_reg_gp_hilo_pla30pla13M5T1_4; +reg ctl_reg_sys_hilo_pla30pla13M5T2_4; +reg ctl_reg_sys_hilo_pla30npla13M2T1_3; +reg ctl_reg_sys_hilo_pla30npla13M2T2_4; +reg ctl_reg_sys_hilo_pla30npla13M2T3_6; +reg ctl_reg_sys_hilo_pla30npla13M3T1_3; +reg ctl_reg_sys_hilo_pla30npla13M3T2_4; +reg ctl_reg_sys_hilo_pla30npla13M3T3_6; +reg ctl_reg_sys_hilo_pla30npla13M4T1_3; +reg ctl_reg_sys_hilo_pla30npla13M4T2_4; +reg ctl_reg_gp_sel_pla30npla13M4T3_5; +reg ctl_reg_gp_hilo_pla30npla13M4T3_6; +reg ctl_reg_sys_hilo_pla30npla13M5T1_3; +reg ctl_reg_sys_hilo_pla30npla13M5T2_4; +reg ctl_reg_gp_sel_pla30npla13M5T3_4; +reg ctl_reg_gp_hilo_pla30npla13M5T3_5; +reg ctl_reg_sys_hilo_pla31pla33M2T1_3; +reg ctl_reg_sys_hilo_pla31pla33M2T2_4; +reg ctl_reg_sys_hilo_pla31pla33M2T3_6; +reg ctl_reg_sys_hilo_pla31pla33M3T1_3; +reg ctl_reg_sys_hilo_pla31pla33M3T2_4; +reg ctl_reg_sys_hilo_pla31pla33M3T3_5; +reg ctl_reg_sys_hilo_pla31pla33M3T3_10; +reg ctl_reg_gp_sel_pla31pla33M4T1_3; +reg ctl_reg_gp_hilo_pla31pla33M4T1_4; +reg ctl_reg_sys_hilo_pla31pla33M4T2_4; +reg ctl_reg_sys_hilo_pla31pla33M4T3_5; +reg ctl_reg_gp_sel_pla31pla33M5T1_3; +reg ctl_reg_gp_hilo_pla31pla33M5T1_4; +reg ctl_reg_sys_hilo_pla31pla33M5T2_4; +reg ctl_reg_sys_hilo_pla31npla33M2T1_3; +reg ctl_reg_sys_hilo_pla31npla33M2T2_4; +reg ctl_reg_sys_hilo_pla31npla33M2T3_6; +reg ctl_reg_sys_hilo_pla31npla33M3T1_3; +reg ctl_reg_sys_hilo_pla31npla33M3T2_4; +reg ctl_reg_sys_hilo_pla31npla33M3T3_6; +reg ctl_reg_sys_hilo_pla31npla33M4T1_3; +reg ctl_reg_sys_hilo_pla31npla33M4T2_4; +reg ctl_reg_gp_sel_pla31npla33M4T3_5; +reg ctl_reg_gp_hilo_pla31npla33M4T3_6; +reg ctl_reg_sys_hilo_pla31npla33M5T1_3; +reg ctl_reg_sys_hilo_pla31npla33M5T2_4; +reg ctl_reg_gp_sel_pla31npla33M5T3_4; +reg ctl_reg_gp_hilo_pla31npla33M5T3_5; +reg ctl_reg_gp_sel_pla5M1T4_2; +reg ctl_reg_gp_hilo_pla5M1T4_3; +reg ctl_reg_gp_sel_pla5M1T5_2; +reg ctl_reg_gp_hilo_pla5M1T5_3; +reg ctl_reg_gp_sel_pla23pla16M1T5_4; +reg ctl_reg_gp_hilo_pla23pla16M1T5_5; +reg ctl_reg_gp_sel_pla23pla16M2T1_5; +reg ctl_reg_gp_hilo_pla23pla16M2T1_6; +reg ctl_reg_gp_sel_pla23pla16M2T2_3; +reg ctl_reg_gp_hilo_pla23pla16M2T2_4; +reg ctl_reg_gp_sel_pla23pla16M2T3_5; +reg ctl_reg_gp_hilo_pla23pla16M2T3_6; +reg ctl_reg_gp_sel_pla23pla16M3T1_5; +reg ctl_reg_gp_hilo_pla23pla16M3T1_6; +reg ctl_reg_gp_sel_pla23pla16M3T2_3; +reg ctl_reg_gp_hilo_pla23pla16M3T2_4; +reg ctl_reg_gp_sel_pla23npla16M2T1_3; +reg ctl_reg_gp_hilo_pla23npla16M2T1_4; +reg ctl_reg_gp_sel_pla23npla16M2T2_3; +reg ctl_reg_gp_hilo_pla23npla16M2T2_4; +reg ctl_reg_gp_sel_pla23npla16M2T3_5; +reg ctl_reg_gp_hilo_pla23npla16M2T3_6; +reg ctl_reg_gp_sel_pla23npla16M3T1_3; +reg ctl_reg_gp_hilo_pla23npla16M3T1_4; +reg ctl_reg_gp_sel_pla23npla16M3T2_3; +reg ctl_reg_gp_hilo_pla23npla16M3T2_4; +reg ctl_reg_gp_sel_pla23npla16M3T3_4; +reg ctl_reg_gp_hilo_pla23npla16M3T3_5; +reg ctl_reg_gp_sel_pla10M2T1_3; +reg ctl_reg_gp_hilo_pla10M2T1_4; +reg ctl_reg_gp_sel_pla10M2T2_3; +reg ctl_reg_gp_hilo_pla10M2T2_4; +reg ctl_reg_sys_hilo_pla10M2T3_6; +reg ctl_reg_gp_sel_pla10M3T1_3; +reg ctl_reg_gp_hilo_pla10M3T1_4; +reg ctl_reg_gp_sel_pla10M3T2_3; +reg ctl_reg_gp_hilo_pla10M3T2_4; +reg ctl_reg_sys_hilo_pla10M3T3_4; +reg ctl_reg_gp_sel_pla10M3T4_4; +reg ctl_reg_gp_hilo_pla10M3T4_5; +reg ctl_reg_gp_sel_pla10M4T1_5; +reg ctl_reg_gp_hilo_pla10M4T1_6; +reg ctl_reg_gp_sel_pla10M4T2_3; +reg ctl_reg_gp_hilo_pla10M4T2_4; +reg ctl_reg_gp_sel_pla10M4T3_5; +reg ctl_reg_gp_hilo_pla10M4T3_6; +reg ctl_reg_gp_sel_pla10M5T1_5; +reg ctl_reg_gp_hilo_pla10M5T1_6; +reg ctl_reg_gp_sel_pla10M5T2_3; +reg ctl_reg_gp_hilo_pla10M5T2_4; +reg ctl_reg_sys_hilo_pla10M5T3_3; +reg ctl_reg_gp_sel_pla10M5T4_2; +reg ctl_reg_gp_hilo_pla10M5T4_3; +reg ctl_pf_sel_pla12M1T1_12; +reg ctl_reg_gp_sel_pla12M1T2_2; +reg ctl_reg_gp_hilo_pla12M1T2_3; +reg ctl_reg_gp_sel_pla12M1T3_1; +reg ctl_reg_gp_hilo_pla12M1T3_2; +reg ctl_reg_gp_sel_pla12M2T1_2; +reg ctl_reg_gp_hilo_pla12M2T1_3; +reg ctl_reg_gp_sel_pla12M2T2_3; +reg ctl_reg_gp_hilo_pla12M2T2_4; +reg ctl_reg_gp_sel_pla12M3T1_2; +reg ctl_reg_gp_hilo_pla12M3T1_3; +reg ctl_reg_gp_sel_pla12M3T2_3; +reg ctl_reg_gp_hilo_pla12M3T2_4; +reg ctl_reg_gp_sel_pla12M3T3_2; +reg ctl_reg_gp_hilo_pla12M3T3_3; +reg ctl_reg_gp_sel_pla12M3T4_2; +reg ctl_reg_gp_hilo_pla12M3T4_3; +reg ctl_reg_sys_hilo_pla12M4T1_2; +reg ctl_reg_sys_hilo_pla12M4T2_3; +reg ctl_reg_sys_hilo_pla12M4T3_2; +reg ctl_reg_sys_hilo_pla12M4T4_3; +reg ctl_pf_sel_pla11M1T1_11; +reg ctl_reg_gp_sel_pla11M1T2_2; +reg ctl_reg_gp_hilo_pla11M1T2_3; +reg ctl_reg_gp_sel_pla11M1T3_1; +reg ctl_reg_gp_hilo_pla11M1T3_2; +reg ctl_reg_gp_sel_pla11M2T1_2; +reg ctl_reg_gp_hilo_pla11M2T1_3; +reg ctl_reg_gp_sel_pla11M2T2_3; +reg ctl_reg_gp_hilo_pla11M2T2_4; +reg ctl_reg_gp_sel_pla11M3T3_1; +reg ctl_reg_gp_hilo_pla11M3T3_2; +reg ctl_reg_gp_sel_pla11M3T4_2; +reg ctl_reg_gp_hilo_pla11M3T4_3; +reg ctl_reg_sys_hilo_pla11M4T1_2; +reg ctl_reg_sys_hilo_pla11M4T2_3; +reg ctl_reg_sys_hilo_pla11M4T3_2; +reg ctl_reg_sys_hilo_pla11M4T4_3; +reg ctl_reg_gp_sel_pla65npla52M1T2_2; +reg ctl_reg_gp_hilo_pla65npla52M1T2_3; +reg ctl_reg_gp_sel_pla65npla52M1T3_1; +reg ctl_reg_gp_hilo_pla65npla52M1T3_2; +reg ctl_reg_gp_sel_pla65npla52M1T4_3; +reg ctl_reg_gp_hilo_pla65npla52M1T4_4; +reg ctl_reg_gp_sel_pla64M1T2_2; +reg ctl_reg_gp_hilo_pla64M1T2_3; +reg ctl_reg_gp_sel_pla64M1T3_1; +reg ctl_reg_gp_hilo_pla64M1T3_2; +reg ctl_reg_gp_sel_pla64M1T4_4; +reg ctl_reg_gp_hilo_pla64M1T4_5; +reg ctl_reg_sys_hilo_pla64M2T1_3; +reg ctl_reg_sys_hilo_pla64M2T2_4; +reg ctl_reg_gp_sel_use_ixiypla52M1T3_1; +reg ctl_reg_gp_hilo_use_ixiypla52M1T3_2; +reg ctl_reg_sys_hilo_use_ixiypla52M2T1_3; +reg ctl_reg_sys_hilo_use_ixiypla52M2T2_4; +reg ctl_reg_gp_sel_nuse_ixiypla52M1T2_2; +reg ctl_reg_gp_hilo_nuse_ixiypla52M1T2_3; +reg ctl_reg_gp_sel_nuse_ixiypla52M1T3_1; +reg ctl_reg_gp_hilo_nuse_ixiypla52M1T3_2; +reg ctl_reg_gp_sel_nuse_ixiypla52M2T1_2; +reg ctl_reg_gp_hilo_nuse_ixiypla52M2T1_3; +reg ctl_reg_sys_hilo_nuse_ixiypla52M2T2_4; +reg ctl_reg_gp_sel_nuse_ixiypla52M4T2_2; +reg ctl_reg_gp_hilo_nuse_ixiypla52M4T2_3; +reg ctl_reg_gp_sel_pla66npla53M1T1_2; +reg ctl_reg_gp_hilo_pla66npla53M1T1_3; +reg ctl_pf_sel_pla66npla53M1T1_15; +reg ctl_reg_gp_sel_pla66npla53M1T2_2; +reg ctl_reg_gp_hilo_pla66npla53M1T2_3; +reg ctl_reg_gp_sel_pla66npla53M1T3_1; +reg ctl_reg_gp_hilo_pla66npla53M1T3_2; +reg ctl_reg_gp_sel_pla66npla53M1T4nop4op5nop3_1; +reg ctl_reg_gp_hilo_pla66npla53M1T4nop4op5nop3_2; +reg ctl_reg_gp_sel_use_ixiypla53M1T3_1; +reg ctl_reg_gp_hilo_use_ixiypla53M1T3_2; +reg ctl_reg_sys_hilo_use_ixiypla53M2T1_3; +reg ctl_reg_sys_hilo_use_ixiypla53M2T2_4; +reg ctl_reg_gp_sel_nuse_ixiypla53M1T2_2; +reg ctl_reg_gp_hilo_nuse_ixiypla53M1T2_3; +reg ctl_reg_gp_sel_nuse_ixiypla53M1T3_1; +reg ctl_reg_gp_hilo_nuse_ixiypla53M1T3_2; +reg ctl_reg_gp_sel_nuse_ixiypla53M2T1_2; +reg ctl_reg_gp_hilo_nuse_ixiypla53M2T1_3; +reg ctl_pf_sel_nuse_ixiypla53M2T4_14; +reg ctl_pf_sel_nuse_ixiypla53M4T4_14; +reg ctl_reg_gp_sel_pla69M1T2_2; +reg ctl_reg_gp_hilo_pla69M1T2_3; +reg ctl_reg_gp_sel_pla69M1T3_1; +reg ctl_reg_gp_hilo_pla69M1T3_2; +reg ctl_reg_gp_sel_pla69M1T4_3; +reg ctl_reg_gp_hilo_pla69M1T4_4; +reg ctl_reg_gp_sel_pla69M2T1_1; +reg ctl_reg_gp_hilo_pla69M2T1_2; +reg ctl_reg_sys_hilo_pla69M2T2_3; +reg ctl_reg_gp_sel_pla69M2T3_1; +reg ctl_reg_gp_hilo_pla69M2T3_2; +reg ctl_reg_gp_sel_pla69M2T4_2; +reg ctl_reg_gp_hilo_pla69M2T4_3; +reg ctl_reg_sys_hilo_pla69M3T1_2; +reg ctl_reg_sys_hilo_pla69M3T1_7; +reg ctl_reg_gp_sel_pla69M3T2_2; +reg ctl_reg_gp_hilo_pla69M3T2_3; +reg ctl_reg_gp_sel_op3pla68M1T2_2; +reg ctl_reg_gp_hilo_op3pla68M1T2_3; +reg ctl_reg_gp_sel_op3pla68M1T3_1; +reg ctl_reg_gp_hilo_op3pla68M1T3_2; +reg ctl_reg_gp_sel_op3pla68M1T4_3; +reg ctl_reg_gp_hilo_op3pla68M1T4_4; +reg ctl_reg_gp_sel_op3pla68M2T1_1; +reg ctl_reg_gp_hilo_op3pla68M2T1_2; +reg ctl_reg_sys_hilo_op3pla68M2T2_3; +reg ctl_reg_gp_sel_op3pla68M2T3_1; +reg ctl_reg_gp_hilo_op3pla68M2T3_2; +reg ctl_reg_gp_sel_op3pla68M2T4_2; +reg ctl_reg_gp_hilo_op3pla68M2T4_3; +reg ctl_reg_sys_hilo_op3pla68M3T1_2; +reg ctl_reg_sys_hilo_op3pla68M3T1_7; +reg ctl_pf_sel_op3pla68M3T1_18; +reg ctl_reg_gp_sel_op3pla68M3T2_2; +reg ctl_reg_gp_hilo_op3pla68M3T2_3; +reg ctl_reg_gp_sel_nop3pla68M1T2_2; +reg ctl_reg_gp_hilo_nop3pla68M1T2_3; +reg ctl_reg_gp_sel_nop3pla68M1T3_1; +reg ctl_reg_gp_hilo_nop3pla68M1T3_2; +reg ctl_reg_gp_sel_nop3pla68M1T4_3; +reg ctl_reg_gp_hilo_nop3pla68M1T4_4; +reg ctl_reg_gp_sel_nop3pla68M2T1_1; +reg ctl_reg_gp_hilo_nop3pla68M2T1_2; +reg ctl_reg_sys_hilo_nop3pla68M2T2_3; +reg ctl_reg_gp_sel_nop3pla68M2T3_1; +reg ctl_reg_gp_hilo_nop3pla68M2T3_2; +reg ctl_reg_gp_sel_nop3pla68M2T4_2; +reg ctl_reg_gp_hilo_nop3pla68M2T4_3; +reg ctl_reg_sys_hilo_nop3pla68M3T1_2; +reg ctl_reg_sys_hilo_nop3pla68M3T1_7; +reg ctl_pf_sel_nop3pla68M3T1_20; +reg ctl_reg_gp_sel_nop3pla68M3T2_2; +reg ctl_reg_gp_hilo_nop3pla68M3T2_3; +reg ctl_reg_gp_sel_pla9M1T4_2; +reg ctl_reg_gp_hilo_pla9M1T4_3; +reg ctl_reg_gp_sel_pla9M1T5_2; +reg ctl_reg_gp_hilo_pla9M1T5_3; +reg ctl_reg_gp_sel_pla77M1T1_2; +reg ctl_reg_gp_hilo_pla77M1T1_3; +reg ctl_pf_sel_pla77M1T1_14; +reg ctl_reg_gp_sel_pla77M1T2_2; +reg ctl_reg_gp_hilo_pla77M1T2_3; +reg ctl_reg_gp_sel_pla77M1T3_1; +reg ctl_reg_gp_hilo_pla77M1T3_2; +reg ctl_reg_gp_sel_pla81M1T1_2; +reg ctl_reg_gp_hilo_pla81M1T1_3; +reg ctl_reg_gp_sel_pla81M1T2_2; +reg ctl_reg_gp_hilo_pla81M1T2_3; +reg ctl_reg_gp_sel_pla81M1T3_1; +reg ctl_reg_gp_hilo_pla81M1T3_2; +reg ctl_reg_gp_sel_pla82M1T1_2; +reg ctl_reg_gp_hilo_pla82M1T1_3; +reg ctl_pf_sel_pla82M1T1_16; +reg ctl_reg_gp_sel_pla82M1T2_2; +reg ctl_reg_gp_hilo_pla82M1T2_3; +reg ctl_reg_gp_sel_pla82M1T3_1; +reg ctl_reg_gp_hilo_pla82M1T3_2; +reg ctl_reg_gp_sel_pla89M1T2_2; +reg ctl_reg_gp_hilo_pla89M1T2_3; +reg ctl_reg_gp_sel_pla89M1T3_1; +reg ctl_reg_gp_hilo_pla89M1T3_2; +reg ctl_reg_gp_sel_pla92M1T2_2; +reg ctl_reg_gp_hilo_pla92M1T2_3; +reg ctl_reg_gp_sel_pla92M1T3_1; +reg ctl_reg_gp_hilo_pla92M1T3_2; +reg ctl_reg_gp_sel_pla25M1T1_2; +reg ctl_reg_gp_hilo_pla25M1T1_3; +reg ctl_reg_gp_sel_pla25M1T2_2; +reg ctl_reg_gp_hilo_pla25M1T2_3; +reg ctl_reg_gp_sel_pla25M1T3_1; +reg ctl_reg_gp_hilo_pla25M1T3_2; +reg ctl_reg_gp_sel_pla25M1T4_3; +reg ctl_reg_gp_hilo_pla25M1T4_4; +reg ctl_reg_gp_sel_nuse_ixiypla70npla55M1T1_2; +reg ctl_reg_gp_hilo_nuse_ixiypla70npla55M1T1_3; +reg ctl_pf_sel_nuse_ixiypla70npla55M1T1_20; +reg ctl_reg_gp_sel_nuse_ixiypla70npla55M1T2_2; +reg ctl_reg_gp_hilo_nuse_ixiypla70npla55M1T2_3; +reg ctl_reg_gp_sel_nuse_ixiypla70npla55M1T3_1; +reg ctl_reg_gp_hilo_nuse_ixiypla70npla55M1T3_2; +reg ctl_reg_gp_sel_nuse_ixiypla70npla55M1T4_3; +reg ctl_reg_gp_hilo_nuse_ixiypla70npla55M1T4_4; +reg ctl_reg_sys_hilo_nuse_ixiypla70npla55M4T1_3; +reg ctl_pf_sel_nuse_ixiypla70npla55M5T1_19; +reg ctl_reg_gp_sel_nuse_ixiypla70pla55M1T2_2; +reg ctl_reg_gp_hilo_nuse_ixiypla70pla55M1T2_3; +reg ctl_reg_gp_sel_nuse_ixiypla70pla55M1T3_1; +reg ctl_reg_gp_hilo_nuse_ixiypla70pla55M1T3_2; +reg ctl_reg_gp_sel_nuse_ixiypla70pla55M2T1_2; +reg ctl_reg_gp_hilo_nuse_ixiypla70pla55M2T1_3; +reg ctl_pf_sel_nuse_ixiypla70pla55M3T1_19; +reg ctl_reg_sys_hilo_nuse_ixiypla70pla55M4T1_3; +reg ctl_pf_sel_nuse_ixiypla70pla55M5T1_19; +reg ctl_reg_gp_sel_pla15op3M1T1_2; +reg ctl_reg_gp_hilo_pla15op3M1T1_3; +reg ctl_pf_sel_pla15op3M1T1_18; +reg ctl_reg_gp_sel_pla15op3M1T2_2; +reg ctl_reg_gp_hilo_pla15op3M1T2_3; +reg ctl_reg_gp_sel_pla15op3M1T3_1; +reg ctl_reg_gp_hilo_pla15op3M1T3_2; +reg ctl_reg_gp_sel_pla15op3M2T1_2; +reg ctl_reg_gp_hilo_pla15op3M2T1_3; +reg ctl_reg_sys_hilo_pla15op3M2T2_4; +reg ctl_reg_gp_sel_pla15nop3M1T1_2; +reg ctl_reg_gp_hilo_pla15nop3M1T1_3; +reg ctl_pf_sel_pla15nop3M1T1_18; +reg ctl_reg_gp_sel_pla15nop3M1T2_2; +reg ctl_reg_gp_hilo_pla15nop3M1T2_3; +reg ctl_reg_gp_sel_pla15nop3M1T3_1; +reg ctl_reg_gp_hilo_pla15nop3M1T3_2; +reg ctl_reg_gp_sel_pla15nop3M2T1_2; +reg ctl_reg_gp_hilo_pla15nop3M2T1_3; +reg ctl_reg_sys_hilo_pla15nop3M2T2_4; +reg ctl_reg_gp_sel_pla15nop3M3T3_1; +reg ctl_reg_gp_hilo_pla15nop3M3T3_2; +reg ctl_pf_sel_nuse_ixiypla72npla55M1T1_10; +reg ctl_reg_gp_sel_nuse_ixiypla72npla55M1T2_2; +reg ctl_reg_gp_hilo_nuse_ixiypla72npla55M1T2_3; +reg ctl_reg_gp_sel_nuse_ixiypla72npla55M1T3_1; +reg ctl_reg_gp_hilo_nuse_ixiypla72npla55M1T3_2; +reg ctl_reg_gp_sel_nuse_ixiypla72npla55M1T4_3; +reg ctl_reg_gp_hilo_nuse_ixiypla72npla55M1T4_4; +reg ctl_pf_sel_nuse_ixiypla72pla55M1T1_10; +reg ctl_reg_gp_sel_nuse_ixiypla72pla55M1T2_2; +reg ctl_reg_gp_hilo_nuse_ixiypla72pla55M1T2_3; +reg ctl_reg_gp_sel_nuse_ixiypla72pla55M1T3_1; +reg ctl_reg_gp_hilo_nuse_ixiypla72pla55M1T3_2; +reg ctl_reg_gp_sel_nuse_ixiypla72pla55M2T1_2; +reg ctl_reg_gp_hilo_nuse_ixiypla72pla55M2T1_3; +reg ctl_reg_sys_hilo_nuse_ixiypla72pla55M2T3_3; +reg ctl_reg_sys_hilo_nuse_ixiypla72pla55M4T1_3; +reg ctl_reg_gp_sel_nuse_ixiypla74npla55M1T1_2; +reg ctl_reg_gp_hilo_nuse_ixiypla74npla55M1T1_3; +reg ctl_reg_gp_sel_nuse_ixiypla74npla55M1T3_1; +reg ctl_reg_gp_hilo_nuse_ixiypla74npla55M1T3_2; +reg ctl_reg_gp_sel_nuse_ixiypla74npla55M1T4_3; +reg ctl_reg_gp_hilo_nuse_ixiypla74npla55M1T4_4; +reg ctl_reg_sys_hilo_nuse_ixiypla74npla55M4T1_3; +reg ctl_reg_gp_sel_nuse_ixiypla74pla55M1T3_1; +reg ctl_reg_gp_hilo_nuse_ixiypla74pla55M1T3_2; +reg ctl_reg_gp_sel_nuse_ixiypla74pla55M2T1_2; +reg ctl_reg_gp_hilo_nuse_ixiypla74pla55M2T1_3; +reg ctl_reg_sys_hilo_nuse_ixiypla74pla55M4T1_3; +reg ctl_reg_gp_sel_nuse_ixiypla73npla55M1T1_2; +reg ctl_reg_gp_hilo_nuse_ixiypla73npla55M1T1_3; +reg ctl_reg_gp_sel_nuse_ixiypla73npla55M1T3_1; +reg ctl_reg_gp_hilo_nuse_ixiypla73npla55M1T3_2; +reg ctl_reg_gp_sel_nuse_ixiypla73npla55M1T4_3; +reg ctl_reg_gp_hilo_nuse_ixiypla73npla55M1T4_4; +reg ctl_reg_sys_hilo_nuse_ixiypla73npla55M4T1_3; +reg ctl_reg_gp_sel_nuse_ixiypla73pla55M1T3_1; +reg ctl_reg_gp_hilo_nuse_ixiypla73pla55M1T3_2; +reg ctl_reg_gp_sel_nuse_ixiypla73pla55M2T1_2; +reg ctl_reg_gp_hilo_nuse_ixiypla73pla55M2T1_3; +reg ctl_reg_sys_hilo_nuse_ixiypla73pla55M4T1_3; +reg ctl_reg_gp_sel_pla37npla28M1T1_2; +reg ctl_reg_gp_hilo_pla37npla28M1T1_3; +reg ctl_reg_sys_hilo_pla37npla28M2T1_3; +reg ctl_reg_sys_hilo_pla37npla28M2T2_4; +reg ctl_reg_gp_sel_pla37npla28M3T1_2; +reg ctl_reg_gp_hilo_pla37npla28M3T1_3; +reg ctl_reg_gp_sel_pla27npla34M1T1_2; +reg ctl_reg_gp_hilo_pla27npla34M1T1_3; +reg ctl_pf_sel_pla27npla34M1T1_20; +reg ctl_reg_gp_sel_pla27npla34M1T2_2; +reg ctl_reg_gp_hilo_pla27npla34M1T2_3; +reg ctl_reg_gp_sel_pla27npla34M1T3_1; +reg ctl_reg_gp_hilo_pla27npla34M1T3_2; +reg ctl_reg_gp_sel_pla27npla34M2T1_2; +reg ctl_reg_gp_hilo_pla27npla34M2T1_3; +reg ctl_reg_sys_hilo_pla37pla28M2T1_3; +reg ctl_reg_sys_hilo_pla37pla28M2T2_4; +reg ctl_reg_gp_sel_pla37pla28M2T3_4; +reg ctl_reg_gp_hilo_pla37pla28M2T3_5; +reg ctl_reg_gp_sel_pla37pla28M3T1_3; +reg ctl_reg_gp_hilo_pla37pla28M3T1_4; +reg ctl_reg_gp_sel_pla27pla34M1T4nop4op5nop3_1; +reg ctl_reg_gp_hilo_pla27pla34M1T4nop4op5nop3_2; +reg ctl_reg_gp_sel_pla27pla34M2T1_2; +reg ctl_reg_gp_hilo_pla27pla34M2T1_3; +reg ctl_pf_sel_pla91pla21M1T1_8; +reg ctl_reg_gp_sel_pla91pla21M1T2_2; +reg ctl_reg_gp_hilo_pla91pla21M1T2_3; +reg ctl_reg_gp_sel_pla91pla21M1T3_1; +reg ctl_reg_gp_hilo_pla91pla21M1T3_2; +reg ctl_reg_gp_sel_pla91pla21M2T1_2; +reg ctl_reg_gp_hilo_pla91pla21M2T1_3; +reg ctl_reg_gp_sel_pla91pla21M2T2_2; +reg ctl_reg_gp_hilo_pla91pla21M2T2_3; +reg ctl_reg_gp_sel_pla91pla21M2T3_3; +reg ctl_reg_gp_hilo_pla91pla21M2T3_4; +reg ctl_reg_gp_sel_pla91pla21M3T1_2; +reg ctl_reg_gp_hilo_pla91pla21M3T1_3; +reg ctl_reg_gp_sel_pla91pla21M3T2_3; +reg ctl_reg_gp_hilo_pla91pla21M3T2_4; +reg ctl_reg_sys_hilo_pla91pla21M4T1_2; +reg ctl_reg_sys_hilo_pla91pla21M4T2_3; +reg ctl_reg_sys_hilo_pla91pla21M4T3_2; +reg ctl_reg_sys_hilo_pla91pla21M4T4_3; +reg ctl_pf_sel_pla91pla20M1T1_9; +reg ctl_reg_gp_sel_pla91pla20M1T2_2; +reg ctl_reg_gp_hilo_pla91pla20M1T2_3; +reg ctl_reg_gp_sel_pla91pla20M1T3_1; +reg ctl_reg_gp_hilo_pla91pla20M1T3_2; +reg ctl_reg_gp_sel_pla91pla20M1T4_2; +reg ctl_reg_gp_hilo_pla91pla20M1T4_3; +reg ctl_reg_gp_sel_pla91pla20M1T5_4; +reg ctl_reg_gp_hilo_pla91pla20M1T5_5; +reg ctl_reg_gp_sel_pla91pla20M2T1_2; +reg ctl_reg_gp_hilo_pla91pla20M2T1_3; +reg ctl_reg_gp_sel_pla91pla20M2T2_3; +reg ctl_reg_gp_hilo_pla91pla20M2T2_4; +reg ctl_reg_gp_sel_pla91pla20M2T3_4; +reg ctl_reg_gp_hilo_pla91pla20M2T3_5; +reg ctl_reg_gp_sel_pla91pla20M3T1_2; +reg ctl_reg_gp_hilo_pla91pla20M3T1_3; +reg ctl_reg_sys_hilo_pla91pla20M4T1_2; +reg ctl_reg_sys_hilo_pla91pla20M4T2_3; +reg ctl_reg_sys_hilo_pla91pla20M4T3_2; +reg ctl_reg_sys_hilo_pla91pla20M4T4_3; +reg ctl_reg_sys_hilo_pla29M2T1_3; +reg ctl_reg_sys_hilo_pla29M2T2_4; +reg ctl_reg_sys_hilo_pla29M2T3_6; +reg ctl_reg_sys_hilo_pla29M3T1_3; +reg ctl_reg_sys_hilo_pla29M3T2_4; +reg ctl_reg_sys_hilo_pla29M3T3_4; +reg ctl_reg_sys_hilo_pla29M3T3_9; +reg ctl_reg_gp_sel_pla43M1T3_1; +reg ctl_reg_gp_hilo_pla43M1T3_2; +reg ctl_reg_sys_hilo_pla43M2T1_3; +reg ctl_reg_sys_hilo_pla43M2T2_4; +reg ctl_reg_sys_hilo_pla43M2T3_6; +reg ctl_reg_sys_hilo_pla43M3T1_3; +reg ctl_reg_sys_hilo_pla43M3T2_4; +reg ctl_reg_sys_hilo_pla43M3T3_5; +reg ctl_reg_sys_hilo_pla43M3T3_10; +reg ctl_reg_gp_sel_pla47M1T3_1; +reg ctl_reg_gp_hilo_pla47M1T3_2; +reg ctl_reg_sys_hilo_pla47M2T1_3; +reg ctl_reg_sys_hilo_pla47M2T2_4; +reg ctl_reg_sys_hilo_pla47M3T2_2; +reg ctl_reg_sys_hilo_pla47M3T3_3; +reg ctl_reg_sys_hilo_pla47M3T4_2; +reg ctl_reg_sys_hilo_pla47M3T5_3; +reg ctl_reg_sys_hilo_pla47M3T5_8; +reg ctl_reg_gp_sel_pla48M1T3_1; +reg ctl_reg_gp_hilo_pla48M1T3_2; +reg ctl_reg_sys_hilo_pla48M2T1_3; +reg ctl_reg_sys_hilo_pla48M2T2_4; +reg ctl_reg_sys_hilo_pla48M3T2_2; +reg ctl_reg_sys_hilo_pla48M3T3_3; +reg ctl_reg_sys_hilo_pla48M3T4_2; +reg ctl_reg_sys_hilo_pla48M3T5_3; +reg ctl_reg_sys_hilo_pla48M3T5_8; +reg ctl_reg_gp_sel_pla6M1T4_3; +reg ctl_reg_gp_hilo_pla6M1T4_4; +reg ctl_reg_gp_sel_pla26M1T3_1; +reg ctl_reg_gp_hilo_pla26M1T3_2; +reg ctl_reg_gp_sel_pla26M1T4_2; +reg ctl_reg_gp_hilo_pla26M1T4_3; +reg ctl_reg_gp_sel_pla26M1T5_4; +reg ctl_reg_gp_hilo_pla26M1T5_5; +reg ctl_reg_sys_hilo_pla26M2T1_3; +reg ctl_reg_sys_hilo_pla26M2T2_4; +reg ctl_reg_sys_hilo_pla26M3T2_2; +reg ctl_reg_sys_hilo_pla26M3T3_3; +reg ctl_reg_sys_hilo_pla26M3T4_2; +reg ctl_reg_sys_hilo_pla26M3T5_3; +reg ctl_reg_sys_hilo_pla26M3T5_8; +reg ctl_reg_sys_hilo_pla24M2T1_3; +reg ctl_reg_sys_hilo_pla24M2T2_4; +reg ctl_reg_sys_hilo_pla24M2T3_6; +reg ctl_reg_sys_hilo_pla24M3T1_3; +reg ctl_reg_sys_hilo_pla24M3T2_4; +reg ctl_reg_sys_hilo_pla24M3T3_4; +reg ctl_reg_gp_sel_pla24M3T4_4; +reg ctl_reg_gp_hilo_pla24M3T4_5; +reg ctl_reg_sys_hilo_pla24M4T1_6; +reg ctl_reg_gp_sel_pla24M4T2_3; +reg ctl_reg_gp_hilo_pla24M4T2_4; +reg ctl_reg_gp_sel_pla24M4T3_5; +reg ctl_reg_gp_hilo_pla24M4T3_6; +reg ctl_reg_sys_hilo_pla24M5T1_6; +reg ctl_reg_gp_sel_pla24M5T2_3; +reg ctl_reg_gp_hilo_pla24M5T2_4; +reg ctl_reg_sys_hilo_pla24M5T3_4; +reg ctl_reg_gp_sel_pla42M1T3_1; +reg ctl_reg_gp_hilo_pla42M1T3_2; +reg ctl_reg_sys_hilo_pla42M2T1_3; +reg ctl_reg_sys_hilo_pla42M2T2_4; +reg ctl_reg_sys_hilo_pla42M2T3_6; +reg ctl_reg_sys_hilo_pla42M3T1_3; +reg ctl_reg_sys_hilo_pla42M3T2_4; +reg ctl_reg_sys_hilo_pla42M3T3_6; +reg ctl_reg_gp_sel_pla42M3T4_4; +reg ctl_reg_gp_hilo_pla42M3T4_5; +reg ctl_reg_sys_hilo_pla42M4T1_6; +reg ctl_reg_gp_sel_pla42M4T2_3; +reg ctl_reg_gp_hilo_pla42M4T2_4; +reg ctl_reg_gp_sel_pla42M4T3_5; +reg ctl_reg_gp_hilo_pla42M4T3_6; +reg ctl_reg_sys_hilo_pla42M5T1_6; +reg ctl_reg_gp_sel_pla42M5T2_3; +reg ctl_reg_gp_hilo_pla42M5T2_4; +reg ctl_reg_sys_hilo_pla42M5T3_4; +reg ctl_reg_gp_sel_pla35M2T1_3; +reg ctl_reg_gp_hilo_pla35M2T1_4; +reg ctl_reg_gp_sel_pla35M2T2_3; +reg ctl_reg_gp_hilo_pla35M2T2_4; +reg ctl_reg_sys_hilo_pla35M2T3_6; +reg ctl_reg_gp_sel_pla35M3T1_3; +reg ctl_reg_gp_hilo_pla35M3T1_4; +reg ctl_reg_gp_sel_pla35M3T2_3; +reg ctl_reg_gp_hilo_pla35M3T2_4; +reg ctl_reg_sys_hilo_pla35M3T3_4; +reg ctl_reg_sys_hilo_pla35M3T3_9; +reg ctl_reg_gp_sel_pla45M1T3_1; +reg ctl_reg_gp_hilo_pla45M1T3_2; +reg ctl_reg_gp_sel_pla45M2T1_3; +reg ctl_reg_gp_hilo_pla45M2T1_4; +reg ctl_reg_gp_sel_pla45M2T2_3; +reg ctl_reg_gp_hilo_pla45M2T2_4; +reg ctl_reg_sys_hilo_pla45M2T3_6; +reg ctl_reg_gp_sel_pla45M3T1_3; +reg ctl_reg_gp_hilo_pla45M3T1_4; +reg ctl_reg_gp_sel_pla45M3T2_3; +reg ctl_reg_gp_hilo_pla45M3T2_4; +reg ctl_reg_sys_hilo_pla45M3T3_4; +reg ctl_reg_sys_hilo_pla45M3T3_9; +reg ctl_reg_gp_sel_pla46M2T1_3; +reg ctl_reg_gp_hilo_pla46M2T1_4; +reg ctl_reg_gp_sel_pla46M2T2_3; +reg ctl_reg_gp_hilo_pla46M2T2_4; +reg ctl_reg_sys_hilo_pla46M2T3_6; +reg ctl_reg_gp_sel_pla46M3T1_3; +reg ctl_reg_gp_hilo_pla46M3T1_4; +reg ctl_reg_gp_sel_pla46M3T2_3; +reg ctl_reg_gp_hilo_pla46M3T2_4; +reg ctl_reg_sys_hilo_pla46M3T3_4; +reg ctl_reg_sys_hilo_pla46M3T3_9; +reg ctl_reg_sys_hilo_pla56M1T3_3; +reg ctl_reg_gp_sel_pla56M1T5_4; +reg ctl_reg_gp_hilo_pla56M1T5_5; +reg ctl_reg_sys_hilo_pla56M2T1_6; +reg ctl_reg_gp_sel_pla56M2T2_3; +reg ctl_reg_gp_hilo_pla56M2T2_4; +reg ctl_reg_gp_sel_pla56M2T3_5; +reg ctl_reg_gp_hilo_pla56M2T3_6; +reg ctl_reg_sys_hilo_pla56M3T1_6; +reg ctl_reg_gp_sel_pla56M3T2_3; +reg ctl_reg_gp_hilo_pla56M3T2_4; +reg ctl_reg_sys_hilo_pla56M3T3_6; +reg ctl_reg_sys_hilo_pla56M4T1_3; +reg ctl_reg_sys_hilo_pla56M4T3_6; +reg ctl_reg_sys_hilo_pla56M5T1_3; +reg ctl_reg_sys_hilo_pla56M5T3_4; +reg ctl_reg_sys_hilo_pla56M5T3_9; +reg ctl_reg_gp_sel_pla49M1T3_1; +reg ctl_reg_gp_hilo_pla49M1T3_2; +reg ctl_reg_sys_hilo_pla49M2T1_3; +reg ctl_reg_sys_hilo_pla49M2T2_4; +reg ctl_reg_sys_hilo_pla49M3T1_3; +reg ctl_reg_sys_hilo_pla49M3T2_4; +reg ctl_pf_sel_pla76M1T1_2; +reg ctl_reg_gp_sel_pla78M1T1_2; +reg ctl_reg_gp_hilo_pla78M1T1_3; +reg ctl_pf_sel_pla78M1T1_8; +reg ctl_reg_gp_sel_pla79M1T1_2; +reg ctl_reg_gp_hilo_pla79M1T1_3; +reg ctl_pf_sel_pla79M1T1_8; +reg ctl_reg_gp_sel_pla80M1T1_2; +reg ctl_reg_gp_hilo_pla80M1T1_3; +reg ctl_pf_sel_pla80M1T1_8; +reg ctl_reg_gp_sel_pla84M1T1_2; +reg ctl_reg_gp_hilo_pla84M1T1_3; +reg ctl_pf_sel_pla84M1T1_8; +reg ctl_reg_gp_sel_pla85M1T1_2; +reg ctl_reg_gp_hilo_pla85M1T1_3; +reg ctl_pf_sel_pla85M1T1_8; +reg ctl_reg_gp_sel_pla86M1T1_2; +reg ctl_reg_gp_hilo_pla86M1T1_3; +reg ctl_pf_sel_pla86M1T1_8; +reg ctl_reg_gp_sel_pla88M1T1_2; +reg ctl_reg_gp_hilo_pla88M1T1_3; +reg ctl_pf_sel_pla88M1T1_8; +reg ctl_reg_gp_sel_ixy_dT2_1; +reg ctl_reg_gp_hilo_ixy_dT2_2; +reg ctl_reg_sys_hilo_ixy_dT3_3; +reg ctl_reg_gp_sel_ixy_dT4_1; +reg ctl_reg_gp_hilo_ixy_dT4_2; +reg ctl_reg_sys_hilo_ixy_dT5_2; +reg ctl_reg_sys_hilo_ixy_dT5_7; +reg ctl_reg_sys_hilo_1M1T1_3; +reg ctl_reg_sys_hilo_1M1T2_2; +reg ctl_reg_sys_hilo_1M1T3_3; +reg ctl_reg_sys_hilo_setM1_2; diff --git a/cpu/control/test_control.qpf b/cpu/control/test_control.qpf new file mode 100644 index 0000000..fdf5132 --- /dev/null +++ b/cpu/control/test_control.qpf @@ -0,0 +1,30 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition +# Date created = 09:22:29 October 13, 2014 +# +# -------------------------------------------------------------------------- # + +QUARTUS_VERSION = "13.0" +DATE = "09:22:29 October 13, 2014" + +# Revisions + +PROJECT_REVISION = "test_control" diff --git a/cpu/control/test_control.qsf b/cpu/control/test_control.qsf new file mode 100644 index 0000000..787dc3c --- /dev/null +++ b/cpu/control/test_control.qsf @@ -0,0 +1,74 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition +# Date created = 09:22:29 October 13, 2014 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# test_control_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus II software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + +set_global_assignment -name FAMILY "Cyclone II" +set_global_assignment -name DEVICE EP2C20F484C7 +set_global_assignment -name TOP_LEVEL_ENTITY execute +set_global_assignment -name ORIGINAL_QUARTUS_VERSION "13.0 SP1" +set_global_assignment -name PROJECT_CREATION_TIME_DATE "09:22:29 OCTOBER 13, 2014" +set_global_assignment -name LAST_QUARTUS_VERSION "13.0 SP1" +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1 +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" +set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" +set_global_assignment -name USE_CONFIGURATION_DEVICE ON +set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED WITH WEAK PULL-UP" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS ON +set_global_assignment -name SMART_RECOMPILE ON +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS ON +set_global_assignment -name OPTIMIZE_POWER_DURING_SYNTHESIS OFF +set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2005 +set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF +set_global_assignment -name TIMEQUEST_DO_REPORT_TIMING ON +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL ON +set_global_assignment -name VERILOG_FILE pla_decode.v +set_global_assignment -name VERILOG_FILE execute.v +set_global_assignment -name BDF_FILE sequencer.bdf +set_global_assignment -name BDF_FILE resets.bdf +set_global_assignment -name BDF_FILE memory_ifc.bdf +set_global_assignment -name BDF_FILE ir.bdf +set_global_assignment -name BDF_FILE interrupts.bdf +set_global_assignment -name BDF_FILE decode_state.bdf +set_global_assignment -name BDF_FILE clk_delay.bdf +set_global_assignment -name BDF_FILE pin_control.bdf +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/cpu/control/test_decode.sv b/cpu/control/test_decode.sv new file mode 100644 index 0000000..9f9d5bc --- /dev/null +++ b/cpu/control/test_decode.sv @@ -0,0 +1,163 @@ +//============================================================== +// Test PLA decode and combinatorial static execute +//============================================================== +`timescale 100 ns/ 100 ns + +module test_decode; + +reg [7:0] ir_sig; +reg [4:0] prefix_sig; +wire [107:0] pla_sig; + +// ----------------- TEST ------------------- +initial begin + integer opcode; + + // Test every opcode in the first table + + //================================================ + // Regular instructions with no prefix + //================================================ + $display("START IXY0:XX"); + opcode = 0; + while(opcode<256) begin + #1 $display("OPCODE: 0x%2H", opcode); + prefix_sig[4:0] = 5'b10100; + ir_sig[7:0] = opcode; + #1 // Reset the IR into NOP so we get the trigger signal again + prefix_sig[4:0] = 5'b01100; + ir_sig[7:0] = 0; + opcode++; + end + #1 $display("END"); + + //================================================ + // Regular instructions with IX/IY prefix + //================================================ + $display("START IXY1:XX"); + opcode = 0; + while(opcode<256) begin + #1 $display("OPCODE: 0x%2H", opcode); + prefix_sig[4:0] = 5'b01100; + ir_sig[7:0] = opcode; + #1 // Reset the IR into NOP so we get the trigger signal again + prefix_sig[4:0] = 5'b01100; + ir_sig[7:0] = 0; + opcode++; + end + #1 $display("END"); + + //================================================ + // CD instructions with no prefix + //================================================ + $display("START IXY0:CB"); + opcode = 0; + while(opcode<256) begin + #1 $display("OPCODE: 0x%2H", opcode); + prefix_sig[4:0] = 5'b10010; + ir_sig[7:0] = opcode; + #1 // Reset the IR into NOP so we get the trigger signal again + prefix_sig[4:0] = 5'b01100; + ir_sig[7:0] = 0; + opcode++; + end + #1 $display("END"); + + //================================================ + // CB instructions with IX/IY prefix + //================================================ + $display("START IXY1:CB"); + opcode = 0; + while(opcode<256) begin + #1 $display("OPCODE: 0x%2H", opcode); + prefix_sig[4:0] = 5'b01010; + ir_sig[7:0] = opcode; + #1 // Reset the IR into NOP so we get the trigger signal again + prefix_sig[4:0] = 5'b01100; + ir_sig[7:0] = 0; + opcode++; + end + #1 $display("END"); + + //================================================ + // ED instructions with no prefix + //================================================ + $display("START IXY0:ED"); + opcode = 0; + while(opcode<256) begin + #1 $display("OPCODE: 0x%2H", opcode); + prefix_sig[4:0] = 5'b10001; + ir_sig[7:0] = opcode; + #1 // Reset the IR into NOP so we get the trigger signal again + prefix_sig[4:0] = 5'b01100; + ir_sig[7:0] = 0; + opcode++; + end + #1 $display("END"); + + //================================================ + // ED instructions with IX/IY prefix + //================================================ + $display("START IXY1:ED"); + opcode = 0; + while(opcode<256) begin + #1 $display("OPCODE: 0x%2H", opcode); + prefix_sig[4:0] = 5'b01001; + ir_sig[7:0] = opcode; + #1 // Reset the IR into NOP so we get the trigger signal again + prefix_sig[4:0] = 5'b01001; + ir_sig[7:0] = 0; + opcode++; + end + #1 $display("END"); + +end + +//-------------------------------------------------------------- +// Instantiate decode blocks +//-------------------------------------------------------------- + +pla_decode pla_decode_inst +( + .prefix(prefix_sig) , // input [6:0] prefix_sig + .opcode(ir_sig) , // input [7:0] opcode + .pla(pla_sig) // output [104:0] pla_sig +); + +execute execute_inst +( + .pla(pla_sig) , // input [107:0] pla_sig + .M1(M1_sig) , // input M1_sig + .M2(M2_sig) , // input M2_sig + .M3(M3_sig) , // input M3_sig + .M4(M4_sig) , // input M4_sig + .M5(M5_sig) , // input M5_sig + .T1(T1_sig) , // input T1_sig + .T2(T2_sig) , // input T2_sig + .T3(T3_sig) , // input T3_sig + .T4(T4_sig) , // input T4_sig + .T5(T5_sig) , // input T5_sig + .T6(T6_sig) , // input T6_sig + .nextM(nextM_sig) , // output nextM_sig + .setM1(setM1_sig) , // output setM1_sig + .setM1ss(setM1ss_sig) , // output setM1ss_sig + .setM1cc(setM1cc_sig) , // output setM1cc_sig + .setM1bz(setM1bz_sig) , // output setM1bz_sig + .fFetch(fFetch_sig) , // output fFetch_sig + .fMRead(fMRead_sig) , // output fMRead_sig + .fMWrite(fMWrite_sig) , // output fMWrite_sig + .fIORead(fIORead_sig) , // output fIORead_sig + .fIOWrite(fIOWrite_sig) , // output fIOWrite_sig + .FIntr(FIntr_sig) , // output FIntr_sig + .ctl_bus_sw1(ctl_bus_sw1_sig) , // output ctl_bus_sw1_sig + .ctl_bus_sw2(ctl_bus_sw2_sig) , // output ctl_bus_sw2_sig + .ctl_bus_sw4(ctl_bus_sw4_sig) , // output ctl_bus_sw4_sig + .ctl_al_we(ctl_al_we_sig) , // output ctl_al_we_sig + .ctl_inc_dec(ctl_inc_dec_sig) , // output ctl_inc_dec_sig + .ctl_inc_limit6(ctl_inc_limit6_sig) , // output ctl_inc_limit6_sig + .ctl_inc_cy(ctl_inc_cy_sig) , // output ctl_inc_cy_sig + .ctl_ab_mux_inc(ctl_ab_mux_inc_sig) , // output ctl_ab_mux_inc_sig + .explode(explode_sig) // output explode_sig +); + +endmodule diff --git a/cpu/control/test_interrupts.sv b/cpu/control/test_interrupts.sv new file mode 100644 index 0000000..a5512de --- /dev/null +++ b/cpu/control/test_interrupts.sv @@ -0,0 +1,93 @@ +//============================================================== +// Test interrupts unit +//============================================================== +`timescale 100 ns/ 100 ns + +module test_interrupts; + +// ----------------- CLOCKS AND RESET ----------------- +// Define one full T-clock cycle delay +`define T #2 +bit clk = 1; +initial repeat (20) #1 clk = ~clk; + +logic nreset = 0; + +// ----------------- CONTROL ---------------- +logic ctl_iff1_iff2_sig=0; +logic ctl_iffx_we_sig=0; +logic ctl_iffx_bit_sig=0; +logic nmi_sig=0; +logic setM1_sig=0; +logic intr_sig=0; +logic ctl_im_we_sig=0; +logic [1:0] db_sig=0; +logic clk_sig=0; +logic ctl_no_ints_sig=0; + +// ----------------- STATES ---------------- +wire iff1_sig; +assign iff1_sig = interrupts_inst.iff1; +wire iff2_sig; +wire im1_sig; +wire im2_sig; +wire in_nmi_sig; +wire in_intr_sig; + +// ----------------- TEST ------------------- +initial begin + // Init / reset + `T nreset = 1; + // Test interrupt modes + db_sig = 2'b10; // IM1 + ctl_im_we_sig = 1; + `T assert(im1_sig==1 && im2_sig==0); + db_sig = 2'b11; // IM2 + `T assert(im1_sig==0 && im2_sig==1); + db_sig = 2'b00; // IM0 + `T assert(im1_sig==0 && im2_sig==0); + + // Test IFF state flags + assert(iff1_sig==0 && iff2_sig==0); + ctl_iff1_iff2_sig = 1; + ctl_iffx_we_sig = 1; + ctl_iffx_bit_sig = 1; + `T assert(iff1_sig==0 && iff2_sig==1); + `T assert(iff1_sig==1 && iff2_sig==1); + ctl_iff1_iff2_sig = 0; + ctl_iffx_we_sig = 0; + ctl_iffx_bit_sig = 0; + + // Simulate NMI triggering + nmi_sig = 1; + `T setM1_sig = 1; + `T assert(iff1_sig==0 && iff2_sig==1); + + `T $display("End of test"); +end + +//-------------------------------------------------------------- +// Instantiate interrupts +//-------------------------------------------------------------- + +interrupts interrupts_inst +( + .ctl_iff1_iff2(ctl_iff1_iff2_sig) , // input ctl_iff1_iff2_sig + .nmi(nmi_sig) , // input nmi_sig + .setM1(setM1_sig) , // input setM1_sig + .intr(intr_sig) , // input intr_sig + .ctl_iffx_we(ctl_iffx_we_sig) , // input ctl_iffx_we_sig + .ctl_iffx_bit(ctl_iffx_bit_sig) , // input ctl_iffx_bit_sig + .ctl_im_we(ctl_im_we_sig) , // input ctl_im_we_sig + .db(db_sig) , // input [1:0] db_sig + .clk(clk) , // input clk + .ctl_no_ints(ctl_no_ints_sig) , // input ctl_no_ints_sig + .nreset(nreset) , // input nreset + .iff2(iff2_sig) , // output iff2_sig + .im1(im1_sig) , // output im1_sig + .im2(im2_sig) , // output im2_sig + .in_nmi(in_nmi_sig) , // output in_nmi_sig + .in_intr(in_intr_sig) // output in_intr_sig +); + +endmodule diff --git a/cpu/control/test_pin_control.sv b/cpu/control/test_pin_control.sv new file mode 100644 index 0000000..16ada56 --- /dev/null +++ b/cpu/control/test_pin_control.sv @@ -0,0 +1,99 @@ +//============================================================== +// Test pin control unit +//============================================================== +`timescale 100 ns/ 100 ns + +module test_pin_control; + +// ----------------- CONTROL ---------------- +logic fFetch_sig=0; +logic fMRead_sig=0; +logic fMWrite_sig=0; +logic fIORead_sig=0; +logic fIOWrite_sig=0; +logic T1_sig=0; +logic T2_sig=0; +logic T3_sig=0; +logic T4_sig=0; + +// ----------------- STATES ---------------- +wire bus_ab_pin_we_sig; +wire bus_db_pin_oe_sig; +wire bus_db_pin_re_sig; + +// ----------------- TEST ------------------- +initial begin + // Initial condition + #1 assert(bus_ab_pin_we_sig==0 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0); + + // Activate formula for each signal + fFetch_sig = 1; + T1_sig = 1; + #1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0); + T1_sig = 0; + T3_sig = 1; + #1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0); + fFetch_sig = 0; + T1_sig = 0; + T3_sig = 0; + #1 assert(bus_ab_pin_we_sig==0 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0); + // Read phase + fMRead_sig = 1; + #1 assert(bus_ab_pin_we_sig==0 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0); + T1_sig = 1; + #1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0); + // Write phase + fMRead_sig = 0; + fMWrite_sig = 1; + fIORead_sig = 0; + fIOWrite_sig = 0; + #1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0); + // IO Read phase + fMRead_sig = 0; + fMWrite_sig = 0; + fIORead_sig = 1; + fIOWrite_sig = 0; + #1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0); + // IO Write phase + fMRead_sig = 0; + fMWrite_sig = 0; + fIORead_sig = 0; + fIOWrite_sig = 1; + #1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0); + fIOWrite_sig = 0; + #1 assert(bus_ab_pin_we_sig==0 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0); + + // Test bus pin control + T2_sig = 1; + fMWrite_sig = 1; + #1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==1 && bus_db_pin_re_sig==0); + fMWrite_sig = 0; + fIORead_sig = 1; + #1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==0); + T3_sig = 1; + #1 assert(bus_ab_pin_we_sig==1 && bus_db_pin_oe_sig==0 && bus_db_pin_re_sig==1); + + #1 $display("End of test"); +end + +//-------------------------------------------------------------- +// Instantiate pin control +//-------------------------------------------------------------- + +pin_control pin_control_inst +( + .fFetch(fFetch_sig) , // input fFetch_sig + .fMRead(fMRead_sig) , // input fMRead_sig + .fMWrite(fMWrite_sig) , // input fMWrite_sig + .fIORead(fIORead_sig) , // input fIORead_sig + .fIOWrite(fIOWrite_sig) , // input fIOWrite_sig + .T1(T1_sig) , // input T1_sig + .T2(T2_sig) , // input T2_sig + .T3(T3_sig) , // input T3_sig + .T4(T4_sig) , // input T4_sig + .bus_ab_pin_we(bus_ab_pin_we_sig) , // output bus_ab_pin_we_sig + .bus_db_pin_oe(bus_db_pin_oe_sig) , // output bus_db_pin_oe_sig + .bus_db_pin_re(bus_db_pin_re_sig) // output bus_db_pin_re_sig +); + +endmodule diff --git a/cpu/control/test_reset.sv b/cpu/control/test_reset.sv new file mode 100644 index 0000000..f60e100 --- /dev/null +++ b/cpu/control/test_reset.sv @@ -0,0 +1,67 @@ +//============================================================== +// Test reset circuit +//============================================================== +`timescale 100 ns/ 100 ns + +module test_reset; + +// ----------------- CLOCKS AND RESET ----------------- +`define T #2 +bit clk = 1; +initial repeat (40) #1 clk = ~clk; + +// Specific to FPGA, some modules in the schematic need to be pre-initialized +reg fpga_reset = 1; +always_latch + if (clk) fpga_reset <= 0; + +//---------------------------------------------------------- +// Input reset from the pin; state from the sequencer +//---------------------------------------------------------- +logic reset_in = 0; +logic M1 = 0; +logic T2 = 0; + +wire clrpc; // Load 0 to PC +wire nhold_clk_wait; // Hold clrpc +wire nreset; // Internal inverted reset signal + +assign nhold_clk_wait = 1; // Will not test this case + +// ----------------- TEST ------------------- +initial begin + // Test normal reset sequence - 3 clocks long + `T reset_in = 1; + `T `T `T reset_in = 0; + `T assert(nreset==0); + // Out of the reset for several more cycles + // Check that the clrpc is set for the next 2 1/2 cycles (see waveform) + `T assert(nreset==1 && clrpc==1); + `T assert(nreset==1 && clrpc==1); + `T assert(nreset==1 && clrpc==0); + `T assert(nreset==1 && clrpc==0); + `T assert(nreset==1 && clrpc==0); + + // Test special reset sequence: a reset pin is briefly + // asserted at M1/T1 and CLRPC should hold until the next + // M1/T2 + `T reset_in = 1; M1=1; + `T reset_in = 0; M1=1; T2=1; + `T M1=1; T2=0; + `T `T + `T assert(nreset==1 && clrpc==1); + `T M1=1; T2=1; + `T M1=1; T2=0; + `T assert(nreset==1 && clrpc==0); + + `T $display("End of test"); +end + +//-------------------------------------------------------------- +// Instantiate DUT +//-------------------------------------------------------------- + +resets reset_block ( .* ); + +endmodule + diff --git a/cpu/control/test_sequencer.sv b/cpu/control/test_sequencer.sv new file mode 100644 index 0000000..aee6ea8 --- /dev/null +++ b/cpu/control/test_sequencer.sv @@ -0,0 +1,66 @@ +//============================================================== +// Test sequencer +//============================================================== +`timescale 100 ns/ 100 ns + +module test_sequencer; + +// ----------------- CLOCKS AND RESET ----------------- +// Define one full T-clock cycle delay +`define T #2 +bit clk = 1; +initial repeat (100) #1 clk = ~clk; + +logic nreset = 0; + +// ----------------- CONTROL ---------------- +logic nextM_sig; +logic setM1_sig; +logic hold_clk_iorq_sig=0; +logic hold_clk_wait_sig=0; +logic hold_clk_busrq_sig=0; + +wire T6_sig; +wire M5_sig; +assign nextM_sig = T6_sig; // Restart when reaching T6 +assign setM1_sig = M5_sig & T6_sig; // Restart when reaching M5/T6 + +// ----------------- TEST ------------------- +initial begin + // Init / reset + `T nreset = 1; + repeat (100) @(posedge clk); nreset <= 1; + + // This test does not use assert() -- we just check visually + + `T $display("End of test"); +end + +//-------------------------------------------------------------- +// Instantiate sequencer +//-------------------------------------------------------------- + +sequencer sequencer_inst +( + .clk(clk) , // input clk + .nextM(nextM_sig) , // input nextM_sig + .setM1(setM1_sig) , // input setM1_sig + .nreset(nreset) , // input nreset + .hold_clk_iorq(hold_clk_iorq_sig) , // input hold_clk_iorq_sig + .hold_clk_wait(hold_clk_wait_sig) , // input hold_clk_wait_sig + .hold_clk_busrq(hold_clk_busrq_sig),// input hold_clk_busrq_sig + .M1(M1_sig) , // output M1_sig + .M2(M2_sig) , // output M2_sig + .M3(M3_sig) , // output M3_sig + .M4(M4_sig) , // output M4_sig + .M5(M5_sig) , // output M5_sig + .T1(T1_sig) , // output T1_sig + .T2(T2_sig) , // output T2_sig + .T3(T3_sig) , // output T3_sig + .T4(T4_sig) , // output T4_sig + .T5(T5_sig) , // output T5_sig + .T6(T6_sig) , // output T6_sig + .timings_en(timings_en_sig) // output timings_en_sig +); + +endmodule diff --git a/cpu/control/timing_macros.i b/cpu/control/timing_macros.i new file mode 100644 index 0000000..4f5f761 --- /dev/null +++ b/cpu/control/timing_macros.i @@ -0,0 +1,372 @@ +//========================================================================================= +// This file contains substitute strings for macro expansions. Macros are defined in an +// Excel timing spreadsheet 'Timings.xlsm' and exported to a .csv file which is then read +// and processed by genmatrix.py script to generate exec_matrix.vh include file. +// +// Macro format: +// +// * Each key is prefixed by ':' and corresponds to a spreadsheet *column* name. +// * A key may contain several different macros, one per line. +// * A macro may span multiple lines; use the '\' character to continue on the next line. +// * Multi-line macros end when a line does not start with a space character. +// //-style comments are wrapped within /* ... */ if they don't start a line. +//========================================================================================= + +//----------------------------------------------------------------------------------------- +// CPU machine state +//----------------------------------------------------------------------------------------- +:Function +//Fetch is M1 +fMFetch +fMRead fMRead=1; +fMWrite fMWrite=1; +fIORead fIORead=1; +fIOWrite fIOWrite=1; + +//----------------------------------------------------------------------------------------- +// Basic timing control +//----------------------------------------------------------------------------------------- +:valid +Y validPLA=1; +:nextM +Y nextM=1; +mr nextM=1; ctl_mRead=1; +mw nextM=1; ctl_mWrite=1; +ior nextM=1; ctl_iorw=1; +iow nextM=1; ctl_iorw=1; +CC nextM=~flags_cond_true; +INT nextM=1; ctl_mRead=in_intr & im2; // RST38 interrupt extension +:setM1 +Y setM1=1; +SS setM1=~flags_cond_true; +CC setM1=~flags_cond_true; +ZF setM1=flags_zf; // Used in DJNZ +BR setM1=nonRep | ~repeat_en; +BRZ setM1=nonRep | ~repeat_en | flags_zf; +BZ setM1=nonRep | flags_zf; +INT setM1=~(in_intr & im2); // RST38 interrupt extension + +//----------------------------------------------------------------------------------------- +// Register file, address (downstream) endpoint +//----------------------------------------------------------------------------------------- +:A:reg rd +// General purpose registers +A ctl_reg_gp_sel=`GP_REG_AF; ctl_reg_gp_hilo=2'b10; ctl_sw_4d=1; // Read 8-bit general purpose A register, enable SW4 downstream +r16 ctl_reg_gp_sel=op54; ctl_reg_gp_hilo=2'b11; ctl_sw_4d=1; // Read 16-bit general purpose register, enable SW4 downstream +BC ctl_reg_gp_sel=`GP_REG_BC; ctl_reg_gp_hilo=2'b11; ctl_sw_4d=1; // Read 16-bit BC, enable SW4 downstream +DE ctl_reg_gp_sel=`GP_REG_DE; ctl_reg_gp_hilo=2'b11; ctl_sw_4d=1; // Read 16-bit DE, enable SW4 downstream +HL ctl_reg_gp_sel=`GP_REG_HL; ctl_reg_gp_hilo=2'b11; ctl_sw_4d=1; // Read 16-bit HL, enable SW4 downstream +SP ctl_reg_use_sp=1; ctl_reg_gp_sel=`GP_REG_AF; ctl_reg_gp_hilo=2'b11; ctl_sw_4d=1;// Read 16-bit SP, enable SW4 downstream + +// System registers +WZ ctl_reg_sel_wz=1; ctl_reg_sys_hilo=2'b11; ctl_sw_4d=1; // Select 16-bit WZ +IR ctl_reg_sel_ir=1; ctl_reg_sys_hilo=2'b11; // Select 16-bit IR +I* ctl_reg_sel_ir=1; ctl_reg_sys_hilo=2'b10; ctl_sw_4d=1; // Select 8-bit I register +PC ctl_reg_sel_pc=1; ctl_reg_sys_hilo=2'b11; // Select 16-bit PC + +// Conditional assertions of WZ, HL instead of PC +WZ? ctl_reg_not_pc|=flags_cond_true; ctl_reg_sel_wz|=flags_cond_true; ctl_reg_sys_hilo|={flags_cond_true,flags_cond_true}; ctl_sw_4d|=flags_cond_true; +// Alternate format: +// if (flags_cond_true) begin // If cc is true, use WZ instead of PC (for jumps) +// ctl_reg_not_pc=1; ctl_reg_sel_wz=1; ctl_reg_sys_hilo=2'b11; ctl_sw_4d=1; +// end + +:A:reg wr +// General purpose registers +r16 ctl_reg_gp_we=1; ctl_reg_gp_sel=op54; ctl_reg_gp_hilo=2'b11; ctl_sw_4u=1; // Write 16-bit general purpose register, enable SW4 upstream +BC ctl_reg_gp_we=1; ctl_reg_gp_sel=`GP_REG_BC; ctl_reg_gp_hilo=2'b11; ctl_sw_4u=1; // Write 16-bit BC, enable SW4 upstream +DE ctl_reg_gp_we=1; ctl_reg_gp_sel=`GP_REG_DE; ctl_reg_gp_hilo=2'b11; ctl_sw_4u=1; // Write 16-bit BC, enable SW4 upstream +HL ctl_reg_gp_we=1; ctl_reg_gp_sel=`GP_REG_HL; ctl_reg_gp_hilo=2'b11; ctl_sw_4u=1; // Write 16-bit HL, enable SW4 upstream +SP ctl_reg_gp_we=1; ctl_reg_gp_sel=`GP_REG_AF; ctl_reg_gp_hilo=2'b11; ctl_reg_use_sp=1; ctl_sw_4u=1; // Write 16-bit SP, enable SW4 upstream +// System registers +WZ ctl_reg_sys_we=1; ctl_reg_sel_wz=1; ctl_reg_sys_hilo=2'b11; ctl_sw_4u=1; // Write 16-bit WZ, enable SW4 upstream +IR ctl_reg_sys_we=1; ctl_reg_sel_ir=1; ctl_reg_sys_hilo=2'b11; // Write 16-bit IR +// PC will not be incremented if we are in HALT, INTR or NMI state +PC ctl_reg_sys_we=1; ctl_reg_sel_pc=1; ctl_reg_sys_hilo=2'b11; pc_inc_hold=(in_halt | in_intr | in_nmi); // Write 16-bit PC and control incrementer +> ctl_sw_4u=1; + +//----------------------------------------------------------------------------------------- +// Controls the address latch incrementer, the address latch and the address pin mux +//----------------------------------------------------------------------------------------- +:inc/dec ++ ctl_inc_cy=~pc_inc_hold; // Increment +- ctl_inc_cy=~pc_inc_hold; ctl_inc_dec=1; // Decrement +op3 ctl_inc_cy=~pc_inc_hold; ctl_inc_dec=op3; // Decrement if op3 is set; increment otherwise + +:A:latch +W ctl_al_we=1; // Write a value from the register bus to the address latch +R ctl_bus_inc_oe=1; // Output enable incrementer to the register bus +P ctl_apin_mux=1; // Apin sourced from incrementer +RL ctl_bus_inc_oe=1; ctl_apin_mux2=1; // Apin sourced from AL + +//----------------------------------------------------------------------------------------- +// Register file, data (upstream) endpoint +//----------------------------------------------------------------------------------------- +:D:reg rd +//----- General purpose registers ----- +A ctl_reg_gp_sel=`GP_REG_AF; ctl_reg_gp_hilo=2'b10; +AF ctl_reg_gp_sel=`GP_REG_AF; ctl_reg_gp_hilo=2'b11; +B ctl_reg_gp_sel=`GP_REG_BC; ctl_reg_gp_hilo=2'b10; +H ctl_reg_gp_sel=`GP_REG_HL; ctl_reg_gp_hilo=2'b10; +L ctl_reg_gp_sel=`GP_REG_HL; ctl_reg_gp_hilo=2'b01; +r8 ctl_reg_gp_sel=op21; ctl_reg_gp_hilo={~rsel0,rsel0};// Read 8-bit GP register selected by op[2:0] +r8' \ // r8 addressing does not allow reading F register (indices of A and F are also swapped) (ex. in OUT (c),r) + if (op4 & op5 & ~op3) begin ctl_bus_zero_oe=1; end // Trying to read flags? Put 0 on the bus instead. + if (~(op4 & op5 & ~op3)) begin ctl_reg_gp_sel=op54; ctl_reg_gp_hilo={~rsel3,rsel3}; end // Read 8-bit GP register +rh ctl_reg_gp_sel=op54; ctl_reg_gp_hilo=2'b10; // Read 8-bit GP register high byte +rl ctl_reg_gp_sel=op54; ctl_reg_gp_hilo=2'b01; // Read 8-bit GP register low byte +//----- System registers ----- +WZ ctl_reg_sel_wz=1; ctl_reg_sys_hilo=2'b11; ctl_sw_4u=1; +Z ctl_reg_sel_wz=1; ctl_reg_sys_hilo=2'b01; ctl_sw_4u=1; // Selecting strictly Z +I/R ctl_reg_sel_ir=1; ctl_reg_sys_hilo={~op3,op3}; ctl_sw_4u=1; // Read either I or R based on op3 (0 or 1) +PCh ctl_reg_sel_pc=1; ctl_reg_sys_hilo=2'b10; ctl_sw_4u=1; +PCl ctl_reg_sel_pc=1; ctl_reg_sys_hilo=2'b01; ctl_sw_4u=1; + +:D:reg wr +? // Which register to be written is decided elsewhere +//----- General purpose registers ----- +A ctl_reg_gp_we=1; ctl_reg_gp_sel=`GP_REG_AF; ctl_reg_gp_hilo=2'b10; +F ctl_reg_gp_we=1; ctl_reg_gp_sel=`GP_REG_AF; ctl_reg_gp_hilo=2'b01; +B ctl_reg_gp_we=1; ctl_reg_gp_sel=`GP_REG_BC; ctl_reg_gp_hilo=2'b10; +r8 ctl_reg_gp_we=1; ctl_reg_gp_sel=op54; ctl_reg_gp_hilo={~rsel3,rsel3}; // Write 8-bit GP register +r8' ctl_reg_gp_we=1; ctl_reg_gp_sel=op21; ctl_reg_gp_hilo={~rsel0,rsel0}; // Write 8-bit GP register selected by op[2:0] +rh ctl_reg_gp_we=1; ctl_reg_gp_sel=op54; ctl_reg_gp_hilo=2'b10; // Write 8-bit GP register high byte +rl ctl_reg_gp_we=1; ctl_reg_gp_sel=op54; ctl_reg_gp_hilo=2'b01; // Write 8-bit GP register low byte +//----- System registers ----- +I/R ctl_reg_sys_we=1; ctl_reg_sel_ir=1; ctl_reg_sys_hilo={~op3,op3}; ctl_sw_4d=1; // Write either I or R based on op3 (0 or 1) +WZ ctl_reg_sys_we=1; ctl_reg_sel_wz=1; ctl_reg_sys_hilo=2'b11; +W ctl_reg_sys_we_hi=1; ctl_reg_sel_wz=1; ctl_reg_sys_hilo={1'b1,ctl_reg_sys_hilo[0]}; // Selecting only W +W? ctl_reg_sys_we_hi=flags_cond_true; ctl_reg_sel_wz=flags_cond_true; ctl_reg_sys_hilo={1'b1,ctl_reg_sys_hilo[0]}; // Conditionally selecting only W +Z ctl_reg_sys_we_lo=1; ctl_reg_sel_wz=1; ctl_reg_sys_hilo={ctl_reg_sys_hilo[1],1'b1}; // Selecting only Z + +//----------------------------------------------------------------------------------------- +// Controls the register file gate connecting it with the ALU and data bus +//----------------------------------------------------------------------------------------- +:Reg gate +< ctl_reg_in_hi=1; ctl_reg_in_lo=1; // From the ALU side into the register file + ctl_reg_out_hi=1; ctl_reg_out_lo=1; // From the register file into the FLAGT and ALU + +// Enables a register gate (high/low) corresponding to the selected 8-bit register +>r8 ctl_reg_out_hi=~rsel0; ctl_reg_out_lo=rsel0; ctl_sw_2u=~rsel0; ctl_sw_2d=rsel0; // Enable register gate based on the rsel0 +>r8' ctl_reg_out_hi=~rsel3; ctl_reg_out_lo=rsel3; ctl_sw_2u=~rsel3; ctl_sw_2d=rsel3; // Enable register gate based on the rsel3 + +>l ctl_reg_out_lo=1; // From the register file onto the db1 (sw2 + FLAGT + sw1) +>h ctl_reg_out_hi=1; // From the register file onto the db2 (sw2 + ALU) + +//----------------------------------------------------------------------------------------- +// Switches on the data bus for each direction (upstream, downstream) +//----------------------------------------------------------------------------------------- +:SW2 +d ctl_sw_2d=1; +u ctl_sw_2u=1; +- // Controlled by register gate + +:SW1 +< ctl_sw_1d=1; +> ctl_sw_1u=1; + +//----------------------------------------------------------------------------------------- +// Data bus latches and pads control +//----------------------------------------------------------------------------------------- +:DB pads +R ctl_bus_db_oe=1; // Read DB pads to internal data bus +W ctl_bus_db_we=1; // Write DB pads with internal data bus value +00 ctl_bus_zero_oe=1; // Force 0x00 on the data bus +FF ctl_bus_ff_oe=1; // Force 0xFF on the data bus + +//----------------------------------------------------------------------------------------- +// ALU +//----------------------------------------------------------------------------------------- +:ALU +// Controls the master ALU output enable and the ALU input, only one can be active at a time +// >bs if set, will override >s0 which is used by bit instructions to override default M1/T3 load +< ctl_alu_oe=1; // Enable ALU onto the data bus +>s0 ctl_alu_shift_oe=~ctl_alu_bs_oe; // Shifter unit without shift-enable +>s1 ctl_alu_shift_oe=1; ctl_shift_en=1; // Shifter unit AND shift enable! +>bs ctl_alu_bs_oe=1; // Bit-selector unit + +:ALU bus +// Controls the writer to the internal ALU bus +op1 ctl_alu_op1_oe=1; // OP1 latch +op2 ctl_alu_op2_oe=1; // OP2 latch +res ctl_alu_res_oe=1; // Result latch + +:op2 latch +// Controls a MUX to select the input to the OP2 latch +bus ctl_alu_op2_sel_bus=1; // Internal bus +lq ctl_alu_op2_sel_lq=1; // Cross-bus wire (see schematic) +0 ctl_alu_op2_sel_zero=1; // Zero + +:op1 latch +// Controls a MUX to select the input to the OP1 latch +bus ctl_alu_op1_sel_bus=1; // Internal bus +low ctl_alu_op1_sel_low=1; // Write low nibble with a high nibble +0 ctl_alu_op1_sel_zero=1; // Zero + +:operation +// Defines the ALU core compute operation +// The listing is also showing their alternate formats (using if/then) +//----------------------------------------------------------------------------------------- +CP ctl_alu_sel_op2_neg=1; ctl_flags_cf_set|=ctl_alu_op_low; ctl_alu_core_hf|=~ctl_alu_op_low; +// ctl_alu_sel_op2_neg=1; +// if (ctl_alu_op_low) begin +// ctl_flags_cf_set=1; +// end else begin +// ctl_alu_core_hf=1; +// end +//----------------------------------------------------------------------------------------- +SUB ctl_alu_sel_op2_neg=1; ctl_flags_cf_set|=ctl_alu_op_low; ctl_alu_core_hf|=~ctl_alu_op_low; +// ctl_alu_sel_op2_neg=1; +// if (ctl_alu_op_low) begin +// ctl_flags_cf_set=1; +// end else begin +// ctl_alu_core_hf=1; +// end +//----------------------------------------------------------------------------------------- +SBC ctl_alu_sel_op2_neg=1; ctl_flags_cf_cpl|=ctl_alu_op_low; ctl_alu_core_hf|=~ctl_alu_op_low; +// ctl_alu_sel_op2_neg=1; +// if (ctl_alu_op_low) begin +// ctl_flags_cf_cpl=1; +// end else begin +// ctl_alu_core_hf=1; +// end +//----------------------------------------------------------------------------------------- +SBCh ctl_alu_sel_op2_neg=1; ctl_alu_core_hf|=~ctl_alu_op_low; +// ctl_alu_sel_op2_neg=1; +// if (~ctl_alu_op_low) begin +// ctl_alu_core_hf=1; +// end +//----------------------------------------------------------------------------------------- +ADC ctl_alu_core_hf|=~ctl_alu_op_low; +// if (~ctl_alu_op_low) begin +// ctl_alu_core_hf=1; +// end +//----------------------------------------------------------------------------------------- +ADD ctl_flags_cf_set|=ctl_alu_op_low; ctl_flags_cf_cpl|=ctl_alu_op_low; ctl_alu_core_hf|=~ctl_alu_op_low; +// if (ctl_alu_op_low) begin +// ctl_flags_cf_set=1; ctl_flags_cf_cpl=1; +// end else begin +// ctl_alu_core_hf=1; +// end +//----------------------------------------------------------------------------------------- +AND ctl_alu_core_S=1; ctl_flags_cf_set=1; +OR ctl_alu_core_R=1; ctl_alu_core_V=1; ctl_alu_core_S=1; ctl_flags_cf_set=1; ctl_flags_cf_cpl=1; +XOR ctl_alu_core_R=1; ctl_flags_cf_set=1; ctl_flags_cf_cpl=1; +NAND ctl_alu_core_S=1; ctl_flags_cf_set=1; ctl_alu_sel_op2_neg=1; +NOR ctl_alu_core_R=1; ctl_alu_core_V=1; ctl_alu_core_S=1; ctl_flags_cf_set=1; ctl_flags_cf_cpl=1; ctl_alu_sel_op2_neg=1; +//----------------------------------------------------------------------------------------- + +PLA ctl_state_alu=1; // Assert the ALU PLA modifier to determine operation + +:nibble +// ALU compute phase: working on low nibble or high nibble +L ctl_alu_op_low=1; // Activate ALU operation on low nibble +H ctl_alu_sel_op2_high=1; // Activate ALU operation on high nibble + +//----------------------------------------------------------------------------------------- +// FLAGT +//----------------------------------------------------------------------------------------- +:FLAGT +< ctl_flags_oe=1; // Enable FLAGT onto the data bus +> ctl_flags_bus=1; // Load FLAGT from the data bus +alu ctl_flags_alu=1; // Load FLAGT from the ALU + +// Write enables for various flag bits and segments +:SZ +* ctl_flags_sz_we=1; +:XY +* ctl_flags_xy_we=1; +? +:HF +* ctl_flags_hf_we=1; +W2 ctl_flags_hf2_we=1; // Write HF2 flag (DAA only) +:PF +* ctl_flags_pf_we=1; +P ctl_flags_pf_we=1; ctl_pf_sel=`PFSEL_P; +V ctl_flags_pf_we=1; ctl_pf_sel=`PFSEL_V; +iff2 ctl_flags_pf_we=1; ctl_pf_sel=`PFSEL_IFF2; +REP ctl_flags_pf_we=1; ctl_pf_sel=`PFSEL_REP; +? +:NF +* ctl_flags_nf_we=1; // Previous NF, to be used when loading FLAGT +0 ctl_flags_nf_we=1; ctl_flags_nf_clr=1; +1 ctl_flags_nf_we=1; ctl_flags_nf_set=1; +S ctl_flags_nf_we=1; // Sign bit, to be used with FLAGT source set to "alu" +? +:CF +* ctl_flags_cf_we=1; +0 ctl_flags_cf_set=1; ctl_flags_cf_cpl=1; // Clear CF going into the ALU core +1 ctl_flags_cf_set=1; // Set CF going into the ALU core +^ ctl_flags_cf_we=1; ctl_flags_cf_cpl=1; // CCF +:CF2 +R ctl_flags_use_cf2=1; +W ctl_flags_cf2_we=1; +W.sh ctl_flags_cf2_we=1; ctl_flags_cf2_sel_shift=1; +W.daa ctl_flags_cf2_we=1; ctl_flags_cf2_sel_daa=1; + +//------------------------------------------------------------------------------------------ +// Macros for some special cases; also simplifies control logic for a number of instructions +//------------------------------------------------------------------------------------------ +:Special +USE_SP ctl_reg_use_sp=1; // For 16-bit loads: use SP instead of AF + +// A few more specific states and instructions: +Ex_DE_HL ctl_reg_ex_de_hl=1; // EX DE,HL +Ex_AF_AF' ctl_reg_ex_af=1; // EX AF,AF' +EXX ctl_reg_exx=1; // EXX +HALT ctl_state_halt_set=1; // Enter HALT state +DI_EI ctl_iffx_bit=op3; ctl_iffx_we=1; // DI/EI +IM ctl_im_we=1; // IM n ('n' is read by opcode[4:3]) + +WZ=IX+d ixy_d=1; // Compute WZ=IX+d +IX_IY ctl_state_ixiy_we=1; ctl_state_iy_set=op5; setIXIY=1; // IX/IY prefix +CLR_IX_IY ctl_state_ixiy_we=1; ctl_state_ixiy_clr=~setIXIY; // Clear IX/IY flag if not explicitly set + +CB ctl_state_tbl_we=1; ctl_state_tbl_cb_set=1; // CB-table prefix +ED ctl_state_tbl_we=1; ctl_state_tbl_ed_set=1; // ED-table prefix +CLR_CB_ED ctl_state_tbl_we=1; // Clear CB/ED prefix if not explicitly set + +// If the NF is set, complement HF and CF on the way out to the bus +// This is used to correctly set those flags after subtraction operations +?NF_HF_CF ctl_flags_hf_cpl=flags_nf; ctl_flags_cf_cpl=flags_nf; +?NF_HF ctl_flags_hf_cpl=flags_nf; +?~CF_HF ctl_flags_hf_cpl=~flags_cf; // Used for CCF +?SF_NEG ctl_alu_sel_op2_neg=flags_sf; +NEG_OP2 ctl_alu_sel_op2_neg=1; +?NF_SUB ctl_alu_sel_op2_neg=flags_nf; ctl_flags_cf_cpl=~flags_nf; + +// M1 opcode read cycle and the refresh register increment cycle +// Write opcode into the instruction register through internal db0 bus: +OpcodeToIR ctl_ir_we=1; + +// At the common instruction load M1/T3, override opcode byte when servicing interrupts: +// 1. We are in HALT mode: push NOP (0x00) instead +// 2. We are in INTR mode (IM1 or IM2): push RST38 (0xFF) instead +// 3. We are in NMI mode: push RST38 (0xFF) instead +OverrideIR ctl_bus_zero_oe=in_halt; ctl_bus_ff_oe=(in_intr & (im1 | im2)) | in_nmi; + +// RST instruction uses opcode[5:3] to specify a vector and this macro passes those 3 bits through +MASK_543 ctl_sw_mask543_en=~((in_intr & im2) | in_nmi); +// Based on the in_nmi state: +// 1. Disable SW1 so the opcode will not get onto db1 bus +// 2. Generate 0x66 on the db1 bus which will be used as the target vector address +// 3. Clear IFF1 (done by the nmi logic on posedge of in_nmi) +RST_NMI ctl_sw_1d=~in_nmi; ctl_66_oe=in_nmi; +// Based on the in_intr state: +// 1. IM1 mode, force 0xFF on the db0 bus +// 2. Clear IFF1 and IFF2 (done by the intr logic on posedge of in_intr) +RST_INT ctl_bus_ff_oe=in_intr & im1; +RETN ctl_iff1_iff2=1; // RETN copies IFF2 into IFF1 +NO_INTS ctl_no_ints=1; // Disable interrupt generation for this opcode (DI/EI/CB/ED/DD/FD) + +EvalCond ctl_eval_cond=1; // Evaluate flags condition based on the opcode[5:3] +CondShort ctl_cond_short=1; // M1/T3 only: force a short flags condition (SS) +Limit6 ctl_inc_limit6=1; // Limit the incrementer to 6 bits +DAA ctl_daa_oe=1; // Write DAA correction factor to the bus +ZERO_16BIT ctl_alu_zero_16bit=1; // 16-bit arithmetic operation uses ZF calculated over 2 bytes +NonRep nonRep=1; // Non-repeating block instruction +WriteBC=1 ctl_repeat_we=1; // Update repeating flag latch with BC=1 status +NOT_PC! ctl_reg_not_pc=1; // For M1/T1 load from a register other than PC diff --git a/cpu/copyleft.txt b/cpu/copyleft.txt new file mode 100644 index 0000000..9cb0dd4 --- /dev/null +++ b/cpu/copyleft.txt @@ -0,0 +1,13 @@ +//---------------------------------------------------------------------------- +// A-Z80 CPU Copyright (C) 2014,2017 Goran Devic, www.baltazarstudios.com +// +// This program is free software; you can redistribute it and/or modify it +// under the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 2 of the License, or (at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +// more details. +//---------------------------------------------------------------------------- diff --git a/cpu/export.py b/cpu/export.py new file mode 100644 index 0000000..86083a5 --- /dev/null +++ b/cpu/export.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +# +# Run this script to export necessary CPU files away and into your project. +# +#------------------------------------------------------------------------------- +# Copyright (C) 2014,2018 Goran Devic, www.baltazarstudios.com +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +#------------------------------------------------------------------------------- +import sys +import os +from shutil import copyfile + +if len(sys.argv) != 2: + print ("\nUsage: export.py \n") + print ("Exports all necessary A-Z80 Verilog files to a project folder of your choice.") + exit(-1) + +dest = sys.argv[1] +total = 0 + +if not os.path.exists(dest): + print ("ERROR: Destination folder does not exist!") + exit(-1) + +if not os.path.isdir(dest): + print ("ERROR: Destination is not a directory!") + exit(-1) + +with open('top-level-files.txt') as f: + files = f.read().splitlines() + +with open('copyleft.txt') as f: + copyleft = f.read() + +# Read and copy each file from the list of input files +for infile in files: + if infile.startswith('+'): + infile = infile[2:] + if infile.startswith('Files='): + files = int(infile[6:]) + if total != files: + print ("ERROR: Incorrect number of files copied!") + exit(-1) + else: + print ("\nDone copying {0} files.\n".format(files)) + if not os.path.isfile(infile): + continue + name = os.path.basename(infile) + print ('Copying', infile) + with open(dest + '/' + name, 'wt') as f: + f.write(copyleft) + with open(infile) as g: + f.write(g.read()) + total += 1 + +print ("All necessary A-Z80 CPU files are copied to", dest) +print ("Add all Verilog files (*.v) to your project and ensure that Verilog include") +print ("files (*.vh) are on the include path.\n") +print ("Use z80_top_direct_n.v as your top-level interface file.\n") +print ("Note for the users of Lattice FPGA toolset: instead of data_pins.v, manually") +print ("copy and use data_pins_lattice.v file instead.") diff --git a/cpu/readme.txt b/cpu/readme.txt new file mode 100644 index 0000000..723dc43 --- /dev/null +++ b/cpu/readme.txt @@ -0,0 +1,33 @@ +A-Z80 Logic Design +================== +Each functional block contains a Quartus project file: +.//test_.qpf + +Quartus projects are only used as containers for files within individual +modules; complete and working top-level solutions that use A-Z80 are in the +"host" folder. + +Majority of sub-modules are designed in the Quartus schematic editor and then +exported to Verilog for simulation and top-level integration. + +Simulation +========== +Before you can load and simulate any module through Modelsim, you need to set up +the environment by running 'modelsim_setup.py'. The script creates relative file +path mapping to source files in all module project folders. + +Each functional block, including the top level, contains a Modelsim simulation +profile: .//simulation/modelsim/test_.mpf + +After opening a Modelsim session, create a library and compile sources: +ModelSim> vlib work +Compile->Compile All +Run a simulation through one of the defined configurations. + +If you get a message "Unable to compile", you likely forgot to run 'modelsim_setup.py'. +Exit ModelSim, revert changes to ".mpf" file, delete "work" folder and run +'modelsim_setup.py'. + +Each project contains a set of predefined waveform scripts which you can +load before running a simulation: +.//simulation/modelsim/wave_.do diff --git a/cpu/registers/reg_control.bdf b/cpu/registers/reg_control.bdf new file mode 100644 index 0000000..df58e2a --- /dev/null +++ b/cpu/registers/reg_control.bdf @@ -0,0 +1,3666 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 120 208 136) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_gp_sel[1..0]" (rect 9 0 105 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1200 208 1216) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_sys_hilo[1..0]" (rect 9 0 115 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 456 208 472) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_exx" (rect 9 0 65 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 816 208 832) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_ex_af" (rect 9 0 76 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 384 208 400) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_ex_de_hl" (rect 9 0 91 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1008 208 1024) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_use_sp" (rect 9 0 83 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 88 208 104) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_gp_hilo[1..0]" (rect 9 0 108 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 528 208 544) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nreset" (rect 9 0 39 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1432 208 1448) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_sel_pc" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1400 208 1416) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_sel_ir" (rect 9 0 73 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1504 208 1520) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_sel_wz" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 56 208 72) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_gp_we" (rect 9 0 78 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1472 208 1488) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_not_pc" (rect 9 0 80 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 688 208 704) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "use_ixiy" (rect 9 0 50 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 768 208 784) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "use_ix" (rect 9 0 40 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1168 208 1184) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_sys_we_lo" (rect 9 0 99 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1104 208 1120) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_sys_we_hi" (rect 9 0 99 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1136 208 1152) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_reg_sys_we" (rect 9 0 85 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 472 208 488) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "clk" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 1304 208 1320) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "ctl_sw_4d" (rect 9 0 57 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 848 208 864) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "nhold_clk_wait" (rect 9 0 79 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (output) + (rect 1144 216 1320 232) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_bc" (rect 90 0 143 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 160 1320 176) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_bc2" (rect 90 0 149 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 728 1320 744) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_ix" (rect 90 0 139 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 784 1320 800) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_iy" (rect 90 0 140 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1232 544 1408 560) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_de" (rect 90 0 143 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1232 648 1408 664) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_hl" (rect 90 0 139 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1232 344 1408 360) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_de2" (rect 90 0 149 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1232 440 1408 456) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_hl2" (rect 90 0 145 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 904 1320 920) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_af" (rect 90 0 141 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 848 1320 864) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_af2" (rect 90 0 147 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 1504 1320 1520) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_wz" (rect 90 0 143 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 1440 1320 1456) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_pc" (rect 90 0 143 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 1400 1320 1416) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_ir" (rect 90 0 137 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 1000 1320 1016) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_sp" (rect 90 0 143 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 120 1320 136) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_gp_hi" (rect 90 0 157 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 88 1320 104) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_gp_lo" (rect 90 0 157 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 1200 1320 1216) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_sys_lo" (rect 90 0 164 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 1232 1320 1248) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sel_sys_hi" (rect 90 0 164 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 56 1320 72) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_gp_we" (rect 90 0 141 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 1160 1320 1176) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sys_we_lo" (rect 90 0 163 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 1112 1320 1128) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sys_we_hi" (rect 90 0 163 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 1272 1320 1288) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sw_4d_lo" (rect 90 0 156 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(pin + (output) + (rect 1144 1328 1320 1344) + (text "OUTPUT" (rect 1 0 39 10)(font "Arial" (font_size 6))) + (text "reg_sw_4d_hi" (rect 90 0 156 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 0 8)(pt 52 8)) + (line (pt 52 4)(pt 78 4)) + (line (pt 52 12)(pt 78 12)) + (line (pt 52 12)(pt 52 4)) + (line (pt 78 4)(pt 82 8)) + (line (pt 82 8)(pt 78 12)) + (line (pt 78 12)(pt 82 8)) + ) +) +(symbol + (rect 328 136 376 168) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst5" (rect 3 21 26 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 328 168 376 200) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst6" (rect 3 21 26 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 584 144 648 192) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst8" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 328 296 376 328) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst14" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 328 600 376 632) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst17" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 616 608 680 656) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst12" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 616 664 680 712) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst16" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 544 624 592 656) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst19" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 944 784 992 816) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst21" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 944 616 1008 664) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i2" (rect 3 37 11 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 944 664 1008 712) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i3" (rect 3 37 11 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 440 480 488 512) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "i7" (rect 3 21 11 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 584 376 648 424) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst18" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 680 928 744 976) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i10" (rect 3 37 17 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 680 984 744 1032) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i11" (rect 3 37 17 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 552 944 600 976) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "i12" (rect 3 21 17 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 1024 888 1088 936) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i1" (rect 3 37 11 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1024 712 1088 760) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i13" (rect 3 37 17 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 584 488 648 536) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i14" (rect 3 37 17 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1024 768 1088 816) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i15" (rect 3 37 17 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1024 832 1088 880) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i16" (rect 3 37 17 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 944 888 992 920) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "i17" (rect 3 21 17 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 584 200 648 248) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i0" (rect 3 37 11 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 776 456 824 488) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst1" (rect 3 21 26 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 776 344 824 376) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst22" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 1040 640 1104 688) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst27" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 944 512 1008 560) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i8" (rect 3 37 11 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 944 560 1008 608) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i9" (rect 3 37 11 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1040 536 1104 584) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst31" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 944 408 1008 456) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i18" (rect 3 37 17 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 944 456 1008 504) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i19" (rect 3 37 17 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1040 432 1104 480) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst32" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 944 312 1008 360) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i20" (rect 3 37 17 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 944 360 1008 408) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i21" (rect 3 37 17 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1040 336 1104 384) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst33" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 1152 528 1216 576) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i22" (rect 3 37 17 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1152 632 1216 680) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i23" (rect 3 37 17 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1152 328 1216 376) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i24" (rect 3 37 17 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 1152 424 1216 472) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "i25" (rect 3 37 17 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 432 136 496 184) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 37 20 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 432 280 496 328) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst2" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 432 600 496 648) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst3" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 432 920 496 968) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst4" (rect 3 37 26 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 680 1424 744 1472) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst11" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 552 1464 600 1496) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst13" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 680 1096 744 1144) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst10" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 680 1144 744 1192) + (text "OR2" (rect 1 0 19 10)(font "Arial" (font_size 6))) + (text "inst15" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 15 32)) + ) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 15 16)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 48 24)(pt 64 24)) + ) + (drawing + (line (pt 14 36)(pt 25 36)) + (line (pt 14 13)(pt 25 13)) + (arc (pt 7 29)(pt 7 19)(rect -14 8 19 41)) + (arc (pt 49 24)(pt 25 13)(rect -6 13 57 76)) + (arc (pt 25 35)(pt 49 24)(rect -6 -27 57 36)) + ) +) +(symbol + (rect 552 1328 600 1360) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst23" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 840 1312 904 1360) + (text "AND2" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst28" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 0 32) + (input) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 14 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 42 24)(pt 64 24)) + ) + (drawing + (line (pt 14 12)(pt 30 12)) + (line (pt 14 37)(pt 31 37)) + (line (pt 14 12)(pt 14 37)) + (arc (pt 31 37)(pt 30 12)(rect 18 12 43 37)) + ) +) +(symbol + (rect 760 1328 808 1360) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst25" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 680 1320 744 1368) + (text "AND3" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "inst29" (rect 3 37 32 49)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 16 16)) + ) + (port + (pt 0 24) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (line (pt 0 24)(pt 16 24)) + ) + (port + (pt 0 32) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 64 24) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 48 15 62 27)(font "Courier New" (bold))(invisible)) + (line (pt 43 24)(pt 64 24)) + ) + (drawing + (line (pt 16 12)(pt 31 12)) + (line (pt 16 37)(pt 31 37)) + (line (pt 16 12)(pt 16 37)) + (arc (pt 31 36)(pt 31 12)(rect 19 12 44 37)) + ) +) +(symbol + (rect 680 800 744 880) + (text "TFFE" (rect 1 0 24 10)(font "Arial" (font_size 6))) + (text "inst20" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "T" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "T" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 49 31 61)(font "Courier New" (bold))) + (text "ENA" (rect 14 49 31 61)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 3)(pt 32 0)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 45 20 50 32)(font "Courier New" (bold))) + (text "Q" (rect 43 20 47 32)(font "Courier New" (bold))) + (line (pt 52 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 68 36 76)) + (circle (rect 28 4 36 12)) + ) +) +(symbol + (rect 680 376 744 456) + (text "TFFE" (rect 1 0 24 10)(font "Arial" (font_size 6))) + (text "inst30" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "T" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "T" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 49 31 61)(font "Courier New" (bold))) + (text "ENA" (rect 14 49 31 61)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 3)(pt 32 0)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 45 20 50 32)(font "Courier New" (bold))) + (text "Q" (rect 43 20 47 32)(font "Courier New" (bold))) + (line (pt 52 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 68 36 76)) + (circle (rect 28 4 36 12)) + ) +) +(symbol + (rect 680 488 744 568) + (text "TFFE" (rect 1 0 24 10)(font "Arial" (font_size 6))) + (text "inst34" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "T" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "T" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 49 31 61)(font "Courier New" (bold))) + (text "ENA" (rect 14 49 31 61)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 3)(pt 32 0)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 45 20 50 32)(font "Courier New" (bold))) + (text "Q" (rect 43 20 47 32)(font "Courier New" (bold))) + (line (pt 52 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 68 36 76)) + (circle (rect 28 4 36 12)) + ) +) +(symbol + (rect 336 440 400 520) + (text "TFFE" (rect 1 0 24 10)(font "Arial" (font_size 6))) + (text "inst35" (rect 3 68 32 80)(font "Arial" )) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "T" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "T" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 49 31 61)(font "Courier New" (bold))) + (text "ENA" (rect 14 49 31 61)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 3)(pt 32 0)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 45 20 50 32)(font "Courier New" (bold))) + (text "Q" (rect 43 20 47 32)(font "Courier New" (bold))) + (line (pt 52 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 68 36 76)) + (circle (rect 28 4 36 12)) + ) +) +(connector + (pt 616 680) + (pt 600 680) +) +(connector + (pt 600 680) + (pt 600 624) +) +(connector + (pt 528 640) + (pt 528 696) +) +(connector + (pt 592 640) + (pt 616 640) +) +(connector + (pt 544 640) + (pt 528 640) +) +(connector + (pt 432 632) + (pt 264 632) +) +(connector + (pt 288 616) + (pt 328 616) +) +(connector + (pt 376 616) + (pt 432 616) +) +(connector + (pt 432 296) + (pt 288 296) +) +(connector + (pt 264 312) + (pt 328 312) +) +(connector + (pt 432 312) + (pt 376 312) +) +(connector + (pt 776 360) + (pt 760 360) +) +(connector + (pt 1024 640) + (pt 1024 656) +) +(connector + (pt 1024 672) + (pt 1024 688) +) +(connector + (pt 1024 536) + (pt 1024 552) +) +(connector + (pt 1024 568) + (pt 1024 584) +) +(connector + (pt 1024 432) + (pt 1024 448) +) +(connector + (pt 1024 464) + (pt 1024 480) +) +(connector + (pt 1024 336) + (pt 1024 352) +) +(connector + (pt 1024 368) + (pt 1024 384) +) +(connector + (pt 1024 672) + (pt 1040 672) +) +(connector + (pt 1024 656) + (pt 1040 656) +) +(connector + (pt 1024 568) + (pt 1040 568) +) +(connector + (pt 1024 552) + (pt 1040 552) +) +(connector + (pt 1024 464) + (pt 1040 464) +) +(connector + (pt 1024 448) + (pt 1040 448) +) +(connector + (pt 1024 368) + (pt 1040 368) +) +(connector + (pt 1024 352) + (pt 1040 352) +) +(connector + (pt 944 544) + (pt 904 544) +) +(connector + (pt 944 576) + (pt 856 576) +) +(connector + (pt 944 592) + (pt 920 592) +) +(connector + (pt 944 632) + (pt 856 632) +) +(connector + (pt 944 648) + (pt 904 648) +) +(connector + (pt 944 680) + (pt 840 680) +) +(connector + (pt 944 696) + (pt 920 696) +) +(connector + (pt 944 328) + (pt 872 328) +) +(connector + (pt 944 344) + (pt 904 344) +) +(connector + (pt 944 392) + (pt 920 392) +) +(connector + (pt 944 424) + (pt 888 424) +) +(connector + (pt 944 440) + (pt 904 440) +) +(connector + (pt 944 472) + (pt 872 472) +) +(connector + (pt 944 488) + (pt 920 488) +) +(connector + (pt 888 376) + (pt 944 376) +) +(connector + (pt 824 360) + (pt 888 360) +) +(connector + (pt 1008 640) + (pt 1024 640) +) +(connector + (pt 1008 688) + (pt 1024 688) +) +(connector + (pt 1008 536) + (pt 1024 536) +) +(connector + (pt 1008 584) + (pt 1024 584) +) +(connector + (pt 1008 432) + (pt 1024 432) +) +(connector + (pt 1008 480) + (pt 1024 480) +) +(connector + (pt 1008 336) + (pt 1024 336) +) +(connector + (pt 1008 384) + (pt 1024 384) +) +(connector + (pt 1104 560) + (pt 1152 560) +) +(connector + (pt 1104 664) + (pt 1152 664) +) +(connector + (pt 1104 456) + (pt 1152 456) +) +(connector + (pt 1216 552) + (pt 1232 552) +) +(connector + (pt 1216 656) + (pt 1232 656) +) +(connector + (pt 1216 352) + (pt 1232 352) +) +(connector + (pt 1216 448) + (pt 1232 448) +) +(connector + (pt 1104 360) + (pt 1152 360) +) +(connector + (pt 928 744) + (pt 1024 744) +) +(connector + (pt 1088 736) + (pt 1144 736) +) +(connector + (pt 1008 784) + (pt 1024 784) +) +(connector + (pt 1008 728) + (pt 1008 784) +) +(connector + (pt 928 800) + (pt 944 800) +) +(connector + (pt 992 800) + (pt 1024 800) +) +(connector + (pt 1088 792) + (pt 1144 792) +) +(connector + (pt 1008 864) + (pt 1024 864) +) +(connector + (pt 928 848) + (pt 1024 848) +) +(connector + (pt 1008 920) + (pt 1024 920) +) +(connector + (pt 928 904) + (pt 944 904) +) +(connector + (pt 992 904) + (pt 1024 904) +) +(connector + (pt 1088 856) + (pt 1144 856) +) +(connector + (pt 1088 912) + (pt 1144 912) +) +(connector + (pt 1008 952) + (pt 744 952) +) +(connector + (pt 1144 1008) + (pt 744 1008) +) +(connector + (pt 640 944) + (pt 640 1000) +) +(connector + (pt 680 1000) + (pt 640 1000) +) +(connector + (pt 528 1016) + (pt 528 960) +) +(connector + (pt 680 960) + (pt 600 960) +) +(connector + (pt 528 960) + (pt 552 960) +) +(connector + (pt 424 464) + (pt 424 496) +) +(connector + (pt 440 496) + (pt 424 496) +) +(connector + (pt 496 624) + (pt 600 624) +) +(connector + (pt 600 624) + (pt 616 624) +) +(connector + (pt 904 320) + (pt 904 344) +) +(connector + (pt 920 488) + (pt 920 592) +) +(connector + (pt 920 592) + (pt 920 696) +) +(connector + (pt 888 320) + (pt 888 360) +) +(connector + (pt 888 360) + (pt 888 376) +) +(connector + (pt 888 376) + (pt 888 424) +) +(connector + (pt 888 424) + (pt 888 688) +) +(connector + (pt 856 576) + (pt 856 632) +) +(connector + (pt 856 632) + (pt 856 688) +) +(connector + (pt 872 320) + (pt 872 328) +) +(connector + (pt 872 472) + (pt 872 688) +) +(connector + (pt 840 680) + (pt 840 688) +) +(connector + (pt 904 344) + (pt 904 440) +) +(connector + (pt 904 440) + (pt 904 544) +) +(connector + (pt 904 544) + (pt 904 648) +) +(connector + (pt 904 648) + (pt 904 704) +) +(connector + (pt 928 744) + (pt 928 776) +) +(connector + (pt 928 776) + (pt 928 800) +) +(connector + (pt 1008 864) + (pt 1008 920) +) +(connector + (pt 1008 920) + (pt 1008 952) +) +(connector + (pt 496 944) + (pt 640 944) +) +(connector + (pt 640 944) + (pt 680 944) +) +(connector + (pt 208 1016) + (pt 528 1016) +) +(connector + (pt 528 1016) + (pt 680 1016) +) +(connector + (pt 400 464) + (pt 424 464) +) +(connector + (pt 496 304) + (pt 920 304) +) +(connector + (pt 520 408) + (pt 584 408) +) +(connector + (pt 920 304) + (pt 920 392) +) +(connector + (pt 920 392) + (pt 920 488) +) +(connector + (pt 432 952) + (pt 264 952) +) +(connector + (pt 432 936) + (pt 288 936) +) +(connector + (pt 288 152) + (pt 328 152) +) +(connector + (pt 432 152) + (pt 376 152) +) +(connector + (pt 264 184) + (pt 328 184) +) +(connector + (pt 264 632) + (pt 264 952) +) +(connector + (text "ctl_reg_gp_sel[1]" (rect 248 537 260 620)(font "Arial" )(vertical)) + (pt 264 312) + (pt 264 632) +) +(connector + (pt 208 128) + (pt 264 128) + (bus) +) +(connector + (pt 264 128) + (pt 288 128) + (bus) +) +(connector + (pt 264 128) + (pt 264 184) +) +(connector + (pt 264 184) + (pt 264 312) +) +(connector + (pt 288 128) + (pt 288 152) +) +(connector + (pt 288 152) + (pt 288 296) +) +(connector + (text "ctl_reg_gp_sel[0]" (rect 268 533 280 616)(font "Arial" )(vertical)) + (pt 288 296) + (pt 288 616) +) +(connector + (pt 288 616) + (pt 288 936) +) +(connector + (pt 1120 544) + (pt 1152 544) +) +(connector + (pt 1120 280) + (pt 1120 544) +) +(connector + (pt 1120 648) + (pt 1152 648) +) +(connector + (pt 1120 544) + (pt 1120 648) +) +(connector + (pt 1120 648) + (pt 1120 680) +) +(connector + (pt 1136 344) + (pt 1152 344) +) +(connector + (pt 1136 264) + (pt 1136 344) +) +(connector + (pt 1136 440) + (pt 1152 440) +) +(connector + (pt 1136 344) + (pt 1136 440) +) +(connector + (pt 1136 440) + (pt 1136 680) +) +(connector + (pt 520 264) + (pt 1136 264) +) +(connector + (pt 536 280) + (pt 1120 280) +) +(connector + (pt 648 224) + (pt 1144 224) +) +(connector + (pt 1144 168) + (pt 648 168) +) +(connector + (pt 520 176) + (pt 584 176) +) +(connector + (pt 560 160) + (pt 560 216) +) +(connector + (pt 584 216) + (pt 560 216) +) +(connector + (pt 496 160) + (pt 560 160) +) +(connector + (pt 560 160) + (pt 584 160) +) +(connector + (text "ctl_reg_gp_hilo[1]" (rect 1030 112 1116 124)(font "Arial" )) + (pt 1008 128) + (pt 1144 128) +) +(connector + (pt 1008 96) + (pt 208 96) + (bus) +) +(connector + (pt 1008 96) + (pt 1008 128) + (bus) +) +(connector + (text "ctl_reg_gp_hilo[0]" (rect 1029 80 1115 92)(font "Arial" )) + (pt 1008 96) + (pt 1144 96) +) +(connector + (pt 208 64) + (pt 1144 64) +) +(connector + (pt 376 184) + (pt 408 184) +) +(connector + (pt 432 168) + (pt 408 168) +) +(connector + (pt 408 168) + (pt 408 184) +) +(connector + (pt 528 696) + (pt 616 696) +) +(connector + (pt 208 696) + (pt 528 696) +) +(connector + (pt 208 776) + (pt 928 776) +) +(connector + (pt 744 1168) + (pt 1144 1168) +) +(connector + (pt 744 1120) + (pt 1144 1120) +) +(connector + (pt 680 1176) + (pt 208 1176) +) +(connector + (pt 680 1128) + (pt 640 1128) +) +(connector + (pt 680 1160) + (pt 640 1160) +) +(connector + (pt 640 1128) + (pt 640 1144) +) +(connector + (pt 640 1144) + (pt 640 1160) +) +(connector + (text "bank_exx" (rect 436 448 483 460)(font "Arial" )) + (pt 424 464) + (pt 520 464) +) +(connector + (pt 368 520) + (pt 368 536) +) +(connector + (pt 208 464) + (pt 336 464) +) +(connector + (pt 760 360) + (pt 760 400) +) +(connector + (pt 648 400) + (pt 680 400) +) +(connector + (pt 712 456) + (pt 712 472) +) +(connector + (text "nreset" (rect 664 456 694 468)(font "Arial" )) + (pt 712 472) + (pt 656 472) +) +(connector + (text "clk" (rect 661 400 675 412)(font "Arial" )) + (pt 680 416) + (pt 656 416) +) +(connector + (pt 872 328) + (pt 872 400) +) +(connector + (pt 872 400) + (pt 872 472) +) +(connector + (pt 744 400) + (pt 760 400) +) +(connector + (text "bank_hl_de2" (rect 769 384 830 396)(font "Arial" )) + (pt 760 400) + (pt 872 400) +) +(connector + (pt 944 528) + (pt 936 528) +) +(connector + (pt 584 232) + (pt 536 232) +) +(connector + (pt 776 472) + (pt 760 472) +) +(connector + (pt 856 472) + (pt 824 472) +) +(connector + (pt 584 520) + (pt 536 520) +) +(connector + (pt 560 392) + (pt 560 504) +) +(connector + (pt 584 504) + (pt 560 504) +) +(connector + (pt 760 472) + (pt 760 512) +) +(connector + (pt 680 512) + (pt 648 512) +) +(connector + (text "clk" (rect 662 512 676 524)(font "Arial" )) + (pt 680 528) + (pt 656 528) +) +(connector + (pt 936 528) + (pt 936 512) +) +(connector + (pt 856 320) + (pt 856 472) +) +(connector + (pt 856 472) + (pt 856 576) +) +(connector + (pt 520 464) + (pt 520 536) +) +(connector + (pt 208 392) + (pt 560 392) +) +(connector + (pt 560 392) + (pt 584 392) +) +(connector + (pt 520 176) + (pt 520 264) +) +(connector + (pt 520 264) + (pt 520 408) +) +(connector + (pt 520 408) + (pt 520 464) +) +(connector + (pt 536 232) + (pt 536 280) +) +(connector + (pt 536 520) + (pt 536 536) +) +(connector + (pt 840 320) + (pt 840 512) +) +(connector + (pt 744 512) + (pt 760 512) +) +(connector + (pt 840 512) + (pt 840 680) +) +(connector + (text "bank_hl_de1" (rect 769 496 830 508)(font "Arial" )) + (pt 760 512) + (pt 840 512) +) +(connector + (pt 840 512) + (pt 936 512) +) +(connector + (pt 712 568) + (pt 712 584) +) +(connector + (text "nreset" (rect 663 568 693 580)(font "Arial" )) + (pt 712 584) + (pt 656 584) +) +(connector + (pt 488 496) + (pt 536 496) +) +(connector + (pt 536 280) + (pt 536 496) +) +(connector + (pt 536 496) + (pt 536 520) +) +(connector + (pt 680 632) + (pt 736 632) +) +(connector + (pt 736 632) + (pt 736 704) +) +(connector + (pt 904 704) + (pt 736 704) +) +(connector + (pt 680 688) + (pt 712 688) +) +(connector + (pt 712 688) + (pt 712 728) +) +(connector + (pt 712 728) + (pt 1008 728) +) +(connector + (pt 1008 728) + (pt 1024 728) +) +(connector + (pt 208 536) + (pt 368 536) +) +(connector + (pt 712 896) + (pt 712 880) +) +(connector + (text "nreset" (rect 640 880 670 892)(font "Arial" )) + (pt 712 896) + (pt 632 896) +) +(connector + (pt 208 824) + (pt 680 824) +) +(connector + (text "clk" (rect 642 824 656 836)(font "Arial" )) + (pt 632 840) + (pt 680 840) +) +(connector + (pt 928 824) + (pt 928 848) +) +(connector + (pt 928 848) + (pt 928 904) +) +(connector + (text "bank_af" (rect 772 808 812 820)(font "Arial" )) + (pt 744 824) + (pt 928 824) +) +(connector + (pt 744 1448) + (pt 1144 1448) +) +(connector + (pt 680 1440) + (pt 208 1440) +) +(connector + (pt 208 1512) + (pt 1144 1512) +) +(connector + (text "ctl_reg_sys_hilo[0]" (rect 421 1192 514 1204)(font "Arial" )) + (pt 1144 1208) + (pt 400 1208) +) +(connector + (pt 208 1208) + (pt 400 1208) + (bus) +) +(connector + (pt 400 1208) + (pt 400 1240) + (bus) +) +(connector + (pt 1144 1280) + (pt 400 1280) +) +(connector + (pt 400 1280) + (pt 400 1312) +) +(connector + (pt 680 1344) + (pt 600 1344) +) +(connector + (pt 640 1240) + (pt 640 1336) +) +(connector + (pt 680 1336) + (pt 640 1336) +) +(connector + (text "ctl_reg_sys_hilo[1]" (rect 422 1224 515 1236)(font "Arial" )) + (pt 400 1240) + (pt 640 1240) +) +(connector + (pt 640 1240) + (pt 1144 1240) +) +(connector + (pt 640 1408) + (pt 640 1352) +) +(connector + (pt 680 1352) + (pt 640 1352) +) +(connector + (pt 208 1408) + (pt 640 1408) +) +(connector + (pt 640 1408) + (pt 1144 1408) +) +(connector + (pt 208 1480) + (pt 552 1480) +) +(connector + (pt 680 1456) + (pt 640 1456) +) +(connector + (pt 640 1456) + (pt 640 1480) +) +(connector + (pt 600 1480) + (pt 640 1480) +) +(connector + (pt 744 1344) + (pt 760 1344) +) +(connector + (pt 208 1312) + (pt 400 1312) +) +(connector + (pt 400 1312) + (pt 824 1312) +) +(connector + (pt 808 1344) + (pt 840 1344) +) +(connector + (pt 824 1312) + (pt 824 1328) +) +(connector + (pt 824 1328) + (pt 840 1328) +) +(connector + (pt 904 1336) + (pt 1144 1336) +) +(connector + (pt 208 1112) + (pt 680 1112) +) +(connector + (pt 208 480) + (pt 336 480) +) +(connector + (pt 208 1144) + (pt 640 1144) +) +(connector + (text "reg_sys_we_lo" (rect 407 1328 480 1340)(font "Arial" )) + (pt 400 1344) + (pt 552 1344) +) +(connector + (pt 336 496) + (pt 312 496) +) +(connector + (pt 312 496) + (pt 312 800) +) +(connector + (pt 312 800) + (pt 528 800) +) +(connector + (pt 528 800) + (pt 528 856) +) +(connector + (pt 208 856) + (pt 528 856) +) +(connector + (pt 528 856) + (pt 680 856) +) +(connector + (text "nhold_clk_wait" (rect 608 432 678 444)(font "Arial" )) + (pt 680 432) + (pt 656 432) +) +(connector + (text "nhold_clk_wait" (rect 607 544 677 556)(font "Arial" )) + (pt 680 544) + (pt 656 544) +) +(junction (pt 600 624)) +(junction (pt 264 312)) +(junction (pt 264 632)) +(junction (pt 528 696)) +(junction (pt 288 296)) +(junction (pt 288 616)) +(junction (pt 904 344)) +(junction (pt 904 440)) +(junction (pt 920 392)) +(junction (pt 920 488)) +(junction (pt 920 592)) +(junction (pt 888 360)) +(junction (pt 872 328)) +(junction (pt 888 376)) +(junction (pt 888 424)) +(junction (pt 856 576)) +(junction (pt 856 632)) +(junction (pt 872 472)) +(junction (pt 840 680)) +(junction (pt 904 544)) +(junction (pt 904 648)) +(junction (pt 1008 728)) +(junction (pt 928 776)) +(junction (pt 928 848)) +(junction (pt 1008 920)) +(junction (pt 640 944)) +(junction (pt 528 1016)) +(junction (pt 424 464)) +(junction (pt 520 464)) +(junction (pt 520 408)) +(junction (pt 264 184)) +(junction (pt 264 128)) +(junction (pt 288 152)) +(junction (pt 1120 544)) +(junction (pt 1120 648)) +(junction (pt 1136 344)) +(junction (pt 1136 440)) +(junction (pt 520 264)) +(junction (pt 536 280)) +(junction (pt 560 392)) +(junction (pt 560 160)) +(junction (pt 1008 96)) +(junction (pt 640 1144)) +(junction (pt 760 400)) +(junction (pt 872 400)) +(junction (pt 856 472)) +(junction (pt 536 520)) +(junction (pt 760 512)) +(junction (pt 840 512)) +(junction (pt 536 496)) +(junction (pt 400 1208)) +(junction (pt 400 1312)) +(junction (pt 640 1240)) +(junction (pt 640 1408)) +(junction (pt 528 856)) +(text "BC" (rect 440 120 456 134)(font "Arial" (font_size 8))) +(text "2'b00" (rect 328 120 358 134)(font "Arial" (font_size 8))) +(text "2'b01" (rect 328 280 358 294)(font "Arial" (font_size 8))) +(text "DE" (rect 440 264 455 278)(font "Arial" (font_size 8))) +(text "2'b10" (rect 328 584 358 598)(font "Arial" (font_size 8))) +(text "HL" (rect 440 584 455 598)(font "Arial" (font_size 8))) +(text "2'b11" (rect 328 912 358 926)(font "Arial" (font_size 8))) +(text "AF" (rect 440 904 456 918)(font "Arial" (font_size 8))) +(text "Use AF or SP" (rect 616 912 692 926)(font "Arial" (font_size 8))) +(text "Use SP instead of AF" (rect 232 1000 353 1014)(font "Arial" (font_size 8))) +(text "HL" (rect 704 616 719 630)(font "Arial" (font_size 8))) +(text "de = AC+/AB" (rect 752 592 826 606)(font "Arial" (font_size 8))) +(text "hl = /AC+AB" (rect 752 608 821 622)(font "Arial" (font_size 8))) +(text "System registers control" (rect 600 1064 767 1080)(font "Arial" (font_size 10))) +(text "General Purpose registers control" (rect 592 32 820 48)(font "Arial" (font_size 10))) +(text "Set 0" (rect 752 264 781 278)(font "Arial" (font_size 8))) +(text "Set 1" (rect 752 248 781 262)(font "Arial" (font_size 8))) +(text "Block PC (use for override to WZ, HL for jumps)" (rect 232 1464 503 1478)(font "Arial" (font_size 8))) +(text "Fix bus contention when reading I reg and bypassing int # (used for interrupt handling)" (rect 680 1288 1172 1302)(font "Arial" (font_size 8))) +(title_block + (rect 32 1552 353 1613) + (name "title-custom-medium") + (section (rect 0 0 320 20)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 106 21)(font "Arial" (font_size 12)(bold)))(border)) + (section (rect 130 0 320 20)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "reg_control" (rect 43 2 146 21)(font "Arial" (font_size 12)(bold)))(border)) + (section (rect 0 21 320 40)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 151 19)(font "Arial" (font_size 11)))(border)) + (section (rect 0 41 240 60)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 17, 2014, 2016" (rect 56 3 191 19)(font "Arial" (font_size 10)))(border)) + (section (rect 241 41 320 60)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.5" (rect 43 3 64 19)(font "Arial" (font_size 10)))(border)) + (drawing + ) +) diff --git a/cpu/registers/reg_control.bsf b/cpu/registers/reg_control.bsf new file mode 100644 index 0000000..8d2e96f --- /dev/null +++ b/cpu/registers/reg_control.bsf @@ -0,0 +1,337 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 280 432) + (text "reg_control" (rect 5 0 69 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 400 25 412)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "ctl_reg_gp_we" (rect 0 0 86 14)(font "Arial" (font_size 8))) + (text "ctl_reg_gp_we" (rect 21 27 107 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "ctl_reg_gp_hilo[1..0]" (rect 0 0 114 14)(font "Arial" (font_size 8))) + (text "ctl_reg_gp_hilo[1..0]" (rect 21 43 135 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)(line_width 3)) + ) + (port + (pt 0 64) + (input) + (text "ctl_reg_gp_sel[1..0]" (rect 0 0 112 14)(font "Arial" (font_size 8))) + (text "ctl_reg_gp_sel[1..0]" (rect 21 59 133 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)(line_width 3)) + ) + (port + (pt 0 80) + (input) + (text "ctl_reg_ex_de_hl" (rect 0 0 97 14)(font "Arial" (font_size 8))) + (text "ctl_reg_ex_de_hl" (rect 21 75 118 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "ctl_reg_exx" (rect 0 0 67 14)(font "Arial" (font_size 8))) + (text "ctl_reg_exx" (rect 21 91 88 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 21 107 36 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 0 128) + (input) + (text "nreset" (rect 0 0 36 14)(font "Arial" (font_size 8))) + (text "nreset" (rect 21 123 57 137)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)) + ) + (port + (pt 0 144) + (input) + (text "use_ixiy" (rect 0 0 47 14)(font "Arial" (font_size 8))) + (text "use_ixiy" (rect 21 139 68 153)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)) + ) + (port + (pt 0 160) + (input) + (text "use_ix" (rect 0 0 37 14)(font "Arial" (font_size 8))) + (text "use_ix" (rect 21 155 58 169)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 16 160)) + ) + (port + (pt 0 176) + (input) + (text "ctl_reg_ex_af" (rect 0 0 79 14)(font "Arial" (font_size 8))) + (text "ctl_reg_ex_af" (rect 21 171 100 185)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 16 176)) + ) + (port + (pt 0 192) + (input) + (text "nhold_clk_wait" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "nhold_clk_wait" (rect 21 187 105 201)(font "Arial" (font_size 8))) + (line (pt 0 192)(pt 16 192)) + ) + (port + (pt 0 208) + (input) + (text "ctl_reg_use_sp" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "ctl_reg_use_sp" (rect 21 203 109 217)(font "Arial" (font_size 8))) + (line (pt 0 208)(pt 16 208)) + ) + (port + (pt 0 224) + (input) + (text "ctl_reg_sys_we_hi" (rect 0 0 109 14)(font "Arial" (font_size 8))) + (text "ctl_reg_sys_we_hi" (rect 21 219 130 233)(font "Arial" (font_size 8))) + (line (pt 0 224)(pt 16 224)) + ) + (port + (pt 0 240) + (input) + (text "ctl_reg_sys_we" (rect 0 0 93 14)(font "Arial" (font_size 8))) + (text "ctl_reg_sys_we" (rect 21 235 114 249)(font "Arial" (font_size 8))) + (line (pt 0 240)(pt 16 240)) + ) + (port + (pt 0 256) + (input) + (text "ctl_reg_sys_we_lo" (rect 0 0 109 14)(font "Arial" (font_size 8))) + (text "ctl_reg_sys_we_lo" (rect 21 251 130 265)(font "Arial" (font_size 8))) + (line (pt 0 256)(pt 16 256)) + ) + (port + (pt 0 272) + (input) + (text "ctl_reg_sys_hilo[1..0]" (rect 0 0 121 14)(font "Arial" (font_size 8))) + (text "ctl_reg_sys_hilo[1..0]" (rect 21 267 142 281)(font "Arial" (font_size 8))) + (line (pt 0 272)(pt 16 272)(line_width 3)) + ) + (port + (pt 0 288) + (input) + (text "ctl_sw_4d" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "ctl_sw_4d" (rect 21 283 81 297)(font "Arial" (font_size 8))) + (line (pt 0 288)(pt 16 288)) + ) + (port + (pt 0 304) + (input) + (text "ctl_reg_sel_ir" (rect 0 0 76 14)(font "Arial" (font_size 8))) + (text "ctl_reg_sel_ir" (rect 21 299 97 313)(font "Arial" (font_size 8))) + (line (pt 0 304)(pt 16 304)) + ) + (port + (pt 0 320) + (input) + (text "ctl_reg_sel_pc" (rect 0 0 83 14)(font "Arial" (font_size 8))) + (text "ctl_reg_sel_pc" (rect 21 315 104 329)(font "Arial" (font_size 8))) + (line (pt 0 320)(pt 16 320)) + ) + (port + (pt 0 336) + (input) + (text "ctl_reg_not_pc" (rect 0 0 84 14)(font "Arial" (font_size 8))) + (text "ctl_reg_not_pc" (rect 21 331 105 345)(font "Arial" (font_size 8))) + (line (pt 0 336)(pt 16 336)) + ) + (port + (pt 0 352) + (input) + (text "ctl_reg_sel_wz" (rect 0 0 88 14)(font "Arial" (font_size 8))) + (text "ctl_reg_sel_wz" (rect 21 347 109 361)(font "Arial" (font_size 8))) + (line (pt 0 352)(pt 16 352)) + ) + (port + (pt 264 32) + (output) + (text "reg_gp_we" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "reg_gp_we" (rect 177 27 243 41)(font "Arial" (font_size 8))) + (line (pt 264 32)(pt 248 32)) + ) + (port + (pt 264 48) + (output) + (text "reg_sel_gp_lo" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "reg_sel_gp_lo" (rect 163 43 243 57)(font "Arial" (font_size 8))) + (line (pt 264 48)(pt 248 48)) + ) + (port + (pt 264 64) + (output) + (text "reg_sel_gp_hi" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "reg_sel_gp_hi" (rect 163 59 243 73)(font "Arial" (font_size 8))) + (line (pt 264 64)(pt 248 64)) + ) + (port + (pt 264 80) + (output) + (text "reg_sel_bc2" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "reg_sel_bc2" (rect 173 75 243 89)(font "Arial" (font_size 8))) + (line (pt 264 80)(pt 248 80)) + ) + (port + (pt 264 96) + (output) + (text "reg_sel_bc" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "reg_sel_bc" (rect 180 91 243 105)(font "Arial" (font_size 8))) + (line (pt 264 96)(pt 248 96)) + ) + (port + (pt 264 112) + (output) + (text "reg_sel_de2" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "reg_sel_de2" (rect 173 107 243 121)(font "Arial" (font_size 8))) + (line (pt 264 112)(pt 248 112)) + ) + (port + (pt 264 128) + (output) + (text "reg_sel_hl2" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "reg_sel_hl2" (rect 177 123 243 137)(font "Arial" (font_size 8))) + (line (pt 264 128)(pt 248 128)) + ) + (port + (pt 264 144) + (output) + (text "reg_sel_de" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "reg_sel_de" (rect 180 139 243 153)(font "Arial" (font_size 8))) + (line (pt 264 144)(pt 248 144)) + ) + (port + (pt 264 160) + (output) + (text "reg_sel_hl" (rect 0 0 59 14)(font "Arial" (font_size 8))) + (text "reg_sel_hl" (rect 184 155 243 169)(font "Arial" (font_size 8))) + (line (pt 264 160)(pt 248 160)) + ) + (port + (pt 264 176) + (output) + (text "reg_sel_ix" (rect 0 0 59 14)(font "Arial" (font_size 8))) + (text "reg_sel_ix" (rect 184 171 243 185)(font "Arial" (font_size 8))) + (line (pt 264 176)(pt 248 176)) + ) + (port + (pt 264 192) + (output) + (text "reg_sel_iy" (rect 0 0 59 14)(font "Arial" (font_size 8))) + (text "reg_sel_iy" (rect 184 187 243 201)(font "Arial" (font_size 8))) + (line (pt 264 192)(pt 248 192)) + ) + (port + (pt 264 208) + (output) + (text "reg_sel_af2" (rect 0 0 68 14)(font "Arial" (font_size 8))) + (text "reg_sel_af2" (rect 175 203 243 217)(font "Arial" (font_size 8))) + (line (pt 264 208)(pt 248 208)) + ) + (port + (pt 264 224) + (output) + (text "reg_sel_af" (rect 0 0 61 14)(font "Arial" (font_size 8))) + (text "reg_sel_af" (rect 182 219 243 233)(font "Arial" (font_size 8))) + (line (pt 264 224)(pt 248 224)) + ) + (port + (pt 264 240) + (output) + (text "reg_sel_sp" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "reg_sel_sp" (rect 180 235 243 249)(font "Arial" (font_size 8))) + (line (pt 264 240)(pt 248 240)) + ) + (port + (pt 264 256) + (output) + (text "reg_sys_we_hi" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "reg_sys_we_hi" (rect 154 251 243 265)(font "Arial" (font_size 8))) + (line (pt 264 256)(pt 248 256)) + ) + (port + (pt 264 272) + (output) + (text "reg_sys_we_lo" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "reg_sys_we_lo" (rect 154 267 243 281)(font "Arial" (font_size 8))) + (line (pt 264 272)(pt 248 272)) + ) + (port + (pt 264 288) + (output) + (text "reg_sel_sys_lo" (rect 0 0 87 14)(font "Arial" (font_size 8))) + (text "reg_sel_sys_lo" (rect 156 283 243 297)(font "Arial" (font_size 8))) + (line (pt 264 288)(pt 248 288)) + ) + (port + (pt 264 304) + (output) + (text "reg_sel_sys_hi" (rect 0 0 87 14)(font "Arial" (font_size 8))) + (text "reg_sel_sys_hi" (rect 156 299 243 313)(font "Arial" (font_size 8))) + (line (pt 264 304)(pt 248 304)) + ) + (port + (pt 264 320) + (output) + (text "reg_sw_4d_lo" (rect 0 0 82 14)(font "Arial" (font_size 8))) + (text "reg_sw_4d_lo" (rect 161 315 243 329)(font "Arial" (font_size 8))) + (line (pt 264 320)(pt 248 320)) + ) + (port + (pt 264 336) + (output) + (text "reg_sw_4d_hi" (rect 0 0 82 14)(font "Arial" (font_size 8))) + (text "reg_sw_4d_hi" (rect 161 331 243 345)(font "Arial" (font_size 8))) + (line (pt 264 336)(pt 248 336)) + ) + (port + (pt 264 352) + (output) + (text "reg_sel_ir" (rect 0 0 56 14)(font "Arial" (font_size 8))) + (text "reg_sel_ir" (rect 187 347 243 361)(font "Arial" (font_size 8))) + (line (pt 264 352)(pt 248 352)) + ) + (port + (pt 264 368) + (output) + (text "reg_sel_pc" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "reg_sel_pc" (rect 180 363 243 377)(font "Arial" (font_size 8))) + (line (pt 264 368)(pt 248 368)) + ) + (port + (pt 264 384) + (output) + (text "reg_sel_wz" (rect 0 0 68 14)(font "Arial" (font_size 8))) + (text "reg_sel_wz" (rect 175 379 243 393)(font "Arial" (font_size 8))) + (line (pt 264 384)(pt 248 384)) + ) + (drawing + (rectangle (rect 16 16 248 400)) + ) +) diff --git a/cpu/registers/reg_control.v b/cpu/registers/reg_control.v new file mode 100644 index 0000000..af9f55c --- /dev/null +++ b/cpu/registers/reg_control.v @@ -0,0 +1,325 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Sat Dec 10 09:05:10 2016" + +module reg_control( + ctl_reg_exx, + ctl_reg_ex_af, + ctl_reg_ex_de_hl, + ctl_reg_use_sp, + nreset, + ctl_reg_sel_pc, + ctl_reg_sel_ir, + ctl_reg_sel_wz, + ctl_reg_gp_we, + ctl_reg_not_pc, + use_ixiy, + use_ix, + ctl_reg_sys_we_lo, + ctl_reg_sys_we_hi, + ctl_reg_sys_we, + clk, + ctl_sw_4d, + nhold_clk_wait, + ctl_reg_gp_hilo, + ctl_reg_gp_sel, + ctl_reg_sys_hilo, + reg_sel_bc, + reg_sel_bc2, + reg_sel_ix, + reg_sel_iy, + reg_sel_de, + reg_sel_hl, + reg_sel_de2, + reg_sel_hl2, + reg_sel_af, + reg_sel_af2, + reg_sel_wz, + reg_sel_pc, + reg_sel_ir, + reg_sel_sp, + reg_sel_gp_hi, + reg_sel_gp_lo, + reg_sel_sys_lo, + reg_sel_sys_hi, + reg_gp_we, + reg_sys_we_lo, + reg_sys_we_hi, + reg_sw_4d_lo, + reg_sw_4d_hi +); + + +input wire ctl_reg_exx; +input wire ctl_reg_ex_af; +input wire ctl_reg_ex_de_hl; +input wire ctl_reg_use_sp; +input wire nreset; +input wire ctl_reg_sel_pc; +input wire ctl_reg_sel_ir; +input wire ctl_reg_sel_wz; +input wire ctl_reg_gp_we; +input wire ctl_reg_not_pc; +input wire use_ixiy; +input wire use_ix; +input wire ctl_reg_sys_we_lo; +input wire ctl_reg_sys_we_hi; +input wire ctl_reg_sys_we; +input wire clk; +input wire ctl_sw_4d; +input wire nhold_clk_wait; +input wire [1:0] ctl_reg_gp_hilo; +input wire [1:0] ctl_reg_gp_sel; +input wire [1:0] ctl_reg_sys_hilo; +output wire reg_sel_bc; +output wire reg_sel_bc2; +output wire reg_sel_ix; +output wire reg_sel_iy; +output wire reg_sel_de; +output wire reg_sel_hl; +output wire reg_sel_de2; +output wire reg_sel_hl2; +output wire reg_sel_af; +output wire reg_sel_af2; +output wire reg_sel_wz; +output wire reg_sel_pc; +output wire reg_sel_ir; +output wire reg_sel_sp; +output wire reg_sel_gp_hi; +output wire reg_sel_gp_lo; +output wire reg_sel_sys_lo; +output wire reg_sel_sys_hi; +output wire reg_gp_we; +output wire reg_sys_we_lo; +output wire reg_sys_we_hi; +output wire reg_sw_4d_lo; +output wire reg_sw_4d_hi; + +reg bank_af; +reg bank_exx; +reg bank_hl_de1; +reg bank_hl_de2; +wire reg_sys_we_lo_ALTERA_SYNTHESIZED; +wire SYNTHESIZED_WIRE_52; +wire SYNTHESIZED_WIRE_53; +wire SYNTHESIZED_WIRE_2; +wire SYNTHESIZED_WIRE_54; +wire SYNTHESIZED_WIRE_55; +wire SYNTHESIZED_WIRE_5; +wire SYNTHESIZED_WIRE_56; +wire SYNTHESIZED_WIRE_10; +wire SYNTHESIZED_WIRE_57; +wire SYNTHESIZED_WIRE_58; +wire SYNTHESIZED_WIRE_59; +wire SYNTHESIZED_WIRE_60; +wire SYNTHESIZED_WIRE_21; +wire SYNTHESIZED_WIRE_23; +wire SYNTHESIZED_WIRE_24; +wire SYNTHESIZED_WIRE_25; +wire SYNTHESIZED_WIRE_30; +wire SYNTHESIZED_WIRE_31; +wire SYNTHESIZED_WIRE_32; +wire SYNTHESIZED_WIRE_61; +wire SYNTHESIZED_WIRE_34; +wire SYNTHESIZED_WIRE_36; +wire SYNTHESIZED_WIRE_37; +wire SYNTHESIZED_WIRE_38; +wire SYNTHESIZED_WIRE_39; +wire SYNTHESIZED_WIRE_40; +wire SYNTHESIZED_WIRE_41; +wire SYNTHESIZED_WIRE_42; +wire SYNTHESIZED_WIRE_43; +wire SYNTHESIZED_WIRE_44; +wire SYNTHESIZED_WIRE_45; +wire SYNTHESIZED_WIRE_46; +wire SYNTHESIZED_WIRE_47; +wire SYNTHESIZED_WIRE_48; +wire SYNTHESIZED_WIRE_49; +wire SYNTHESIZED_WIRE_50; + +assign reg_sel_wz = ctl_reg_sel_wz; +assign reg_sel_ir = ctl_reg_sel_ir; +assign reg_sel_gp_hi = ctl_reg_gp_hilo[1]; +assign reg_sel_gp_lo = ctl_reg_gp_hilo[0]; +assign reg_sel_sys_lo = ctl_reg_sys_hilo[0]; +assign reg_sel_sys_hi = ctl_reg_sys_hilo[1]; +assign reg_gp_we = ctl_reg_gp_we; +assign reg_sw_4d_lo = ctl_sw_4d; + + + +assign reg_sel_bc = SYNTHESIZED_WIRE_52 & SYNTHESIZED_WIRE_53; + +assign reg_sel_af = SYNTHESIZED_WIRE_2 & SYNTHESIZED_WIRE_54; + +assign SYNTHESIZED_WIRE_54 = SYNTHESIZED_WIRE_55 & SYNTHESIZED_WIRE_5; + +assign reg_sel_sp = SYNTHESIZED_WIRE_55 & ctl_reg_use_sp; + +assign SYNTHESIZED_WIRE_5 = ~ctl_reg_use_sp; + +assign reg_sel_ix = SYNTHESIZED_WIRE_56 & use_ix; + +assign SYNTHESIZED_WIRE_50 = ctl_reg_ex_de_hl & SYNTHESIZED_WIRE_53; + +assign reg_sel_iy = SYNTHESIZED_WIRE_56 & SYNTHESIZED_WIRE_10; + +assign reg_sel_af2 = bank_af & SYNTHESIZED_WIRE_54; + +assign SYNTHESIZED_WIRE_2 = ~bank_af; + +assign SYNTHESIZED_WIRE_47 = SYNTHESIZED_WIRE_57 & SYNTHESIZED_WIRE_58; + +assign SYNTHESIZED_WIRE_46 = bank_hl_de2 & SYNTHESIZED_WIRE_59; + +assign SYNTHESIZED_WIRE_39 = SYNTHESIZED_WIRE_60 & SYNTHESIZED_WIRE_58; + +assign SYNTHESIZED_WIRE_49 = bank_hl_de2 & SYNTHESIZED_WIRE_58; + +assign SYNTHESIZED_WIRE_48 = SYNTHESIZED_WIRE_57 & SYNTHESIZED_WIRE_59; + +assign reg_sel_de = SYNTHESIZED_WIRE_53 & SYNTHESIZED_WIRE_21; + +assign reg_sel_hl = SYNTHESIZED_WIRE_53 & SYNTHESIZED_WIRE_23; + +assign reg_sel_de2 = bank_exx & SYNTHESIZED_WIRE_24; + +assign reg_sel_hl2 = bank_exx & SYNTHESIZED_WIRE_25; + +assign SYNTHESIZED_WIRE_38 = bank_hl_de1 & SYNTHESIZED_WIRE_59; + +assign SYNTHESIZED_WIRE_53 = ~bank_exx; + +assign SYNTHESIZED_WIRE_45 = bank_hl_de1 & SYNTHESIZED_WIRE_58; + +assign SYNTHESIZED_WIRE_44 = SYNTHESIZED_WIRE_60 & SYNTHESIZED_WIRE_59; + +assign SYNTHESIZED_WIRE_52 = SYNTHESIZED_WIRE_30 & SYNTHESIZED_WIRE_31; + +assign SYNTHESIZED_WIRE_60 = ~bank_hl_de1; + +assign reg_sys_we_hi = ctl_reg_sys_we | ctl_reg_sys_we_hi; + +assign reg_sel_pc = ctl_reg_sel_pc & SYNTHESIZED_WIRE_32; + +assign SYNTHESIZED_WIRE_58 = SYNTHESIZED_WIRE_61 & SYNTHESIZED_WIRE_34; + +assign SYNTHESIZED_WIRE_32 = ~ctl_reg_not_pc; + +assign SYNTHESIZED_WIRE_36 = ~ctl_reg_gp_sel[1]; + +assign reg_sys_we_lo_ALTERA_SYNTHESIZED = ctl_reg_sys_we_lo | ctl_reg_sys_we; + +assign SYNTHESIZED_WIRE_56 = SYNTHESIZED_WIRE_61 & use_ixiy; + +assign SYNTHESIZED_WIRE_42 = ~ctl_reg_gp_sel[0]; + +assign SYNTHESIZED_WIRE_43 = ctl_reg_ex_de_hl & bank_exx; + +assign SYNTHESIZED_WIRE_34 = ~use_ixiy; + +assign SYNTHESIZED_WIRE_59 = ctl_reg_gp_sel[0] & SYNTHESIZED_WIRE_36; + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + bank_af <= 0; + end +else +if (nhold_clk_wait) + begin + bank_af <= bank_af ^ ctl_reg_ex_af; + end +end + +assign SYNTHESIZED_WIRE_10 = ~use_ix; + +assign SYNTHESIZED_WIRE_57 = ~bank_hl_de2; + +assign SYNTHESIZED_WIRE_41 = ~reg_sys_we_lo_ALTERA_SYNTHESIZED; + +assign SYNTHESIZED_WIRE_40 = ~SYNTHESIZED_WIRE_37; + +assign SYNTHESIZED_WIRE_23 = SYNTHESIZED_WIRE_38 | SYNTHESIZED_WIRE_39; + +assign reg_sw_4d_hi = ctl_sw_4d & SYNTHESIZED_WIRE_40; + +assign SYNTHESIZED_WIRE_37 = ctl_reg_sys_hilo[1] & SYNTHESIZED_WIRE_41 & ctl_reg_sel_ir; + +assign SYNTHESIZED_WIRE_61 = SYNTHESIZED_WIRE_42 & ctl_reg_gp_sel[1]; + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + bank_hl_de2 <= 0; + end +else +if (nhold_clk_wait) + begin + bank_hl_de2 <= bank_hl_de2 ^ SYNTHESIZED_WIRE_43; + end +end + +assign SYNTHESIZED_WIRE_21 = SYNTHESIZED_WIRE_44 | SYNTHESIZED_WIRE_45; + +assign SYNTHESIZED_WIRE_25 = SYNTHESIZED_WIRE_46 | SYNTHESIZED_WIRE_47; + +assign SYNTHESIZED_WIRE_24 = SYNTHESIZED_WIRE_48 | SYNTHESIZED_WIRE_49; + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + bank_hl_de1 <= 0; + end +else +if (nhold_clk_wait) + begin + bank_hl_de1 <= bank_hl_de1 ^ SYNTHESIZED_WIRE_50; + end +end + + +always@(posedge clk or negedge nreset) +begin +if (!nreset) + begin + bank_exx <= 0; + end +else +if (nhold_clk_wait) + begin + bank_exx <= bank_exx ^ ctl_reg_exx; + end +end + +assign SYNTHESIZED_WIRE_55 = ctl_reg_gp_sel[0] & ctl_reg_gp_sel[1]; + +assign SYNTHESIZED_WIRE_30 = ~ctl_reg_gp_sel[0]; + +assign SYNTHESIZED_WIRE_31 = ~ctl_reg_gp_sel[1]; + +assign reg_sel_bc2 = SYNTHESIZED_WIRE_52 & bank_exx; + +assign reg_sys_we_lo = reg_sys_we_lo_ALTERA_SYNTHESIZED; + +endmodule diff --git a/cpu/registers/reg_file.bdf b/cpu/registers/reg_file.bdf new file mode 100644 index 0000000..aafedb6 --- /dev/null +++ b/cpu/registers/reg_file.bdf @@ -0,0 +1,7388 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 32 256 208 272) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "reg_sel_sys_lo" (rect 9 0 83 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 2688 256 2864 272) + (text "INPUT" (rect 15 6 43 16)(font "Arial" (font_size 6))) + (text "reg_sel_gp_lo" (rect 100 4 167 16)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 84 4)(pt 59 4)) + (line (pt 84 12)(pt 59 12)) + (line (pt 55 8)(pt 0 8)) + (line (pt 84 4)(pt 84 12)) + (line (pt 59 12)(pt 55 8)) + (line (pt 59 4)(pt 55 8)) + ) + (rotate180) + (text "VCC" (rect 20 -1 40 9)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 848 208 864) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "reg_sel_sys_hi" (rect 9 0 83 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 2688 848 2864 864) + (text "INPUT" (rect 15 0 43 10)(font "Arial" (font_size 6))) + (text "reg_sel_gp_hi" (rect 100 0 167 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 84 12)(pt 59 12)) + (line (pt 84 4)(pt 59 4)) + (line (pt 55 8)(pt 0 8)) + (line (pt 84 12)(pt 84 4)) + (line (pt 59 4)(pt 55 8)) + (line (pt 59 12)(pt 55 8)) + ) + (flipy) + (text "VCC" (rect 20 7 40 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 312 32 328 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sel_ir" (rect 0 9 12 56)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 456 32 472 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sel_pc" (rect 0 9 12 62)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 664 32 680 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "ctl_sw_4u" (rect 0 9 12 57)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 768 32 784 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sel_wz" (rect 0 9 12 62)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 912 32 928 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sel_sp" (rect 0 9 12 62)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1072 32 1088 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sel_iy" (rect 0 9 12 59)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1216 32 1232 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sel_ix" (rect 0 9 12 58)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1360 32 1376 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sel_hl2" (rect 0 9 12 64)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1504 32 1520 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sel_hl" (rect 0 9 12 58)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1648 32 1664 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sel_de2" (rect 0 9 12 68)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1792 32 1808 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sel_de" (rect 0 9 12 62)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 1936 32 1952 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sel_bc2" (rect 0 9 12 68)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 2080 32 2096 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sel_bc" (rect 0 9 12 62)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 2224 32 2240 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sel_af2" (rect 0 9 12 66)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 2368 32 2384 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sel_af" (rect 0 9 12 60)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 2688 224 2864 240) + (text "INPUT" (rect 15 6 43 16)(font "Arial" (font_size 6))) + (text "reg_gp_we" (rect 116 4 167 16)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 84 4)(pt 59 4)) + (line (pt 84 12)(pt 59 12)) + (line (pt 55 8)(pt 0 8)) + (line (pt 84 4)(pt 84 12)) + (line (pt 59 12)(pt 55 8)) + (line (pt 59 4)(pt 55 8)) + ) + (rotate180) + (text "VCC" (rect 20 -1 40 9)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 224 208 240) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "reg_sys_we_lo" (rect 9 0 82 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 32 832 208 848) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "reg_sys_we_hi" (rect 9 0 82 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 2536 32 2552 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "ctl_reg_in_hi" (rect 0 9 12 70)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 2552 32 2568 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "ctl_reg_in_lo" (rect 0 9 12 70)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 2576 32 2592 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "ctl_reg_out_lo" (rect 0 9 12 77)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 2592 32 2608 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "ctl_reg_out_hi" (rect 0 9 12 77)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 32 528 208 544) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "clk" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 616 32 632 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sw_4d_lo" (rect 0 9 12 75)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (input) + (rect 600 32 616 208) + (text "INPUT" (rect 0 133 10 161)(font "Arial" (font_size 6))(vertical)) + (text "reg_sw_4d_hi" (rect 0 9 12 75)(font "Arial" )(vertical)) + (pt 8 176) + (drawing + (line (pt 12 92)(pt 12 117)) + (line (pt 4 92)(pt 4 117)) + (line (pt 8 121)(pt 8 176)) + (line (pt 12 92)(pt 4 92)) + (line (pt 4 117)(pt 8 121)) + (line (pt 12 117)(pt 8 121)) + ) + (flipy_rotate90) + (text "VCC" (rect 7 136 17 156)(font "Arial" (font_size 6))(vertical)) +) +(pin + (bidir) + (rect 2688 352 2864 368) + (text "BIDIR" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "db_lo_ds[7..0]" (rect 90 0 159 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)) + (line (pt 0 8)(pt 52 8)) + (line (pt 56 12)(pt 78 12)) + (line (pt 78 4)(pt 82 8)) + (line (pt 78 12)(pt 82 8)) + (line (pt 56 4)(pt 52 8)) + (line (pt 52 8)(pt 56 12)) + ) + (text "VCC" (rect 4 7 24 17)(font "Arial" (font_size 6))) +) +(pin + (bidir) + (rect 2688 704 2864 720) + (text "BIDIR" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "db_hi_ds[7..0]" (rect 90 0 159 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)) + (line (pt 0 8)(pt 52 8)) + (line (pt 56 12)(pt 78 12)) + (line (pt 78 4)(pt 82 8)) + (line (pt 78 12)(pt 82 8)) + (line (pt 56 4)(pt 52 8)) + (line (pt 52 8)(pt 56 12)) + ) + (text "VCC" (rect 4 7 24 17)(font "Arial" (font_size 6))) +) +(pin + (bidir) + (rect 32 352 208 368) + (text "BIDIR" (rect 151 0 175 10)(font "Arial" (font_size 6))) + (text "db_lo_as[7..0]" (rect 17 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 120 4)(pt 98 4)) + (line (pt 176 8)(pt 124 8)) + (line (pt 120 12)(pt 98 12)) + (line (pt 98 4)(pt 94 8)) + (line (pt 98 12)(pt 94 8)) + (line (pt 120 4)(pt 124 8)) + (line (pt 124 8)(pt 120 12)) + ) + (flipy) + (text "VCC" (rect 152 7 172 17)(font "Arial" (font_size 6))) +) +(pin + (bidir) + (rect 32 704 208 720) + (text "BIDIR" (rect 151 0 175 10)(font "Arial" (font_size 6))) + (text "db_hi_as[7..0]" (rect 17 0 86 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 120 4)(pt 98 4)) + (line (pt 176 8)(pt 124 8)) + (line (pt 120 12)(pt 98 12)) + (line (pt 98 4)(pt 94 8)) + (line (pt 98 12)(pt 94 8)) + (line (pt 120 4)(pt 124 8)) + (line (pt 124 8)(pt 120 12)) + ) + (flipy) + (text "VCC" (rect 152 7 172 17)(font "Arial" (font_size 6))) +) +(symbol + (rect 360 280 408 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst7" (rect -1 3 11 26)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 360 728 408 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst8" (rect 37 38 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 504 280 552 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst12" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 504 728 552 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst15" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1120 280 1168 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst20" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 1120 728 1168 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst21" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1264 280 1312 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst26" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 1264 728 1312 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst27" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1408 280 1456 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst32" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 1408 728 1456 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst33" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1552 280 1600 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst38" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 1552 728 1600 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst39" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1696 280 1744 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst44" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 1696 728 1744 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst45" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1840 280 1888 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst50" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 1840 728 1888 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst51" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1984 280 2032 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst56" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 1984 728 2032 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst57" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 2128 280 2176 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst62" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 2128 728 2176 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst63" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 2272 280 2320 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst68" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 2272 728 2320 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst69" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 2416 280 2464 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst74" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 2416 728 2464 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst75" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 816 280 864 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "i2" (rect -1 3 11 11)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 816 728 864 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "i3" (rect 37 53 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 960 280 1008 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "i8" (rect -1 3 11 11)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 960 728 1008 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "i9" (rect 37 53 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1080 400 1176 520) + (text "reg_latch" (rect 82 5 96 58)(font "Arial" (font_size 8))(vertical)) + (text "latch_iy_lo" (rect 4 8 16 61)(font "Arial" )(vertical)) + (port + (pt 64 0) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 21 69 35)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)) + ) + (port + (pt 48 0) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 21 53 39)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 0)(pt 48 16)) + ) + (port + (pt 32 120) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 73 40 88)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 104)(pt 32 120)) + ) + (port + (pt 64 120) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 57 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (rotate270) + (fill (color 85 255 127)) +) +(symbol + (rect 1080 560 1176 680) + (text "reg_latch" (rect 82 62 96 115)(font "Arial" (font_size 8))(vertical)) + (text "latch_iy_hi" (rect 4 59 16 112)(font "Arial" )(vertical)) + (port + (pt 64 120) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 85 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)) + ) + (port + (pt 48 120) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 81 53 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 120)(pt 48 104)) + ) + (port + (pt 32 0) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 32 40 47)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 16)(pt 32 0)) + ) + (port + (pt 64 0) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 21 69 63)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (flipx_rotate90) + (fill (color 85 255 127)) +) +(symbol + (rect 1224 400 1320 520) + (text "reg_latch" (rect 82 5 96 58)(font "Arial" (font_size 8))(vertical)) + (text "latch_ix_lo" (rect 4 8 16 59)(font "Arial" )(vertical)) + (port + (pt 64 0) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 21 69 35)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)) + ) + (port + (pt 48 0) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 21 53 39)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 0)(pt 48 16)) + ) + (port + (pt 32 120) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 73 40 88)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 104)(pt 32 120)) + ) + (port + (pt 64 120) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 57 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (rotate270) + (fill (color 85 255 127)) +) +(symbol + (rect 1224 560 1320 680) + (text "reg_latch" (rect 82 62 96 115)(font "Arial" (font_size 8))(vertical)) + (text "latch_ix_hi" (rect 4 61 16 112)(font "Arial" )(vertical)) + (port + (pt 64 120) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 85 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)) + ) + (port + (pt 48 120) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 81 53 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 120)(pt 48 104)) + ) + (port + (pt 32 0) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 32 40 47)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 16)(pt 32 0)) + ) + (port + (pt 64 0) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 21 69 63)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (flipx_rotate90) + (fill (color 85 255 127)) +) +(symbol + (rect 1368 400 1464 520) + (text "reg_latch" (rect 82 5 96 58)(font "Arial" (font_size 8))(vertical)) + (text "latch_hl2_lo" (rect 4 8 16 65)(font "Arial" )(vertical)) + (port + (pt 64 0) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 21 69 35)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)) + ) + (port + (pt 48 0) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 21 53 39)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 0)(pt 48 16)) + ) + (port + (pt 32 120) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 73 40 88)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 104)(pt 32 120)) + ) + (port + (pt 64 120) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 57 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (rotate270) + (fill (color 85 255 127)) +) +(symbol + (rect 1512 400 1608 520) + (text "reg_latch" (rect 82 5 96 58)(font "Arial" (font_size 8))(vertical)) + (text "latch_hl_lo" (rect 4 8 16 59)(font "Arial" )(vertical)) + (port + (pt 64 0) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 21 69 35)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)) + ) + (port + (pt 48 0) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 21 53 39)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 0)(pt 48 16)) + ) + (port + (pt 32 120) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 73 40 88)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 104)(pt 32 120)) + ) + (port + (pt 64 120) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 57 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (rotate270) + (fill (color 85 255 127)) +) +(symbol + (rect 1512 560 1608 680) + (text "reg_latch" (rect 82 62 96 115)(font "Arial" (font_size 8))(vertical)) + (text "latch_hl_hi" (rect 4 61 16 112)(font "Arial" )(vertical)) + (port + (pt 64 120) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 85 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)) + ) + (port + (pt 48 120) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 81 53 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 120)(pt 48 104)) + ) + (port + (pt 32 0) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 32 40 47)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 16)(pt 32 0)) + ) + (port + (pt 64 0) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 21 69 63)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (flipx_rotate90) + (fill (color 85 255 127)) +) +(symbol + (rect 1656 400 1752 520) + (text "reg_latch" (rect 82 5 96 58)(font "Arial" (font_size 8))(vertical)) + (text "latch_de2_lo" (rect 4 8 16 69)(font "Arial" )(vertical)) + (port + (pt 64 0) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 21 69 35)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)) + ) + (port + (pt 48 0) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 21 53 39)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 0)(pt 48 16)) + ) + (port + (pt 32 120) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 73 40 88)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 104)(pt 32 120)) + ) + (port + (pt 64 120) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 57 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (rotate270) + (fill (color 85 255 127)) +) +(symbol + (rect 1656 560 1752 680) + (text "reg_latch" (rect 82 62 96 115)(font "Arial" (font_size 8))(vertical)) + (text "latch_de2_hi" (rect 4 51 16 112)(font "Arial" )(vertical)) + (port + (pt 64 120) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 85 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)) + ) + (port + (pt 48 120) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 81 53 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 120)(pt 48 104)) + ) + (port + (pt 32 0) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 32 40 47)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 16)(pt 32 0)) + ) + (port + (pt 64 0) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 21 69 63)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (flipx_rotate90) + (fill (color 85 255 127)) +) +(symbol + (rect 1800 400 1896 520) + (text "reg_latch" (rect 82 5 96 58)(font "Arial" (font_size 8))(vertical)) + (text "latch_de_lo" (rect 4 8 16 63)(font "Arial" )(vertical)) + (port + (pt 64 0) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 21 69 35)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)) + ) + (port + (pt 48 0) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 21 53 39)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 0)(pt 48 16)) + ) + (port + (pt 32 120) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 73 40 88)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 104)(pt 32 120)) + ) + (port + (pt 64 120) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 57 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (rotate270) + (fill (color 85 255 127)) +) +(symbol + (rect 1800 560 1896 680) + (text "reg_latch" (rect 82 62 96 115)(font "Arial" (font_size 8))(vertical)) + (text "latch_de_hi" (rect 4 57 16 112)(font "Arial" )(vertical)) + (port + (pt 64 120) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 85 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)) + ) + (port + (pt 48 120) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 81 53 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 120)(pt 48 104)) + ) + (port + (pt 32 0) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 32 40 47)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 16)(pt 32 0)) + ) + (port + (pt 64 0) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 21 69 63)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (flipx_rotate90) + (fill (color 85 255 127)) +) +(symbol + (rect 1944 400 2040 520) + (text "reg_latch" (rect 82 5 96 58)(font "Arial" (font_size 8))(vertical)) + (text "latch_bc2_lo" (rect 4 8 16 69)(font "Arial" )(vertical)) + (port + (pt 64 0) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 21 69 35)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)) + ) + (port + (pt 48 0) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 21 53 39)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 0)(pt 48 16)) + ) + (port + (pt 32 120) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 73 40 88)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 104)(pt 32 120)) + ) + (port + (pt 64 120) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 57 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (rotate270) + (fill (color 85 255 127)) +) +(symbol + (rect 1944 560 2040 680) + (text "reg_latch" (rect 82 62 96 115)(font "Arial" (font_size 8))(vertical)) + (text "latch_bc2_hi" (rect 4 51 16 112)(font "Arial" )(vertical)) + (port + (pt 64 120) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 85 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)) + ) + (port + (pt 48 120) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 81 53 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 120)(pt 48 104)) + ) + (port + (pt 32 0) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 32 40 47)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 16)(pt 32 0)) + ) + (port + (pt 64 0) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 21 69 63)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (flipx_rotate90) + (fill (color 85 255 127)) +) +(symbol + (rect 2088 400 2184 520) + (text "reg_latch" (rect 82 5 96 58)(font "Arial" (font_size 8))(vertical)) + (text "latch_bc_lo" (rect 4 8 16 63)(font "Arial" )(vertical)) + (port + (pt 64 0) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 21 69 35)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)) + ) + (port + (pt 48 0) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 21 53 39)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 0)(pt 48 16)) + ) + (port + (pt 32 120) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 73 40 88)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 104)(pt 32 120)) + ) + (port + (pt 64 120) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 57 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (rotate270) + (fill (color 85 255 127)) +) +(symbol + (rect 2088 560 2184 680) + (text "reg_latch" (rect 82 62 96 115)(font "Arial" (font_size 8))(vertical)) + (text "latch_bc_hi" (rect 4 57 16 112)(font "Arial" )(vertical)) + (port + (pt 64 120) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 85 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)) + ) + (port + (pt 48 120) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 81 53 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 120)(pt 48 104)) + ) + (port + (pt 32 0) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 32 40 47)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 16)(pt 32 0)) + ) + (port + (pt 64 0) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 21 69 63)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (flipx_rotate90) + (fill (color 85 255 127)) +) +(symbol + (rect 2232 400 2328 520) + (text "reg_latch" (rect 82 5 96 58)(font "Arial" (font_size 8))(vertical)) + (text "latch_af2_lo" (rect 4 8 16 68)(font "Arial" )(vertical)) + (port + (pt 64 0) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 21 69 35)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)) + ) + (port + (pt 48 0) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 21 53 39)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 0)(pt 48 16)) + ) + (port + (pt 32 120) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 73 40 88)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 104)(pt 32 120)) + ) + (port + (pt 64 120) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 57 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (rotate270) + (fill (color 85 255 127)) +) +(symbol + (rect 2232 560 2328 680) + (text "reg_latch" (rect 82 62 96 115)(font "Arial" (font_size 8))(vertical)) + (text "latch_af2_hi" (rect 4 52 16 112)(font "Arial" )(vertical)) + (port + (pt 64 120) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 85 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)) + ) + (port + (pt 48 120) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 81 53 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 120)(pt 48 104)) + ) + (port + (pt 32 0) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 32 40 47)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 16)(pt 32 0)) + ) + (port + (pt 64 0) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 21 69 63)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (flipx_rotate90) + (fill (color 85 255 127)) +) +(symbol + (rect 2376 400 2472 520) + (text "reg_latch" (rect 82 5 96 58)(font "Arial" (font_size 8))(vertical)) + (text "latch_af_lo" (rect 4 8 16 62)(font "Arial" )(vertical)) + (port + (pt 64 0) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 21 69 35)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)) + ) + (port + (pt 48 0) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 21 53 39)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 0)(pt 48 16)) + ) + (port + (pt 32 120) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 73 40 88)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 104)(pt 32 120)) + ) + (port + (pt 64 120) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 57 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (rotate270) + (fill (color 85 255 127)) +) +(symbol + (rect 2376 560 2472 680) + (text "reg_latch" (rect 82 62 96 115)(font "Arial" (font_size 8))(vertical)) + (text "latch_af_hi" (rect 4 58 16 112)(font "Arial" )(vertical)) + (port + (pt 64 120) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 85 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)) + ) + (port + (pt 48 120) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 81 53 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 120)(pt 48 104)) + ) + (port + (pt 32 0) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 32 40 47)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 16)(pt 32 0)) + ) + (port + (pt 64 0) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 21 69 63)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (flipx_rotate90) + (fill (color 85 255 127)) +) +(symbol + (rect 320 560 416 680) + (text "reg_latch" (rect 82 62 96 115)(font "Arial" (font_size 8))(vertical)) + (text "latch_ir_hi" (rect 4 63 16 112)(font "Arial" )(vertical)) + (port + (pt 64 120) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 85 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)) + ) + (port + (pt 48 120) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 81 53 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 120)(pt 48 104)) + ) + (port + (pt 32 0) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 32 40 47)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 16)(pt 32 0)) + ) + (port + (pt 64 0) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 21 69 63)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (flipx_rotate90) + (fill (color 85 255 127)) +) +(symbol + (rect 464 560 560 680) + (text "reg_latch" (rect 82 62 96 115)(font "Arial" (font_size 8))(vertical)) + (text "latch_pc_hi" (rect 4 57 16 112)(font "Arial" )(vertical)) + (port + (pt 64 120) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 85 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)) + ) + (port + (pt 48 120) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 81 53 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 120)(pt 48 104)) + ) + (port + (pt 32 0) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 32 40 47)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 16)(pt 32 0)) + ) + (port + (pt 64 0) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 21 69 63)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (flipx_rotate90) + (fill (color 85 255 127)) +) +(symbol + (rect 232 232 280 264) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 21 20 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 304 280 352 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst3" (rect -1 3 11 26)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 448 280 496 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst4" (rect -1 3 11 26)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 760 280 808 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst5" (rect -1 3 11 26)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 904 280 952 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst9" (rect -1 3 11 26)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 1064 280 1112 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst10" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 1208 280 1256 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst13" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 1352 280 1400 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst14" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 1496 280 1544 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst16" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 1640 280 1688 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst17" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 1784 280 1832 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst18" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 1928 280 1976 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst22" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 2072 280 2120 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst23" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 2216 280 2264 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst24" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 2360 280 2408 344) + (text "AND3" (rect 38 1 48 25)(font "Arial" (font_size 6))(vertical)) + (text "inst28" (rect -1 3 11 32)(font "Arial" )(vertical)) + (port + (pt 32 0) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 29 2 41 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 0)(pt 32 16)) + ) + (port + (pt 24 0) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 21 2 33 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 0)(pt 24 16)) + ) + (port + (pt 16 0) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 13 2 25 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 0)(pt 16 16)) + ) + (port + (pt 24 64) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 21 48 33 65)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 43)(pt 24 64)) + ) + (drawing + (line (pt 36 16)(pt 36 31)) + (line (pt 11 16)(pt 11 31)) + (line (pt 36 16)(pt 11 16)) + (arc (pt 12 31)(pt 36 31)(rect 11 19 36 44)) + ) + (rotate270) +) +(symbol + (rect 760 728 808 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst19" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 904 728 952 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst25" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1064 728 1112 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst29" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1208 728 1256 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst30" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1352 728 1400 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst31" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1496 728 1544 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst34" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1640 728 1688 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst35" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1784 728 1832 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst36" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 1928 728 1976 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst37" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 2072 728 2120 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst40" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 2216 728 2264 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst41" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 2360 728 2408 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst42" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 304 728 352 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst43" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 448 728 496 792) + (text "AND3" (rect 0 39 10 63)(font "Arial" (font_size 6))(vertical)) + (text "inst46" (rect 37 32 49 61)(font "Arial" )(vertical)) + (port + (pt 16 64) + (input) + (text "IN1" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (text "IN1" (rect 7 45 19 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 16 64)(pt 16 48)) + ) + (port + (pt 24 64) + (input) + (text "IN2" (rect 2 15 19 27)(font "Courier New" (bold))(invisible)) + (text "IN2" (rect 15 45 27 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 64)(pt 24 48)) + ) + (port + (pt 32 64) + (input) + (text "IN3" (rect 2 23 19 35)(font "Courier New" (bold))(invisible)) + (text "IN3" (rect 23 45 35 62)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 32 64)(pt 32 48)) + ) + (port + (pt 24 0) + (output) + (text "OUT" (rect 48 15 65 27)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 15 2 27 19)(font "Courier New" (bold))(vertical)(invisible)) + (line (pt 24 21)(pt 24 0)) + ) + (drawing + (line (pt 12 48)(pt 12 33)) + (line (pt 37 48)(pt 37 33)) + (line (pt 12 48)(pt 37 48)) + (arc (pt 36 33)(pt 12 33)(rect 12 20 37 45)) + ) + (rotate90) +) +(symbol + (rect 648 328 696 360) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "tri1" (rect 3 21 18 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 648 360 696 392) + (text "TRI" (rect 32 22 47 32)(font "Arial" (font_size 6))) + (text "tri2" (rect 30 -1 45 11)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 13 46 25)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 34 16)) + ) + (port + (pt 24 32) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 11 20 22 32)(font "Courier New" (bold))(invisible)) + (line (pt 24 20)(pt 24 32)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 13 19 25)(font "Courier New" (bold))(invisible)) + (line (pt 16 16)(pt 0 16)) + ) + (drawing + (line (pt 34 7)(pt 34 25)) + (line (pt 34 7)(pt 16 16)) + (line (pt 34 25)(pt 16 16)) + ) + (rotate180) +) +(symbol + (rect 648 680 696 712) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "tri3" (rect 3 21 18 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 648 712 696 744) + (text "TRI" (rect 32 22 47 32)(font "Arial" (font_size 6))) + (text "tri4" (rect 30 -1 45 11)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 13 46 25)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 34 16)) + ) + (port + (pt 24 32) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 11 20 22 32)(font "Courier New" (bold))(invisible)) + (line (pt 24 20)(pt 24 32)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 13 19 25)(font "Courier New" (bold))(invisible)) + (line (pt 16 16)(pt 0 16)) + ) + (drawing + (line (pt 34 7)(pt 34 25)) + (line (pt 34 7)(pt 16 16)) + (line (pt 34 25)(pt 16 16)) + ) + (rotate180) +) +(symbol + (rect 2616 232 2664 264) + (text "NOT" (rect 27 0 47 10)(font "Arial" (font_size 6))) + (text "inst2" (rect 22 21 45 33)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 7 46 19)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 35 16)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 7 19 19)(font "Courier New" (bold))(invisible)) + (line (pt 9 16)(pt 0 16)) + ) + (drawing + (line (pt 35 25)(pt 35 7)) + (line (pt 35 7)(pt 17 16)) + (line (pt 35 25)(pt 17 16)) + (circle (rect 9 12 17 20)) + ) + (flipy) +) +(symbol + (rect 1368 560 1464 680) + (text "reg_latch" (rect 82 62 96 115)(font "Arial" (font_size 8))(vertical)) + (text "latch_hl2_hi" (rect 4 55 16 112)(font "Arial" )(vertical)) + (port + (pt 64 120) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 85 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)) + ) + (port + (pt 48 120) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 81 53 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 120)(pt 48 104)) + ) + (port + (pt 32 0) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 32 40 47)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 16)(pt 32 0)) + ) + (port + (pt 64 0) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 21 69 63)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (flipx_rotate90) + (fill (color 85 255 127)) +) +(symbol + (rect 920 400 1016 520) + (text "reg_latch" (rect 82 5 96 58)(font "Arial" (font_size 8))(vertical)) + (text "latch_sp_lo" (rect 4 8 16 63)(font "Arial" )(vertical)) + (port + (pt 64 0) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 21 69 35)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)) + ) + (port + (pt 48 0) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 21 53 39)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 0)(pt 48 16)) + ) + (port + (pt 32 120) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 73 40 88)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 104)(pt 32 120)) + ) + (port + (pt 64 120) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 57 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (rotate270) + (fill (color 85 255 127)) +) +(symbol + (rect 920 560 1016 680) + (text "reg_latch" (rect 82 62 96 115)(font "Arial" (font_size 8))(vertical)) + (text "latch_sp_hi" (rect 4 57 16 112)(font "Arial" )(vertical)) + (port + (pt 64 120) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 85 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)) + ) + (port + (pt 48 120) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 81 53 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 120)(pt 48 104)) + ) + (port + (pt 32 0) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 32 40 47)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 16)(pt 32 0)) + ) + (port + (pt 64 0) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 21 69 63)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (flipx_rotate90) + (fill (color 85 255 127)) +) +(symbol + (rect 776 400 872 520) + (text "reg_latch" (rect 82 5 96 58)(font "Arial" (font_size 8))(vertical)) + (text "latch_wz_lo" (rect 4 8 16 63)(font "Arial" )(vertical)) + (port + (pt 64 0) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 21 69 35)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)) + ) + (port + (pt 48 0) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 21 53 39)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 0)(pt 48 16)) + ) + (port + (pt 32 120) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 73 40 88)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 104)(pt 32 120)) + ) + (port + (pt 64 120) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 57 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (rotate270) + (fill (color 85 255 127)) +) +(symbol + (rect 776 560 872 680) + (text "reg_latch" (rect 82 62 96 115)(font "Arial" (font_size 8))(vertical)) + (text "latch_wz_hi" (rect 4 57 16 112)(font "Arial" )(vertical)) + (port + (pt 64 120) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 85 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)) + ) + (port + (pt 48 120) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 81 53 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 120)(pt 48 104)) + ) + (port + (pt 32 0) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 32 40 47)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 16)(pt 32 0)) + ) + (port + (pt 64 0) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 21 69 63)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (flipx_rotate90) + (fill (color 85 255 127)) +) +(symbol + (rect 232 808 280 840) + (text "NOT" (rect 1 0 21 10)(font "Arial" (font_size 6))) + (text "inst11" (rect 3 21 32 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 13 16)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 39 16)(pt 48 16)) + ) + (drawing + (line (pt 13 25)(pt 13 7)) + (line (pt 13 7)(pt 31 16)) + (line (pt 13 25)(pt 31 16)) + (circle (rect 31 12 39 20)) + ) +) +(symbol + (rect 2584 328 2632 360) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "tri5" (rect 3 21 18 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 2584 360 2632 392) + (text "TRI" (rect 32 22 47 32)(font "Arial" (font_size 6))) + (text "tri6" (rect 30 -1 45 11)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 13 46 25)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 34 16)) + ) + (port + (pt 24 32) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 11 20 22 32)(font "Courier New" (bold))(invisible)) + (line (pt 24 20)(pt 24 32)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 13 19 25)(font "Courier New" (bold))(invisible)) + (line (pt 16 16)(pt 0 16)) + ) + (drawing + (line (pt 34 7)(pt 34 25)) + (line (pt 34 7)(pt 16 16)) + (line (pt 34 25)(pt 16 16)) + ) + (rotate180) +) +(symbol + (rect 2584 680 2632 712) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "tri7" (rect 3 21 18 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 2584 712 2632 744) + (text "TRI" (rect 32 22 47 32)(font "Arial" (font_size 6))) + (text "tri8" (rect 30 -1 45 11)(font "Arial" )) + (port + (pt 48 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 35 13 46 25)(font "Courier New" (bold))(invisible)) + (line (pt 48 16)(pt 34 16)) + ) + (port + (pt 24 32) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 11 20 22 32)(font "Courier New" (bold))(invisible)) + (line (pt 24 20)(pt 24 32)) + ) + (port + (pt 0 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 2 13 19 25)(font "Courier New" (bold))(invisible)) + (line (pt 16 16)(pt 0 16)) + ) + (drawing + (line (pt 34 7)(pt 34 25)) + (line (pt 34 7)(pt 16 16)) + (line (pt 34 25)(pt 16 16)) + ) + (rotate180) +) +(symbol + (rect 464 400 560 520) + (text "reg_latch" (rect 82 5 96 58)(font "Arial" (font_size 8))(vertical)) + (text "latch_pc_lo" (rect 4 8 16 63)(font "Arial" )(vertical)) + (port + (pt 64 0) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 21 69 35)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)) + ) + (port + (pt 48 0) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 21 53 39)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 0)(pt 48 16)) + ) + (port + (pt 32 120) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 73 40 88)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 104)(pt 32 120)) + ) + (port + (pt 64 120) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 57 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (rotate270) + (fill (color 85 255 127)) +) +(symbol + (rect 320 400 416 520) + (text "reg_latch" (rect 82 5 96 58)(font "Arial" (font_size 8))(vertical)) + (text "latch_ir_lo" (rect 4 8 16 57)(font "Arial" )(vertical)) + (port + (pt 64 0) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 55 21 69 35)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 0)(pt 64 16)) + ) + (port + (pt 48 0) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 39 21 53 39)(font "Arial" (font_size 8))(vertical)) + (line (pt 48 0)(pt 48 16)) + ) + (port + (pt 32 120) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 26 73 40 88)(font "Arial" (font_size 8))(vertical)) + (line (pt 32 104)(pt 32 120)) + ) + (port + (pt 64 120) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 55 57 69 99)(font "Arial" (font_size 8))(vertical)) + (line (pt 64 120)(pt 64 104)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 80 104)) + ) + (rotate270) + (fill (color 85 255 127)) +) +(connector + (pt 216 248) + (pt 216 232) +) +(connector + (pt 232 248) + (pt 216 248) +) +(connector + (pt 216 824) + (pt 232 824) +) +(connector + (pt 216 840) + (pt 216 824) +) +(connector + (pt 328 696) + (pt 328 728) +) +(connector + (pt 472 696) + (pt 472 728) +) +(connector + (pt 424 360) + (pt 424 528) + (bus) +) +(connector + (pt 568 360) + (pt 568 528) + (bus) +) +(connector + (pt 568 528) + (pt 528 528) + (bus) +) +(connector + (pt 424 712) + (pt 424 544) + (bus) +) +(connector + (pt 568 712) + (pt 568 544) + (bus) +) +(connector + (pt 336 280) + (pt 336 264) +) +(connector + (pt 384 280) + (pt 384 264) +) +(connector + (pt 480 280) + (pt 480 264) +) +(connector + (pt 528 280) + (pt 528 264) +) +(connector + (pt 392 280) + (pt 392 248) +) +(connector + (pt 536 280) + (pt 536 248) +) +(connector + (pt 328 280) + (pt 328 232) +) +(connector + (pt 472 280) + (pt 472 232) +) +(connector + (pt 376 280) + (pt 376 216) +) +(connector + (pt 520 280) + (pt 520 216) +) +(connector + (pt 296 808) + (pt 296 216) +) +(connector + (pt 440 808) + (pt 440 216) +) +(connector + (pt 376 792) + (pt 376 808) +) +(connector + (pt 384 792) + (pt 384 856) +) +(connector + (pt 392 792) + (pt 392 824) +) +(connector + (pt 520 792) + (pt 520 808) +) +(connector + (pt 528 792) + (pt 528 856) +) +(connector + (pt 536 792) + (pt 536 824) +) +(connector + (pt 328 344) + (pt 328 376) +) +(connector + (pt 472 344) + (pt 472 376) +) +(connector + (pt 320 792) + (pt 320 808) +) +(connector + (pt 328 792) + (pt 328 840) +) +(connector + (pt 336 792) + (pt 336 856) +) +(connector + (pt 464 792) + (pt 464 808) +) +(connector + (pt 472 792) + (pt 472 840) +) +(connector + (pt 480 792) + (pt 480 856) +) +(connector + (pt 328 696) + (pt 368 696) +) +(connector + (pt 424 544) + (pt 384 544) + (bus) +) +(connector + (pt 384 544) + (pt 384 560) + (bus) +) +(connector + (pt 424 528) + (pt 384 528) + (bus) +) +(connector + (pt 328 376) + (pt 368 376) +) +(connector + (pt 384 344) + (pt 384 400) +) +(connector + (pt 368 376) + (pt 368 400) +) +(connector + (pt 472 376) + (pt 512 376) +) +(connector + (pt 528 344) + (pt 528 400) +) +(connector + (pt 512 376) + (pt 512 400) +) +(connector + (pt 472 696) + (pt 512 696) +) +(connector + (pt 568 544) + (pt 528 544) + (bus) +) +(connector + (pt 528 544) + (pt 528 560) + (bus) +) +(connector + (pt 320 208) + (pt 320 216) +) +(connector + (pt 320 216) + (pt 320 280) +) +(connector + (pt 296 216) + (pt 320 216) +) +(connector + (pt 320 216) + (pt 376 216) +) +(connector + (pt 464 208) + (pt 464 216) +) +(connector + (pt 464 216) + (pt 464 280) +) +(connector + (pt 440 216) + (pt 464 216) +) +(connector + (pt 464 216) + (pt 520 216) +) +(connector + (pt 208 264) + (pt 336 264) +) +(connector + (pt 336 264) + (pt 384 264) +) +(connector + (pt 296 808) + (pt 320 808) +) +(connector + (pt 320 808) + (pt 376 808) +) +(connector + (pt 440 808) + (pt 464 808) +) +(connector + (pt 464 808) + (pt 520 808) +) +(connector + (pt 208 856) + (pt 336 856) +) +(connector + (pt 336 856) + (pt 384 856) +) +(connector + (pt 208 232) + (pt 216 232) +) +(connector + (pt 208 840) + (pt 216 840) +) +(connector + (pt 384 680) + (pt 384 728) +) +(connector + (pt 368 680) + (pt 368 696) +) +(connector + (pt 528 680) + (pt 528 728) +) +(connector + (pt 512 680) + (pt 512 696) +) +(connector + (pt 528 520) + (pt 528 528) + (bus) +) +(connector + (pt 384 520) + (pt 384 528) + (bus) +) +(connector + (pt 352 520) + (pt 352 536) +) +(connector + (pt 352 536) + (pt 352 560) +) +(connector + (pt 672 392) + (pt 672 400) +) +(connector + (pt 784 696) + (pt 784 728) +) +(connector + (pt 928 696) + (pt 928 728) +) +(connector + (pt 1088 696) + (pt 1088 728) +) +(connector + (pt 1232 696) + (pt 1232 728) +) +(connector + (pt 1376 696) + (pt 1376 728) +) +(connector + (pt 1520 696) + (pt 1520 728) +) +(connector + (pt 1664 696) + (pt 1664 728) +) +(connector + (pt 1808 696) + (pt 1808 728) +) +(connector + (pt 1952 696) + (pt 1952 728) +) +(connector + (pt 2096 696) + (pt 2096 728) +) +(connector + (pt 2240 696) + (pt 2240 728) +) +(connector + (pt 2384 696) + (pt 2384 728) +) +(connector + (pt 880 360) + (pt 880 528) + (bus) +) +(connector + (pt 880 712) + (pt 880 544) + (bus) +) +(connector + (pt 984 528) + (pt 1024 528) + (bus) +) +(connector + (pt 1024 360) + (pt 1024 528) + (bus) +) +(connector + (pt 1024 712) + (pt 1024 544) + (bus) +) +(connector + (pt 1144 528) + (pt 1184 528) + (bus) +) +(connector + (pt 1184 360) + (pt 1184 528) + (bus) +) +(connector + (pt 1184 712) + (pt 1184 544) + (bus) +) +(connector + (pt 1288 528) + (pt 1328 528) + (bus) +) +(connector + (pt 1328 360) + (pt 1328 528) + (bus) +) +(connector + (pt 1328 712) + (pt 1328 544) + (bus) +) +(connector + (pt 1432 528) + (pt 1472 528) + (bus) +) +(connector + (pt 1472 360) + (pt 1472 528) + (bus) +) +(connector + (pt 1472 712) + (pt 1472 544) + (bus) +) +(connector + (pt 1576 528) + (pt 1616 528) + (bus) +) +(connector + (pt 1616 360) + (pt 1616 528) + (bus) +) +(connector + (pt 1616 712) + (pt 1616 544) + (bus) +) +(connector + (pt 1720 528) + (pt 1760 528) + (bus) +) +(connector + (pt 1760 360) + (pt 1760 528) + (bus) +) +(connector + (pt 1760 712) + (pt 1760 544) + (bus) +) +(connector + (pt 1864 528) + (pt 1904 528) + (bus) +) +(connector + (pt 1904 360) + (pt 1904 528) + (bus) +) +(connector + (pt 1904 712) + (pt 1904 544) + (bus) +) +(connector + (pt 2008 528) + (pt 2048 528) + (bus) +) +(connector + (pt 2048 360) + (pt 2048 528) + (bus) +) +(connector + (pt 2048 712) + (pt 2048 544) + (bus) +) +(connector + (pt 2152 528) + (pt 2192 528) + (bus) +) +(connector + (pt 2192 360) + (pt 2192 528) + (bus) +) +(connector + (pt 2192 712) + (pt 2192 544) + (bus) +) +(connector + (pt 2296 528) + (pt 2336 528) + (bus) +) +(connector + (pt 2336 360) + (pt 2336 528) + (bus) +) +(connector + (pt 2336 712) + (pt 2336 544) + (bus) +) +(connector + (pt 2440 528) + (pt 2480 528) + (bus) +) +(connector + (pt 2480 360) + (pt 2480 528) + (bus) +) +(connector + (pt 2480 712) + (pt 2480 544) + (bus) +) +(connector + (pt 672 416) + (pt 672 680) +) +(connector + (pt 672 416) + (pt 720 416) +) +(connector + (pt 720 416) + (pt 720 312) +) +(connector + (pt 672 312) + (pt 720 312) +) +(connector + (pt 792 280) + (pt 792 264) +) +(connector + (pt 840 280) + (pt 840 264) +) +(connector + (pt 936 280) + (pt 936 264) +) +(connector + (pt 984 280) + (pt 984 264) +) +(connector + (pt 1096 280) + (pt 1096 264) +) +(connector + (pt 1144 280) + (pt 1144 264) +) +(connector + (pt 1240 280) + (pt 1240 264) +) +(connector + (pt 1288 280) + (pt 1288 264) +) +(connector + (pt 1384 280) + (pt 1384 264) +) +(connector + (pt 1432 280) + (pt 1432 264) +) +(connector + (pt 1528 280) + (pt 1528 264) +) +(connector + (pt 1576 280) + (pt 1576 264) +) +(connector + (pt 1672 280) + (pt 1672 264) +) +(connector + (pt 1720 280) + (pt 1720 264) +) +(connector + (pt 1816 280) + (pt 1816 264) +) +(connector + (pt 1864 280) + (pt 1864 264) +) +(connector + (pt 1960 280) + (pt 1960 264) +) +(connector + (pt 2008 280) + (pt 2008 264) +) +(connector + (pt 2104 280) + (pt 2104 264) +) +(connector + (pt 2152 280) + (pt 2152 264) +) +(connector + (pt 2248 280) + (pt 2248 264) +) +(connector + (pt 2296 280) + (pt 2296 264) +) +(connector + (pt 2392 280) + (pt 2392 264) +) +(connector + (pt 2440 280) + (pt 2440 264) +) +(connector + (pt 848 280) + (pt 848 248) +) +(connector + (pt 992 280) + (pt 992 248) +) +(connector + (pt 1152 280) + (pt 1152 248) +) +(connector + (pt 1296 280) + (pt 1296 248) +) +(connector + (pt 1440 280) + (pt 1440 248) +) +(connector + (pt 1584 280) + (pt 1584 248) +) +(connector + (pt 1728 280) + (pt 1728 248) +) +(connector + (pt 1872 280) + (pt 1872 248) +) +(connector + (pt 2016 280) + (pt 2016 248) +) +(connector + (pt 2160 280) + (pt 2160 248) +) +(connector + (pt 2304 280) + (pt 2304 248) +) +(connector + (pt 2448 280) + (pt 2448 248) +) +(connector + (pt 2496 824) + (pt 2496 248) +) +(connector + (pt 784 280) + (pt 784 232) +) +(connector + (pt 928 280) + (pt 928 232) +) +(connector + (pt 1088 280) + (pt 1088 232) +) +(connector + (pt 1136 280) + (pt 1136 216) +) +(connector + (pt 1232 280) + (pt 1232 232) +) +(connector + (pt 1376 280) + (pt 1376 232) +) +(connector + (pt 1520 280) + (pt 1520 232) +) +(connector + (pt 1664 280) + (pt 1664 232) +) +(connector + (pt 1808 280) + (pt 1808 232) +) +(connector + (pt 1952 280) + (pt 1952 232) +) +(connector + (pt 2096 280) + (pt 2096 232) +) +(connector + (pt 2240 280) + (pt 2240 232) +) +(connector + (pt 2384 280) + (pt 2384 232) +) +(connector + (pt 832 280) + (pt 832 216) +) +(connector + (pt 976 280) + (pt 976 216) +) +(connector + (pt 1280 280) + (pt 1280 216) +) +(connector + (pt 1424 280) + (pt 1424 216) +) +(connector + (pt 1568 280) + (pt 1568 216) +) +(connector + (pt 1712 280) + (pt 1712 216) +) +(connector + (pt 1856 280) + (pt 1856 216) +) +(connector + (pt 2000 280) + (pt 2000 216) +) +(connector + (pt 2144 280) + (pt 2144 216) +) +(connector + (pt 2288 280) + (pt 2288 216) +) +(connector + (pt 2432 280) + (pt 2432 216) +) +(connector + (pt 2512 840) + (pt 2512 232) +) +(connector + (pt 752 808) + (pt 752 216) +) +(connector + (pt 896 808) + (pt 896 216) +) +(connector + (pt 1056 808) + (pt 1056 216) +) +(connector + (pt 1200 808) + (pt 1200 216) +) +(connector + (pt 1344 808) + (pt 1344 216) +) +(connector + (pt 1488 808) + (pt 1488 216) +) +(connector + (pt 1632 808) + (pt 1632 216) +) +(connector + (pt 1776 808) + (pt 1776 216) +) +(connector + (pt 1920 808) + (pt 1920 216) +) +(connector + (pt 2064 808) + (pt 2064 216) +) +(connector + (pt 2208 808) + (pt 2208 216) +) +(connector + (pt 2352 808) + (pt 2352 216) +) +(connector + (pt 1136 792) + (pt 1136 808) +) +(connector + (pt 1144 792) + (pt 1144 856) +) +(connector + (pt 1152 792) + (pt 1152 824) +) +(connector + (pt 1280 792) + (pt 1280 808) +) +(connector + (pt 1288 792) + (pt 1288 856) +) +(connector + (pt 1296 792) + (pt 1296 824) +) +(connector + (pt 1424 792) + (pt 1424 808) +) +(connector + (pt 1432 792) + (pt 1432 856) +) +(connector + (pt 1440 792) + (pt 1440 824) +) +(connector + (pt 1568 792) + (pt 1568 808) +) +(connector + (pt 1576 792) + (pt 1576 856) +) +(connector + (pt 1584 792) + (pt 1584 824) +) +(connector + (pt 1712 792) + (pt 1712 808) +) +(connector + (pt 1720 792) + (pt 1720 856) +) +(connector + (pt 1728 792) + (pt 1728 824) +) +(connector + (pt 1856 792) + (pt 1856 808) +) +(connector + (pt 1864 792) + (pt 1864 856) +) +(connector + (pt 1872 792) + (pt 1872 824) +) +(connector + (pt 2000 792) + (pt 2000 808) +) +(connector + (pt 2008 792) + (pt 2008 856) +) +(connector + (pt 2016 792) + (pt 2016 824) +) +(connector + (pt 2144 792) + (pt 2144 808) +) +(connector + (pt 2152 792) + (pt 2152 856) +) +(connector + (pt 2160 792) + (pt 2160 824) +) +(connector + (pt 2288 792) + (pt 2288 808) +) +(connector + (pt 2296 792) + (pt 2296 856) +) +(connector + (pt 2304 792) + (pt 2304 824) +) +(connector + (pt 2432 792) + (pt 2432 808) +) +(connector + (pt 2440 792) + (pt 2440 856) +) +(connector + (pt 2448 792) + (pt 2448 824) +) +(connector + (pt 832 792) + (pt 832 808) +) +(connector + (pt 840 792) + (pt 840 856) +) +(connector + (pt 848 792) + (pt 848 824) +) +(connector + (pt 976 792) + (pt 976 808) +) +(connector + (pt 984 792) + (pt 984 856) +) +(connector + (pt 992 792) + (pt 992 824) +) +(connector + (pt 784 344) + (pt 784 376) +) +(connector + (pt 928 344) + (pt 928 376) +) +(connector + (pt 1088 344) + (pt 1088 376) +) +(connector + (pt 1232 344) + (pt 1232 376) +) +(connector + (pt 1376 344) + (pt 1376 376) +) +(connector + (pt 1520 344) + (pt 1520 376) +) +(connector + (pt 1664 344) + (pt 1664 376) +) +(connector + (pt 1808 344) + (pt 1808 376) +) +(connector + (pt 1952 344) + (pt 1952 376) +) +(connector + (pt 2096 344) + (pt 2096 376) +) +(connector + (pt 2240 344) + (pt 2240 376) +) +(connector + (pt 2384 344) + (pt 2384 376) +) +(connector + (pt 776 792) + (pt 776 808) +) +(connector + (pt 784 792) + (pt 784 840) +) +(connector + (pt 792 792) + (pt 792 856) +) +(connector + (pt 920 792) + (pt 920 808) +) +(connector + (pt 928 792) + (pt 928 840) +) +(connector + (pt 936 792) + (pt 936 856) +) +(connector + (pt 1080 792) + (pt 1080 808) +) +(connector + (pt 1088 792) + (pt 1088 840) +) +(connector + (pt 1096 792) + (pt 1096 856) +) +(connector + (pt 1224 792) + (pt 1224 808) +) +(connector + (pt 1232 792) + (pt 1232 840) +) +(connector + (pt 1240 792) + (pt 1240 856) +) +(connector + (pt 1368 792) + (pt 1368 808) +) +(connector + (pt 1376 792) + (pt 1376 840) +) +(connector + (pt 1384 792) + (pt 1384 856) +) +(connector + (pt 1512 792) + (pt 1512 808) +) +(connector + (pt 1520 792) + (pt 1520 840) +) +(connector + (pt 1528 792) + (pt 1528 856) +) +(connector + (pt 1656 792) + (pt 1656 808) +) +(connector + (pt 1664 792) + (pt 1664 840) +) +(connector + (pt 1672 792) + (pt 1672 856) +) +(connector + (pt 1800 792) + (pt 1800 808) +) +(connector + (pt 1808 792) + (pt 1808 840) +) +(connector + (pt 1816 792) + (pt 1816 856) +) +(connector + (pt 1944 792) + (pt 1944 808) +) +(connector + (pt 1952 792) + (pt 1952 840) +) +(connector + (pt 1960 792) + (pt 1960 856) +) +(connector + (pt 2088 792) + (pt 2088 808) +) +(connector + (pt 2096 792) + (pt 2096 840) +) +(connector + (pt 2104 792) + (pt 2104 856) +) +(connector + (pt 2232 792) + (pt 2232 808) +) +(connector + (pt 2240 792) + (pt 2240 840) +) +(connector + (pt 2248 792) + (pt 2248 856) +) +(connector + (pt 2376 792) + (pt 2376 808) +) +(connector + (pt 2384 792) + (pt 2384 840) +) +(connector + (pt 2392 792) + (pt 2392 856) +) +(connector + (pt 672 744) + (pt 672 760) +) +(connector + (pt 880 528) + (pt 840 528) + (bus) +) +(connector + (pt 784 376) + (pt 824 376) +) +(connector + (pt 840 344) + (pt 840 400) +) +(connector + (pt 824 376) + (pt 824 400) +) +(connector + (pt 928 376) + (pt 968 376) +) +(connector + (pt 984 344) + (pt 984 400) +) +(connector + (pt 968 376) + (pt 968 400) +) +(connector + (pt 1088 376) + (pt 1128 376) +) +(connector + (pt 1144 344) + (pt 1144 400) +) +(connector + (pt 1128 376) + (pt 1128 400) +) +(connector + (pt 1232 376) + (pt 1272 376) +) +(connector + (pt 1288 344) + (pt 1288 400) +) +(connector + (pt 1272 376) + (pt 1272 400) +) +(connector + (pt 1376 376) + (pt 1416 376) +) +(connector + (pt 1432 344) + (pt 1432 400) +) +(connector + (pt 1416 376) + (pt 1416 400) +) +(connector + (pt 1520 376) + (pt 1560 376) +) +(connector + (pt 1576 344) + (pt 1576 400) +) +(connector + (pt 1560 376) + (pt 1560 400) +) +(connector + (pt 1664 376) + (pt 1704 376) +) +(connector + (pt 1720 344) + (pt 1720 400) +) +(connector + (pt 1704 376) + (pt 1704 400) +) +(connector + (pt 1808 376) + (pt 1848 376) +) +(connector + (pt 1864 344) + (pt 1864 400) +) +(connector + (pt 1848 376) + (pt 1848 400) +) +(connector + (pt 1952 376) + (pt 1992 376) +) +(connector + (pt 2008 344) + (pt 2008 400) +) +(connector + (pt 1992 376) + (pt 1992 400) +) +(connector + (pt 2096 376) + (pt 2136 376) +) +(connector + (pt 2152 344) + (pt 2152 400) +) +(connector + (pt 2136 376) + (pt 2136 400) +) +(connector + (pt 2240 376) + (pt 2280 376) +) +(connector + (pt 2296 344) + (pt 2296 400) +) +(connector + (pt 2280 376) + (pt 2280 400) +) +(connector + (pt 2384 376) + (pt 2424 376) +) +(connector + (pt 2440 344) + (pt 2440 400) +) +(connector + (pt 2424 376) + (pt 2424 400) +) +(connector + (pt 2384 696) + (pt 2424 696) +) +(connector + (pt 2480 544) + (pt 2440 544) + (bus) +) +(connector + (pt 2440 544) + (pt 2440 560) + (bus) +) +(connector + (pt 2240 696) + (pt 2280 696) +) +(connector + (pt 2336 544) + (pt 2296 544) + (bus) +) +(connector + (pt 2296 544) + (pt 2296 560) + (bus) +) +(connector + (pt 2096 696) + (pt 2136 696) +) +(connector + (pt 2192 544) + (pt 2152 544) + (bus) +) +(connector + (pt 2152 544) + (pt 2152 560) + (bus) +) +(connector + (pt 1952 696) + (pt 1992 696) +) +(connector + (pt 2048 544) + (pt 2008 544) + (bus) +) +(connector + (pt 2008 544) + (pt 2008 560) + (bus) +) +(connector + (pt 1808 696) + (pt 1848 696) +) +(connector + (pt 1904 544) + (pt 1864 544) + (bus) +) +(connector + (pt 1864 544) + (pt 1864 560) + (bus) +) +(connector + (pt 1664 696) + (pt 1704 696) +) +(connector + (pt 1760 544) + (pt 1720 544) + (bus) +) +(connector + (pt 1720 544) + (pt 1720 560) + (bus) +) +(connector + (pt 1520 696) + (pt 1560 696) +) +(connector + (pt 1616 544) + (pt 1576 544) + (bus) +) +(connector + (pt 1576 544) + (pt 1576 560) + (bus) +) +(connector + (pt 1376 696) + (pt 1416 696) +) +(connector + (pt 1472 544) + (pt 1432 544) + (bus) +) +(connector + (pt 1432 544) + (pt 1432 560) + (bus) +) +(connector + (pt 1232 696) + (pt 1272 696) +) +(connector + (pt 1328 544) + (pt 1288 544) + (bus) +) +(connector + (pt 1288 544) + (pt 1288 560) + (bus) +) +(connector + (pt 1088 696) + (pt 1128 696) +) +(connector + (pt 1184 544) + (pt 1144 544) + (bus) +) +(connector + (pt 1144 544) + (pt 1144 560) + (bus) +) +(connector + (pt 928 696) + (pt 968 696) +) +(connector + (pt 1024 544) + (pt 984 544) + (bus) +) +(connector + (pt 984 544) + (pt 984 560) + (bus) +) +(connector + (pt 784 696) + (pt 824 696) +) +(connector + (pt 880 544) + (pt 840 544) + (bus) +) +(connector + (pt 840 544) + (pt 840 560) + (bus) +) +(connector + (pt 696 344) + (pt 712 344) + (bus) +) +(connector + (pt 696 376) + (pt 712 376) + (bus) +) +(connector + (pt 696 696) + (pt 712 696) + (bus) +) +(connector + (pt 696 728) + (pt 712 728) + (bus) +) +(connector + (pt 2664 248) + (pt 2672 248) +) +(connector + (pt 2672 248) + (pt 2672 232) +) +(connector + (pt 2608 392) + (pt 2608 400) +) +(connector + (pt 2608 416) + (pt 2608 680) +) +(connector + (pt 2608 744) + (pt 2608 760) +) +(connector + (pt 2632 344) + (pt 2648 344) + (bus) +) +(connector + (pt 2632 376) + (pt 2648 376) + (bus) +) +(connector + (pt 2632 696) + (pt 2648 696) + (bus) +) +(connector + (pt 2632 728) + (pt 2648 728) + (bus) +) +(connector + (pt 2608 416) + (pt 2656 416) +) +(connector + (pt 2608 760) + (pt 2544 760) +) +(connector + (pt 2560 400) + (pt 2608 400) +) +(connector + (pt 2608 328) + (pt 2608 320) +) +(connector + (pt 2608 320) + (pt 2584 320) +) +(connector + (pt 2656 304) + (pt 2656 416) +) +(connector + (pt 2600 304) + (pt 2656 304) +) +(connector + (pt 984 520) + (pt 984 528) + (bus) +) +(connector + (pt 1144 520) + (pt 1144 528) + (bus) +) +(connector + (pt 1288 520) + (pt 1288 528) + (bus) +) +(connector + (pt 1432 520) + (pt 1432 528) + (bus) +) +(connector + (pt 1576 520) + (pt 1576 528) + (bus) +) +(connector + (pt 1720 520) + (pt 1720 528) + (bus) +) +(connector + (pt 1864 520) + (pt 1864 528) + (bus) +) +(connector + (pt 2008 520) + (pt 2008 528) + (bus) +) +(connector + (pt 2152 520) + (pt 2152 528) + (bus) +) +(connector + (pt 2296 520) + (pt 2296 528) + (bus) +) +(connector + (pt 2440 520) + (pt 2440 528) + (bus) +) +(connector + (pt 840 528) + (pt 840 520) + (bus) +) +(connector + (pt 2440 680) + (pt 2440 728) +) +(connector + (pt 2424 680) + (pt 2424 696) +) +(connector + (pt 2296 680) + (pt 2296 728) +) +(connector + (pt 2280 680) + (pt 2280 696) +) +(connector + (pt 2152 680) + (pt 2152 728) +) +(connector + (pt 2136 680) + (pt 2136 696) +) +(connector + (pt 2008 680) + (pt 2008 728) +) +(connector + (pt 1992 680) + (pt 1992 696) +) +(connector + (pt 1864 680) + (pt 1864 728) +) +(connector + (pt 1848 680) + (pt 1848 696) +) +(connector + (pt 1720 680) + (pt 1720 728) +) +(connector + (pt 1704 680) + (pt 1704 696) +) +(connector + (pt 1576 680) + (pt 1576 728) +) +(connector + (pt 1560 680) + (pt 1560 696) +) +(connector + (pt 1432 680) + (pt 1432 728) +) +(connector + (pt 1416 680) + (pt 1416 696) +) +(connector + (pt 1288 680) + (pt 1288 728) +) +(connector + (pt 1272 680) + (pt 1272 696) +) +(connector + (pt 1144 680) + (pt 1144 728) +) +(connector + (pt 1128 680) + (pt 1128 696) +) +(connector + (pt 984 680) + (pt 984 728) +) +(connector + (pt 968 680) + (pt 968 696) +) +(connector + (pt 840 680) + (pt 840 728) +) +(connector + (pt 824 680) + (pt 824 696) +) +(connector + (pt 2584 208) + (pt 2584 320) +) +(connector + (pt 2600 208) + (pt 2600 304) +) +(connector + (pt 2544 208) + (pt 2544 760) +) +(connector + (pt 2560 208) + (pt 2560 400) +) +(connector + (pt 936 264) + (pt 984 264) +) +(connector + (pt 984 264) + (pt 1096 264) +) +(connector + (pt 1096 264) + (pt 1144 264) +) +(connector + (pt 1144 264) + (pt 1240 264) +) +(connector + (pt 1240 264) + (pt 1288 264) +) +(connector + (pt 1288 264) + (pt 1384 264) +) +(connector + (pt 1384 264) + (pt 1432 264) +) +(connector + (pt 1432 264) + (pt 1528 264) +) +(connector + (pt 992 248) + (pt 1152 248) +) +(connector + (pt 1152 248) + (pt 1296 248) +) +(connector + (pt 1296 248) + (pt 1440 248) +) +(connector + (pt 1440 248) + (pt 1584 248) +) +(connector + (pt 1584 248) + (pt 1728 248) +) +(connector + (pt 1728 248) + (pt 1872 248) +) +(connector + (pt 1872 248) + (pt 2016 248) +) +(connector + (pt 2016 248) + (pt 2160 248) +) +(connector + (pt 776 208) + (pt 776 216) +) +(connector + (pt 776 216) + (pt 776 280) +) +(connector + (pt 752 216) + (pt 776 216) +) +(connector + (pt 776 216) + (pt 832 216) +) +(connector + (pt 920 208) + (pt 920 216) +) +(connector + (pt 920 216) + (pt 920 280) +) +(connector + (pt 896 216) + (pt 920 216) +) +(connector + (pt 920 216) + (pt 976 216) +) +(connector + (pt 1080 208) + (pt 1080 216) +) +(connector + (pt 1080 216) + (pt 1080 280) +) +(connector + (pt 1056 216) + (pt 1080 216) +) +(connector + (pt 1080 216) + (pt 1136 216) +) +(connector + (pt 1224 208) + (pt 1224 216) +) +(connector + (pt 1224 216) + (pt 1224 280) +) +(connector + (pt 1200 216) + (pt 1224 216) +) +(connector + (pt 1224 216) + (pt 1280 216) +) +(connector + (pt 1368 208) + (pt 1368 216) +) +(connector + (pt 1368 216) + (pt 1368 280) +) +(connector + (pt 1344 216) + (pt 1368 216) +) +(connector + (pt 1368 216) + (pt 1424 216) +) +(connector + (pt 1512 208) + (pt 1512 216) +) +(connector + (pt 1512 216) + (pt 1512 280) +) +(connector + (pt 1488 216) + (pt 1512 216) +) +(connector + (pt 1512 216) + (pt 1568 216) +) +(connector + (pt 1656 208) + (pt 1656 216) +) +(connector + (pt 1656 216) + (pt 1656 280) +) +(connector + (pt 1632 216) + (pt 1656 216) +) +(connector + (pt 1656 216) + (pt 1712 216) +) +(connector + (pt 1800 208) + (pt 1800 216) +) +(connector + (pt 1800 216) + (pt 1800 280) +) +(connector + (pt 1776 216) + (pt 1800 216) +) +(connector + (pt 1800 216) + (pt 1856 216) +) +(connector + (pt 1944 208) + (pt 1944 216) +) +(connector + (pt 1944 216) + (pt 1944 280) +) +(connector + (pt 1920 216) + (pt 1944 216) +) +(connector + (pt 1944 216) + (pt 2000 216) +) +(connector + (pt 2088 208) + (pt 2088 216) +) +(connector + (pt 2088 216) + (pt 2088 280) +) +(connector + (pt 2064 216) + (pt 2088 216) +) +(connector + (pt 2088 216) + (pt 2144 216) +) +(connector + (pt 2232 208) + (pt 2232 216) +) +(connector + (pt 2232 216) + (pt 2232 280) +) +(connector + (pt 2208 216) + (pt 2232 216) +) +(connector + (pt 2232 216) + (pt 2288 216) +) +(connector + (pt 2376 208) + (pt 2376 216) +) +(connector + (pt 2376 216) + (pt 2376 280) +) +(connector + (pt 2352 216) + (pt 2376 216) +) +(connector + (pt 2376 216) + (pt 2432 216) +) +(connector + (pt 384 264) + (pt 480 264) +) +(connector + (pt 480 264) + (pt 528 264) +) +(connector + (pt 528 264) + (pt 792 264) +) +(connector + (pt 792 264) + (pt 840 264) +) +(connector + (pt 208 360) + (pt 424 360) + (bus) +) +(connector + (pt 632 344) + (pt 632 360) + (bus) +) +(connector + (pt 632 360) + (pt 632 376) + (bus) +) +(connector + (pt 424 360) + (pt 568 360) + (bus) +) +(connector + (pt 568 360) + (pt 632 360) + (bus) +) +(connector + (pt 208 712) + (pt 424 712) + (bus) +) +(connector + (pt 632 696) + (pt 632 712) + (bus) +) +(connector + (pt 632 712) + (pt 632 728) + (bus) +) +(connector + (pt 424 712) + (pt 568 712) + (bus) +) +(connector + (pt 568 712) + (pt 632 712) + (bus) +) +(connector + (pt 992 824) + (pt 1152 824) +) +(connector + (pt 1152 824) + (pt 1296 824) +) +(connector + (pt 1296 824) + (pt 1440 824) +) +(connector + (pt 1440 824) + (pt 1584 824) +) +(connector + (pt 1584 824) + (pt 1728 824) +) +(connector + (pt 1728 824) + (pt 1872 824) +) +(connector + (pt 1872 824) + (pt 2016 824) +) +(connector + (pt 2016 824) + (pt 2160 824) +) +(connector + (pt 2160 824) + (pt 2304 824) +) +(connector + (pt 2304 824) + (pt 2448 824) +) +(connector + (pt 2448 824) + (pt 2496 824) +) +(connector + (pt 752 808) + (pt 776 808) +) +(connector + (pt 776 808) + (pt 832 808) +) +(connector + (pt 896 808) + (pt 920 808) +) +(connector + (pt 920 808) + (pt 976 808) +) +(connector + (pt 1056 808) + (pt 1080 808) +) +(connector + (pt 1080 808) + (pt 1136 808) +) +(connector + (pt 1200 808) + (pt 1224 808) +) +(connector + (pt 1224 808) + (pt 1280 808) +) +(connector + (pt 1344 808) + (pt 1368 808) +) +(connector + (pt 1368 808) + (pt 1424 808) +) +(connector + (pt 936 856) + (pt 984 856) +) +(connector + (pt 984 856) + (pt 1096 856) +) +(connector + (pt 1488 808) + (pt 1512 808) +) +(connector + (pt 1512 808) + (pt 1568 808) +) +(connector + (pt 1096 856) + (pt 1144 856) +) +(connector + (pt 1144 856) + (pt 1240 856) +) +(connector + (pt 1632 808) + (pt 1656 808) +) +(connector + (pt 1656 808) + (pt 1712 808) +) +(connector + (pt 1240 856) + (pt 1288 856) +) +(connector + (pt 1288 856) + (pt 1384 856) +) +(connector + (pt 1776 808) + (pt 1800 808) +) +(connector + (pt 1800 808) + (pt 1856 808) +) +(connector + (pt 928 840) + (pt 1088 840) +) +(connector + (pt 1384 856) + (pt 1432 856) +) +(connector + (pt 1432 856) + (pt 1528 856) +) +(connector + (pt 1920 808) + (pt 1944 808) +) +(connector + (pt 1944 808) + (pt 2000 808) +) +(connector + (pt 1088 840) + (pt 1232 840) +) +(connector + (pt 1528 856) + (pt 1576 856) +) +(connector + (pt 1576 856) + (pt 1672 856) +) +(connector + (pt 2064 808) + (pt 2088 808) +) +(connector + (pt 2088 808) + (pt 2144 808) +) +(connector + (pt 1232 840) + (pt 1376 840) +) +(connector + (pt 1672 856) + (pt 1720 856) +) +(connector + (pt 1720 856) + (pt 1816 856) +) +(connector + (pt 2208 808) + (pt 2232 808) +) +(connector + (pt 2232 808) + (pt 2288 808) +) +(connector + (pt 1376 840) + (pt 1520 840) +) +(connector + (pt 1816 856) + (pt 1864 856) +) +(connector + (pt 1864 856) + (pt 1960 856) +) +(connector + (pt 2352 808) + (pt 2376 808) +) +(connector + (pt 2376 808) + (pt 2432 808) +) +(connector + (pt 1520 840) + (pt 1664 840) +) +(connector + (pt 1664 840) + (pt 1808 840) +) +(connector + (pt 1808 840) + (pt 1952 840) +) +(connector + (pt 1952 840) + (pt 2096 840) +) +(connector + (pt 2096 840) + (pt 2240 840) +) +(connector + (pt 2240 840) + (pt 2384 840) +) +(connector + (pt 2384 840) + (pt 2512 840) +) +(connector + (pt 1960 856) + (pt 2008 856) +) +(connector + (pt 2008 856) + (pt 2104 856) +) +(connector + (pt 2104 856) + (pt 2152 856) +) +(connector + (pt 2152 856) + (pt 2248 856) +) +(connector + (pt 280 824) + (pt 392 824) +) +(connector + (pt 392 824) + (pt 536 824) +) +(connector + (pt 536 824) + (pt 848 824) +) +(connector + (pt 216 840) + (pt 328 840) +) +(connector + (pt 328 840) + (pt 472 840) +) +(connector + (pt 472 840) + (pt 784 840) +) +(connector + (pt 384 856) + (pt 480 856) +) +(connector + (pt 480 856) + (pt 528 856) +) +(connector + (pt 528 856) + (pt 792 856) +) +(connector + (pt 792 856) + (pt 840 856) +) +(connector + (pt 672 208) + (pt 672 312) +) +(connector + (pt 672 312) + (pt 672 328) +) +(connector + (pt 216 232) + (pt 328 232) +) +(connector + (pt 328 232) + (pt 472 232) +) +(connector + (pt 472 232) + (pt 784 232) +) +(connector + (pt 280 248) + (pt 392 248) +) +(connector + (pt 392 248) + (pt 536 248) +) +(connector + (pt 536 248) + (pt 848 248) +) +(connector + (pt 712 344) + (pt 712 360) + (bus) +) +(connector + (pt 712 360) + (pt 712 376) + (bus) +) +(connector + (pt 712 360) + (pt 880 360) + (bus) +) +(connector + (pt 880 360) + (pt 1024 360) + (bus) +) +(connector + (pt 1024 360) + (pt 1184 360) + (bus) +) +(connector + (pt 1184 360) + (pt 1328 360) + (bus) +) +(connector + (pt 1328 360) + (pt 1472 360) + (bus) +) +(connector + (pt 1472 360) + (pt 1616 360) + (bus) +) +(connector + (pt 1616 360) + (pt 1760 360) + (bus) +) +(connector + (pt 1760 360) + (pt 1904 360) + (bus) +) +(connector + (pt 1904 360) + (pt 2048 360) + (bus) +) +(connector + (pt 712 696) + (pt 712 712) + (bus) +) +(connector + (pt 712 712) + (pt 712 728) + (bus) +) +(connector + (pt 712 712) + (pt 880 712) + (bus) +) +(connector + (pt 880 712) + (pt 1024 712) + (bus) +) +(connector + (pt 1024 712) + (pt 1184 712) + (bus) +) +(connector + (pt 1184 712) + (pt 1328 712) + (bus) +) +(connector + (pt 1328 712) + (pt 1472 712) + (bus) +) +(connector + (pt 1472 712) + (pt 1616 712) + (bus) +) +(connector + (pt 1616 712) + (pt 1760 712) + (bus) +) +(connector + (pt 1760 712) + (pt 1904 712) + (bus) +) +(connector + (pt 1904 712) + (pt 2048 712) + (bus) +) +(connector + (pt 928 232) + (pt 1088 232) +) +(connector + (pt 1088 232) + (pt 1232 232) +) +(connector + (pt 1232 232) + (pt 1376 232) +) +(connector + (pt 1376 232) + (pt 1520 232) +) +(connector + (pt 1520 232) + (pt 1664 232) +) +(connector + (pt 1664 232) + (pt 1808 232) +) +(connector + (pt 1808 232) + (pt 1952 232) +) +(connector + (pt 1952 232) + (pt 2096 232) +) +(connector + (pt 1528 264) + (pt 1576 264) +) +(connector + (pt 1576 264) + (pt 1672 264) +) +(connector + (pt 1672 264) + (pt 1720 264) +) +(connector + (pt 1720 264) + (pt 1816 264) +) +(connector + (pt 1816 264) + (pt 1864 264) +) +(connector + (pt 1864 264) + (pt 1960 264) +) +(connector + (pt 1960 264) + (pt 2008 264) +) +(connector + (pt 2008 264) + (pt 2104 264) +) +(connector + (pt 2104 264) + (pt 2152 264) +) +(connector + (pt 2152 264) + (pt 2248 264) +) +(connector + (pt 2096 232) + (pt 2240 232) +) +(connector + (pt 2160 248) + (pt 2304 248) +) +(connector + (pt 2248 264) + (pt 2296 264) +) +(connector + (pt 2240 232) + (pt 2384 232) +) +(connector + (pt 2304 248) + (pt 2448 248) +) +(connector + (pt 2296 264) + (pt 2392 264) +) +(connector + (pt 2384 232) + (pt 2512 232) +) +(connector + (pt 2248 856) + (pt 2296 856) +) +(connector + (pt 2296 856) + (pt 2392 856) +) +(connector + (pt 2048 360) + (pt 2192 360) + (bus) +) +(connector + (pt 2192 360) + (pt 2336 360) + (bus) +) +(connector + (pt 2568 344) + (pt 2568 360) + (bus) +) +(connector + (pt 2568 360) + (pt 2568 376) + (bus) +) +(connector + (pt 2336 360) + (pt 2480 360) + (bus) +) +(connector + (pt 2480 360) + (pt 2568 360) + (bus) +) +(connector + (pt 2048 712) + (pt 2192 712) + (bus) +) +(connector + (pt 2192 712) + (pt 2336 712) + (bus) +) +(connector + (pt 2568 696) + (pt 2568 712) + (bus) +) +(connector + (pt 2568 712) + (pt 2568 728) + (bus) +) +(connector + (pt 2336 712) + (pt 2480 712) + (bus) +) +(connector + (pt 2480 712) + (pt 2568 712) + (bus) +) +(connector + (pt 2264 520) + (pt 2264 536) +) +(connector + (pt 2264 536) + (pt 2264 560) +) +(connector + (pt 2408 520) + (pt 2408 536) +) +(connector + (pt 2408 536) + (pt 2408 560) +) +(connector + (pt 2120 520) + (pt 2120 536) +) +(connector + (pt 2120 536) + (pt 2120 560) +) +(connector + (pt 2264 536) + (pt 2408 536) +) +(connector + (pt 1976 520) + (pt 1976 536) +) +(connector + (pt 1976 536) + (pt 1976 560) +) +(connector + (pt 2120 536) + (pt 2264 536) +) +(connector + (pt 1832 520) + (pt 1832 536) +) +(connector + (pt 1832 536) + (pt 1832 560) +) +(connector + (pt 1976 536) + (pt 2120 536) +) +(connector + (pt 1688 520) + (pt 1688 536) +) +(connector + (pt 1688 536) + (pt 1688 560) +) +(connector + (pt 1832 536) + (pt 1976 536) +) +(connector + (pt 1544 520) + (pt 1544 536) +) +(connector + (pt 1544 536) + (pt 1544 560) +) +(connector + (pt 1688 536) + (pt 1832 536) +) +(connector + (pt 1400 520) + (pt 1400 536) +) +(connector + (pt 1400 536) + (pt 1400 560) +) +(connector + (pt 1544 536) + (pt 1688 536) +) +(connector + (pt 1256 520) + (pt 1256 536) +) +(connector + (pt 1256 536) + (pt 1256 560) +) +(connector + (pt 1400 536) + (pt 1544 536) +) +(connector + (pt 1112 520) + (pt 1112 536) +) +(connector + (pt 1112 536) + (pt 1112 560) +) +(connector + (pt 1256 536) + (pt 1400 536) +) +(connector + (pt 952 520) + (pt 952 536) +) +(connector + (pt 952 536) + (pt 952 560) +) +(connector + (pt 1112 536) + (pt 1256 536) +) +(connector + (pt 496 520) + (pt 496 536) +) +(connector + (pt 496 536) + (pt 496 560) +) +(connector + (pt 208 536) + (pt 352 536) +) +(connector + (pt 808 520) + (pt 808 536) +) +(connector + (pt 808 536) + (pt 808 560) +) +(connector + (pt 352 536) + (pt 496 536) +) +(connector + (pt 496 536) + (pt 808 536) +) +(connector + (pt 808 536) + (pt 952 536) +) +(connector + (pt 952 536) + (pt 1112 536) +) +(connector + (pt 2448 248) + (pt 2496 248) +) +(connector + (pt 2392 264) + (pt 2440 264) +) +(connector + (pt 2392 856) + (pt 2440 856) +) +(connector + (pt 2512 232) + (pt 2672 232) +) +(connector + (pt 2648 344) + (pt 2648 360) + (bus) +) +(connector + (pt 2648 360) + (pt 2648 376) + (bus) +) +(connector + (pt 2648 696) + (pt 2648 712) + (bus) +) +(connector + (pt 2648 712) + (pt 2648 728) + (bus) +) +(connector + (pt 632 344) + (pt 648 344) + (bus) +) +(connector + (pt 632 376) + (pt 648 376) + (bus) +) +(connector + (pt 632 696) + (pt 648 696) + (bus) +) +(connector + (pt 632 728) + (pt 648 728) + (bus) +) +(connector + (pt 2496 248) + (pt 2616 248) +) +(connector + (pt 2568 344) + (pt 2584 344) + (bus) +) +(connector + (pt 2568 376) + (pt 2584 376) + (bus) +) +(connector + (pt 2568 696) + (pt 2584 696) + (bus) +) +(connector + (pt 2568 728) + (pt 2584 728) + (bus) +) +(connector + (pt 2440 264) + (pt 2688 264) +) +(connector + (pt 2440 856) + (pt 2688 856) +) +(connector + (pt 2672 232) + (pt 2688 232) +) +(connector + (pt 2648 360) + (pt 2688 360) + (bus) +) +(connector + (pt 2648 712) + (pt 2688 712) + (bus) +) +(connector + (pt 672 400) + (pt 624 400) +) +(connector + (pt 672 760) + (pt 608 760) +) +(connector + (pt 624 208) + (pt 624 400) +) +(connector + (pt 608 208) + (pt 608 760) +) +(junction (pt 216 232)) +(junction (pt 216 840)) +(junction (pt 320 216)) +(junction (pt 464 216)) +(junction (pt 336 264)) +(junction (pt 384 264)) +(junction (pt 480 264)) +(junction (pt 528 264)) +(junction (pt 424 360)) +(junction (pt 568 360)) +(junction (pt 424 712)) +(junction (pt 568 712)) +(junction (pt 320 808)) +(junction (pt 464 808)) +(junction (pt 336 856)) +(junction (pt 384 856)) +(junction (pt 480 856)) +(junction (pt 528 856)) +(junction (pt 328 232)) +(junction (pt 472 232)) +(junction (pt 392 248)) +(junction (pt 536 248)) +(junction (pt 392 824)) +(junction (pt 536 824)) +(junction (pt 328 840)) +(junction (pt 472 840)) +(junction (pt 496 536)) +(junction (pt 352 536)) +(junction (pt 984 264)) +(junction (pt 1096 264)) +(junction (pt 1144 264)) +(junction (pt 1240 264)) +(junction (pt 1288 264)) +(junction (pt 1384 264)) +(junction (pt 1432 264)) +(junction (pt 1528 264)) +(junction (pt 1576 264)) +(junction (pt 1152 248)) +(junction (pt 1296 248)) +(junction (pt 1440 248)) +(junction (pt 1584 248)) +(junction (pt 1728 248)) +(junction (pt 1872 248)) +(junction (pt 2016 248)) +(junction (pt 2160 248)) +(junction (pt 2304 248)) +(junction (pt 776 216)) +(junction (pt 920 216)) +(junction (pt 1080 216)) +(junction (pt 1224 216)) +(junction (pt 1368 216)) +(junction (pt 1512 216)) +(junction (pt 1656 216)) +(junction (pt 1800 216)) +(junction (pt 1944 216)) +(junction (pt 2088 216)) +(junction (pt 2232 216)) +(junction (pt 2376 216)) +(junction (pt 792 264)) +(junction (pt 632 360)) +(junction (pt 632 712)) +(junction (pt 1152 824)) +(junction (pt 1296 824)) +(junction (pt 1440 824)) +(junction (pt 1584 824)) +(junction (pt 1728 824)) +(junction (pt 1872 824)) +(junction (pt 2016 824)) +(junction (pt 2160 824)) +(junction (pt 2304 824)) +(junction (pt 2448 824)) +(junction (pt 776 808)) +(junction (pt 920 808)) +(junction (pt 1080 808)) +(junction (pt 1224 808)) +(junction (pt 984 856)) +(junction (pt 1368 808)) +(junction (pt 1096 856)) +(junction (pt 1144 856)) +(junction (pt 1512 808)) +(junction (pt 1240 856)) +(junction (pt 1288 856)) +(junction (pt 1656 808)) +(junction (pt 1088 840)) +(junction (pt 1384 856)) +(junction (pt 1432 856)) +(junction (pt 1800 808)) +(junction (pt 1232 840)) +(junction (pt 1528 856)) +(junction (pt 1576 856)) +(junction (pt 1944 808)) +(junction (pt 1376 840)) +(junction (pt 1672 856)) +(junction (pt 1720 856)) +(junction (pt 2088 808)) +(junction (pt 1520 840)) +(junction (pt 1816 856)) +(junction (pt 1864 856)) +(junction (pt 2232 808)) +(junction (pt 1664 840)) +(junction (pt 1960 856)) +(junction (pt 2008 856)) +(junction (pt 2376 808)) +(junction (pt 1808 840)) +(junction (pt 1952 840)) +(junction (pt 2096 840)) +(junction (pt 2240 840)) +(junction (pt 2384 840)) +(junction (pt 2104 856)) +(junction (pt 2152 856)) +(junction (pt 2248 856)) +(junction (pt 2296 856)) +(junction (pt 792 856)) +(junction (pt 672 312)) +(junction (pt 880 360)) +(junction (pt 712 360)) +(junction (pt 1024 360)) +(junction (pt 1184 360)) +(junction (pt 1328 360)) +(junction (pt 1472 360)) +(junction (pt 1616 360)) +(junction (pt 1760 360)) +(junction (pt 1904 360)) +(junction (pt 2048 360)) +(junction (pt 2192 360)) +(junction (pt 880 712)) +(junction (pt 712 712)) +(junction (pt 1024 712)) +(junction (pt 1184 712)) +(junction (pt 1328 712)) +(junction (pt 1472 712)) +(junction (pt 1616 712)) +(junction (pt 1760 712)) +(junction (pt 1904 712)) +(junction (pt 2048 712)) +(junction (pt 2192 712)) +(junction (pt 1088 232)) +(junction (pt 1232 232)) +(junction (pt 1376 232)) +(junction (pt 1520 232)) +(junction (pt 1664 232)) +(junction (pt 1808 232)) +(junction (pt 1952 232)) +(junction (pt 2096 232)) +(junction (pt 2240 232)) +(junction (pt 1672 264)) +(junction (pt 1720 264)) +(junction (pt 1816 264)) +(junction (pt 1864 264)) +(junction (pt 1960 264)) +(junction (pt 2008 264)) +(junction (pt 2104 264)) +(junction (pt 2152 264)) +(junction (pt 2248 264)) +(junction (pt 2296 264)) +(junction (pt 2384 232)) +(junction (pt 2448 248)) +(junction (pt 2392 264)) +(junction (pt 2512 232)) +(junction (pt 2496 248)) +(junction (pt 2440 264)) +(junction (pt 2672 232)) +(junction (pt 2392 856)) +(junction (pt 2440 856)) +(junction (pt 2336 360)) +(junction (pt 2480 360)) +(junction (pt 2568 360)) +(junction (pt 2336 712)) +(junction (pt 2480 712)) +(junction (pt 2568 712)) +(junction (pt 2264 536)) +(junction (pt 2408 536)) +(junction (pt 2120 536)) +(junction (pt 1976 536)) +(junction (pt 1832 536)) +(junction (pt 1688 536)) +(junction (pt 1544 536)) +(junction (pt 1400 536)) +(junction (pt 1256 536)) +(junction (pt 1112 536)) +(junction (pt 952 536)) +(junction (pt 808 536)) +(junction (pt 2648 360)) +(junction (pt 2648 712)) +(text "SW4" (rect 640 792 681 810)(font "Arial" (color 0 0 0)(font_size 12))) +(text "Register Gate" (rect 2552 800 2666 818)(font "Arial" (color 0 0 0)(font_size 12))) +(rectangle (rect 592 296 728 776)(fill (color 255 170 255))) +(rectangle (rect 2528 296 2664 776)(fill (color 255 170 255))) +(title_block + (rect 32 888 353 949) + (name "title-custom-medium") + (section (rect 0 41 240 60)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 17, 2014, 2016" (rect 56 3 191 19)(font "Arial" (font_size 10)))(border)) + (section (rect 0 21 320 40)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 151 19)(font "Arial" (font_size 11)))(border)) + (section (rect 130 0 320 20)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "reg_file" (rect 43 2 109 21)(font "Arial" (font_size 12)(bold)))(border)) + (section (rect 0 0 320 20)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 106 21)(font "Arial" (font_size 12)(bold)))(border)) + (section (rect 241 41 320 60)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.5" (rect 43 3 64 19)(font "Arial" (font_size 10)))(border)) + (drawing + ) +) diff --git a/cpu/registers/reg_file.bsf b/cpu/registers/reg_file.bsf new file mode 100644 index 0000000..cd79089 --- /dev/null +++ b/cpu/registers/reg_file.bsf @@ -0,0 +1,260 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 16 16 240 528) + (text "reg_file" (rect 5 0 47 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 496 25 508)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "reg_sel_ir" (rect 0 0 56 14)(font "Arial" (font_size 8))) + (text "reg_sel_ir" (rect 21 27 77 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "reg_sel_pc" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "reg_sel_pc" (rect 21 43 84 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 0 64) + (input) + (text "ctl_sw_4u" (rect 0 0 60 14)(font "Arial" (font_size 8))) + (text "ctl_sw_4u" (rect 21 59 81 73)(font "Arial" (font_size 8))) + (line (pt 0 64)(pt 16 64)) + ) + (port + (pt 0 80) + (input) + (text "reg_sel_wz" (rect 0 0 68 14)(font "Arial" (font_size 8))) + (text "reg_sel_wz" (rect 21 75 89 89)(font "Arial" (font_size 8))) + (line (pt 0 80)(pt 16 80)) + ) + (port + (pt 0 96) + (input) + (text "reg_sel_sp" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "reg_sel_sp" (rect 21 91 84 105)(font "Arial" (font_size 8))) + (line (pt 0 96)(pt 16 96)) + ) + (port + (pt 0 112) + (input) + (text "reg_sel_iy" (rect 0 0 59 14)(font "Arial" (font_size 8))) + (text "reg_sel_iy" (rect 21 107 80 121)(font "Arial" (font_size 8))) + (line (pt 0 112)(pt 16 112)) + ) + (port + (pt 0 128) + (input) + (text "reg_sel_ix" (rect 0 0 59 14)(font "Arial" (font_size 8))) + (text "reg_sel_ix" (rect 21 123 80 137)(font "Arial" (font_size 8))) + (line (pt 0 128)(pt 16 128)) + ) + (port + (pt 0 144) + (input) + (text "reg_sel_hl2" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "reg_sel_hl2" (rect 21 139 87 153)(font "Arial" (font_size 8))) + (line (pt 0 144)(pt 16 144)) + ) + (port + (pt 0 160) + (input) + (text "reg_sel_hl" (rect 0 0 59 14)(font "Arial" (font_size 8))) + (text "reg_sel_hl" (rect 21 155 80 169)(font "Arial" (font_size 8))) + (line (pt 0 160)(pt 16 160)) + ) + (port + (pt 0 176) + (input) + (text "reg_sel_de2" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "reg_sel_de2" (rect 21 171 91 185)(font "Arial" (font_size 8))) + (line (pt 0 176)(pt 16 176)) + ) + (port + (pt 0 192) + (input) + (text "reg_sel_de" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "reg_sel_de" (rect 21 187 84 201)(font "Arial" (font_size 8))) + (line (pt 0 192)(pt 16 192)) + ) + (port + (pt 0 208) + (input) + (text "reg_sel_bc2" (rect 0 0 70 14)(font "Arial" (font_size 8))) + (text "reg_sel_bc2" (rect 21 203 91 217)(font "Arial" (font_size 8))) + (line (pt 0 208)(pt 16 208)) + ) + (port + (pt 0 224) + (input) + (text "reg_sel_bc" (rect 0 0 63 14)(font "Arial" (font_size 8))) + (text "reg_sel_bc" (rect 21 219 84 233)(font "Arial" (font_size 8))) + (line (pt 0 224)(pt 16 224)) + ) + (port + (pt 0 240) + (input) + (text "reg_sel_af2" (rect 0 0 68 14)(font "Arial" (font_size 8))) + (text "reg_sel_af2" (rect 21 235 89 249)(font "Arial" (font_size 8))) + (line (pt 0 240)(pt 16 240)) + ) + (port + (pt 0 256) + (input) + (text "reg_sel_af" (rect 0 0 61 14)(font "Arial" (font_size 8))) + (text "reg_sel_af" (rect 21 251 82 265)(font "Arial" (font_size 8))) + (line (pt 0 256)(pt 16 256)) + ) + (port + (pt 0 272) + (input) + (text "ctl_reg_in_hi" (rect 0 0 71 14)(font "Arial" (font_size 8))) + (text "ctl_reg_in_hi" (rect 21 267 92 281)(font "Arial" (font_size 8))) + (line (pt 0 272)(pt 16 272)) + ) + (port + (pt 0 288) + (input) + (text "ctl_reg_in_lo" (rect 0 0 71 14)(font "Arial" (font_size 8))) + (text "ctl_reg_in_lo" (rect 21 283 92 297)(font "Arial" (font_size 8))) + (line (pt 0 288)(pt 16 288)) + ) + (port + (pt 0 304) + (input) + (text "ctl_reg_out_lo" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "ctl_reg_out_lo" (rect 21 299 101 313)(font "Arial" (font_size 8))) + (line (pt 0 304)(pt 16 304)) + ) + (port + (pt 0 320) + (input) + (text "ctl_reg_out_hi" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "ctl_reg_out_hi" (rect 21 315 101 329)(font "Arial" (font_size 8))) + (line (pt 0 320)(pt 16 320)) + ) + (port + (pt 0 336) + (input) + (text "reg_sw_4d_lo" (rect 0 0 82 14)(font "Arial" (font_size 8))) + (text "reg_sw_4d_lo" (rect 21 331 103 345)(font "Arial" (font_size 8))) + (line (pt 0 336)(pt 16 336)) + ) + (port + (pt 0 352) + (input) + (text "reg_sw_4d_hi" (rect 0 0 82 14)(font "Arial" (font_size 8))) + (text "reg_sw_4d_hi" (rect 21 347 103 361)(font "Arial" (font_size 8))) + (line (pt 0 352)(pt 16 352)) + ) + (port + (pt 0 368) + (input) + (text "reg_gp_we" (rect 0 0 66 14)(font "Arial" (font_size 8))) + (text "reg_gp_we" (rect 21 363 87 377)(font "Arial" (font_size 8))) + (line (pt 0 368)(pt 16 368)) + ) + (port + (pt 0 384) + (input) + (text "reg_sys_we_lo" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "reg_sys_we_lo" (rect 21 379 110 393)(font "Arial" (font_size 8))) + (line (pt 0 384)(pt 16 384)) + ) + (port + (pt 0 400) + (input) + (text "reg_sel_sys_lo" (rect 0 0 87 14)(font "Arial" (font_size 8))) + (text "reg_sel_sys_lo" (rect 21 395 108 409)(font "Arial" (font_size 8))) + (line (pt 0 400)(pt 16 400)) + ) + (port + (pt 0 416) + (input) + (text "reg_sel_gp_lo" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "reg_sel_gp_lo" (rect 21 411 101 425)(font "Arial" (font_size 8))) + (line (pt 0 416)(pt 16 416)) + ) + (port + (pt 0 432) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 21 427 36 441)(font "Arial" (font_size 8))) + (line (pt 0 432)(pt 16 432)) + ) + (port + (pt 0 448) + (input) + (text "reg_sys_we_hi" (rect 0 0 89 14)(font "Arial" (font_size 8))) + (text "reg_sys_we_hi" (rect 21 443 110 457)(font "Arial" (font_size 8))) + (line (pt 0 448)(pt 16 448)) + ) + (port + (pt 0 464) + (input) + (text "reg_sel_sys_hi" (rect 0 0 87 14)(font "Arial" (font_size 8))) + (text "reg_sel_sys_hi" (rect 21 459 108 473)(font "Arial" (font_size 8))) + (line (pt 0 464)(pt 16 464)) + ) + (port + (pt 0 480) + (input) + (text "reg_sel_gp_hi" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "reg_sel_gp_hi" (rect 21 475 101 489)(font "Arial" (font_size 8))) + (line (pt 0 480)(pt 16 480)) + ) + (port + (pt 224 32) + (bidir) + (text "db_lo_ds[7..0]" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "db_lo_ds[7..0]" (rect 123 27 203 41)(font "Arial" (font_size 8))) + (line (pt 224 32)(pt 208 32)(line_width 3)) + ) + (port + (pt 224 48) + (bidir) + (text "db_lo_as[7..0]" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "db_lo_as[7..0]" (rect 123 43 203 57)(font "Arial" (font_size 8))) + (line (pt 224 48)(pt 208 48)(line_width 3)) + ) + (port + (pt 224 64) + (bidir) + (text "db_hi_ds[7..0]" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "db_hi_ds[7..0]" (rect 123 59 203 73)(font "Arial" (font_size 8))) + (line (pt 224 64)(pt 208 64)(line_width 3)) + ) + (port + (pt 224 80) + (bidir) + (text "db_hi_as[7..0]" (rect 0 0 80 14)(font "Arial" (font_size 8))) + (text "db_hi_as[7..0]" (rect 123 75 203 89)(font "Arial" (font_size 8))) + (line (pt 224 80)(pt 208 80)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 208 496)) + ) +) diff --git a/cpu/registers/reg_file.v b/cpu/registers/reg_file.v new file mode 100644 index 0000000..c7b2229 --- /dev/null +++ b/cpu/registers/reg_file.v @@ -0,0 +1,570 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Tue Mar 08 06:12:46 2016" + +module reg_file( + reg_sel_sys_lo, + reg_sel_gp_lo, + reg_sel_sys_hi, + reg_sel_gp_hi, + reg_sel_ir, + reg_sel_pc, + ctl_sw_4u, + reg_sel_wz, + reg_sel_sp, + reg_sel_iy, + reg_sel_ix, + reg_sel_hl2, + reg_sel_hl, + reg_sel_de2, + reg_sel_de, + reg_sel_bc2, + reg_sel_bc, + reg_sel_af2, + reg_sel_af, + reg_gp_we, + reg_sys_we_lo, + reg_sys_we_hi, + ctl_reg_in_hi, + ctl_reg_in_lo, + ctl_reg_out_lo, + ctl_reg_out_hi, + clk, + reg_sw_4d_lo, + reg_sw_4d_hi, + db_hi_as, + db_hi_ds, + db_lo_as, + db_lo_ds +); + + +input wire reg_sel_sys_lo; +input wire reg_sel_gp_lo; +input wire reg_sel_sys_hi; +input wire reg_sel_gp_hi; +input wire reg_sel_ir; +input wire reg_sel_pc; +input wire ctl_sw_4u; +input wire reg_sel_wz; +input wire reg_sel_sp; +input wire reg_sel_iy; +input wire reg_sel_ix; +input wire reg_sel_hl2; +input wire reg_sel_hl; +input wire reg_sel_de2; +input wire reg_sel_de; +input wire reg_sel_bc2; +input wire reg_sel_bc; +input wire reg_sel_af2; +input wire reg_sel_af; +input wire reg_gp_we; +input wire reg_sys_we_lo; +input wire reg_sys_we_hi; +input wire ctl_reg_in_hi; +input wire ctl_reg_in_lo; +input wire ctl_reg_out_lo; +input wire ctl_reg_out_hi; +input wire clk; +input wire reg_sw_4d_lo; +input wire reg_sw_4d_hi; +inout wire [7:0] db_hi_as; +inout wire [7:0] db_hi_ds; +inout wire [7:0] db_lo_as; +inout wire [7:0] db_lo_ds; + +wire [7:0] gdfx_temp0; +wire [7:0] gdfx_temp1; +wire SYNTHESIZED_WIRE_84; +wire SYNTHESIZED_WIRE_85; +wire SYNTHESIZED_WIRE_86; +wire SYNTHESIZED_WIRE_28; +wire SYNTHESIZED_WIRE_29; +wire SYNTHESIZED_WIRE_30; +wire SYNTHESIZED_WIRE_31; +wire SYNTHESIZED_WIRE_32; +wire SYNTHESIZED_WIRE_33; +wire SYNTHESIZED_WIRE_34; +wire SYNTHESIZED_WIRE_35; +wire SYNTHESIZED_WIRE_36; +wire SYNTHESIZED_WIRE_37; +wire SYNTHESIZED_WIRE_38; +wire SYNTHESIZED_WIRE_39; +wire SYNTHESIZED_WIRE_40; +wire SYNTHESIZED_WIRE_41; +wire SYNTHESIZED_WIRE_42; +wire SYNTHESIZED_WIRE_43; +wire SYNTHESIZED_WIRE_44; +wire SYNTHESIZED_WIRE_45; +wire SYNTHESIZED_WIRE_46; +wire SYNTHESIZED_WIRE_47; +wire SYNTHESIZED_WIRE_48; +wire SYNTHESIZED_WIRE_49; +wire SYNTHESIZED_WIRE_50; +wire SYNTHESIZED_WIRE_51; +wire SYNTHESIZED_WIRE_52; +wire SYNTHESIZED_WIRE_53; +wire SYNTHESIZED_WIRE_54; +wire SYNTHESIZED_WIRE_55; +wire SYNTHESIZED_WIRE_56; +wire SYNTHESIZED_WIRE_57; +wire SYNTHESIZED_WIRE_58; +wire SYNTHESIZED_WIRE_59; +wire SYNTHESIZED_WIRE_60; +wire SYNTHESIZED_WIRE_61; +wire SYNTHESIZED_WIRE_62; +wire SYNTHESIZED_WIRE_63; +wire SYNTHESIZED_WIRE_64; +wire SYNTHESIZED_WIRE_65; +wire SYNTHESIZED_WIRE_66; +wire SYNTHESIZED_WIRE_67; +wire SYNTHESIZED_WIRE_68; +wire SYNTHESIZED_WIRE_69; +wire SYNTHESIZED_WIRE_70; +wire SYNTHESIZED_WIRE_71; +wire SYNTHESIZED_WIRE_72; +wire SYNTHESIZED_WIRE_73; +wire SYNTHESIZED_WIRE_74; +wire SYNTHESIZED_WIRE_75; +wire SYNTHESIZED_WIRE_76; +wire SYNTHESIZED_WIRE_77; +wire SYNTHESIZED_WIRE_78; +wire SYNTHESIZED_WIRE_79; +wire SYNTHESIZED_WIRE_80; +wire SYNTHESIZED_WIRE_81; +wire SYNTHESIZED_WIRE_82; +wire SYNTHESIZED_WIRE_83; + + + + +assign SYNTHESIZED_WIRE_82 = SYNTHESIZED_WIRE_84 & reg_sel_sys_lo & reg_sel_wz; + +assign SYNTHESIZED_WIRE_80 = reg_sel_wz & reg_sel_sys_hi & SYNTHESIZED_WIRE_85; + +assign SYNTHESIZED_WIRE_78 = SYNTHESIZED_WIRE_86 & reg_sel_gp_lo & reg_sel_sp; + +assign SYNTHESIZED_WIRE_76 = reg_sel_sp & reg_sel_gp_hi & SYNTHESIZED_WIRE_86; + +assign SYNTHESIZED_WIRE_84 = ~reg_sys_we_lo; + +assign SYNTHESIZED_WIRE_71 = reg_sel_gp_lo & reg_gp_we & reg_sel_iy; + +assign SYNTHESIZED_WIRE_85 = ~reg_sys_we_hi; + +assign SYNTHESIZED_WIRE_74 = SYNTHESIZED_WIRE_84 & reg_sel_sys_lo & reg_sel_pc; + +assign SYNTHESIZED_WIRE_67 = reg_sel_gp_lo & reg_gp_we & reg_sel_ix; + +assign SYNTHESIZED_WIRE_55 = reg_sel_gp_lo & reg_gp_we & reg_sel_hl2; + +assign SYNTHESIZED_WIRE_72 = reg_sel_pc & reg_sel_sys_hi & SYNTHESIZED_WIRE_85; + +assign SYNTHESIZED_WIRE_59 = reg_sel_gp_lo & reg_gp_we & reg_sel_hl; + +assign SYNTHESIZED_WIRE_47 = reg_sel_gp_lo & reg_gp_we & reg_sel_de2; + +assign SYNTHESIZED_WIRE_51 = reg_sel_gp_lo & reg_gp_we & reg_sel_de; + +assign SYNTHESIZED_WIRE_81 = reg_sel_wz & reg_sys_we_hi & reg_sel_sys_hi; + +assign SYNTHESIZED_WIRE_86 = ~reg_gp_we; + +assign SYNTHESIZED_WIRE_70 = SYNTHESIZED_WIRE_86 & reg_sel_gp_lo & reg_sel_iy; + +assign SYNTHESIZED_WIRE_68 = reg_sel_iy & reg_sel_gp_hi & SYNTHESIZED_WIRE_86; + +assign SYNTHESIZED_WIRE_39 = reg_sel_gp_lo & reg_gp_we & reg_sel_bc2; + +assign SYNTHESIZED_WIRE_43 = reg_sel_gp_lo & reg_gp_we & reg_sel_bc; + +assign SYNTHESIZED_WIRE_31 = reg_sel_gp_lo & reg_gp_we & reg_sel_af2; + +assign SYNTHESIZED_WIRE_77 = reg_sel_sp & reg_gp_we & reg_sel_gp_hi; + +assign SYNTHESIZED_WIRE_66 = SYNTHESIZED_WIRE_86 & reg_sel_gp_lo & reg_sel_ix; + +assign SYNTHESIZED_WIRE_64 = reg_sel_ix & reg_sel_gp_hi & SYNTHESIZED_WIRE_86; + +assign SYNTHESIZED_WIRE_35 = reg_sel_gp_lo & reg_gp_we & reg_sel_af; + +assign SYNTHESIZED_WIRE_69 = reg_sel_iy & reg_gp_we & reg_sel_gp_hi; + +assign SYNTHESIZED_WIRE_63 = reg_sel_sys_lo & reg_sys_we_lo & reg_sel_ir; + +assign SYNTHESIZED_WIRE_65 = reg_sel_ix & reg_gp_we & reg_sel_gp_hi; + +assign SYNTHESIZED_WIRE_53 = reg_sel_hl2 & reg_gp_we & reg_sel_gp_hi; + +assign SYNTHESIZED_WIRE_54 = SYNTHESIZED_WIRE_86 & reg_sel_gp_lo & reg_sel_hl2; + +assign SYNTHESIZED_WIRE_52 = reg_sel_hl2 & reg_sel_gp_hi & SYNTHESIZED_WIRE_86; + +assign SYNTHESIZED_WIRE_57 = reg_sel_hl & reg_gp_we & reg_sel_gp_hi; + +assign SYNTHESIZED_WIRE_45 = reg_sel_de2 & reg_gp_we & reg_sel_gp_hi; + +assign SYNTHESIZED_WIRE_49 = reg_sel_de & reg_gp_we & reg_sel_gp_hi; + +assign SYNTHESIZED_WIRE_37 = reg_sel_bc2 & reg_gp_we & reg_sel_gp_hi; + +assign SYNTHESIZED_WIRE_58 = SYNTHESIZED_WIRE_86 & reg_sel_gp_lo & reg_sel_hl; + +assign SYNTHESIZED_WIRE_56 = reg_sel_hl & reg_sel_gp_hi & SYNTHESIZED_WIRE_86; + +assign SYNTHESIZED_WIRE_75 = reg_sel_sys_lo & reg_sys_we_lo & reg_sel_pc; + +assign SYNTHESIZED_WIRE_41 = reg_sel_bc & reg_gp_we & reg_sel_gp_hi; + +assign SYNTHESIZED_WIRE_29 = reg_sel_af2 & reg_gp_we & reg_sel_gp_hi; + +assign SYNTHESIZED_WIRE_33 = reg_sel_af & reg_gp_we & reg_sel_gp_hi; + +assign SYNTHESIZED_WIRE_61 = reg_sel_ir & reg_sys_we_hi & reg_sel_sys_hi; + +assign SYNTHESIZED_WIRE_46 = SYNTHESIZED_WIRE_86 & reg_sel_gp_lo & reg_sel_de2; + +assign SYNTHESIZED_WIRE_44 = reg_sel_de2 & reg_sel_gp_hi & SYNTHESIZED_WIRE_86; + +assign SYNTHESIZED_WIRE_73 = reg_sel_pc & reg_sys_we_hi & reg_sel_sys_hi; + +assign SYNTHESIZED_WIRE_83 = reg_sel_sys_lo & reg_sys_we_lo & reg_sel_wz; + +assign SYNTHESIZED_WIRE_50 = SYNTHESIZED_WIRE_86 & reg_sel_gp_lo & reg_sel_de; + +assign SYNTHESIZED_WIRE_48 = reg_sel_de & reg_sel_gp_hi & SYNTHESIZED_WIRE_86; + +assign SYNTHESIZED_WIRE_38 = SYNTHESIZED_WIRE_86 & reg_sel_gp_lo & reg_sel_bc2; + +assign SYNTHESIZED_WIRE_36 = reg_sel_bc2 & reg_sel_gp_hi & SYNTHESIZED_WIRE_86; + +assign SYNTHESIZED_WIRE_42 = SYNTHESIZED_WIRE_86 & reg_sel_gp_lo & reg_sel_bc; + +assign SYNTHESIZED_WIRE_40 = reg_sel_bc & reg_sel_gp_hi & SYNTHESIZED_WIRE_86; + +assign SYNTHESIZED_WIRE_30 = SYNTHESIZED_WIRE_86 & reg_sel_gp_lo & reg_sel_af2; + +assign SYNTHESIZED_WIRE_28 = reg_sel_af2 & reg_sel_gp_hi & SYNTHESIZED_WIRE_86; + +assign SYNTHESIZED_WIRE_62 = SYNTHESIZED_WIRE_84 & reg_sel_sys_lo & reg_sel_ir; + +assign SYNTHESIZED_WIRE_34 = SYNTHESIZED_WIRE_86 & reg_sel_gp_lo & reg_sel_af; + +assign SYNTHESIZED_WIRE_32 = reg_sel_af & reg_sel_gp_hi & SYNTHESIZED_WIRE_86; + +assign SYNTHESIZED_WIRE_60 = reg_sel_ir & reg_sel_sys_hi & SYNTHESIZED_WIRE_85; + +assign SYNTHESIZED_WIRE_79 = reg_sel_gp_lo & reg_gp_we & reg_sel_sp; + + +reg_latch b2v_latch_af2_hi( + .oe(SYNTHESIZED_WIRE_28), + .we(SYNTHESIZED_WIRE_29), + .clk(clk), + .db(gdfx_temp1) + ); + + +reg_latch b2v_latch_af2_lo( + .oe(SYNTHESIZED_WIRE_30), + .we(SYNTHESIZED_WIRE_31), + .clk(clk), + .db(gdfx_temp0) + ); + + +reg_latch b2v_latch_af_hi( + .oe(SYNTHESIZED_WIRE_32), + .we(SYNTHESIZED_WIRE_33), + .clk(clk), + .db(gdfx_temp1) + ); + + +reg_latch b2v_latch_af_lo( + .oe(SYNTHESIZED_WIRE_34), + .we(SYNTHESIZED_WIRE_35), + .clk(clk), + .db(gdfx_temp0) + ); + + +reg_latch b2v_latch_bc2_hi( + .oe(SYNTHESIZED_WIRE_36), + .we(SYNTHESIZED_WIRE_37), + .clk(clk), + .db(gdfx_temp1) + ); + + +reg_latch b2v_latch_bc2_lo( + .oe(SYNTHESIZED_WIRE_38), + .we(SYNTHESIZED_WIRE_39), + .clk(clk), + .db(gdfx_temp0) + ); + + +reg_latch b2v_latch_bc_hi( + .oe(SYNTHESIZED_WIRE_40), + .we(SYNTHESIZED_WIRE_41), + .clk(clk), + .db(gdfx_temp1) + ); + + +reg_latch b2v_latch_bc_lo( + .oe(SYNTHESIZED_WIRE_42), + .we(SYNTHESIZED_WIRE_43), + .clk(clk), + .db(gdfx_temp0) + ); + + +reg_latch b2v_latch_de2_hi( + .oe(SYNTHESIZED_WIRE_44), + .we(SYNTHESIZED_WIRE_45), + .clk(clk), + .db(gdfx_temp1) + ); + + +reg_latch b2v_latch_de2_lo( + .oe(SYNTHESIZED_WIRE_46), + .we(SYNTHESIZED_WIRE_47), + .clk(clk), + .db(gdfx_temp0) + ); + + +reg_latch b2v_latch_de_hi( + .oe(SYNTHESIZED_WIRE_48), + .we(SYNTHESIZED_WIRE_49), + .clk(clk), + .db(gdfx_temp1) + ); + + +reg_latch b2v_latch_de_lo( + .oe(SYNTHESIZED_WIRE_50), + .we(SYNTHESIZED_WIRE_51), + .clk(clk), + .db(gdfx_temp0) + ); + + +reg_latch b2v_latch_hl2_hi( + .oe(SYNTHESIZED_WIRE_52), + .we(SYNTHESIZED_WIRE_53), + .clk(clk), + .db(gdfx_temp1) + ); + + +reg_latch b2v_latch_hl2_lo( + .oe(SYNTHESIZED_WIRE_54), + .we(SYNTHESIZED_WIRE_55), + .clk(clk), + .db(gdfx_temp0) + ); + + +reg_latch b2v_latch_hl_hi( + .oe(SYNTHESIZED_WIRE_56), + .we(SYNTHESIZED_WIRE_57), + .clk(clk), + .db(gdfx_temp1) + ); + + +reg_latch b2v_latch_hl_lo( + .oe(SYNTHESIZED_WIRE_58), + .we(SYNTHESIZED_WIRE_59), + .clk(clk), + .db(gdfx_temp0) + ); + + +reg_latch b2v_latch_ir_hi( + .oe(SYNTHESIZED_WIRE_60), + .we(SYNTHESIZED_WIRE_61), + .clk(clk), + .db(db_hi_as) + ); + + +reg_latch b2v_latch_ir_lo( + .oe(SYNTHESIZED_WIRE_62), + .we(SYNTHESIZED_WIRE_63), + .clk(clk), + .db(db_lo_as) + ); + + +reg_latch b2v_latch_ix_hi( + .oe(SYNTHESIZED_WIRE_64), + .we(SYNTHESIZED_WIRE_65), + .clk(clk), + .db(gdfx_temp1) + ); + + +reg_latch b2v_latch_ix_lo( + .oe(SYNTHESIZED_WIRE_66), + .we(SYNTHESIZED_WIRE_67), + .clk(clk), + .db(gdfx_temp0) + ); + + +reg_latch b2v_latch_iy_hi( + .oe(SYNTHESIZED_WIRE_68), + .we(SYNTHESIZED_WIRE_69), + .clk(clk), + .db(gdfx_temp1) + ); + + +reg_latch b2v_latch_iy_lo( + .oe(SYNTHESIZED_WIRE_70), + .we(SYNTHESIZED_WIRE_71), + .clk(clk), + .db(gdfx_temp0) + ); + + +reg_latch b2v_latch_pc_hi( + .oe(SYNTHESIZED_WIRE_72), + .we(SYNTHESIZED_WIRE_73), + .clk(clk), + .db(db_hi_as) + ); + + +reg_latch b2v_latch_pc_lo( + .oe(SYNTHESIZED_WIRE_74), + .we(SYNTHESIZED_WIRE_75), + .clk(clk), + .db(db_lo_as) + ); + + +reg_latch b2v_latch_sp_hi( + .oe(SYNTHESIZED_WIRE_76), + .we(SYNTHESIZED_WIRE_77), + .clk(clk), + .db(gdfx_temp1) + ); + + +reg_latch b2v_latch_sp_lo( + .oe(SYNTHESIZED_WIRE_78), + .we(SYNTHESIZED_WIRE_79), + .clk(clk), + .db(gdfx_temp0) + ); + + +reg_latch b2v_latch_wz_hi( + .oe(SYNTHESIZED_WIRE_80), + .we(SYNTHESIZED_WIRE_81), + .clk(clk), + .db(gdfx_temp1) + ); + + +reg_latch b2v_latch_wz_lo( + .oe(SYNTHESIZED_WIRE_82), + .we(SYNTHESIZED_WIRE_83), + .clk(clk), + .db(gdfx_temp0) + ); + +assign gdfx_temp0[7] = ctl_sw_4u ? db_lo_as[7] : 1'bz; +assign gdfx_temp0[6] = ctl_sw_4u ? db_lo_as[6] : 1'bz; +assign gdfx_temp0[5] = ctl_sw_4u ? db_lo_as[5] : 1'bz; +assign gdfx_temp0[4] = ctl_sw_4u ? db_lo_as[4] : 1'bz; +assign gdfx_temp0[3] = ctl_sw_4u ? db_lo_as[3] : 1'bz; +assign gdfx_temp0[2] = ctl_sw_4u ? db_lo_as[2] : 1'bz; +assign gdfx_temp0[1] = ctl_sw_4u ? db_lo_as[1] : 1'bz; +assign gdfx_temp0[0] = ctl_sw_4u ? db_lo_as[0] : 1'bz; + +assign db_lo_as[7] = reg_sw_4d_lo ? gdfx_temp0[7] : 1'bz; +assign db_lo_as[6] = reg_sw_4d_lo ? gdfx_temp0[6] : 1'bz; +assign db_lo_as[5] = reg_sw_4d_lo ? gdfx_temp0[5] : 1'bz; +assign db_lo_as[4] = reg_sw_4d_lo ? gdfx_temp0[4] : 1'bz; +assign db_lo_as[3] = reg_sw_4d_lo ? gdfx_temp0[3] : 1'bz; +assign db_lo_as[2] = reg_sw_4d_lo ? gdfx_temp0[2] : 1'bz; +assign db_lo_as[1] = reg_sw_4d_lo ? gdfx_temp0[1] : 1'bz; +assign db_lo_as[0] = reg_sw_4d_lo ? gdfx_temp0[0] : 1'bz; + +assign gdfx_temp1[7] = ctl_sw_4u ? db_hi_as[7] : 1'bz; +assign gdfx_temp1[6] = ctl_sw_4u ? db_hi_as[6] : 1'bz; +assign gdfx_temp1[5] = ctl_sw_4u ? db_hi_as[5] : 1'bz; +assign gdfx_temp1[4] = ctl_sw_4u ? db_hi_as[4] : 1'bz; +assign gdfx_temp1[3] = ctl_sw_4u ? db_hi_as[3] : 1'bz; +assign gdfx_temp1[2] = ctl_sw_4u ? db_hi_as[2] : 1'bz; +assign gdfx_temp1[1] = ctl_sw_4u ? db_hi_as[1] : 1'bz; +assign gdfx_temp1[0] = ctl_sw_4u ? db_hi_as[0] : 1'bz; + +assign db_hi_as[7] = reg_sw_4d_hi ? gdfx_temp1[7] : 1'bz; +assign db_hi_as[6] = reg_sw_4d_hi ? gdfx_temp1[6] : 1'bz; +assign db_hi_as[5] = reg_sw_4d_hi ? gdfx_temp1[5] : 1'bz; +assign db_hi_as[4] = reg_sw_4d_hi ? gdfx_temp1[4] : 1'bz; +assign db_hi_as[3] = reg_sw_4d_hi ? gdfx_temp1[3] : 1'bz; +assign db_hi_as[2] = reg_sw_4d_hi ? gdfx_temp1[2] : 1'bz; +assign db_hi_as[1] = reg_sw_4d_hi ? gdfx_temp1[1] : 1'bz; +assign db_hi_as[0] = reg_sw_4d_hi ? gdfx_temp1[0] : 1'bz; + +assign db_lo_ds[7] = ctl_reg_out_lo ? gdfx_temp0[7] : 1'bz; +assign db_lo_ds[6] = ctl_reg_out_lo ? gdfx_temp0[6] : 1'bz; +assign db_lo_ds[5] = ctl_reg_out_lo ? gdfx_temp0[5] : 1'bz; +assign db_lo_ds[4] = ctl_reg_out_lo ? gdfx_temp0[4] : 1'bz; +assign db_lo_ds[3] = ctl_reg_out_lo ? gdfx_temp0[3] : 1'bz; +assign db_lo_ds[2] = ctl_reg_out_lo ? gdfx_temp0[2] : 1'bz; +assign db_lo_ds[1] = ctl_reg_out_lo ? gdfx_temp0[1] : 1'bz; +assign db_lo_ds[0] = ctl_reg_out_lo ? gdfx_temp0[0] : 1'bz; + +assign gdfx_temp0[7] = ctl_reg_in_lo ? db_lo_ds[7] : 1'bz; +assign gdfx_temp0[6] = ctl_reg_in_lo ? db_lo_ds[6] : 1'bz; +assign gdfx_temp0[5] = ctl_reg_in_lo ? db_lo_ds[5] : 1'bz; +assign gdfx_temp0[4] = ctl_reg_in_lo ? db_lo_ds[4] : 1'bz; +assign gdfx_temp0[3] = ctl_reg_in_lo ? db_lo_ds[3] : 1'bz; +assign gdfx_temp0[2] = ctl_reg_in_lo ? db_lo_ds[2] : 1'bz; +assign gdfx_temp0[1] = ctl_reg_in_lo ? db_lo_ds[1] : 1'bz; +assign gdfx_temp0[0] = ctl_reg_in_lo ? db_lo_ds[0] : 1'bz; + +assign db_hi_ds[7] = ctl_reg_out_hi ? gdfx_temp1[7] : 1'bz; +assign db_hi_ds[6] = ctl_reg_out_hi ? gdfx_temp1[6] : 1'bz; +assign db_hi_ds[5] = ctl_reg_out_hi ? gdfx_temp1[5] : 1'bz; +assign db_hi_ds[4] = ctl_reg_out_hi ? gdfx_temp1[4] : 1'bz; +assign db_hi_ds[3] = ctl_reg_out_hi ? gdfx_temp1[3] : 1'bz; +assign db_hi_ds[2] = ctl_reg_out_hi ? gdfx_temp1[2] : 1'bz; +assign db_hi_ds[1] = ctl_reg_out_hi ? gdfx_temp1[1] : 1'bz; +assign db_hi_ds[0] = ctl_reg_out_hi ? gdfx_temp1[0] : 1'bz; + +assign gdfx_temp1[7] = ctl_reg_in_hi ? db_hi_ds[7] : 1'bz; +assign gdfx_temp1[6] = ctl_reg_in_hi ? db_hi_ds[6] : 1'bz; +assign gdfx_temp1[5] = ctl_reg_in_hi ? db_hi_ds[5] : 1'bz; +assign gdfx_temp1[4] = ctl_reg_in_hi ? db_hi_ds[4] : 1'bz; +assign gdfx_temp1[3] = ctl_reg_in_hi ? db_hi_ds[3] : 1'bz; +assign gdfx_temp1[2] = ctl_reg_in_hi ? db_hi_ds[2] : 1'bz; +assign gdfx_temp1[1] = ctl_reg_in_hi ? db_hi_ds[1] : 1'bz; +assign gdfx_temp1[0] = ctl_reg_in_hi ? db_hi_ds[0] : 1'bz; + + +endmodule diff --git a/cpu/registers/reg_latch.bdf b/cpu/registers/reg_latch.bdf new file mode 100644 index 0000000..e9aa11c --- /dev/null +++ b/cpu/registers/reg_latch.bdf @@ -0,0 +1,239 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "graphic" (version "1.4")) +(pin + (input) + (rect 24 144 200 160) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "we" (rect 9 0 21 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 32 200 48) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "oe" (rect 9 0 20 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (input) + (rect 24 128 200 144) + (text "INPUT" (rect 133 0 161 10)(font "Arial" (font_size 6))) + (text "clk" (rect 9 0 23 12)(font "Arial" )) + (pt 176 8) + (drawing + (line (pt 92 12)(pt 117 12)) + (line (pt 92 4)(pt 117 4)) + (line (pt 121 8)(pt 176 8)) + (line (pt 92 12)(pt 92 4)) + (line (pt 117 4)(pt 121 8)) + (line (pt 117 12)(pt 121 8)) + ) + (text "VCC" (rect 136 7 156 17)(font "Arial" (font_size 6))) +) +(pin + (bidir) + (rect 560 112 736 128) + (text "BIDIR" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "db[7..0]" (rect 90 0 127 12)(font "Arial" )) + (pt 0 8) + (drawing + (line (pt 56 4)(pt 78 4)) + (line (pt 0 8)(pt 52 8)) + (line (pt 56 12)(pt 78 12)) + (line (pt 78 4)(pt 82 8)) + (line (pt 78 12)(pt 82 8)) + (line (pt 56 4)(pt 52 8)) + (line (pt 52 8)(pt 56 12)) + ) + (text "VCC" (rect 4 7 24 17)(font "Arial" (font_size 6))) +) +(symbol + (rect 472 104 520 136) + (text "TRI" (rect 1 0 16 10)(font "Arial" (font_size 6))) + (text "inst" (rect 3 21 20 33)(font "Arial" )) + (port + (pt 0 16) + (input) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (text "IN" (rect 2 7 13 19)(font "Courier New" (bold))(invisible)) + (line (pt 0 16)(pt 14 16)) + ) + (port + (pt 24 0) + (input) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (text "OE" (rect 26 0 37 12)(font "Courier New" (bold))(invisible)) + (line (pt 24 12)(pt 24 0)) + ) + (port + (pt 48 16) + (output) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (text "OUT" (rect 32 7 49 19)(font "Courier New" (bold))(invisible)) + (line (pt 32 16)(pt 48 16)) + ) + (drawing + (line (pt 14 25)(pt 14 7)) + (line (pt 14 25)(pt 32 16)) + (line (pt 14 7)(pt 32 16)) + ) +) +(symbol + (rect 320 96 384 176) + (text "DFFE" (rect 1 0 25 10)(font "Arial" (font_size 6))) + (text "reg" (rect 3 68 18 80)(font "Arial" )) + (port + (pt 32 0) + (input) + (text "PRN" (rect 24 13 41 25)(font "Courier New" (bold))) + (text "PRN" (rect 24 11 41 23)(font "Courier New" (bold))) + (line (pt 32 4)(pt 32 0)) + ) + (port + (pt 32 80) + (input) + (text "CLRN" (rect 21 59 44 71)(font "Courier New" (bold))) + (text "CLRN" (rect 21 58 44 70)(font "Courier New" (bold))) + (line (pt 32 80)(pt 32 76)) + ) + (port + (pt 0 24) + (input) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (text "D" (rect 14 20 19 32)(font "Courier New" (bold))) + (line (pt 0 24)(pt 12 24)) + ) + (port + (pt 0 40) + (input) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (text "CLK" (rect 2 28 19 40)(font "Courier New" (bold))(invisible)) + (line (pt 0 40)(pt 12 40)) + ) + (port + (pt 0 56) + (input) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (text "ENA" (rect 14 50 31 62)(font "Courier New" (bold))) + (line (pt 0 56)(pt 12 56)) + ) + (port + (pt 64 24) + (output) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (text "Q" (rect 44 20 49 32)(font "Courier New" (bold))) + (line (pt 53 24)(pt 64 24)) + ) + (drawing + (line (pt 12 68)(pt 52 68)) + (line (pt 12 12)(pt 52 12)) + (line (pt 52 68)(pt 52 12)) + (line (pt 12 68)(pt 12 12)) + (line (pt 12 34)(pt 19 41)) + (line (pt 18 41)(pt 12 47)) + (circle (rect 28 4 36 12)) + (circle (rect 28 68 36 76)) + ) +) +(connector + (pt 536 120) + (pt 536 72) + (bus) +) +(connector + (pt 496 104) + (pt 496 40) +) +(connector + (pt 200 40) + (pt 496 40) +) +(connector + (pt 520 120) + (pt 536 120) + (bus) +) +(connector + (pt 536 120) + (pt 560 120) + (bus) +) +(connector + (pt 248 72) + (pt 536 72) + (bus) +) +(connector + (pt 248 72) + (pt 248 120) + (bus) +) +(connector + (pt 248 120) + (pt 320 120) + (bus) +) +(connector + (pt 200 152) + (pt 320 152) +) +(connector + (text "latch[7..0]" (rect 402 104 451 116)(font "Arial" )) + (pt 384 120) + (pt 472 120) + (bus) +) +(connector + (pt 200 136) + (pt 320 136) +) +(junction (pt 536 120)) +(text "Repeated 8 times to form a byte register" (rect 472 160 699 174)(font "Arial" (font_size 8))) +(title_block + (rect 24 208 281 260) + (name "title-custom-small") + (section (rect 0 0 256 17)(text "PROJECT" (rect 2 0 52 12)(font "Arial" ))(text "A-Z80" (rect 56 2 94 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 104 0 256 17)(text "MODULE" (rect 2 1 48 13)(font "Arial" ))(text "reg_latch" (rect 43 2 106 17)(font "Arial" (font_size 9)(bold)))(border)) + (section (rect 0 18 256 34)(text "DESIGNER" (rect 2 0 59 12)(font "Arial" ))(text "Goran Devic" (rect 56 2 135 17)(font "Arial" (font_size 9)))(border)) + (section (rect 0 35 256 51)(text "DATE" (rect 2 0 30 12)(font "Arial" ))(text "May 17, 2014" (rect 56 3 132 17)(font "Arial" (font_size 8)))(border)) + (section (rect 192 35 256 51)(text "REV" (rect 2 1 25 13)(font "Arial" ))(text "1.1" (rect 43 3 60 17)(font "Arial" (font_size 8)))(border)) + (drawing + ) +) diff --git a/cpu/registers/reg_latch.bsf b/cpu/registers/reg_latch.bsf new file mode 100644 index 0000000..4d18b7d --- /dev/null +++ b/cpu/registers/reg_latch.bsf @@ -0,0 +1,58 @@ +/* +WARNING: Do NOT edit the input and output ports in this file in a text +editor if you plan to continue editing the block that represents it in +the Block Editor! File corruption is VERY likely to occur. +*/ +/* +Copyright (C) 1991-2013 Altera Corporation +Your use of Altera Corporation's design tools, logic functions +and other software and tools, and its AMPP partner logic +functions, and any output files from any of the foregoing +(including device programming or simulation files), and any +associated documentation or information are expressly subject +to the terms and conditions of the Altera Program License +Subscription Agreement, Altera MegaCore Function License +Agreement, or other applicable license agreement, including, +without limitation, that your use is for the sole purpose of +programming logic devices manufactured by Altera and sold by +Altera or its authorized distributors. Please refer to the +applicable agreement for further details. +*/ +(header "symbol" (version "1.2")) +(symbol + (rect 64 64 184 160) + (text "reg_latch" (rect 5 0 58 14)(font "Arial" (font_size 8))) + (text "inst" (rect 8 80 25 92)(font "Arial" )) + (port + (pt 0 32) + (input) + (text "oe" (rect 0 0 14 14)(font "Arial" (font_size 8))) + (text "oe" (rect 21 27 35 41)(font "Arial" (font_size 8))) + (line (pt 0 32)(pt 16 32)) + ) + (port + (pt 0 48) + (input) + (text "we" (rect 0 0 18 14)(font "Arial" (font_size 8))) + (text "we" (rect 21 43 39 57)(font "Arial" (font_size 8))) + (line (pt 0 48)(pt 16 48)) + ) + (port + (pt 120 64) + (input) + (text "clk" (rect 0 0 15 14)(font "Arial" (font_size 8))) + (text "clk" (rect 73 56 88 70)(font "Arial" (font_size 8))) + (line (pt 104 64)(pt 120 64)) + ) + (port + (pt 120 32) + (bidir) + (text "db[7..0]" (rect 0 0 42 14)(font "Arial" (font_size 8))) + (text "db[7..0]" (rect 57 27 99 41)(font "Arial" (font_size 8))) + (line (pt 120 32)(pt 104 32)(line_width 3)) + ) + (drawing + (rectangle (rect 16 16 104 80)) + ) + (fill (color 85 255 127)) +) diff --git a/cpu/registers/reg_latch.v b/cpu/registers/reg_latch.v new file mode 100644 index 0000000..fbf96b0 --- /dev/null +++ b/cpu/registers/reg_latch.v @@ -0,0 +1,56 @@ +// Copyright (C) 1991-2013 Altera Corporation +// Your use of Altera Corporation's design tools, logic functions +// and other software and tools, and its AMPP partner logic +// functions, and any output files from any of the foregoing +// (including device programming or simulation files), and any +// associated documentation or information are expressly subject +// to the terms and conditions of the Altera Program License +// Subscription Agreement, Altera MegaCore Function License +// Agreement, or other applicable license agreement, including, +// without limitation, that your use is for the sole purpose of +// programming logic devices manufactured by Altera and sold by +// Altera or its authorized distributors. Please refer to the +// applicable agreement for further details. + +// PROGRAM "Quartus II 64-Bit" +// VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition" +// CREATED "Fri Nov 07 10:28:37 2014" + +module reg_latch( + we, + oe, + clk, + db +); + + +input wire we; +input wire oe; +input wire clk; +inout wire [7:0] db; + +reg [7:0] latch; + + + + +assign db[7] = oe ? latch[7] : 1'bz; +assign db[6] = oe ? latch[6] : 1'bz; +assign db[5] = oe ? latch[5] : 1'bz; +assign db[4] = oe ? latch[4] : 1'bz; +assign db[3] = oe ? latch[3] : 1'bz; +assign db[2] = oe ? latch[2] : 1'bz; +assign db[1] = oe ? latch[1] : 1'bz; +assign db[0] = oe ? latch[0] : 1'bz; + + +always@(posedge clk) +begin +if (we) + begin + latch[7:0] <= db[7:0]; + end +end + + +endmodule diff --git a/cpu/registers/simulation/modelsim/r b/cpu/registers/simulation/modelsim/r new file mode 100644 index 0000000..6504afb --- /dev/null +++ b/cpu/registers/simulation/modelsim/r @@ -0,0 +1 @@ +restart -f ; run -all diff --git a/cpu/registers/simulation/modelsim/test_registers.mpf b/cpu/registers/simulation/modelsim/test_registers.mpf new file mode 100644 index 0000000..eaa21e8 --- /dev/null +++ b/cpu/registers/simulation/modelsim/test_registers.mpf @@ -0,0 +1,510 @@ +; Copyright 1991-2009 Mentor Graphics Corporation +; +; All Rights Reserved. +; +; THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS THE PROPERTY OF +; MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS. +; + +[Library] +std = $MODEL_TECH/../std +ieee = $MODEL_TECH/../ieee +verilog = $MODEL_TECH/../verilog +vital2000 = $MODEL_TECH/../vital2000 +std_developerskit = $MODEL_TECH/../std_developerskit +synopsys = $MODEL_TECH/../synopsys +modelsim_lib = $MODEL_TECH/../modelsim_lib +sv_std = $MODEL_TECH/../sv_std + +; Altera Primitive libraries +; +; VHDL Section +; +altera_mf = $MODEL_TECH/../altera/vhdl/altera_mf +altera = $MODEL_TECH/../altera/vhdl/altera +altera_lnsim = $MODEL_TECH/../altera/vhdl/altera_lnsim +lpm = $MODEL_TECH/../altera/vhdl/220model +220model = $MODEL_TECH/../altera/vhdl/220model +max = $MODEL_TECH/../altera/vhdl/max +maxii = $MODEL_TECH/../altera/vhdl/maxii +maxv = $MODEL_TECH/../altera/vhdl/maxv +stratix = $MODEL_TECH/../altera/vhdl/stratix +stratixii = $MODEL_TECH/../altera/vhdl/stratixii +stratixiigx = $MODEL_TECH/../altera/vhdl/stratixiigx +hardcopyii = $MODEL_TECH/../altera/vhdl/hardcopyii +hardcopyiii = $MODEL_TECH/../altera/vhdl/hardcopyiii +hardcopyiv = $MODEL_TECH/../altera/vhdl/hardcopyiv +cyclone = $MODEL_TECH/../altera/vhdl/cyclone +cycloneii = $MODEL_TECH/../altera/vhdl/cycloneii +cycloneiii = $MODEL_TECH/../altera/vhdl/cycloneiii +cycloneiiils = $MODEL_TECH/../altera/vhdl/cycloneiiils +sgate = $MODEL_TECH/../altera/vhdl/sgate +stratixgx = $MODEL_TECH/../altera/vhdl/stratixgx +altgxb = $MODEL_TECH/../altera/vhdl/altgxb +stratixgx_gxb = $MODEL_TECH/../altera/vhdl/stratixgx_gxb +stratixiigx_hssi = $MODEL_TECH/../altera/vhdl/stratixiigx_hssi +arriagx_hssi = $MODEL_TECH/../altera/vhdl/arriagx_hssi +arriaii = $MODEL_TECH/../altera/vhdl/arriaii +arriaii_hssi = $MODEL_TECH/../altera/vhdl/arriaii_hssi +arriaii_pcie_hip = $MODEL_TECH/../altera/vhdl/arriaii_pcie_hip +arriaiigz = $MODEL_TECH/../altera/vhdl/arriaiigz +arriaiigz_hssi = $MODEL_TECH/../altera/vhdl/arriaiigz_hssi +arriaiigz_pcie_hip = $MODEL_TECH/../altera/vhdl/arriaiigz_pcie_hip +arriagx = $MODEL_TECH/../altera/vhdl/arriagx +altgxb_lib = $MODEL_TECH/../altera/vhdl/altgxb +stratixiv = $MODEL_TECH/../altera/vhdl/stratixiv +stratixiv_hssi = $MODEL_TECH/../altera/vhdl/stratixiv_hssi +stratixiv_pcie_hip = $MODEL_TECH/../altera/vhdl/stratixiv_pcie_hip +cycloneiv = $MODEL_TECH/../altera/vhdl/cycloneiv +cycloneiv_hssi = $MODEL_TECH/../altera/vhdl/cycloneiv_hssi +cycloneiv_pcie_hip = $MODEL_TECH/../altera/vhdl/cycloneiv_pcie_hip +cycloneive = $MODEL_TECH/../altera/vhdl/cycloneive +hardcopyiv_hssi = $MODEL_TECH/../altera/vhdl/hardcopyiv_hssi +hardcopyiv_pcie_hip = $MODEL_TECH/../altera/vhdl/hardcopyiv_pcie_hip +stratixv = $MODEL_TECH/../altera/vhdl/stratixv +stratixv_hssi = $MODEL_TECH/../altera/vhdl/stratixv_hssi +stratixv_pcie_hip = $MODEL_TECH/../altera/vhdl/stratixv_pcie_hip +arriavgz = $MODEL_TECH/../altera/vhdl/arriavgz +arriavgz_hssi = $MODEL_TECH/../altera/vhdl/arriavgz_hssi +arriavgz_pcie_hip = $MODEL_TECH/../altera/vhdl/arriavgz_pcie_hip +arriav = $MODEL_TECH/../altera/vhdl/arriav +cyclonev = $MODEL_TECH/../altera/vhdl/cyclonev +; +; Verilog Section +; +altera_mf_ver = $MODEL_TECH/../altera/verilog/altera_mf +altera_ver = $MODEL_TECH/../altera/verilog/altera +altera_lnsim_ver = $MODEL_TECH/../altera/verilog/altera_lnsim +lpm_ver = $MODEL_TECH/../altera/verilog/220model +220model_ver = $MODEL_TECH/../altera/verilog/220model +max_ver = $MODEL_TECH/../altera/verilog/max +maxii_ver = $MODEL_TECH/../altera/verilog/maxii +maxv_ver = $MODEL_TECH/../altera/verilog/maxv +stratix_ver = $MODEL_TECH/../altera/verilog/stratix +stratixii_ver = $MODEL_TECH/../altera/verilog/stratixii +stratixiigx_ver = $MODEL_TECH/../altera/verilog/stratixiigx +arriagx_ver = $MODEL_TECH/../altera/verilog/arriagx +hardcopyii_ver = $MODEL_TECH/../altera/verilog/hardcopyii +hardcopyiii_ver = $MODEL_TECH/../altera/verilog/hardcopyiii +hardcopyiv_ver = $MODEL_TECH/../altera/verilog/hardcopyiv +cyclone_ver = $MODEL_TECH/../altera/verilog/cyclone +cycloneii_ver = $MODEL_TECH/../altera/verilog/cycloneii +cycloneiii_ver = $MODEL_TECH/../altera/verilog/cycloneiii +cycloneiiils_ver = $MODEL_TECH/../altera/verilog/cycloneiiils +sgate_ver = $MODEL_TECH/../altera/verilog/sgate +stratixgx_ver = $MODEL_TECH/../altera/verilog/stratixgx +altgxb_ver = $MODEL_TECH/../altera/verilog/altgxb +stratixgx_gxb_ver = $MODEL_TECH/../altera/verilog/stratixgx_gxb +stratixiigx_hssi_ver = $MODEL_TECH/../altera/verilog/stratixiigx_hssi +arriagx_hssi_ver = $MODEL_TECH/../altera/verilog/arriagx_hssi +arriaii_ver = $MODEL_TECH/../altera/verilog/arriaii +arriaii_hssi_ver = $MODEL_TECH/../altera/verilog/arriaii_hssi +arriaii_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriaii_pcie_hip +arriaiigz_ver = $MODEL_TECH/../altera/verilog/arriaiigz +arriaiigz_hssi_ver = $MODEL_TECH/../altera/verilog/arriaiigz_hssi +arriaiigz_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriaiigz_pcie_hip +stratixiii_ver = $MODEL_TECH/../altera/verilog/stratixiii +stratixiii = $MODEL_TECH/../altera/vhdl/stratixiii +stratixiv_ver = $MODEL_TECH/../altera/verilog/stratixiv +stratixiv_hssi_ver = $MODEL_TECH/../altera/verilog/stratixiv_hssi +stratixiv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/stratixiv_pcie_hip +stratixv_ver = $MODEL_TECH/../altera/verilog/stratixv +stratixv_hssi_ver = $MODEL_TECH/../altera/verilog/stratixv_hssi +stratixv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/stratixv_pcie_hip +arriavgz_ver = $MODEL_TECH/../altera/verilog/arriavgz +arriavgz_hssi_ver = $MODEL_TECH/../altera/verilog/arriavgz_hssi +arriavgz_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriavgz_pcie_hip +arriav_ver = $MODEL_TECH/../altera/verilog/arriav +arriav_hssi_ver = $MODEL_TECH/../altera/verilog/arriav_hssi +arriav_pcie_hip_ver = $MODEL_TECH/../altera/verilog/arriav_pcie_hip +cyclonev_ver = $MODEL_TECH/../altera/verilog/cyclonev +cyclonev_hssi_ver = $MODEL_TECH/../altera/verilog/cyclonev_hssi +cyclonev_pcie_hip_ver = $MODEL_TECH/../altera/verilog/cyclonev_pcie_hip +cycloneiv_ver = $MODEL_TECH/../altera/verilog/cycloneiv +cycloneiv_hssi_ver = $MODEL_TECH/../altera/verilog/cycloneiv_hssi +cycloneiv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/cycloneiv_pcie_hip +cycloneive_ver = $MODEL_TECH/../altera/verilog/cycloneive +hardcopyiv_hssi_ver = $MODEL_TECH/../altera/verilog/hardcopyiv_hssi +hardcopyiv_pcie_hip_ver = $MODEL_TECH/../altera/verilog/hardcopyiv_pcie_hip + +work = work +[vcom] +; VHDL93 variable selects language version as the default. +; Default is VHDL-2002. +; Value of 0 or 1987 for VHDL-1987. +; Value of 1 or 1993 for VHDL-1993. +; Default or value of 2 or 2002 for VHDL-2002. +; Default or value of 3 or 2008 for VHDL-2008. +VHDL93 = 2002 + +; Show source line containing error. Default is off. +; Show_source = 1 + +; Turn off unbound-component warnings. Default is on. +; Show_Warning1 = 0 + +; Turn off process-without-a-wait-statement warnings. Default is on. +; Show_Warning2 = 0 + +; Turn off null-range warnings. Default is on. +; Show_Warning3 = 0 + +; Turn off no-space-in-time-literal warnings. Default is on. +; Show_Warning4 = 0 + +; Turn off multiple-drivers-on-unresolved-signal warnings. Default is on. +; Show_Warning5 = 0 + +; Turn off optimization for IEEE std_logic_1164 package. Default is on. +; Optimize_1164 = 0 + +; Turn on resolving of ambiguous function overloading in favor of the +; "explicit" function declaration (not the one automatically created by +; the compiler for each type declaration). Default is off. +; The .ini file has Explicit enabled so that std_logic_signed/unsigned +; will match the behavior of synthesis tools. +Explicit = 1 + +; Turn off acceleration of the VITAL packages. Default is to accelerate. +; NoVital = 1 + +; Turn off VITAL compliance checking. Default is checking on. +; NoVitalCheck = 1 + +; Ignore VITAL compliance checking errors. Default is to not ignore. +; IgnoreVitalErrors = 1 + +; Turn off VITAL compliance checking warnings. Default is to show warnings. +; Show_VitalChecksWarnings = 0 + +; Keep silent about case statement static warnings. +; Default is to give a warning. +; NoCaseStaticError = 1 + +; Keep silent about warnings caused by aggregates that are not locally static. +; Default is to give a warning. +; NoOthersStaticError = 1 + +; Turn off inclusion of debugging info within design units. +; Default is to include debugging info. +; NoDebug = 1 + +; Turn off "Loading..." messages. Default is messages on. +; Quiet = 1 + +; Turn on some limited synthesis rule compliance checking. Checks only: +; -- signals used (read) by a process must be in the sensitivity list +; CheckSynthesis = 1 + +; Activate optimizations on expressions that do not involve signals, +; waits, or function/procedure/task invocations. Default is off. +; ScalarOpts = 1 + +; Require the user to specify a configuration for all bindings, +; and do not generate a compile time default binding for the +; component. This will result in an elaboration error of +; 'component not bound' if the user fails to do so. Avoids the rare +; issue of a false dependency upon the unused default binding. +; RequireConfigForAllDefaultBinding = 1 + +; Inhibit range checking on subscripts of arrays. Range checking on +; scalars defined with subtypes is inhibited by default. +; NoIndexCheck = 1 + +; Inhibit range checks on all (implicit and explicit) assignments to +; scalar objects defined with subtypes. +; NoRangeCheck = 1 + +[vlog] + +; Turn off inclusion of debugging info within design units. +; Default is to include debugging info. +; NoDebug = 1 + +; Turn off "loading..." messages. Default is messages on. +; Quiet = 1 + +; Turn on Verilog hazard checking (order-dependent accessing of global vars). +; Default is off. +; Hazard = 1 + +; Turn on converting regular Verilog identifiers to uppercase. Allows case +; insensitivity for module names. Default is no conversion. +; UpCase = 1 + +; Turn on incremental compilation of modules. Default is off. +; Incremental = 1 + +; Turns on lint-style checking. +; Show_Lint = 1 + +[vsim] +; Simulator resolution +; Set to fs, ps, ns, us, ms, or sec with optional prefix of 1, 10, or 100. +Resolution = ps + +; User time unit for run commands +; Set to default, fs, ps, ns, us, ms, or sec. The default is to use the +; unit specified for Resolution. For example, if Resolution is 100ps, +; then UserTimeUnit defaults to ps. +; Should generally be set to default. +UserTimeUnit = default + +; Default run length +RunLength = 100 ns + +; Maximum iterations that can be run without advancing simulation time +IterationLimit = 5000 + +; Directive to license manager: +; vhdl Immediately reserve a VHDL license +; vlog Immediately reserve a Verilog license +; plus Immediately reserve a VHDL and Verilog license +; nomgc Do not look for Mentor Graphics Licenses +; nomti Do not look for Model Technology Licenses +; noqueue Do not wait in the license queue when a license isn't available +; viewsim Try for viewer license but accept simulator license(s) instead +; of queuing for viewer license +; License = plus + +; Stop the simulator after a VHDL/Verilog assertion message +; 0 = Note 1 = Warning 2 = Error 3 = Failure 4 = Fatal +BreakOnAssertion = 4 + +; Assertion Message Format +; %S - Severity Level +; %R - Report Message +; %T - Time of assertion +; %D - Delta +; %I - Instance or Region pathname (if available) +; %% - print '%' character +; AssertionFormat = "** %S: %R\n Time: %T Iteration: %D%I\n" + +; Assertion File - alternate file for storing VHDL/Verilog assertion messages +; AssertFile = assert.log + +; Default radix for all windows and commands... +; Set to symbolic, ascii, binary, octal, decimal, hex, unsigned +DefaultRadix = symbolic + +; VSIM Startup command +; Startup = do startup.do + +; File for saving command transcript +TranscriptFile = transcript + +; File for saving command history +; CommandHistory = cmdhist.log + +; Specify whether paths in simulator commands should be described +; in VHDL or Verilog format. +; For VHDL, PathSeparator = / +; For Verilog, PathSeparator = . +; Must not be the same character as DatasetSeparator. +PathSeparator = / + +; Specify the dataset separator for fully rooted contexts. +; The default is ':'. For example, sim:/top +; Must not be the same character as PathSeparator. +DatasetSeparator = : + +; Disable VHDL assertion messages +; IgnoreNote = 1 +; IgnoreWarning = 1 +; IgnoreError = 1 +; IgnoreFailure = 1 + +; Default force kind. May be freeze, drive, deposit, or default +; or in other terms, fixed, wired, or charged. +; A value of "default" will use the signal kind to determine the +; force kind, drive for resolved signals, freeze for unresolved signals +; DefaultForceKind = freeze + +; If zero, open files when elaborated; otherwise, open files on +; first read or write. Default is 0. +; DelayFileOpen = 1 + +; Control VHDL files opened for write. +; 0 = Buffered, 1 = Unbuffered +UnbufferedOutput = 0 + +; Control the number of VHDL files open concurrently. +; This number should always be less than the current ulimit +; setting for max file descriptors. +; 0 = unlimited +ConcurrentFileLimit = 40 + +; Control the number of hierarchical regions displayed as +; part of a signal name shown in the Wave window. +; A value of zero tells VSIM to display the full name. +; The default is 0. +; WaveSignalNameWidth = 0 + +; Turn off warnings from the std_logic_arith, std_logic_unsigned +; and std_logic_signed packages. +; StdArithNoWarnings = 1 + +; Turn off warnings from the IEEE numeric_std and numeric_bit packages. +; NumericStdNoWarnings = 1 + +; Control the format of the (VHDL) FOR generate statement label +; for each iteration. Do not quote it. +; The format string here must contain the conversion codes %s and %d, +; in that order, and no other conversion codes. The %s represents +; the generate_label; the %d represents the generate parameter value +; at a particular generate iteration (this is the position number if +; the generate parameter is of an enumeration type). Embedded whitespace +; is allowed (but discouraged); leading and trailing whitespace is ignored. +; Application of the format must result in a unique scope name over all +; such names in the design so that name lookup can function properly. +; GenerateFormat = %s__%d + +; Specify whether checkpoint files should be compressed. +; The default is 1 (compressed). +; CheckpointCompressMode = 0 + +; List of dynamically loaded objects for Verilog PLI applications +; Veriuser = veriuser.sl + +; Specify default options for the restart command. Options can be one +; or more of: -force -nobreakpoint -nolist -nolog -nowave +; DefaultRestartOptions = -force + +; HP-UX 10.20 ONLY - Enable memory locking to speed up large designs +; (> 500 megabyte memory footprint). Default is disabled. +; Specify number of megabytes to lock. +; LockedMemory = 1000 + +; Turn on (1) or off (0) WLF file compression. +; The default is 1 (compress WLF file). +; WLFCompress = 0 + +; Specify whether to save all design hierarchy (1) in the WLF file +; or only regions containing logged signals (0). +; The default is 0 (save only regions with logged signals). +; WLFSaveAllRegions = 1 + +; WLF file time limit. Limit WLF file by time, as closely as possible, +; to the specified amount of simulation time. When the limit is exceeded +; the earliest times get truncated from the file. +; If both time and size limits are specified the most restrictive is used. +; UserTimeUnits are used if time units are not specified. +; The default is 0 (no limit). Example: WLFTimeLimit = {100 ms} +; WLFTimeLimit = 0 + +; WLF file size limit. Limit WLF file size, as closely as possible, +; to the specified number of megabytes. If both time and size limits +; are specified then the most restrictive is used. +; The default is 0 (no limit). +; WLFSizeLimit = 1000 + +; Specify whether or not a WLF file should be deleted when the +; simulation ends. A value of 1 will cause the WLF file to be deleted. +; The default is 0 (do not delete WLF file when simulation ends). +; WLFDeleteOnQuit = 1 + +; Automatic SDF compilation +; Disables automatic compilation of SDF files in flows that support it. +; Default is on, uncomment to turn off. +; NoAutoSDFCompile = 1 + +DelayFileOpen = 1 +[lmc] + +[msg_system] +; Change a message severity or suppress a message. +; The format is: = [,...] +; Examples: +; note = 3009 +; warning = 3033 +; error = 3010,3016 +; fatal = 3016,3033 +; suppress = 3009,3016,3043 +; The command verror can be used to get the complete +; description of a message. + +; Control transcripting of elaboration/runtime messages. +; The default is to have messages appear in the transcript and +; recorded in the wlf file (messages that are recorded in the +; wlf file can be viewed in the MsgViewer). The other settings +; are to send messages only to the transcript or only to the +; wlf file. The valid values are +; both {default} +; tran {transcript only} +; wlf {wlf file only} +; msgmode = both +[Project] +; Warning -- Do not edit the project properties directly. +; Property names are dynamic in nature and property +; values have special syntax. Changing property data directly +; can result in a corrupt MPF file. All project properties +; can be modified through project window dialogs. +Project_Version = 6 +Project_DefaultLib = work +Project_SortMethod = unused +Project_Files_Count = 6 +Project_File_0 = $ROOT/cpu/registers/reg_control.v +Project_File_P_0 = compile_order 0 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder {Top Level} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_1 = $ROOT/cpu/registers/reg_file.v +Project_File_P_1 = compile_order 1 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder {Top Level} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_2 = $ROOT/cpu/registers/reg_latch.v +Project_File_P_2 = compile_order 2 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type verilog folder {Top Level} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat 0 vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_3 = $ROOT/cpu/registers/test_latch.sv +Project_File_P_3 = compile_order 4 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder {Top Level} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_4 = $ROOT/cpu/registers/test_regfile.sv +Project_File_P_4 = compile_order 5 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder {Top Level} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_File_5 = $ROOT/cpu/registers/test_registers.sv +Project_File_P_5 = compile_order 3 compile_to work cover_branch 0 cover_cond 0 cover_covercells 0 cover_excludedefault 0 cover_expr 0 cover_exttoggle 0 cover_fsm 0 cover_nofec 0 cover_noshort 0 cover_optlevel 3 cover_stmt 0 cover_toggle 0 dont_compile 0 file_type systemverilog folder {Top Level} group_id 0 last_compile 1 ood 0 toggle - vlog_0InOptions {} vlog_1995compat SV vlog_disableopt 0 vlog_enable0In 0 vlog_hazard 0 vlog_nodebug 0 vlog_noload 0 vlog_options {} vlog_protect 0 vlog_showsource 0 vlog_upper 0 voptflow 1 +Project_Sim_Count = 3 +Project_Sim_0 = Test registers +Project_Sim_P_0 = timing default -sdfnoerror 0 -t default -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} +notimingchecks 0 ok 1 folder {Top Level} +pulse_e {} additional_dus work.test_registers -assertfile {} -std_output {} -L {} -nopsl 0 -nosva 0 +pulse_r {} -absentisempty 0 -assertcover 0 -multisource_delay {} OtherArgs {} -vital2.2b 0 is_vopt_flow 0 -memprof 0 -noglitch 0 -0in_options {} selected_du {} -sdf {} -hazards 0 -0in 0 vopt_env 1 -coverage 0 +plusarg {} -assertdebug 0 -wlf {} -sdfnowarn 0 -std_input {} +Project_Sim_1 = Test latch +Project_Sim_P_1 = timing default -t default -sdfnoerror 0 -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} +notimingchecks 0 ok 1 folder {Top Level} +pulse_e {} additional_dus work.test_latch -assertfile {} -std_output {} -L {} -nopsl 0 -nosva 0 +pulse_r {} -absentisempty 0 -assertcover 0 -multisource_delay {} OtherArgs {} -vital2.2b 0 is_vopt_flow 0 -memprof 0 -noglitch 0 -0in_options {} selected_du {} -sdf {} -hazards 0 -0in 0 vopt_env 1 -coverage 0 +plusarg {} -assertdebug 0 -wlf {} -sdfnowarn 0 -std_input {} +Project_Sim_2 = Test regfile +Project_Sim_P_2 = timing default -t default -sdfnoerror 0 -nofileshare 0 +no_pulse_msg 0 -Lf {} Generics {} +notimingchecks 0 ok 1 folder {Top Level} +pulse_e {} additional_dus work.test_regfile -assertfile {} -std_output {} -L {} -nopsl 0 -nosva 0 +pulse_r {} -absentisempty 0 -assertcover 0 -multisource_delay {} OtherArgs {} -vital2.2b 0 is_vopt_flow 0 -memprof 0 -noglitch 0 -0in_options {} selected_du {} -sdf {} -hazards 0 -0in 0 vopt_env 0 -coverage 0 +plusarg {} -assertdebug 0 -wlf {} -sdfnowarn 0 -std_input {} +Project_Folder_Count = 0 +Echo_Compile_Output = 0 +Save_Compile_Report = 1 +Project_Opt_Count = 0 +ForceSoftPaths = 1 +ProjectStatusDelay = 5000 +VERILOG_DoubleClick = Edit +VERILOG_CustomDoubleClick = +SYSTEMVERILOG_DoubleClick = Edit +SYSTEMVERILOG_CustomDoubleClick = +VHDL_DoubleClick = Edit +VHDL_CustomDoubleClick = +PSL_DoubleClick = Edit +PSL_CustomDoubleClick = +TEXT_DoubleClick = Edit +TEXT_CustomDoubleClick = +SYSTEMC_DoubleClick = Edit +SYSTEMC_CustomDoubleClick = +TCL_DoubleClick = Edit +TCL_CustomDoubleClick = +MACRO_DoubleClick = Edit +MACRO_CustomDoubleClick = +VCD_DoubleClick = Edit +VCD_CustomDoubleClick = +SDF_DoubleClick = Edit +SDF_CustomDoubleClick = +XML_DoubleClick = Edit +XML_CustomDoubleClick = +LOGFILE_DoubleClick = Edit +LOGFILE_CustomDoubleClick = +UCDB_DoubleClick = Edit +UCDB_CustomDoubleClick = +UPF_DoubleClick = Edit +UPF_CustomDoubleClick = +PCF_DoubleClick = Edit +PCF_CustomDoubleClick = +PROJECT_DoubleClick = Edit +PROJECT_CustomDoubleClick = +VRM_DoubleClick = Edit +VRM_CustomDoubleClick = +DEBUGDATABASE_DoubleClick = Edit +DEBUGDATABASE_CustomDoubleClick = +DEBUGARCHIVE_DoubleClick = Edit +DEBUGARCHIVE_CustomDoubleClick = +Project_Major_Version = 10 +Project_Minor_Version = 1 diff --git a/cpu/registers/simulation/modelsim/wave_latch.do b/cpu/registers/simulation/modelsim/wave_latch.do new file mode 100644 index 0000000..088dcd3 --- /dev/null +++ b/cpu/registers/simulation/modelsim/wave_latch.do @@ -0,0 +1,26 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /test_latch/clk +add wave -noupdate -radix hexadecimal /test_latch/db +add wave -noupdate -radix hexadecimal /test_latch/db_sig +add wave -noupdate /test_latch/oe_sig +add wave -noupdate /test_latch/we_sig +add wave -noupdate -radix hexadecimal /test_latch/reg_latch_inst/latch +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {2000 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 123 +configure wave -valuecolwidth 72 +configure wave -justifyvalue right +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits us +update +WaveRestoreZoom {0 ns} {12600 ns} diff --git a/cpu/registers/simulation/modelsim/wave_regfile.do b/cpu/registers/simulation/modelsim/wave_regfile.do new file mode 100644 index 0000000..e6c5ddb --- /dev/null +++ b/cpu/registers/simulation/modelsim/wave_regfile.do @@ -0,0 +1,50 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /test_regfile/clk +add wave -noupdate -radix hexadecimal /test_regfile/db_lo_ds +add wave -noupdate -radix hexadecimal /test_regfile/db_lo_ds_sig +add wave -noupdate -radix hexadecimal /test_regfile/db_hi_ds +add wave -noupdate -radix hexadecimal /test_regfile/db_hi_ds_sig +add wave -noupdate /test_regfile/reg_sel_af_sig +add wave -noupdate /test_regfile/reg_sel_af2_sig +add wave -noupdate /test_regfile/reg_sel_bc_sig +add wave -noupdate /test_regfile/reg_sel_bc2_sig +add wave -noupdate /test_regfile/reg_sel_de_sig +add wave -noupdate /test_regfile/reg_sel_de2_sig +add wave -noupdate /test_regfile/reg_sel_hl_sig +add wave -noupdate /test_regfile/reg_sel_hl2_sig +add wave -noupdate /test_regfile/reg_sel_ix_sig +add wave -noupdate /test_regfile/reg_sel_iy_sig +add wave -noupdate /test_regfile/reg_sel_wz_sig +add wave -noupdate /test_regfile/reg_sel_sp_sig +add wave -noupdate /test_regfile/reg_sel_gp_hi_sig +add wave -noupdate /test_regfile/reg_sel_gp_lo_sig +add wave -noupdate /test_regfile/reg_gp_oe_sig +add wave -noupdate /test_regfile/reg_sel_pc_sig +add wave -noupdate /test_regfile/reg_sel_ir_sig +add wave -noupdate /test_regfile/reg_sel_sys_hi_sig +add wave -noupdate /test_regfile/reg_sel_sys_lo_sig +add wave -noupdate /test_regfile/reg_sys_oe_sig +add wave -noupdate -divider Bus +add wave -noupdate -radix hexadecimal /test_regfile/reg_file_inst/db_hi_as +add wave -noupdate -radix hexadecimal /test_regfile/reg_file_inst/db_hi_ds +add wave -noupdate -radix hexadecimal /test_regfile/reg_file_inst/db_lo_as +add wave -noupdate -radix hexadecimal /test_regfile/reg_file_inst/db_lo_ds +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {0 ns} 0} +quietly wave cursor active 0 +configure wave -namecolwidth 215 +configure wave -valuecolwidth 100 +configure wave -justifyvalue left +configure wave -signalnamewidth 0 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ns} {10400 ns} diff --git a/cpu/registers/simulation/modelsim/wave_registers.do b/cpu/registers/simulation/modelsim/wave_registers.do new file mode 100644 index 0000000..ca01c02 --- /dev/null +++ b/cpu/registers/simulation/modelsim/wave_registers.do @@ -0,0 +1,62 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate /test_registers/clk +add wave -noupdate -expand -group {Address Side} -itemcolor Black -radix hexadecimal -childformat {{{/test_registers/db_lo_as[7]} -radix hexadecimal} {{/test_registers/db_lo_as[6]} -radix hexadecimal} {{/test_registers/db_lo_as[5]} -radix hexadecimal} {{/test_registers/db_lo_as[4]} -radix hexadecimal} {{/test_registers/db_lo_as[3]} -radix hexadecimal} {{/test_registers/db_lo_as[2]} -radix hexadecimal} {{/test_registers/db_lo_as[1]} -radix hexadecimal} {{/test_registers/db_lo_as[0]} -radix hexadecimal}} -subitemconfig {{/test_registers/db_lo_as[7]} {-height 15 -itemcolor Black -radix hexadecimal} {/test_registers/db_lo_as[6]} {-height 15 -itemcolor Black -radix hexadecimal} {/test_registers/db_lo_as[5]} {-height 15 -itemcolor Black -radix hexadecimal} {/test_registers/db_lo_as[4]} {-height 15 -itemcolor Black -radix hexadecimal} {/test_registers/db_lo_as[3]} {-height 15 -itemcolor Black -radix hexadecimal} {/test_registers/db_lo_as[2]} {-height 15 -itemcolor Black -radix hexadecimal} {/test_registers/db_lo_as[1]} {-height 15 -itemcolor Black -radix hexadecimal} {/test_registers/db_lo_as[0]} {-height 15 -itemcolor Black -radix hexadecimal}} /test_registers/db_lo_as +add wave -noupdate -expand -group {Address Side} -itemcolor Black -radix hexadecimal /test_registers/db_lo_as_sig +add wave -noupdate -expand -group {Address Side} -itemcolor Black -radix hexadecimal /test_registers/db_hi_as +add wave -noupdate -expand -group {Address Side} -itemcolor Black -radix hexadecimal /test_registers/db_hi_as_sig +add wave -noupdate -expand -group {Data Side} -itemcolor Black -radix hexadecimal /test_registers/db_lo_ds +add wave -noupdate -expand -group {Data Side} -itemcolor Black -radix hexadecimal /test_registers/db_lo_ds_sig +add wave -noupdate -expand -group {Data Side} -itemcolor Black -radix hexadecimal /test_registers/db_hi_ds +add wave -noupdate -expand -group {Data Side} -itemcolor Black -radix hexadecimal /test_registers/db_hi_ds_sig +add wave -noupdate -divider Control +add wave -noupdate -itemcolor Violet /test_registers/ctl_sw_4u_sig +add wave -noupdate -itemcolor Violet /test_registers/ctl_sw_4d_sig +add wave -noupdate -itemcolor Violet /test_registers/reg_file_inst/reg_sw_4d_lo +add wave -noupdate -itemcolor Violet /test_registers/reg_file_inst/reg_sw_4d_hi +add wave -noupdate /test_registers/ctl_reg_in_hi_sig +add wave -noupdate /test_registers/ctl_reg_in_lo_sig +add wave -noupdate /test_registers/ctl_reg_out_hi_sig +add wave -noupdate /test_registers/ctl_reg_out_lo_sig +add wave -noupdate /test_registers/ctl_reg_exx_sig +add wave -noupdate /test_registers/ctl_reg_ex_af_sig +add wave -noupdate /test_registers/ctl_reg_ex_de_hl_sig +add wave -noupdate /test_registers/ctl_reg_use_sp_sig +add wave -noupdate /test_registers/ctl_reg_sel_wz_sig +add wave -noupdate /test_registers/ctl_reg_sel_pc_sig +add wave -noupdate /test_registers/ctl_reg_sel_ir_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_bc_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_bc2_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_de_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_de2_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_hl_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_hl2_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_af_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_af2_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_ix_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_iy_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_wz_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_pc_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_ir_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_gp_hi_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_gp_lo_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_sys_hi_sig +add wave -noupdate -color Coral -itemcolor Gold /test_registers/reg_sel_sys_lo_sig +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {1200 ns} 0} +quietly wave cursor active 1 +configure wave -namecolwidth 260 +configure wave -valuecolwidth 39 +configure wave -justifyvalue left +configure wave -signalnamewidth 0 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 1 +configure wave -timelineunits ps +update +WaveRestoreZoom {0 ns} {7800 ns} diff --git a/cpu/registers/test_latch.sv b/cpu/registers/test_latch.sv new file mode 100644 index 0000000..562763f --- /dev/null +++ b/cpu/registers/test_latch.sv @@ -0,0 +1,65 @@ +//============================================================== +// Test 8-bit latch block +//============================================================== +`timescale 100 ns/ 100 ns + +module test_latch; + +// ----------------- CLOCKS AND RESET ----------------- +// Define one full T-clock cycle delay +`define T #2 +bit clk = 1; +initial repeat (30) #1 clk = ~clk; + +// ---------------------------------------------------- +// Bi-directional bus with 3-state +reg [7:0] db; // Drive it using these wires +wire [7:0] db_sig; // Read it using these wires + +reg oe_sig; +reg we_sig; + +// ----------------- TEST ------------------- +`define CHECK(arg) \ + assert(db_sig===arg); + +initial begin + oe_sig = 0; + we_sig = 0; + + // Test bidirectional data bus and leave it at Z + `T db = 8'hAA; + `T db = 'z; + `T `CHECK(8'hz); + + // Write a byte into the latch + `T db = 8'h55; + `T we_sig = 1; + `T we_sig = 0; + `T db = 'z; + + // Read latch + `T db = 'z; + `T oe_sig = 1; + `T `CHECK(8'h55); + `T oe_sig = 0; + + `T $display("End of test"); +end + +// Drive a 3-state bidirectional bus with this statement +assign db_sig = db; + +//-------------------------------------------------------------- +// Instantiate register latch +//-------------------------------------------------------------- + +reg_latch reg_latch_inst +( + .clk(clk), + .oe(oe_sig) , // input oe_sig + .we(we_sig) , // input we_sig + .db(db_sig[7:0]) // inout [7:0] db_sig +); + +endmodule diff --git a/cpu/registers/test_regfile.sv b/cpu/registers/test_regfile.sv new file mode 100644 index 0000000..fb4fde4 --- /dev/null +++ b/cpu/registers/test_regfile.sv @@ -0,0 +1,173 @@ +//============================================================== +// Test register file block (without reg. control unit) +//============================================================== +`timescale 100 ns/ 100 ns + +module test_regfile; + +// ----------------- CLOCKS AND RESET ----------------- +// Define one full T-clock cycle delay +`define T #2 +bit clk = 1; +initial repeat (10) #1 clk = ~clk; + +// ----------------- BUSES ----------------- +// We have 4 Bi-directional buses that can also be 3-stated: +// On the address-side, there are high and low 8-bit buses +reg [7:0] db_lo_as; // Drive it using this bus +wire [7:0] db_lo_as_sig; // Read it using this bus + +reg [7:0] db_hi_as; // Drive it using this bus +wire [7:0] db_hi_as_sig; // Read it using this bus + +// ----------------- BUSES ----------------- +// On the data-side, there are high and low 8-bit buses +reg [7:0] db_lo_ds; // Drive it using this bus +wire [7:0] db_lo_ds_sig; // Read it using this bus + +reg [7:0] db_hi_ds; // Drive it using this bus +wire [7:0] db_hi_ds_sig; // Read it using this bus + +// ----------------- CONTROL ----------------- +reg ctl_sw_4u_sig; // Bus switch #4 upstream gate +reg reg_sw_4d_lo_sig; // Bus switch #4 downstream gate low byte lane +reg reg_sw_4d_hi_sig; // Bus switch #4 downstream gate high byte lane + +// ----------------- GP REGS ----------------- +reg reg_sel_af_sig; // Select AF register +reg reg_sel_af2_sig; // ... +reg reg_sel_bc_sig; +reg reg_sel_bc2_sig; +reg reg_sel_de_sig; +reg reg_sel_de2_sig; +reg reg_sel_hl_sig; +reg reg_sel_hl2_sig; +reg reg_sel_ix_sig; +reg reg_sel_iy_sig; +reg reg_sel_wz_sig; +reg reg_sel_sp_sig; + +reg reg_sel_gp_hi_sig; // Select high byte of a GP register +reg reg_sel_gp_lo_sig; // Select low byte of a GP register +reg reg_gp_oe_sig; // Write selected GP register to the data bus + +// ----------------- SYSTEM REGS ----------------- +reg reg_sel_pc_sig; // Select PC register +reg reg_sel_ir_sig; // Select IR register + +reg reg_sel_sys_hi_sig; // Select high byte of a system register +reg reg_sel_sys_lo_sig; // Select low byte of a system register +reg reg_sys_oe_sig; // Write selected system register to the data bus + +// ----------------- TEST ------------------- +`define CHECK(arg) \ + assert(db_sig===arg); + +initial begin + reg_sw_4d_lo_sig = 0; + reg_sw_4d_hi_sig = 0; + ctl_sw_4u_sig = 0; + + reg_sel_af_sig = 0; // Select AF register + reg_sel_af2_sig = 0; // ... + reg_sel_bc_sig = 0; + reg_sel_bc2_sig = 0; + reg_sel_de_sig = 0; + reg_sel_de2_sig = 0; + reg_sel_hl_sig = 0; + reg_sel_hl2_sig = 0; + reg_sel_ix_sig = 0; + reg_sel_iy_sig = 0; + reg_sel_wz_sig = 0; + reg_sel_sp_sig = 0; + + reg_sel_gp_hi_sig = 0; // Select high byte of a GP register + reg_sel_gp_lo_sig = 0; // Select low byte of a GP register + reg_gp_oe_sig = 0; // Write selected GP register to the data bus + + reg_sel_pc_sig = 0; // Select PC register + reg_sel_ir_sig = 0; // Select IR register + + reg_sel_sys_hi_sig = 0; // Select high byte of a system register + reg_sel_sys_lo_sig = 0; // Select low byte of a system register + reg_sys_oe_sig = 0; // Write selected system register to the data bus + + // Test bidirectional data buses and leave them at Z + `T db_lo_as = 8'hAA; + db_hi_as = 8'h55; + db_lo_ds = 8'hCA; + db_hi_ds = 8'hFE; + + `T db_lo_as = 'z; + db_hi_as = 'z; + db_lo_ds = 'z; + db_hi_ds = 'z; + + // Store a value in a GP register and read it back + `T db_lo_ds = 8'h12; + db_hi_ds = 8'h34; + reg_sel_gp_hi_sig = 1; + reg_sel_gp_lo_sig = 1; + reg_sel_af_sig = 1; + `T db_lo_ds = 'z; + db_hi_ds = 'z; + reg_sel_af_sig = 0; + `T + `T reg_sel_gp_hi_sig = 1; + reg_sel_gp_lo_sig = 1; + reg_sel_af_sig = 1; + reg_gp_oe_sig = 1; + `T + + `T $display("End of test"); +end + +// Drive 3-state bidirectional buses with these statements +assign db_lo_as_sig = db_lo_as; +assign db_hi_as_sig = db_hi_as; + +assign db_lo_ds_sig = db_lo_ds; +assign db_hi_ds_sig = db_hi_ds; + +//-------------------------------------------------------------- +// Instantiate register file block +//-------------------------------------------------------------- + +reg_file reg_file_inst +( + .reg_sel_sys_lo(reg_sel_sys_lo_sig) , // input reg_sel_sys_lo_sig + .reg_sel_gp_lo(reg_sel_gp_lo_sig) , // input reg_sel_gp_lo_sig + .reg_sel_sys_hi(reg_sel_sys_hi_sig) , // input reg_sel_sys_hi_sig + .reg_sel_gp_hi(reg_sel_gp_hi_sig) , // input reg_sel_gp_hi_sig + .reg_sel_ir(reg_sel_ir_sig) , // input reg_sel_ir_sig + .reg_sel_pc(reg_sel_pc_sig) , // input reg_sel_pc_sig + .reg_sw_4d_lo(reg_sw_4d_lo_sig) , // input reg_sw_4d_lo_sig + .reg_sw_4d_hi(reg_sw_4d_hi_sig) , // input reg_sw_4d_hi_sig + .ctl_sw_4u(ctl_sw_4u_sig) , // input ctl_sw_4u_sig + .reg_sel_wz(reg_sel_wz_sig) , // input reg_sel_wz_sig + .reg_sel_sp(reg_sel_sp_sig) , // input reg_sel_sp_sig + .reg_sel_iy(reg_sel_iy_sig) , // input reg_sel_iy_sig + .reg_sel_ix(reg_sel_ix_sig) , // input reg_sel_ix_sig + .reg_sel_hl2(reg_sel_hl2_sig) , // input reg_sel_hl2_sig + .reg_sel_hl(reg_sel_hl_sig) , // input reg_sel_hl_sig + .reg_sel_de2(reg_sel_de2_sig) , // input reg_sel_de2_sig + .reg_sel_de(reg_sel_de_sig) , // input reg_sel_de_sig + .reg_sel_bc2(reg_sel_bc2_sig) , // input reg_sel_bc2_sig + .reg_sel_bc(reg_sel_bc_sig) , // input reg_sel_bc_sig + .reg_sel_af2(reg_sel_af2_sig) , // input reg_sel_af2_sig + .reg_sel_af(reg_sel_af_sig) , // input reg_sel_af_sig + .reg_gp_we(reg_gp_we_sig) , // input reg_gp_we_sig + .reg_sys_we_lo(reg_sys_we_lo_sig) , // input reg_sys_we_lo_sig + .reg_sys_we_hi(reg_sys_we_hi_sig) , // input reg_sys_we_hi_sig + .ctl_reg_in_hi(ctl_reg_in_hi_sig) , // input ctl_reg_in_hi_sig + .ctl_reg_in_lo(ctl_reg_in_lo_sig) , // input ctl_reg_in_lo_sig + .ctl_reg_out_lo(ctl_reg_out_lo_sig) , // input ctl_reg_out_lo_sig + .ctl_reg_out_hi(ctl_reg_out_hi_sig) , // input ctl_reg_out_hi_sig + .clk(clk) , // input clk_sig + .db_lo_ds(db_lo_ds_sig) , // inout [7:0] db_lo_ds_sig + .db_hi_ds(db_hi_ds_sig) , // inout [7:0] db_hi_ds_sig + .db_lo_as(db_lo_as_sig) , // inout [7:0] db_lo_as_sig + .db_hi_as(db_hi_as_sig) // inout [7:0] db_hi_as_sig +); + +endmodule diff --git a/cpu/registers/test_registers.qpf b/cpu/registers/test_registers.qpf new file mode 100644 index 0000000..e04ad51 --- /dev/null +++ b/cpu/registers/test_registers.qpf @@ -0,0 +1,30 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition +# Date created = 09:26:31 October 13, 2014 +# +# -------------------------------------------------------------------------- # + +QUARTUS_VERSION = "13.0" +DATE = "09:26:31 October 13, 2014" + +# Revisions + +PROJECT_REVISION = "test_registers" diff --git a/cpu/registers/test_registers.qsf b/cpu/registers/test_registers.qsf new file mode 100644 index 0000000..aba5614 --- /dev/null +++ b/cpu/registers/test_registers.qsf @@ -0,0 +1,68 @@ +# -------------------------------------------------------------------------- # +# +# Copyright (C) 1991-2013 Altera Corporation +# Your use of Altera Corporation's design tools, logic functions +# and other software and tools, and its AMPP partner logic +# functions, and any output files from any of the foregoing +# (including device programming or simulation files), and any +# associated documentation or information are expressly subject +# to the terms and conditions of the Altera Program License +# Subscription Agreement, Altera MegaCore Function License +# Agreement, or other applicable license agreement, including, +# without limitation, that your use is for the sole purpose of +# programming logic devices manufactured by Altera and sold by +# Altera or its authorized distributors. Please refer to the +# applicable agreement for further details. +# +# -------------------------------------------------------------------------- # +# +# Quartus II 64-Bit +# Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition +# Date created = 09:26:31 October 13, 2014 +# +# -------------------------------------------------------------------------- # +# +# Notes: +# +# 1) The default values for assignments are stored in the file: +# test_registers_assignment_defaults.qdf +# If this file doesn't exist, see file: +# assignment_defaults.qdf +# +# 2) Altera recommends that you do not modify this file. This +# file is updated automatically by the Quartus II software +# and any changes you make may be lost or overwritten. +# +# -------------------------------------------------------------------------- # + + +set_global_assignment -name FAMILY "Cyclone II" +set_global_assignment -name DEVICE EP2C20F484C7 +set_global_assignment -name TOP_LEVEL_ENTITY reg_control +set_global_assignment -name ORIGINAL_QUARTUS_VERSION "13.0 SP1" +set_global_assignment -name PROJECT_CREATION_TIME_DATE "09:26:31 OCTOBER 13, 2014" +set_global_assignment -name LAST_QUARTUS_VERSION "13.0 SP1" +set_global_assignment -name BSF_FILE reg_latch.bsf +set_global_assignment -name BDF_FILE reg_latch.bdf +set_global_assignment -name BDF_FILE reg_file.bdf +set_global_assignment -name BDF_FILE reg_control.bdf +set_global_assignment -name PROJECT_OUTPUT_DIRECTORY output_files +set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 +set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85 +set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 1 +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top +set_global_assignment -name USE_CONFIGURATION_DEVICE ON +set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED WITH WEAK PULL-UP" +set_global_assignment -name TIMEQUEST_MULTICORNER_ANALYSIS ON +set_global_assignment -name SMART_RECOMPILE ON +set_global_assignment -name POWER_PRESET_COOLING_SOLUTION "23 MM HEAT SINK WITH 200 LFPM AIRFLOW" +set_global_assignment -name POWER_BOARD_THERMAL_MODEL "NONE (CONSERVATIVE)" +set_global_assignment -name SYNTH_TIMING_DRIVEN_SYNTHESIS ON +set_global_assignment -name OPTIMIZE_POWER_DURING_SYNTHESIS OFF +set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2005 +set_global_assignment -name VERILOG_SHOW_LMF_MAPPING_MESSAGES OFF +set_global_assignment -name TIMEQUEST_DO_REPORT_TIMING ON +set_global_assignment -name TIMEQUEST_DO_CCPP_REMOVAL ON +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/cpu/registers/test_registers.sv b/cpu/registers/test_registers.sv new file mode 100644 index 0000000..928ec0c --- /dev/null +++ b/cpu/registers/test_registers.sv @@ -0,0 +1,250 @@ +//============================================================== +// Test register control and register file blocks +//============================================================== +`timescale 100 ns/ 100 ns + +module test_registers; + +// ----------------- CLOCKS AND RESET ----------------- +// Define one full T-clock cycle delay +`define T #2 +bit clk = 1; +initial repeat (36) #1 clk = ~clk; + +logic nreset = 0; + +// ----------------- BUSES ----------------- +// We have 4 Bi-directional buses that can also be 3-stated: + +// On the address-side, there are high and low 8-bit buses +reg [7:0] db_lo_as=8'hz; // Drive it using this bus +wire [7:0] db_lo_as_sig; // Read it using this bus + +reg [7:0] db_hi_as=8'hz; // Drive it using this bus +wire [7:0] db_hi_as_sig; // Read it using this bus + +// On the data-side, there are high and low 8-bit buses +reg [7:0] db_lo_ds=8'hz; // Drive it using this bus +wire [7:0] db_lo_ds_sig; // Read it using this bus + +reg [7:0] db_hi_ds=8'hz; // Drive it using this bus +wire [7:0] db_hi_ds_sig; // Read it using this bus + +// ----------------- BUS SWITCHES ------------ +logic ctl_sw_4u_sig=0; // Bus switch #4 upstream gate +logic ctl_sw_4d_sig=0; // Bus switch #4 downstream gate + +logic ctl_reg_in_hi_sig=0; // Input to the register file high +logic ctl_reg_in_lo_sig=0; // Input to the register file low +logic ctl_reg_out_hi_sig=0; // Output from the register file high +logic ctl_reg_out_lo_sig=0; // Output from the register file low + +// ----------------- CONTROL ----------------- +logic [1:0] ctl_reg_gp_sel_sig=0; // Selection of a general purpose register +logic [1:0] ctl_reg_gp_hilo_sig=0; // Hi/Lo selector for GP registers +logic ctl_reg_gp_we_sig=0; // Write to a general purpose register +logic [1:0] ctl_reg_sys_hilo_sig=0; // Hi/Lo selector for system registers +logic ctl_reg_sys_we_lo_sig=0; // Write to low byte of a system register +logic ctl_reg_sys_we_hi_sig=0; // Write to high byte of a system register +logic ctl_reg_sys_we_sig=0; // Write to system register +logic use_ixiy_sig=0; // Use IX or IY +logic use_ix_sig=0; // Use IX and not IY +logic nhold_clk_wait_sig=1; // Enable transitions due to nWAIT + +logic ctl_reg_exx_sig=0; // Exchange register banks +logic ctl_reg_ex_af_sig=0; // Exchange AF banks +logic ctl_reg_ex_de_hl_sig=0; // Exchange HL/DE banks +logic ctl_reg_use_sp_sig=0; // Use SP register +logic ctl_reg_sel_pc_sig=0; // Select PC +logic ctl_reg_sel_ir_sig=0; // Select IR +logic ctl_reg_sel_wz_sig=0; // Select WZ +logic ctl_reg_not_pc_sig=0; // Do not select PC + +// ----------------- TEST ------------------- +`define CHECK(arg) \ + assert({db_hi_ds_sig,db_lo_ds_sig}===arg); + +initial begin + `T nreset = 1; + + //------------------------------------------------------------ + // Identify each 16-bit system register and check access to it + `T ctl_sw_4d_sig = 1; // Use unified bus: downstream + ctl_sw_4u_sig = 0; + ctl_reg_in_hi_sig = 1; + ctl_reg_in_lo_sig = 1; + db_hi_ds = 8'h81; + db_lo_ds = 8'h41; + ctl_reg_sys_hilo_sig = 2'b11; + ctl_reg_sys_we_hi_sig = 1; // 16-bit access + ctl_reg_sys_we_lo_sig = 1; // 16-bit access + ctl_reg_sel_wz_sig = 1; // WZ + `T db_hi_ds = 8'h82; + db_lo_ds = 8'h42; + ctl_reg_sel_wz_sig = 0; // WZ off + ctl_reg_sel_pc_sig = 1; // PC + `T db_hi_ds = 8'h83; + db_lo_ds = 8'h43; + ctl_reg_sel_pc_sig = 0; // PC off + ctl_reg_sel_ir_sig = 1; // IR + `T db_hi_ds = 'z; + db_lo_ds = 'z; + ctl_reg_sel_ir_sig = 0; // IR off + // Read back + ctl_sw_4d_sig = 0; + ctl_sw_4u_sig = 0; // Upstream + ctl_reg_in_hi_sig = 0; + ctl_reg_in_lo_sig = 0; + ctl_reg_out_hi_sig = 1; + ctl_reg_out_lo_sig = 1; + ctl_reg_sys_we_hi_sig = 0; + ctl_reg_sys_we_lo_sig = 0; + ctl_reg_sel_wz_sig = 1; // WZ + `T `CHECK(16'h8141); + ctl_reg_sel_wz_sig = 0; // WZ off + ctl_sw_4u_sig = 1; // Upstream + ctl_reg_sel_pc_sig = 1; // PC + `T `CHECK(16'h8242); + ctl_reg_sel_pc_sig = 0; // PC off + ctl_reg_sel_ir_sig = 1; // IR + `T `CHECK(16'h8343); + ctl_reg_sel_ir_sig = 0; // IR off + ctl_sw_4d_sig = 0; + ctl_sw_4u_sig = 0; + ctl_reg_sys_hilo_sig = 2'b00; + + //------------------------------------------------------------ + // Identify a 16-bit system register and check access to it + `T ctl_reg_in_hi_sig = 1; + ctl_reg_in_lo_sig = 1; + ctl_reg_out_hi_sig = 0; + ctl_reg_out_lo_sig = 0; + ctl_reg_gp_we_sig = 1; // Write to a GP register + ctl_reg_gp_hilo_sig = 2'b11;// 16-bit write + db_hi_ds = 8'hAA; + db_lo_ds = 8'h55; + ctl_reg_gp_sel_sig = 2'b00; // AF + `T db_hi_ds = 8'hAB; + db_lo_ds = 8'h56; + ctl_reg_gp_sel_sig = 2'b01; // BC + `T db_hi_ds = 8'hAC; + db_lo_ds = 8'h57; + ctl_reg_gp_sel_sig = 2'b10; // DE + `T db_hi_ds = 8'hAD; + db_lo_ds = 8'h58; + ctl_reg_gp_sel_sig = 2'b11; // HL + `T db_hi_ds = 'z; + db_lo_ds = 'z; + // Read back + ctl_reg_in_hi_sig = 0; + ctl_reg_in_lo_sig = 0; + ctl_reg_out_hi_sig = 1; + ctl_reg_out_lo_sig = 1; + ctl_reg_gp_we_sig = 0; + ctl_reg_gp_sel_sig = 2'b00; // Check AF + `T `CHECK(16'hAA55); + ctl_reg_gp_sel_sig = 2'b01; // Check BC + `T `CHECK(16'hAB56); + ctl_reg_gp_sel_sig = 2'b10; // Check DE + `T `CHECK(16'hAC57); + ctl_reg_gp_sel_sig = 2'b11; // Check HL + `T `CHECK(16'hAD58); + + `T $display("End of test"); +end + +// Drive 3-state bidirectional buses with these statements +assign db_lo_as_sig = db_lo_as; +assign db_hi_as_sig = db_hi_as; + +assign db_lo_ds_sig = db_lo_ds; +assign db_hi_ds_sig = db_hi_ds; + +// Instantiate register control block +reg_control reg_control_inst +( + .ctl_reg_gp_sel(ctl_reg_gp_sel_sig) , // input [1:0] ctl_reg_gp_sel_sig + .ctl_reg_sys_hilo(ctl_reg_sys_hilo_sig),// input [1:0] ctl_reg_sys_hilo_sig + .ctl_reg_exx(ctl_reg_exx_sig) , // input ctl_reg_exx_sig + .ctl_reg_ex_af(ctl_reg_ex_af_sig) , // input ctl_reg_ex_af_sig + .ctl_reg_ex_de_hl(ctl_reg_ex_de_hl_sig),// input ctl_reg_ex_de_hl_sig + .ctl_reg_use_sp(ctl_reg_use_sp_sig) , // input ctl_reg_use_sp_sig + .ctl_reg_gp_hilo(ctl_reg_gp_hilo_sig) , // input [1:0] ctl_reg_gp_hilo_sig + .nreset(nreset) , // input nreset + .ctl_reg_sel_pc(ctl_reg_sel_pc_sig) , // input ctl_reg_sel_pc_sig + .ctl_reg_sel_ir(ctl_reg_sel_ir_sig) , // input ctl_reg_sel_ir_sig + .ctl_reg_sel_wz(ctl_reg_sel_wz_sig) , // input ctl_reg_sel_wz_sig + .ctl_reg_gp_we(ctl_reg_gp_we_sig) , // input ctl_reg_gp_we_sig + .ctl_reg_not_pc(ctl_reg_not_pc_sig) , // input ctl_reg_not_pc_sig + .use_ixiy(use_ixiy_sig) , // input use_ixiy_sig + .use_ix(use_ix_sig) , // input use_ix_sig + .ctl_reg_sys_we_lo(ctl_reg_sys_we_lo_sig),// input ctl_reg_sys_we_lo_sig + .ctl_reg_sys_we_hi(ctl_reg_sys_we_hi_sig),// input ctl_reg_sys_we_hi_sig + .ctl_reg_sys_we(ctl_reg_sys_we_sig) , // input ctl_reg_sys_we_sig + .clk(clk) , // input clk + .ctl_sw_4d (ctl_sw_4d_sig) , // input ctl_sw_4d + .nhold_clk_wait(nhold_clk_wait_sig) , // input nhold_clk_wait_sig + .reg_sel_bc(reg_sel_bc_sig) , // output reg_sel_bc_sig + .reg_sel_bc2(reg_sel_bc2_sig) , // output reg_sel_bc2_sig + .reg_sel_ix(reg_sel_ix_sig) , // output reg_sel_ix_sig + .reg_sel_iy(reg_sel_iy_sig) , // output reg_sel_iy_sig + .reg_sel_de(reg_sel_de_sig) , // output reg_sel_de_sig + .reg_sel_hl(reg_sel_hl_sig) , // output reg_sel_hl_sig + .reg_sel_de2(reg_sel_de2_sig) , // output reg_sel_de2_sig + .reg_sel_hl2(reg_sel_hl2_sig) , // output reg_sel_hl2_sig + .reg_sel_af(reg_sel_af_sig) , // output reg_sel_af_sig + .reg_sel_af2(reg_sel_af2_sig) , // output reg_sel_af2_sig + .reg_sel_wz(reg_sel_wz_sig) , // output reg_sel_wz_sig + .reg_sel_pc(reg_sel_pc_sig) , // output reg_sel_pc_sig + .reg_sel_ir(reg_sel_ir_sig) , // output reg_sel_ir_sig + .reg_sel_sp(reg_sel_sp_sig) , // output reg_sel_sp_sig + .reg_sel_gp_hi(reg_sel_gp_hi_sig) , // output reg_sel_gp_hi_sig + .reg_sel_gp_lo(reg_sel_gp_lo_sig) , // output reg_sel_gp_lo_sig + .reg_sel_sys_lo(reg_sel_sys_lo_sig) , // output reg_sel_sys_lo_sig + .reg_sel_sys_hi(reg_sel_sys_hi_sig) , // output reg_sel_sys_hi_sig + .reg_gp_we(reg_gp_we_sig) , // output reg_gp_we_sig + .reg_sys_we_lo(reg_sys_we_lo_sig) , // output reg_sys_we_lo_sig + .reg_sys_we_hi(reg_sys_we_hi_sig) , // output reg_sys_we_hi_sig + .reg_sw_4d_lo (reg_sw_4d_lo_sig) , // output reg_sw_4d_lo_sig + .reg_sw_4d_hi (reg_sw_4d_hi_sig) // output reg_sw_4d_hi_sig +); + +// Instantiate register file block +reg_file reg_file_inst +( + .reg_sel_sys_lo(reg_sel_sys_lo_sig) , // input reg_sel_sys_lo_sig + .reg_sel_gp_lo(reg_sel_gp_lo_sig) , // input reg_sel_gp_lo_sig + .reg_sel_sys_hi(reg_sel_sys_hi_sig) , // input reg_sel_sys_hi_sig + .reg_sel_gp_hi(reg_sel_gp_hi_sig) , // input reg_sel_gp_hi_sig + .reg_sel_ir(reg_sel_ir_sig) , // input reg_sel_ir_sig + .reg_sel_pc(reg_sel_pc_sig) , // input reg_sel_pc_sig + .reg_sw_4d_lo(reg_sw_4d_lo_sig) , // input reg_sw_4d_lo_sig + .reg_sw_4d_hi(reg_sw_4d_hi_sig) , // input reg_sw_4d_hi_sig + .ctl_sw_4u(ctl_sw_4u_sig) , // input ctl_sw_4u_sig + .reg_sel_wz(reg_sel_wz_sig) , // input reg_sel_wz_sig + .reg_sel_sp(reg_sel_sp_sig) , // input reg_sel_sp_sig + .reg_sel_iy(reg_sel_iy_sig) , // input reg_sel_iy_sig + .reg_sel_ix(reg_sel_ix_sig) , // input reg_sel_ix_sig + .reg_sel_hl2(reg_sel_hl2_sig) , // input reg_sel_hl2_sig + .reg_sel_hl(reg_sel_hl_sig) , // input reg_sel_hl_sig + .reg_sel_de2(reg_sel_de2_sig) , // input reg_sel_de2_sig + .reg_sel_de(reg_sel_de_sig) , // input reg_sel_de_sig + .reg_sel_bc2(reg_sel_bc2_sig) , // input reg_sel_bc2_sig + .reg_sel_bc(reg_sel_bc_sig) , // input reg_sel_bc_sig + .reg_sel_af2(reg_sel_af2_sig) , // input reg_sel_af2_sig + .reg_sel_af(reg_sel_af_sig) , // input reg_sel_af_sig + .reg_gp_we(reg_gp_we_sig) , // input reg_gp_we_sig + .reg_sys_we_lo(reg_sys_we_lo_sig) , // input reg_sys_we_lo_sig + .reg_sys_we_hi(reg_sys_we_hi_sig) , // input reg_sys_we_hi_sig + .ctl_reg_in_hi(ctl_reg_in_hi_sig) , // input ctl_reg_in_hi_sig + .ctl_reg_in_lo(ctl_reg_in_lo_sig) , // input ctl_reg_in_lo_sig + .ctl_reg_out_lo(ctl_reg_out_lo_sig) , // input ctl_reg_out_lo_sig + .ctl_reg_out_hi(ctl_reg_out_hi_sig) , // input ctl_reg_out_hi_sig + .clk(clk) , // input clk + .db_lo_ds(db_lo_ds_sig) , // inout [7:0] db_lo_ds_sig + .db_hi_ds(db_hi_ds_sig) , // inout [7:0] db_hi_ds_sig + .db_lo_as(db_lo_as_sig) , // inout [7:0] db_lo_as_sig + .db_hi_as(db_hi_as_sig) // inout [7:0] db_hi_as_sig +); + +endmodule diff --git a/cpu/top-level-files.txt b/cpu/top-level-files.txt new file mode 100644 index 0000000..183a584 --- /dev/null +++ b/cpu/top-level-files.txt @@ -0,0 +1,67 @@ +# This is a list of A-Z80 files and their dependencies. It is used by several scripts. +# To copy A-Z80 files into your project, run "export.py" script. + +------ Control block ------- +control/clk_delay.v +control/decode_state.v +control/exec_module.vh +control/execute.v ++ control/exec_matrix.vh ++ control/exec_matrix_compiled.vh ++ control/exec_module.vh ++ control/exec_zero.vh ++ control/temp_wires.vh +control/interrupts.v +control/ir.v +control/pin_control.v +control/pla_decode.v +control/resets.v +control/memory_ifc.v +control/sequencer.v + +---------- ALU ------------- +alu/alu_control.v ++ alu/alu_mux_4.v ++ alu/alu_mux_8.v +alu/alu_select.v +alu/alu_flags.v ++ alu/alu_mux_2.v ++ alu/alu_mux_4.v +alu/alu.v ++ alu/alu_core.v ++ alu/alu_slice.v ++ alu/alu_bit_select.v ++ alu/alu_shifter_core.v ++ alu/alu_mux_2z.v ++ alu/alu_mux_3z.v ++ alu/alu_prep_daa.v + +------ Register file ------- +registers/reg_file.v ++ registers/reg_latch.v +registers/reg_control.v + +------ Address latch ------- +bus/address_latch.v ++ bus/address_mux.v ++ bus/inc_dec.v ++ bus/inc_dec_2bit.v +bus/address_pins.v + +--------- Misc bus --------- +bus/bus_control.v +bus/bus_switch.v ++ bus/data_switch.v ++ bus/data_switch_mask.v + +------ I/O pin control ----- +bus/data_pins.v +bus/control_pins_n.v + +--------- Top level -------- ++ toplevel/z80_top_direct_n.v ++ toplevel/core.vh ++ toplevel/coremodules.vh ++ toplevel/globals.vh + +Files=49 diff --git a/cpu/toplevel/core.vh b/cpu/toplevel/core.vh new file mode 100644 index 0000000..8dfba85 --- /dev/null +++ b/cpu/toplevel/core.vh @@ -0,0 +1,72 @@ +//============================================================================ +// A-Z80 core, instantiates and connects all internal blocks. +// +// This file is included by the "z80_top_ifc_n" and "z80_top_direct" providing +// interface binding and direct (no interface) binding. +//============================================================================ + +// Include a list of top-level signal wires +`include "globals.vh" + +// Specific to simulation, some modules in the schematics need to be pre-initialized +// to avoid starting simulations with unknown values in selected flip flops. +reg fpga_reset = 1; +always @(posedge clk) +begin + fpga_reset <= 0; +end + +// Define internal data bus partitions segmented by data bus switches +wire [7:0] db0; // Segment connecting data pins and IR +wire [7:0] db1; // Segment leading to the ALU +wire [7:0] db2; // Segment with msb part of the register address-side interface + +wire [7:0] db_hi_as; // Register file data bus segment high byte +wire [7:0] db_lo_as; // Register file data bus segment low byte + +wire [6:0] prefix; // Instruction decode PLA prefix bitfield +assign prefix = { ~use_ixiy, use_ixiy, ~in_halt, in_alu, table_xx, table_cb, table_ed }; + +wire nM1_int; // External pins timing control +assign nM1_int = !(setM1 | (fFetch & T1)); + +`include "coremodules.vh" + +// Data path within the CPU in various forms, ending with data pins +data_switch sw2_( .sw_up_en(bus_sw_2u), .sw_down_en(bus_sw_2d), .db_up(db1[7:0]), .db_down(db2[7:0]) ); + +// Data switch SW1 with the data mask +data_switch_mask sw1_( .sw_mask543_en(bus_sw_mask543_en), .sw_up_en(bus_sw_1u), .sw_down_en(bus_sw_1d), .db_up(db0[7:0]), .db_down(db1[7:0]) ); + +/* This SystemVerilog-style code is kept for future reference +// Control block +clk_delay clk_delay_( .* ); +decode_state decode_state_( .* ); +execute execute_( .* ); +interrupts interrupts_( .*, .db(db0[4:3]) ); +ir ir_( .*, .db(db0[7:0]) ); +pin_control pin_control_( .* ); +pla_decode pla_decode_( .* ); +resets resets_( .* ); +sequencer sequencer_( .* ); + +// ALU and ALU control, including the flags +alu_control alu_control_( .*, .db(db1[7:0]), .op543({pla[104],pla[103],pla[102]}) ); +alu_select alu_select_( .* ); +alu_flags alu_flags_( .*, .db(db1[7:0]) ); +alu alu_( .*, .db(db2[7:0]), .bsel(db0[5:3]) ); + +// Register file and register control +reg_file reg_file_( .*, .db_hi_ds(db2[7:0]), .db_lo_ds(db1[7:0]), .db_hi_as(db_hi_as[7:0]), .db_lo_as(db_lo_as[7:0]) ); +reg_control reg_control_( .* ); + +// Address latch and the incrementer +address_latch address_latch_( .*, .abus({db_hi_as[7:0], db_lo_as[7:0]}) ); + +// Misc bus +bus_control bus_control_( .*, .db(db0[7:0]) ); +bus_switch bus_switch_( .* ); + +// Timing control of the external pins +memory_ifc memory_ifc_( .* ); +*/ diff --git a/cpu/toplevel/coremodules.vh b/cpu/toplevel/coremodules.vh new file mode 100644 index 0000000..6be1446 --- /dev/null +++ b/cpu/toplevel/coremodules.vh @@ -0,0 +1,566 @@ +// Automatically generated by gencoremodules.py + +clk_delay clk_delay_( + .clk (clk), + .in_intr (in_intr), + .nreset (nreset), + .T1 (T1), + .latch_wait (latch_wait), + .mwait (mwait), + .M1 (M1), + .busrq (busrq), + .setM1 (setM1), + .hold_clk_iorq (hold_clk_iorq), + .hold_clk_wait (hold_clk_wait), + .iorq_Tw (iorq_Tw), + .busack (busack), + .pin_control_oe (pin_control_oe), + .hold_clk_busrq (hold_clk_busrq), + .nhold_clk_wait (nhold_clk_wait) +); + +decode_state decode_state_( + .ctl_state_iy_set (ctl_state_iy_set), + .ctl_state_ixiy_clr (ctl_state_ixiy_clr), + .ctl_state_ixiy_we (ctl_state_ixiy_we), + .ctl_state_halt_set (ctl_state_halt_set), + .ctl_state_tbl_ed_set (ctl_state_tbl_ed_set), + .ctl_state_tbl_cb_set (ctl_state_tbl_cb_set), + .ctl_state_alu (ctl_state_alu), + .clk (clk), + .address_is_1 (address_is_1), + .ctl_repeat_we (ctl_repeat_we), + .in_intr (in_intr), + .in_nmi (in_nmi), + .nreset (nreset), + .ctl_state_tbl_we (ctl_state_tbl_we), + .nhold_clk_wait (nhold_clk_wait), + .in_halt (in_halt), + .table_cb (table_cb), + .table_ed (table_ed), + .table_xx (table_xx), + .use_ix (use_ix), + .use_ixiy (use_ixiy), + .in_alu (in_alu), + .repeat_en (repeat_en) +); + +execute execute_( + .ctl_state_iy_set (ctl_state_iy_set), + .ctl_state_ixiy_clr (ctl_state_ixiy_clr), + .ctl_state_ixiy_we (ctl_state_ixiy_we), + .ctl_state_halt_set (ctl_state_halt_set), + .ctl_state_tbl_ed_set (ctl_state_tbl_ed_set), + .ctl_state_tbl_cb_set (ctl_state_tbl_cb_set), + .ctl_state_alu (ctl_state_alu), + .ctl_repeat_we (ctl_repeat_we), + .ctl_state_tbl_we (ctl_state_tbl_we), + .ctl_iff1_iff2 (ctl_iff1_iff2), + .ctl_iffx_we (ctl_iffx_we), + .ctl_iffx_bit (ctl_iffx_bit), + .ctl_im_we (ctl_im_we), + .ctl_no_ints (ctl_no_ints), + .ctl_ir_we (ctl_ir_we), + .ctl_mRead (ctl_mRead), + .ctl_mWrite (ctl_mWrite), + .ctl_iorw (ctl_iorw), + .ctl_shift_en (ctl_shift_en), + .ctl_daa_oe (ctl_daa_oe), + .ctl_alu_op_low (ctl_alu_op_low), + .ctl_cond_short (ctl_cond_short), + .ctl_alu_core_hf (ctl_alu_core_hf), + .ctl_eval_cond (ctl_eval_cond), + .ctl_66_oe (ctl_66_oe), + .ctl_pf_sel (ctl_pf_sel), + .ctl_alu_oe (ctl_alu_oe), + .ctl_alu_shift_oe (ctl_alu_shift_oe), + .ctl_alu_op2_oe (ctl_alu_op2_oe), + .ctl_alu_res_oe (ctl_alu_res_oe), + .ctl_alu_op1_oe (ctl_alu_op1_oe), + .ctl_alu_bs_oe (ctl_alu_bs_oe), + .ctl_alu_op1_sel_bus (ctl_alu_op1_sel_bus), + .ctl_alu_op1_sel_low (ctl_alu_op1_sel_low), + .ctl_alu_op1_sel_zero (ctl_alu_op1_sel_zero), + .ctl_alu_op2_sel_zero (ctl_alu_op2_sel_zero), + .ctl_alu_op2_sel_bus (ctl_alu_op2_sel_bus), + .ctl_alu_op2_sel_lq (ctl_alu_op2_sel_lq), + .ctl_alu_sel_op2_neg (ctl_alu_sel_op2_neg), + .ctl_alu_sel_op2_high (ctl_alu_sel_op2_high), + .ctl_alu_core_R (ctl_alu_core_R), + .ctl_alu_core_V (ctl_alu_core_V), + .ctl_alu_core_S (ctl_alu_core_S), + .ctl_flags_oe (ctl_flags_oe), + .ctl_flags_bus (ctl_flags_bus), + .ctl_flags_alu (ctl_flags_alu), + .ctl_flags_nf_set (ctl_flags_nf_set), + .ctl_flags_cf_set (ctl_flags_cf_set), + .ctl_flags_cf_cpl (ctl_flags_cf_cpl), + .ctl_flags_cf_we (ctl_flags_cf_we), + .ctl_flags_sz_we (ctl_flags_sz_we), + .ctl_flags_xy_we (ctl_flags_xy_we), + .ctl_flags_hf_we (ctl_flags_hf_we), + .ctl_flags_pf_we (ctl_flags_pf_we), + .ctl_flags_nf_we (ctl_flags_nf_we), + .ctl_flags_cf2_we (ctl_flags_cf2_we), + .ctl_flags_hf_cpl (ctl_flags_hf_cpl), + .ctl_flags_use_cf2 (ctl_flags_use_cf2), + .ctl_flags_hf2_we (ctl_flags_hf2_we), + .ctl_flags_nf_clr (ctl_flags_nf_clr), + .ctl_alu_zero_16bit (ctl_alu_zero_16bit), + .ctl_flags_cf2_sel_shift (ctl_flags_cf2_sel_shift), + .ctl_flags_cf2_sel_daa (ctl_flags_cf2_sel_daa), + .ctl_sw_4u (ctl_sw_4u), + .ctl_reg_in_hi (ctl_reg_in_hi), + .ctl_reg_in_lo (ctl_reg_in_lo), + .ctl_reg_out_lo (ctl_reg_out_lo), + .ctl_reg_out_hi (ctl_reg_out_hi), + .ctl_reg_exx (ctl_reg_exx), + .ctl_reg_ex_af (ctl_reg_ex_af), + .ctl_reg_ex_de_hl (ctl_reg_ex_de_hl), + .ctl_reg_use_sp (ctl_reg_use_sp), + .ctl_reg_sel_pc (ctl_reg_sel_pc), + .ctl_reg_sel_ir (ctl_reg_sel_ir), + .ctl_reg_sel_wz (ctl_reg_sel_wz), + .ctl_reg_gp_we (ctl_reg_gp_we), + .ctl_reg_not_pc (ctl_reg_not_pc), + .ctl_reg_sys_we_lo (ctl_reg_sys_we_lo), + .ctl_reg_sys_we_hi (ctl_reg_sys_we_hi), + .ctl_reg_sys_we (ctl_reg_sys_we), + .ctl_sw_4d (ctl_sw_4d), + .ctl_reg_gp_hilo (ctl_reg_gp_hilo), + .ctl_reg_gp_sel (ctl_reg_gp_sel), + .ctl_reg_sys_hilo (ctl_reg_sys_hilo), + .ctl_inc_cy (ctl_inc_cy), + .ctl_inc_dec (ctl_inc_dec), + .ctl_al_we (ctl_al_we), + .ctl_inc_limit6 (ctl_inc_limit6), + .ctl_bus_inc_oe (ctl_bus_inc_oe), + .ctl_apin_mux (ctl_apin_mux), + .ctl_apin_mux2 (ctl_apin_mux2), + .ctl_bus_ff_oe (ctl_bus_ff_oe), + .ctl_bus_zero_oe (ctl_bus_zero_oe), + .ctl_sw_1u (ctl_sw_1u), + .ctl_sw_1d (ctl_sw_1d), + .ctl_sw_2u (ctl_sw_2u), + .ctl_sw_2d (ctl_sw_2d), + .ctl_sw_mask543_en (ctl_sw_mask543_en), + .ctl_bus_db_we (ctl_bus_db_we), + .ctl_bus_db_oe (ctl_bus_db_oe), + .nextM (nextM), + .setM1 (setM1), + .fFetch (fFetch), + .fMRead (fMRead), + .fMWrite (fMWrite), + .fIORead (fIORead), + .fIOWrite (fIOWrite), + .pla (pla), + .in_intr (in_intr), + .in_nmi (in_nmi), + .in_halt (in_halt), + .im1 (im1), + .im2 (im2), + .use_ixiy (use_ixiy), + .flags_cond_true (flags_cond_true), + .repeat_en (repeat_en), + .flags_zf (flags_zf), + .flags_nf (flags_nf), + .flags_sf (flags_sf), + .flags_cf (flags_cf), + .M1 (M1), + .M2 (M2), + .M3 (M3), + .M4 (M4), + .M5 (M5), + .T1 (T1), + .T2 (T2), + .T3 (T3), + .T4 (T4), + .T5 (T5), + .T6 (T6) +); + +interrupts interrupts_( + .ctl_iff1_iff2 (ctl_iff1_iff2), + .nmi (nmi), + .setM1 (setM1), + .intr (intr), + .ctl_iffx_we (ctl_iffx_we), + .ctl_iffx_bit (ctl_iffx_bit), + .ctl_im_we (ctl_im_we), + .clk (clk), + .ctl_no_ints (ctl_no_ints), + .nreset (nreset), + .db (db0[4:3]), + .iff2 (iff2), + .im1 (im1), + .im2 (im2), + .in_nmi (in_nmi), + .in_intr (in_intr) +); + +ir ir_( + .ctl_ir_we (ctl_ir_we), + .clk (clk), + .nreset (nreset), + .nhold_clk_wait (nhold_clk_wait), + .db (db0[7:0]), + .opcode (opcode) +); + +pin_control pin_control_( + .fFetch (fFetch), + .fMRead (fMRead), + .fMWrite (fMWrite), + .fIORead (fIORead), + .fIOWrite (fIOWrite), + .T1 (T1), + .T2 (T2), + .T3 (T3), + .T4 (T4), + .bus_ab_pin_we (bus_ab_pin_we), + .bus_db_pin_oe (bus_db_pin_oe), + .bus_db_pin_re (bus_db_pin_re) +); + +pla_decode pla_decode_( + .prefix (prefix), + .opcode (opcode), + .pla (pla) +); + +resets resets_( + .reset_in (reset_in), + .clk (clk), + .M1 (M1), + .T2 (T2), + .fpga_reset (fpga_reset), + .nhold_clk_wait (nhold_clk_wait), + .clrpc (clrpc), + .nreset (nreset) +); + +memory_ifc memory_ifc_( + .clk (clk), + .nM1_int (nM1_int), + .ctl_mRead (ctl_mRead), + .ctl_mWrite (ctl_mWrite), + .in_intr (in_intr), + .nreset (nreset), + .fIORead (fIORead), + .fIOWrite (fIOWrite), + .setM1 (setM1), + .ctl_iorw (ctl_iorw), + .timings_en (timings_en), + .iorq_Tw (iorq_Tw), + .nhold_clk_wait (nhold_clk_wait), + .nM1_out (nM1_out), + .nRFSH_out (nRFSH_out), + .nMREQ_out (nMREQ_out), + .nRD_out (nRD_out), + .nWR_out (nWR_out), + .nIORQ_out (nIORQ_out), + .latch_wait (latch_wait), + .wait_m1 (wait_m1) +); + +sequencer sequencer_( + .clk (clk), + .nextM (nextM), + .setM1 (setM1), + .nreset (nreset), + .hold_clk_iorq (hold_clk_iorq), + .hold_clk_wait (hold_clk_wait), + .hold_clk_busrq (hold_clk_busrq), + .M1 (M1), + .M2 (M2), + .M3 (M3), + .M4 (M4), + .M5 (M5), + .T1 (T1), + .T2 (T2), + .T3 (T3), + .T4 (T4), + .T5 (T5), + .T6 (T6), + .timings_en (timings_en) +); + +alu_control alu_control_( + .alu_shift_db0 (alu_shift_db0), + .alu_shift_db7 (alu_shift_db7), + .ctl_shift_en (ctl_shift_en), + .alu_low_gt_9 (alu_low_gt_9), + .alu_high_gt_9 (alu_high_gt_9), + .alu_high_eq_9 (alu_high_eq_9), + .ctl_daa_oe (ctl_daa_oe), + .ctl_alu_op_low (ctl_alu_op_low), + .alu_parity_out (alu_parity_out), + .flags_cf (flags_cf), + .flags_zf (flags_zf), + .flags_pf (flags_pf), + .flags_sf (flags_sf), + .ctl_cond_short (ctl_cond_short), + .alu_vf_out (alu_vf_out), + .iff2 (iff2), + .ctl_alu_core_hf (ctl_alu_core_hf), + .ctl_eval_cond (ctl_eval_cond), + .repeat_en (repeat_en), + .flags_cf_latch (flags_cf_latch), + .flags_hf2 (flags_hf2), + .flags_hf (flags_hf), + .ctl_66_oe (ctl_66_oe), + .clk (clk), + .ctl_pf_sel (ctl_pf_sel), + .op543 ({pla[104],pla[103],pla[102]}), + .alu_shift_in (alu_shift_in), + .alu_shift_right (alu_shift_right), + .alu_shift_left (alu_shift_left), + .shift_cf_out (shift_cf_out), + .alu_parity_in (alu_parity_in), + .flags_cond_true (flags_cond_true), + .daa_cf_out (daa_cf_out), + .pf_sel (pf_sel), + .alu_op_low (alu_op_low), + .alu_core_cf_in (alu_core_cf_in), + .db (db1[7:0]) +); + +alu_select alu_select_( + .ctl_alu_oe (ctl_alu_oe), + .ctl_alu_shift_oe (ctl_alu_shift_oe), + .ctl_alu_op2_oe (ctl_alu_op2_oe), + .ctl_alu_res_oe (ctl_alu_res_oe), + .ctl_alu_op1_oe (ctl_alu_op1_oe), + .ctl_alu_bs_oe (ctl_alu_bs_oe), + .ctl_alu_op1_sel_bus (ctl_alu_op1_sel_bus), + .ctl_alu_op1_sel_low (ctl_alu_op1_sel_low), + .ctl_alu_op1_sel_zero (ctl_alu_op1_sel_zero), + .ctl_alu_op2_sel_zero (ctl_alu_op2_sel_zero), + .ctl_alu_op2_sel_bus (ctl_alu_op2_sel_bus), + .ctl_alu_op2_sel_lq (ctl_alu_op2_sel_lq), + .ctl_alu_sel_op2_neg (ctl_alu_sel_op2_neg), + .ctl_alu_sel_op2_high (ctl_alu_sel_op2_high), + .ctl_alu_core_R (ctl_alu_core_R), + .ctl_alu_core_V (ctl_alu_core_V), + .ctl_alu_core_S (ctl_alu_core_S), + .alu_oe (alu_oe), + .alu_shift_oe (alu_shift_oe), + .alu_op2_oe (alu_op2_oe), + .alu_res_oe (alu_res_oe), + .alu_op1_oe (alu_op1_oe), + .alu_bs_oe (alu_bs_oe), + .alu_op1_sel_bus (alu_op1_sel_bus), + .alu_op1_sel_low (alu_op1_sel_low), + .alu_op1_sel_zero (alu_op1_sel_zero), + .alu_op2_sel_zero (alu_op2_sel_zero), + .alu_op2_sel_bus (alu_op2_sel_bus), + .alu_op2_sel_lq (alu_op2_sel_lq), + .alu_sel_op2_neg (alu_sel_op2_neg), + .alu_sel_op2_high (alu_sel_op2_high), + .alu_core_R (alu_core_R), + .alu_core_V (alu_core_V), + .alu_core_S (alu_core_S) +); + +alu_flags alu_flags_( + .ctl_flags_oe (ctl_flags_oe), + .ctl_flags_bus (ctl_flags_bus), + .ctl_flags_alu (ctl_flags_alu), + .alu_sf_out (alu_sf_out), + .alu_yf_out (alu_yf_out), + .alu_xf_out (alu_xf_out), + .ctl_flags_nf_set (ctl_flags_nf_set), + .alu_zero (alu_zero), + .shift_cf_out (shift_cf_out), + .alu_core_cf_out (alu_core_cf_out), + .daa_cf_out (daa_cf_out), + .ctl_flags_cf_set (ctl_flags_cf_set), + .ctl_flags_cf_cpl (ctl_flags_cf_cpl), + .pf_sel (pf_sel), + .ctl_flags_cf_we (ctl_flags_cf_we), + .ctl_flags_sz_we (ctl_flags_sz_we), + .ctl_flags_xy_we (ctl_flags_xy_we), + .ctl_flags_hf_we (ctl_flags_hf_we), + .ctl_flags_pf_we (ctl_flags_pf_we), + .ctl_flags_nf_we (ctl_flags_nf_we), + .ctl_flags_cf2_we (ctl_flags_cf2_we), + .ctl_flags_hf_cpl (ctl_flags_hf_cpl), + .ctl_flags_use_cf2 (ctl_flags_use_cf2), + .ctl_flags_hf2_we (ctl_flags_hf2_we), + .ctl_flags_nf_clr (ctl_flags_nf_clr), + .ctl_alu_zero_16bit (ctl_alu_zero_16bit), + .clk (clk), + .ctl_flags_cf2_sel_shift (ctl_flags_cf2_sel_shift), + .ctl_flags_cf2_sel_daa (ctl_flags_cf2_sel_daa), + .nhold_clk_wait (nhold_clk_wait), + .flags_sf (flags_sf), + .flags_zf (flags_zf), + .flags_hf (flags_hf), + .flags_pf (flags_pf), + .flags_cf (flags_cf), + .flags_nf (flags_nf), + .flags_cf_latch (flags_cf_latch), + .flags_hf2 (flags_hf2), + .db (db1[7:0]) +); + +alu alu_( + .alu_core_R (alu_core_R), + .alu_core_V (alu_core_V), + .alu_core_S (alu_core_S), + .alu_bs_oe (alu_bs_oe), + .alu_parity_in (alu_parity_in), + .alu_oe (alu_oe), + .alu_shift_oe (alu_shift_oe), + .alu_core_cf_in (alu_core_cf_in), + .alu_op2_oe (alu_op2_oe), + .alu_op1_oe (alu_op1_oe), + .alu_res_oe (alu_res_oe), + .alu_op1_sel_low (alu_op1_sel_low), + .alu_op1_sel_zero (alu_op1_sel_zero), + .alu_op1_sel_bus (alu_op1_sel_bus), + .alu_op2_sel_zero (alu_op2_sel_zero), + .alu_op2_sel_bus (alu_op2_sel_bus), + .alu_op2_sel_lq (alu_op2_sel_lq), + .alu_op_low (alu_op_low), + .alu_shift_in (alu_shift_in), + .alu_sel_op2_neg (alu_sel_op2_neg), + .alu_sel_op2_high (alu_sel_op2_high), + .alu_shift_left (alu_shift_left), + .alu_shift_right (alu_shift_right), + .clk (clk), + .bsel (db0[5:3]), + .alu_zero (alu_zero), + .alu_parity_out (alu_parity_out), + .alu_high_eq_9 (alu_high_eq_9), + .alu_high_gt_9 (alu_high_gt_9), + .alu_low_gt_9 (alu_low_gt_9), + .alu_shift_db0 (alu_shift_db0), + .alu_shift_db7 (alu_shift_db7), + .alu_core_cf_out (alu_core_cf_out), + .alu_sf_out (alu_sf_out), + .alu_yf_out (alu_yf_out), + .alu_xf_out (alu_xf_out), + .alu_vf_out (alu_vf_out), + .db (db2[7:0]), + .test_db_high (test_db_high), + .test_db_low (test_db_low) +); + +reg_file reg_file_( + .reg_sel_sys_lo (reg_sel_sys_lo), + .reg_sel_gp_lo (reg_sel_gp_lo), + .reg_sel_sys_hi (reg_sel_sys_hi), + .reg_sel_gp_hi (reg_sel_gp_hi), + .reg_sel_ir (reg_sel_ir), + .reg_sel_pc (reg_sel_pc), + .ctl_sw_4u (ctl_sw_4u), + .reg_sel_wz (reg_sel_wz), + .reg_sel_sp (reg_sel_sp), + .reg_sel_iy (reg_sel_iy), + .reg_sel_ix (reg_sel_ix), + .reg_sel_hl2 (reg_sel_hl2), + .reg_sel_hl (reg_sel_hl), + .reg_sel_de2 (reg_sel_de2), + .reg_sel_de (reg_sel_de), + .reg_sel_bc2 (reg_sel_bc2), + .reg_sel_bc (reg_sel_bc), + .reg_sel_af2 (reg_sel_af2), + .reg_sel_af (reg_sel_af), + .reg_gp_we (reg_gp_we), + .reg_sys_we_lo (reg_sys_we_lo), + .reg_sys_we_hi (reg_sys_we_hi), + .ctl_reg_in_hi (ctl_reg_in_hi), + .ctl_reg_in_lo (ctl_reg_in_lo), + .ctl_reg_out_lo (ctl_reg_out_lo), + .ctl_reg_out_hi (ctl_reg_out_hi), + .clk (clk), + .reg_sw_4d_lo (reg_sw_4d_lo), + .reg_sw_4d_hi (reg_sw_4d_hi), + .db_hi_as (db_hi_as[7:0]), + .db_hi_ds (db2[7:0]), + .db_lo_as (db_lo_as[7:0]), + .db_lo_ds (db1[7:0]) +); + +reg_control reg_control_( + .ctl_reg_exx (ctl_reg_exx), + .ctl_reg_ex_af (ctl_reg_ex_af), + .ctl_reg_ex_de_hl (ctl_reg_ex_de_hl), + .ctl_reg_use_sp (ctl_reg_use_sp), + .nreset (nreset), + .ctl_reg_sel_pc (ctl_reg_sel_pc), + .ctl_reg_sel_ir (ctl_reg_sel_ir), + .ctl_reg_sel_wz (ctl_reg_sel_wz), + .ctl_reg_gp_we (ctl_reg_gp_we), + .ctl_reg_not_pc (ctl_reg_not_pc), + .use_ixiy (use_ixiy), + .use_ix (use_ix), + .ctl_reg_sys_we_lo (ctl_reg_sys_we_lo), + .ctl_reg_sys_we_hi (ctl_reg_sys_we_hi), + .ctl_reg_sys_we (ctl_reg_sys_we), + .clk (clk), + .ctl_sw_4d (ctl_sw_4d), + .nhold_clk_wait (nhold_clk_wait), + .ctl_reg_gp_hilo (ctl_reg_gp_hilo), + .ctl_reg_gp_sel (ctl_reg_gp_sel), + .ctl_reg_sys_hilo (ctl_reg_sys_hilo), + .reg_sel_bc (reg_sel_bc), + .reg_sel_bc2 (reg_sel_bc2), + .reg_sel_ix (reg_sel_ix), + .reg_sel_iy (reg_sel_iy), + .reg_sel_de (reg_sel_de), + .reg_sel_hl (reg_sel_hl), + .reg_sel_de2 (reg_sel_de2), + .reg_sel_hl2 (reg_sel_hl2), + .reg_sel_af (reg_sel_af), + .reg_sel_af2 (reg_sel_af2), + .reg_sel_wz (reg_sel_wz), + .reg_sel_pc (reg_sel_pc), + .reg_sel_ir (reg_sel_ir), + .reg_sel_sp (reg_sel_sp), + .reg_sel_gp_hi (reg_sel_gp_hi), + .reg_sel_gp_lo (reg_sel_gp_lo), + .reg_sel_sys_lo (reg_sel_sys_lo), + .reg_sel_sys_hi (reg_sel_sys_hi), + .reg_gp_we (reg_gp_we), + .reg_sys_we_lo (reg_sys_we_lo), + .reg_sys_we_hi (reg_sys_we_hi), + .reg_sw_4d_lo (reg_sw_4d_lo), + .reg_sw_4d_hi (reg_sw_4d_hi) +); + +address_latch address_latch_( + .ctl_inc_cy (ctl_inc_cy), + .ctl_inc_dec (ctl_inc_dec), + .ctl_al_we (ctl_al_we), + .ctl_inc_limit6 (ctl_inc_limit6), + .ctl_bus_inc_oe (ctl_bus_inc_oe), + .clk (clk), + .ctl_apin_mux (ctl_apin_mux), + .ctl_apin_mux2 (ctl_apin_mux2), + .clrpc (clrpc), + .nreset (nreset), + .address_is_1 (address_is_1), + .abus ({db_hi_as[7:0], db_lo_as[7:0]}), + .address (address) +); + +bus_control bus_control_( + .ctl_bus_ff_oe (ctl_bus_ff_oe), + .ctl_bus_zero_oe (ctl_bus_zero_oe), + .db (db0[7:0]) +); + +bus_switch bus_switch_( + .ctl_sw_1u (ctl_sw_1u), + .ctl_sw_1d (ctl_sw_1d), + .ctl_sw_2u (ctl_sw_2u), + .ctl_sw_2d (ctl_sw_2d), + .ctl_sw_mask543_en (ctl_sw_mask543_en), + .bus_sw_1u (bus_sw_1u), + .bus_sw_1d (bus_sw_1d), + .bus_sw_2u (bus_sw_2u), + .bus_sw_2d (bus_sw_2d), + .bus_sw_mask543_en (bus_sw_mask543_en) +); diff --git a/cpu/toplevel/fuse/README b/cpu/toplevel/fuse/README new file mode 100644 index 0000000..2a51899 --- /dev/null +++ b/cpu/toplevel/fuse/README @@ -0,0 +1,76 @@ +These files are part of the Fuse emulator Z80 test vectors: +http://fuse-emulator.sourceforge.net/ + +File formats +============ + +tests.in +-------- + +Each test has the format: + + +AF BC DE HL AF' BC' DE' HL' IX IY SP PC +I R IFF1 IFF2 IM + + specifies whether the Z80 is halted. + specifies the number of tstates to run the test for, in + decimal; the number actually executed may be higher, as the final + instruction is allowed to complete. + +Then followed by lines specifying the initial memory setup. Each has +the format: + + ... -1 + +eg + +1234 56 78 9a -1 + +says to put 0x56 at 0x1234, 0x78 at 0x1235 and 0x9a at 0x1236. + +Finally, -1 to end the test. Blank lines may follow before the next test. + +tests.expected +-------------- + +Each test output starts with the test description, followed by a list +of 'events': each has the format + +